Compare commits

...

538 Commits

Author SHA1 Message Date
Anthony Dresser
6c2a0f3d40 import correct welcome page (#10117) 2020-04-21 21:24:13 -07:00
Amir Omidi
283c851494 Clear all saved accounts regardless of failure (#10107) 2020-04-21 13:56:04 -07:00
Karl Burtram
8e63ca8d0a Put new welcome page behind preview features flag (#10099) 2020-04-21 13:55:45 -07:00
Chris LaFreniere
fbce1719c9 Check for file scheme in linkhandler (#10090) (#10096) 2020-04-20 22:04:07 -07:00
v-bbrady
81ae52f75f Bbrady/release port/fixes video and admin pack images (#10053)
* merge cherry picked changes

* merges cherry picked commit
2020-04-20 20:48:28 -07:00
Amir Omidi
38ca77c8c5 Enable file based storage by default (#10061) (#10077) 2020-04-20 20:48:05 -07:00
Amir Omidi
5275bb9e56 Revert "Create new row upon focus on last row (#9046)" (#10039) (#10087)
This reverts commit 6b9184aa15.
2020-04-20 20:47:42 -07:00
Cory Rivera
a6816a5de8 Check treeItem first when building search path in searchJupyterBooks. (#10083) (#10092) 2020-04-20 16:11:49 -07:00
Hale Rankin
728bc76b4b Notebook UI - Fixes navigation offset (#10067) (#10074)
* Addresses bug: 10062. Replaced scrollTop with getBoundingClientRect.top minus the combined height of the top tabs and action bar.

* Setting initial value of chrome offset, and checking for existence of both tool bars before getting their heights.
2020-04-20 10:28:24 -07:00
Barbara Valdez
21dd79ab03 Fix relative paths on anchor links (#9958) (#10070)
* Fix relative links in notebooks
2020-04-17 17:07:41 -07:00
Alan Ren
ee60400e3b fix clipping issue (#10020) (#10040)
* fix clipping issue

* remove hardcoded height
2020-04-17 14:03:18 -07:00
Alan Ren
99f37006a5 more dashboard fixes (#9937) (#9953)
* unify the panel styles

* min-width

* min-width

* fix issues

* fix css selector
2020-04-17 13:58:15 -07:00
Hale Rankin
00b08bd677 UI - Markdown toolbar now behind preview flag (#10024) (#10050)
* Adding enablePreviewFeatures check before showing the new toolbar.

* Removed unused code.

* Added hook to trigger onDidChangeConfiguration -- this makes the UI change after user has checked or unchecked, without having to restart the app.

* Initializing the component with the current config value of enablePreviewFeatures.
2020-04-17 13:23:27 -07:00
Maddy
1503e3846f added proper check (#10032) (#10054) 2020-04-17 11:57:34 -07:00
Maddy
370e521910 Rename/books viewlet sections (#10044) (#10048)
* renamed viewlet sections

* template to provided
2020-04-17 10:13:04 -07:00
Cory Rivera
2ef0b7adb8 Check conda-forge channel first when installing conda packages. (#10035) (#10047) 2020-04-17 10:10:44 -07:00
Maddy
ebd307d78e Fix/find context correction (#9949) (#10045)
* trigger input change on new notebooks

* return to avoid further executions

* remove unnecessary check
2020-04-16 17:18:55 -07:00
Maddy
d1251ce57e replaced watch with watchFile (#9873) (#10046)
* replaced watch with watchFile

* testing debounce

* changed the beounce delay to 1500
2020-04-16 17:15:45 -07:00
Chris LaFreniere
5e91e86360 Notebooks: Fix Issue Around Load Error when Tables Have No Rows (#9980) (#10013)
* Table element children length check

* Add another check
2020-04-16 15:19:54 -07:00
Chris LaFreniere
c81f5580d1 Bring back hover buttons for adding cells (#10012) (#10031) 2020-04-16 15:18:35 -07:00
v-bbrady
27e3b4995a Welcome responsive container (#9946) (#9870) (#10033)
* adds responsiveness to the left navigation pane

* fixes style

* removes color from css

* updates style
2020-04-16 15:15:59 -07:00
v-bbrady
551536e666 Fix duplicating list on extension pack (#9992) (#10003) (#10010)
* makes the preview button hover state stay active when hovering over tooltip

* fixes the duplicating list on the extension pack when a 2nd welcome page tab is opened
2020-04-16 15:13:22 -07:00
Anthony Dresser
f3d4a55bb1 Merge from vscode ff915844119ce9485abfe8aa9076ec76b5300ddd (#10030) 2020-04-16 15:12:30 -07:00
Alex Ma
4fc9057025 Fix for edit data sizing of table (#9972) (#10007)
* Fix for style

* removed inline-block as its unnecessary
2020-04-16 15:11:58 -07:00
Amir Omidi
c30b8cde42 Listen on localhost only (#9997) (#10000) 2020-04-16 15:10:40 -07:00
Amir Omidi
f4464f352f Put cloud shell behind preview flag (#9995) (#9999) 2020-04-16 15:08:02 -07:00
Amir Omidi
2e127582bd Allow users to use file based key storage if they have to (#9993)
* Don't enforce the password limit for file keytar (#9974)

* Allow users to use file based keychain if they have to

* Don't enforce this limit for FS keytar

* Spacing

* Allow users to use file based keychain if they have to (#9952)
2020-04-16 15:07:19 -07:00
Anthony Dresser
ae13131370 Add innoupdater for windows fast update (#10028)
* add innoupdater for fast update (#10015)

* set default back to true
2020-04-16 14:52:20 -07:00
Shafiq Ur Rahman
64ccb21d26 Fixes #9397 Launch onenote links (#9931) (#10006)
* Fixes #9397 Launch onenote links

* Limit the change to linkhandler directive
2020-04-15 16:53:08 -07:00
Anthony Dresser
5b7224fa5e enablewindowsbackgroundupdate false 2020-04-15 16:15:19 -07:00
rajeshka
f364a60eca Added Notebook telemetry for livesite notebooks (#9948) (#9990)
* Added Notebook telemetry for livesite

* added back the metadata retension code

* Unified Telemetry services

* fixed names

* Fixed texts to use new NullAdsTelemetryService

* Validate GUID before sending it

* made GUID check a bit more robust

Co-authored-by: Rajesh Kamath <rajkashop@hotmail.com>

Co-authored-by: Rajesh Kamath <rajkashop@hotmail.com>
2020-04-15 15:34:44 -07:00
Hale Rankin
fc5cf99f02 UI feature - Notebook markdown toolbar (#9853) (#9991)
* Markdown editor toolbar - initial commit

* Moved icons. Refactored new toolbar component to include markup.

* Edited markdown toolbar component and referencing in textCell component markup.

* Completed UI updates for selected cell toolbar and markdown toolbar. 

* Modified import path to Event class. Changed EventEmitter to Emitter.

* Cleaned up newly added toolbar components

* Works sometimes sometimes editor is null

* Removed commented out code and styles. CellToolbar and MarkdownToolbar: moved component markup into html file.

* Added icon for highlight. Removed more commented code. Re-scoped two styles to their parent components. Corrected templateUrl reference for the new toolbars.

* Adjusted paths to SVG icons from toolbar stylesheet.

* Add lists and links

* Refactor out of component, add actionbar

* Support for nothing selected, quick bug fix

* Updated split view icons. Added markdown tool backgrounds and cell border colors to color registry and parent components. Updated toolbar icons to use mask as this allows the SVG icon colors to be adjusted on theme change.

* Added colorRegistry entries for code cell. Removed colors from styles. Running registerThemingParticipant from code.component.

* Revised code component style rules and corrected syntax.

* Merged in Chris' working branch and removed unused markup.

* Corrected styles and moved another color into colorRegistry for use in new markdown toolbar.

* Corrected style error. Overrode left position of content inside textCell and codeCell. Added more entries to colorRegistry.

* Moved toolbar and editor icons to common-icons location. Updated related stylesheet. Revised color theming rules for markdown and code cells.

* Added themed border between markdown and preview. Moved all notebook themes into notebookStyles.ts

* Merged in latest from origin/master and included a small but significant style tweak to light theme code cell toolbar.

* Add Undo Support for Markdown Toolbar (#9915)

* Remove comment

* Renamed registered notebook colors and prefixed with notebook. Moved markdown component theme colors into notebookStyles.ts. Removed colors from cellToolbar styles. Revised icon class names to generic names for better re-use. Removed commented markup.

Co-authored-by: chlafreniere <hichise@gmail.com>
Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>

Co-authored-by: chlafreniere <hichise@gmail.com>
Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>
2020-04-15 13:01:35 -07:00
Cory Rivera
14fdd6f529 Only show Create Insight button in Query Editor charts. (#9973) (#9988) 2020-04-15 12:03:45 -07:00
Cory Rivera
377a327cac Add Open Notebook Folder functionality to Books viewlet. (#9939) (#9978) 2020-04-15 10:29:07 -07:00
Kim Santiago
139609a7c3 center collapse icon (#9966) (#9969)
center collapse icon. port request for PR (#9966) (#9969)
2020-04-14 14:56:59 -07:00
Anthony Dresser
b80bc686b2 Release rc (#9971)
* release rc builds

* allow ref heads
2020-04-14 13:16:32 -07:00
Anthony Dresser
dc7fd013a6 enable cross partition queryies (#9961) 2020-04-14 13:16:20 -07:00
Alan Ren
5375629585 show databases for azure server (#9951) (#9954) 2020-04-14 09:59:55 -07:00
AzureDataStudio
339a3bcbf6 add cross partition query 2020-04-13 02:33:51 -07:00
AzureDataStudio
e627619c7a Merge branch 'master' into release/1.17 2020-04-12 22:54:12 -07:00
AzureDataStudio
15fc4517ee distro 2020-04-12 19:44:02 -07:00
Anthony Dresser
0382c561f3 add docker build 2020-04-12 18:55:57 -07:00
Alan Ren
e450369d5e unify the panel styles (#9934) 2020-04-10 23:05:21 -07:00
Kim Santiago
b1a9c8418b center properties title when collapsed (#9932) 2020-04-10 15:47:53 -07:00
Amir Omidi
ba41e926c4 Handle first time use when user doesn't have a cloud shell (#9890)
* Handle first time use when user doesn't have a cloud shell

* Catch errors

* Update code

* Update string per PM feedback

* Update the internal URI
2020-04-10 15:12:57 -07:00
Kim Santiago
3eab267da6 fix bottom of widgets being cutoff (#9930) 2020-04-10 13:39:27 -07:00
Alex Ma
4856e0a978 Sash bar for Edit Data SQL pane (#9818)
* WIP sash fix

* stuff to fix

* working mostly

* added tabbedPanel fix

* added null checks

* removed additional space in editdata.css

* wip change for border-top

* Fix for query editor and editdata colors in modes

* removed junk additions for panel.css

* fixed div and classes for editDataGridPanel,

* small optimizations

* Small tweaks

* simplified color checks

* test commit

* Test changes

* no need for important

* updates made

* removed small space
2020-04-10 10:56:47 -07:00
Charles Gagnon
8fd20c2069 Ignore jpgs for whitespace check (#9925) 2020-04-09 17:51:31 -07:00
Kim Santiago
e5cf13726e bump sqltoolsservice to 2.0.0-release.56 (#9922) 2020-04-09 16:53:40 -07:00
Kim Santiago
8ff53281f9 Dashboard toolbar overflow (#9796)
* initial changes for actionbar collapsing

* fix more not always all showing after resizing

* collapse toolbar if window size is already small when dashboard is opened

* make wrapping default behavior and collapse opt in

* fix so keyboard navigation works in overflow

* more keyboard fixing so that the actions in overflow get triggered

* change overflow background with theme

* change margin

* udpate more button

* use icon for ...

* addressing comments

* overflow css changes to match portal

* arrow navigation working

* handle tab and shift tab in overflow

* keep arrow navigation within overflow

* move reused code to helper methods

* set roles for overflow

* use actionsList instead of document.getElementById all the time

* move collapsible action bar to its own class

* renamve to overflowActionBar

* fix focus rectangle around more element

* hide overflow after an action is executed

* hide overflow when clicking an action

* hide overflow when focus leaves and loop focus within overflow when using arrow keys

* fix double down arrow to move focus in overflow

* update comment

* fix clicking more not hiding overflow

* add box-shadow for themes

* fix hygiene error

* fix hygiene error

* widen focused outline for overflow actions
2020-04-09 16:31:52 -07:00
Anthony Dresser
26870655b6 try cross partition queries 2020-04-09 15:58:17 -07:00
Alan Ren
433049d1b2 pre-defined dashboard tab groups (#9916)
* pre-defined dashboard tab groups

* add back the tab group contribution

* comments
2020-04-09 14:57:46 -07:00
Alan Ren
06abda74a6 use the new icons from UX team (#9920) 2020-04-09 13:42:57 -07:00
Amir Omidi
510c12677e Remove unusable tenants (#9921) 2020-04-09 13:01:24 -07:00
Alan Ren
23f1a08aa0 add ability to dynamically update tabs (#9911)
* add dashboard and tabbedPanel samples

* add updateTabs to tabbedPanel component

* add updateTabs to tabbedPanel component
2020-04-09 12:02:00 -07:00
Alan Ren
82f21faf79 fix dashboard style (#9917) 2020-04-09 11:51:49 -07:00
Karl Burtram
59f440dfb4 Revert "remove the docs folder (#9868)" (#9919)
This reverts commit 2247682863.
2020-04-09 11:32:19 -07:00
Maddy
c2e7324381 vbump (#9908)
* vbump

* vbump in right place
2020-04-08 20:59:51 -07:00
Anthony Dresser
0de774eb75 Move service installs to their extensions (#9778)
* move service installs to their extensions

* more clean up

* fix clearline

* remove some stuff
2020-04-08 18:34:13 -07:00
Kim Santiago
238acb1468 Dashboard style updates to match mockups (#9857)
* widget formatting

* tab panel style

* breadcrumb padding

* dark theme colors

* Addressing comments

* move colors to theme.ts

* update properties widget colors

* update color names
2020-04-08 18:15:23 -07:00
Alan Ren
db49a146b0 add dashboard and tabbedPanel samples (#9894)
* add dashboard and tabbedPanel samples

* comments
2020-04-08 15:35:29 -07:00
Kim Santiago
b93f43d1c2 Properties widget updates (#9893)
* move properties widget collapse to bottom

* fix double bottom border for high contrast

* show title when collapsed

* move css to classes

* vertical center collapse icon
2020-04-08 14:41:31 -07:00
Anthony Dresser
ffdde0209b Merge branch 'ads-master-vscode-2020-04-08T06-33-35' 2020-04-08 13:34:54 -07:00
Amir Omidi
21964e15b0 Add more debug console logs so we can assist users better (#9907) 2020-04-08 13:12:26 -07:00
Amir Omidi
8e164973ee Login spinner (#9892)
* Add a notification for handling logins

* No need to catch and rethrow

* Make it optional

* use testNotificationService
2020-04-08 12:53:48 -07:00
Anthony Dresser
c428a3aebf distro 2020-04-08 03:05:09 -07:00
Anthony Dresser
06c1db5417 distro 2020-04-08 02:19:57 -07:00
ADS Merger
1868a7d370 Merge from vscode 10492ba146318412cbee8b76a8c630f226914734 2020-04-08 06:33:38 +00:00
Chris LaFreniere
fca2344c2e Remove old CTP code, add test (#9877) 2020-04-07 20:09:52 -07:00
Kim Santiago
ddaf9a7eb6 Change active tab to have full outline for high contrast (#9889)
* change active tab to have full outline for high contrast

* remove unused imports
2020-04-07 17:10:16 -07:00
Alan Ren
fd314ec030 convert the sql services extension to use yarn (#9891)
* convert the sql services extensions to use yarn

* update
2020-04-07 15:59:31 -07:00
Maddy
6bc123d76b Fix/open book spcl characters (#9888)
* upgrade fast-glob that escapes them.

* added tests

* added test with brackets in bookPath
2020-04-07 15:55:53 -07:00
Anthony Dresser
f056086662 Remove checks for integration testing (#9856)
* remove checks for testing

* fix schema compare tests

* move some files

* fix file location

* fixc another file path
2020-04-07 14:50:20 -07:00
Amir Omidi
d580c13be1 Labelz (#9887)
* Labelz

* Use params
2020-04-07 13:09:15 -07:00
Amir Omidi
592801d74c Create a progress notification for saving files (#9875)
* Create a progress notification for saving files

* Remove unused import
2020-04-07 11:12:51 -07:00
Monica Gupta
63006e6e63 Undo default kqlmagic install (#9871)
Co-authored-by: Monica Gupta <mogupt@microsoft.com>
2020-04-07 10:20:37 -07:00
Kim Santiago
6d9f235704 High contrast theme dashboard fixes (#9874)
* a couple style fixes for high contrast theme

* fix for when switching themes
2020-04-07 10:13:11 -07:00
Alan Ren
c2b8fcde45 add options to customize the model view dashboard (#9872)
* add options to customize the mv dashboard

* rename the property
2020-04-06 20:04:38 -07:00
Anthony Dresser
9819e97f7b fix accessibility issues (#9824)
* fix accessibility issues

* fix no active cell

* more fixes
2020-04-06 19:38:40 -07:00
dependabot[bot]
9c876f869a Bump acorn from 5.7.3 to 5.7.4 in /samples/sqlservices (#9865)
Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-06 19:38:19 -07:00
Anthony Dresser
51da14ddda distro (#9876) 2020-04-06 19:34:59 -07:00
Chris LaFreniere
1d22e23c2d Add a few more notebook model unit tests (#9859)
* Add a few more notebook model tests

* Add tests for nb managers, active cell

* Add assert messages
2020-04-06 16:39:02 -07:00
Maddy
4c01482a8f fixes to the toc formatting (#9825)
* fixes to the toc formatting

* addressed comments
2020-04-06 15:30:08 -07:00
Alan Ren
2247682863 remove the docs folder (#9868) 2020-04-06 12:26:31 -07:00
Alan Ren
19a11ba94b tasks widget updates (#9860)
* fix toolbar and remove tasks widget

* update refresh action

* remove contribution

* fix missing learn more menu item

* Alanren/refresh widgets new (#9863)

* refresh widgets

* dashboard refresh

* update
2020-04-06 12:25:09 -07:00
Karl Burtram
f95864ff82 Turn-off connection dialog on 1st-launch (#9858) 2020-04-06 11:53:24 -07:00
Monica Gupta
11c34f36d7 set ads context for kqlmagic (#9849)
Co-authored-by: Monica Gupta <mogupt@microsoft.com>
2020-04-06 09:48:16 -07:00
Charles Gagnon
39fdfa5cba Add close windows step (#9867) 2020-04-06 08:24:59 -07:00
Anthony Dresser
a0eac49ae6 delete workflows 2020-04-04 02:12:41 -07:00
ADS Merger
35f1a014d5 Merge from vscode 6fded8a497cd0142de3a1c607649a5423a091a25 2020-04-04 04:30:52 +00:00
Barbara Valdez
00cc0074f7 Fix anchor links in notebooks (#9848)
* Fix links using anchors issue #8428

* Address PR comments
2020-04-03 16:02:55 -07:00
Anthony Dresser
d5da2f921b distro (#9854) 2020-04-03 15:04:17 -07:00
Kim Santiago
a8c48fab78 Update dashboard breadcrumb style to match mockups (#9850)
* update breadcrumb style to match mockups

* remove unnecessary fontsize
2020-04-03 14:42:35 -07:00
Anthony Dresser
d707b92fdc distro (#9852) 2020-04-03 14:38:27 -07:00
Barbara Valdez
548c69e074 Fix offset when scrolling to section (#9847) 2020-04-03 14:25:51 -07:00
v-bbrady
177a58c81d Welcome page reskin (#9491)
* adds icons for welcome page

* updates markup and styles for welcome page

* updates color registry with welcome page colors

* updates styles for welcome page

* updates markup for welcome page

* updates theming styles for welcome page and adds date since last opened functionality on history items

* adds all icons and images for welcome page

* updates markup for welcome page

* updates styles for welcome page

* updates color registry with welcome page styles

* updates welcome page icons with microsoft flag and dark theme home banner

* updates welcome page markup

* updates dynamically generated extension list

* updates styles for welcome page

* updates markup for welcome page

* adds dynamic lists for extension pack individual extensions

* updates icons for welcome page

* updates styles for welcome page

* updates welcome page styles

* updates theme colors

* updates markup for welcome page

* updates color registry with welcomepage colors

* updates sql.de.xlf with copy for welcome page

* reverts generated file

* updates welcome page styles

* updates extension pack copy casing

* updates color registry with welcome page styles

* updates welcome page markup

* adds welcome page icons

* updates welcome page markup

* updates welcome page icons

* updates welcome page styles

* reverts color registry in vs folder to original state

* moves color registry to sql folder

* removes dead code, localizes dates

* updates welcome page styles

* moves all colors from css to color registry

* updates styles by removing all colors

* removes stat import because of laying issue, adds color registry colors to welcomePage

* updates welcome page font sizes to ems

* updates localized strings

* removes unnecessary comment

* removes double quotes around string key for single quotes

* updates welcome page styles

* updates color registry

* updates welcome page markup

* adds dropdown button functionality

* adds centering classes for installed button text

* updates welcome page styles

* updates markup and styles for welcome page

* removes icon attempt from color registry

* removes theme specific icon svgs for theme specific icon css

* removes unused import

* removes console.log

* adds back mac new file button

* removes unused rules

* updates markup

* updates markup

* updates extension links to link to extensions in ADS

* pulls in changes from welcome-page-reskin-anthonydresser

* adds back code-icon to vs folder

* reverts welcomePage.css

* removes duplicate color registry variables

* fixes icon overlap on text for mac

* removes null import

* updates welcome page styles for mac

* updates welcome page images to use sql folder

* updates welcome page markup

* updates welcome page styles

* updates styles

* updates files paths

* delete images from sql folder

* updates icons

* updates welcome page styles

* updates preview popup

* updates markup for accessibility

* adds hover state to tiles

* updates dropdown

* fixes line-height issue

* updates class names

* updates keyboard accessibility for tooltip

* format document

* updates accessibility for preview tooltip

* removes whitespace

* updates preview modal accessibility

* adds aria labels to popup and tooltip

* removes max-width for zoom

* removes escaped strings, adds keycodes to promises, marks function as async and has the return as the signature of the function

* moves keycoes to class, removes comment

* fixes promise

* testing promise

* testing promise

* promise test

* localizes copy

* uses keycode import

* removes unnecessary arguments

* formating

* refactor constructor into async function called by constructor

* attempts to fix floating promise

* removes floating promise

* moves icons and images to sql folder, removes unused icons

* uses icons already existing in ads

* updates styles

* updates color registry

* updates keycode events

* fixes issues per charles comments

* moves icons to media folder

* updates image file paths

* updates file path

* adds href to extension pack extensions

* fixes links

* fixes issues per alan's comments

* uses exisiting colors from color registry

* updates welcome page to use existing colors from color registry

* updates dark theme

* updates color registry

* updates dark theme

* formats css

* fixes dropdown arrow icon on mac

Co-authored-by: Anthony Dresser <andresse@microsoft.com>
2020-04-03 09:24:20 -07:00
Charles Gagnon
87b892d13f Update step when page is navigated to (#9839) 2020-04-03 08:57:57 -07:00
Chris LaFreniere
c102322594 Revert "Merge branch 'master' of https://github.com/microsoft/azuredatastudio" (#9844)
This reverts commit ec46783e47, reversing
changes made to 6e6649d006.
2020-04-03 02:09:47 -07:00
chlafreniere
ec46783e47 Merge branch 'master' of https://github.com/microsoft/azuredatastudio 2020-04-03 00:14:28 -07:00
Anthony Dresser
6e6649d006 Smoke tests (#9814)
* move

* add inital test; need basic sqllite connection

* before sqlite

* sqlite

* add smoke tests

* working tests

* fix app names

* fix quick open

* fix smoke tests

* add win32 smoke tests

* fix smoke test

* fix win32 smoke

* no continue

* continue on error

* add vscode smokes

* remove vscode tests

* continue on error

* allow sqlite to use relative paths

* add linux smoke tests

* fix build files

* use dispatch instead of select

* fix linux build again

* fix darwin

* get select working

* try and use screen shots

* screen shots

* remove smoke tests linux

* try vscodes sqlite

* fix compile

* fix webpack

* fix deps

* try this again

* try force a rebuild

* try npm rebuild

* add sqlite to be rebuilt

* distro

* try vscode sqlite again

* revert changes to driver and simplify edits

* fix compile

* fix imports

* move sqlite out

* remove unneeded change

* add extensions path

* fix web tests

* no continue on error
2020-04-03 00:01:32 -07:00
Alan Ren
589de854d5 revert the changes impacting query editor and profiler editor (#9842)
* add the panel top border back

* more changes

* min-width and line height
2020-04-02 21:35:18 -07:00
Amir Omidi
ce12bae00f Remove unused dependencies (#9833)
* Remove the adal dependency

* Delete unused files

* Remove request as well
2020-04-02 17:16:54 -07:00
Amir Omidi
77db2d3ac0 connection widget wasn't getting the correct account for the dialog (#9834) 2020-04-02 17:05:51 -07:00
Charles Gagnon
a39792af17 Add some more event properties (#9793) 2020-04-02 11:56:42 -07:00
Alan Ren
fae73fe6ff update style of toggle tab header button (#9827) 2020-04-02 10:30:08 -07:00
Amir Omidi
223aa3fe0e We can't authenticate to every subscription (#9826)
* We can't authenticate to every subscription

* Refresh tenants and subs when the application starts
2020-04-02 09:02:04 -07:00
Alan Ren
41d21d799c modelview dashboard (#9784)
* modelview dashboard

* styles

* toolbar support

* spaces

* add tab icon support
2020-04-01 17:30:33 -07:00
Leila Lali
dd56908a06 Added multiple location option to package management dialog (#9790)
* Added multiple location option to package management dialog
2020-04-01 13:33:45 -07:00
Anthony Dresser
0bfbdc62ed Merge from vscode 2f984aad710215f4e4684a035bb02f55d1a9e2cc (#9819) 2020-04-01 00:44:39 -07:00
Alan Ren
0e27aaa61f new icon from UX team (#9816) 2020-03-31 21:50:50 -07:00
chlafreniere
f99f41b712 Check for configuration service 2020-03-31 20:28:09 -07:00
chlafreniere
ee8f53fbbc quick fix 2020-03-31 20:00:40 -07:00
chlafreniere
5abfd80a64 Add ability to run ADS commands 2020-03-31 19:52:07 -07:00
Amir Omidi
fc726c1477 Enable azure cloud console in ADS (#8546)
* initial changes

* Enable cloud console

* Delete unnecessary code

* error handling

* error handling

* Deal with promises

* Fix externals

* Fix externals for ws

* Cleanup name of terminal

* Update yarn.lock

* Fix yarn.lock

* Fix externals

* Cleanup parts of the code

* Fix more issues

* Fix cloud terminal

* Go back to our client ID

* Fix message

* Respect preferred location

* Fix govt cloud

* Some more messaging

* Enable items on right click

* Some feedback

* Change to status message
2020-03-31 18:39:58 -07:00
Kim Santiago
2b111c6bfd fix schema compare database dropdown when the user doesn't have access to master (#9813) 2020-03-31 16:32:30 -07:00
Amir Omidi
7ed66d0ae1 Fix #9810 (#9811) 2020-03-31 14:11:45 -07:00
Alan Ren
4500e887bb databases tab (#9798)
* databases tab

* correct typo
2020-03-31 13:19:05 -07:00
Alex Ma
6b9184aa15 Create new row upon focus on last row (#9046)
* enableaddrow now set to true

* restore false

* null row test

* temporary revert

* removed unnecessary refresh submitCurrentCellChange
2020-03-31 12:00:21 -07:00
Amir Omidi
1203c3b211 Fixes select box issue (#9808)
* Fixes select box issue

* Flip the if statement

* length check and error

* Theres apparently 0 length arrays using this

* Remove length check
2020-03-31 11:13:15 -07:00
Charles Gagnon
d832839b23 Fix extension gallery (#9805) 2020-03-31 11:06:39 -07:00
Jeff Trimmer
e149c0580c Add Simple Account Picker for use with Always Encrypted (#9707)
Adds the ability for the user to select from two or more linked azure accounts, using an integrated UI dialog, when executing a query that requires a Always Encrypted column master key located in Azure Key Vault.
2020-03-31 09:46:08 -07:00
Alan Ren
b23413d944 add padding for toolbar container (#9795) 2020-03-30 17:33:47 -07:00
Cory Rivera
d363ea33b5 Save charting state in SQL notebooks. (#9789) 2020-03-30 16:48:28 -07:00
Chris LaFreniere
bb135d6c67 Ensure kqlmagic is only offered for pip (#9776) 2020-03-30 16:33:49 -07:00
Charles Gagnon
cbc7d6fcac Fix declarative table missing right border (#9794) 2020-03-30 16:13:20 -07:00
Charles Gagnon
9b641490ea Add required value validations for checkbox and dropdown (#9770) 2020-03-30 12:44:56 -07:00
Charles Gagnon
90277d627c Filter some more commands (#9788) 2020-03-30 10:55:58 -07:00
Monica Gupta
9c842e7548 Kql magic updates (#9753)
* Inludes package upgrade and silent env

* Make user param changes

* Address comments

Co-authored-by: Monica Gupta <mogupt@microsoft.com>
2020-03-30 10:43:26 -07:00
Anthony Dresser
e1490b3536 remove github changes 2020-03-28 22:07:27 -07:00
ADS Merger
a64304602e Merge from vscode 1ec43773e37997841c5af42b33ddb180e9735bf2 2020-03-29 01:29:32 +00:00
Anthony Dresser
586ec50916 fix code to properly handle relative paths (#9777) 2020-03-28 14:59:19 -07:00
Amir Omidi
a8fd578d42 Fix the select box issue (#9508)
* Fix the select box issue

* map => forEach

* Fix tests and a product issue

* Maybe another potential fix

* Fix a few more issues

* Change backendValue to value

* localization

* Use Array.isArray
2020-03-27 16:59:29 -07:00
Charles Gagnon
626fc7894b Remove most CMS commands from palette (#9767)
* Remove most CMS commands from palette

* Update when
2020-03-27 14:36:22 -07:00
Charles Gagnon
068e1488cf Fix tabbing through Notebook cells (#9758)
* Fix tabbing through Notebook cells

* Fix toggle tab command and re-order DOM
2020-03-27 13:23:25 -07:00
Amir Omidi
a9240f38f7 Fix a few problems with new Azure auth (#9760)
* Fix a few problems

* Fix bug

* One resource per line

* Dispose before cleaning

* Dispose the event handler

* Dispose webserver
2020-03-27 13:18:27 -07:00
Charles Gagnon
52f7ab121d Fix command palette error (#9766) 2020-03-27 12:45:12 -07:00
Alan Ren
be83b31e37 dashboard improvement (#9730)
* dashboard improvement - WIP (#8836)

* wip

* wip

* tabgroup

* tab group

* agent views

* clean up

* formats

* feedback

* fix error

* contribute top level server/db dashboard tab (#8868)

* tabbedPanel component (#8861)

* tabbed panel

* tabbed panel

* fix errors

* revert main.ts changes

* use margin

* address comments

* remove orientation property

* content tab group (#8878)

* add databases tab

* use more extensible approach

* remove unnecessary code

* add when expression

* objects tab for database dashboard (#8892)

* fix build errors

* fix build error

* Dashboard toolbar (#9118)

* remove old toolbar with only edit and refresh

* remove tasks widgets from server and databases dashboards

* adding toolbar to dashboardpage and clicking new query works

* restore and new notebook now do something

* add backup to toolbar for database dashboards

* new notebook connects to db

* only show backup and restore for non-azure

* new backup and restore svgs

* clean up

* got toolbar actions to show up from contribution

* some cleanup and add database dashboard toolbar contributions

* don't show all tasks when there should be no tasks

* fix toolbar showing multiple times when switching opening another dashboard from OE

* only show toolbar for home page

* update to new icons - same icons for light and dark theme

* don't show separator if there aren't any actions

* read toolbar actions from tasks-widget

* remove tasks widget from home dashboard page

* show extension's actions in toolbar

* clean up

* more cleaning up

* fix extension actions not always loading the first time

* add configure dashboard

* remove old edit icon css

* change tasks back to original order

* make sure tasks widget is the one being removed

* collapsible tab panel (#9221)

* collapsible vertical tab panel

* fix lint error

* comments batch 1

* pr comments

* update new query icon (#9351)

* Update toolbar actions (#9313)

* remove edit and configure dashboard and add refresh to toolbar for other dashboard pages too

* Add refresh for tabs that have container type with refresh implemented

* change refresh to only refresh the current tab

* remove map for tab to actions

* add back configure dashboard to home toolbar

* check if index is -1 before trying to remove tasks widget from widgets

* Move objects widget back to database home tab (#9432)

* move objects widget back to database home tab and reorder toolbar

* change order of actions back to previous order

* Allow extensions to add actions to home toolbar (#9269)

* add support for extensions to add actions to home toolbar

* fix spacing

* use menu contribution point

* undo previous changes that added dashboardToolbarHomeAction contribution

* remove home from name

* add context key for tab name

* allow actions to also be added to the toolbar of other tabs

* add extension contributed actions even if no tasks-widget

* fix refresh being added twice after merging

* hide the tab list when collapsed (#9529)

* update the order of css selectors (#9606)

* Update dashboard style to be closer to mockups (#9570)

* update style to be closer to mockups

* tab panel styling

* change back tab styling for tabs in a tab contributed by an extension

* change color of borders when theme changes

* set dark theme active tab background to same as OE for now

* update border colors

* move colors to theme file

* fix a few issues (#9690)

* couple fixes

* comments

* small dashboard toolbar fixes  (#9695)

* fix backup icon in toolbar

* fix database page toolbar border color

* add back center center in common-icons.css (#9703)

* change padding so bottom border shows again (#9710)

* tab panel fixes (#9724)

* tab panel fixes

* fix package.nls.json

* feedbacks (#9761)

* feedbacks

* remove comments

Co-authored-by: Kim Santiago <31145923+kisantia@users.noreply.github.com>
2020-03-26 20:41:09 -07:00
Amir Omidi
fa43e26650 Fix a11y issue (#9733) 2020-03-26 17:52:13 -07:00
Amir Omidi
bb6e4e5ff1 Forces device code auth on SAW and fixes a small axios issue (#9756)
* Force device code and fix a device code issue

* Trailing comma
2020-03-26 17:51:51 -07:00
Anthony Dresser
dfeaaf384f fix ctrlp (#9751) 2020-03-26 16:58:03 -07:00
Charles Gagnon
68510d54cb Clean up modal/options dialog disposable use (#9739)
* Fix duplicate options and clean up disposable use

* Remove unneeded import

* Undo options fix - separating out in different PR
2020-03-26 14:46:22 -07:00
Charles Gagnon
fd950391e4 Fix notebook command palette clauses (#9752) 2020-03-26 14:43:03 -07:00
Anthony Dresser
f5d640e7d0 Merge remote-tracking branch 'origin/ads-master-vscode-2020-03-26T07-08-21' 2020-03-26 13:52:35 -07:00
Amir Omidi
5c63419d0d Keytar and UIKind Azure Authentication (#9743)
* Handle webmode

* Fix keytar

* Specify that it can be null too.

* Configuraiton option

* Fix callback URL

* Update message, only show if the user is on Linux

* Change message
2020-03-26 13:40:44 -07:00
Chris LaFreniere
2c05b07ee4 Fix Notebook Tokenization Warnings (#9725)
* Change html table serialization to array

* PR feedback

* rename variable
2020-03-26 13:03:51 -07:00
Thom
dd132a25e7 Remove unused issue template (#9747)
The new variant is stored here: https://github.com/microsoft/azuredatastudio/blob/master/.github/ISSUE_TEMPLATE/bug_report.md
so the old one can be removed.
2020-03-26 09:26:16 -07:00
ADS Merger
f5134198e2 Merge from vscode 93309f060778f6480a7d2a13913e6e7c624e9bc7 2020-03-26 07:08:23 +00:00
Maddy
685e0ccf7e Fix/search text cell on edit (#9685)
* find in text cell changes

* remove prev decorations

* update find index on cell edit

* added test

* addressed comments

* emit error
2020-03-25 22:47:06 -07:00
Charles Gagnon
4241ca523e Fix duplicate options (#9740) 2020-03-25 19:39:26 -07:00
Charles Gagnon
7778721ac9 Increase constrast ratio of input boxes in default light theme (#9737)
* Increase constrat ratio of input boxes in default light theme

* Update panel border
2020-03-25 16:05:57 -07:00
Udeesha Gautam
d4434016d0 Remove -1 from table tab index to allow tabbing into the table (#9681)
* Remove -1 from table tab index to allow tabbing into the table
2020-03-25 15:29:13 -07:00
Leila Lali
ab82c04766 Machine Learning Services - Model detection in predict wizard (#9609)
* Machine Learning Services - Model detection in predict wizard
2020-03-25 13:18:19 -07:00
Amir Omidi
176edde2aa Connection management service updates to support multiple providers (#9698)
* Connection management service work

* Fix tests

* Change how accounts are deleted

* Be consistent with names

* feedback

* Fix based on feedback

* Change sqltoolsservice version
2020-03-25 12:48:01 -07:00
Anthony Dresser
74b0dc28c4 Query editor tests (#9689)
* tests

* add tests for query editor input creation
2020-03-25 12:38:25 -07:00
Anthony Dresser
c2228b9fe8 Add check for the expected files when install service (#9722)
* async-await install service; add check for the files after downloading

* remove del

* use the same function for installing service

* fix for unix

* fix ssmin on linux

* fix syntax

* fix script

* fix issue
2020-03-25 12:38:07 -07:00
ADS Merger
d810da9d87 Merge from vscode 8df646d3c5477b02737fc10343fa7cf0cc3f606b 2020-03-25 06:20:54 +00:00
Anthony Dresser
6e5fbc9012 Remove keytar from azurecore (#9720)
* remove keytar from azurezore

* revert webpack
2020-03-24 18:04:08 -07:00
Alan Ren
c0962d804b fix sub leak (#9709) 2020-03-24 11:26:41 -07:00
Anthony Dresser
89ef1b0c2e Merge from vscode 073a24de05773f2261f89172987002dc0ae2f1cd (#9711) 2020-03-24 00:24:15 -07:00
Amir Omidi
29741d684e Move to new format (#9663) 2020-03-23 14:24:24 -07:00
Amir Omidi
c15ac474d7 New Azure Auth Provider (#9664)
* Fixes how azure auth is handled on the azure pane

* New auth provider

* Add externals

* Feedback

* Change azdata

* Fix other issues

* Review feedback

* Feedback

* Feedback updates

* Move AKV to azdata.d.ts

* Fix yarn.lock

* Update third party notices
2020-03-23 12:39:25 -07:00
Alan Ren
c35221c076 fix properties widget (#9693)
* fix properties widget

* handle error scenario
2020-03-23 12:10:24 -07:00
Alan Ren
5a0dd18cba restore focus (#9668)
* restore focus

* update default config

* update
2020-03-23 12:09:13 -07:00
Amir Omidi
aff5f2786d Post release version bump (#9656)
* Update change logs

* Formatting

* update changelog

* Base version bump

* extension version bump

* Update CHANGELOG.md

* Agent was updated as well
2020-03-23 12:04:49 -07:00
Charles Gagnon
df1b0c908e Refactor options dialog to not use splitview (#9684)
* Refactor options dialog to not use splitview

* Fix test
2020-03-23 08:15:54 -07:00
Anthony Dresser
a7dbb68f7d Fix handling of connections in editors (#9682)
* fix handling of connections in editors

* initial tests

* remove test
2020-03-21 14:13:32 -07:00
Amir Omidi
a649461409 Downgrade package (#9686) 2020-03-20 20:29:56 -07:00
Anthony Dresser
dd8fb9433b Merge from vscode 5d18ad4c5902e3bddbc9f78da82dfc2ac349e908 (#9683) 2020-03-20 01:17:27 -07:00
Leila Lali
1520441b84 Machine Learning Services - Enabling external script for package management only (#9519)
* Machine learning services extension - removed config table and added config update to package manager
2020-03-19 16:48:33 -07:00
Jeff Trimmer
35b27f1304 Add akv token request logic (#9556)
Add support for running queries that require a decryption key from Azure Key Vault when using Always Encrypted.
2020-03-19 12:49:05 -07:00
Charles Gagnon
5557929b08 Add quality build tag to build (#9674) 2020-03-19 12:38:41 -07:00
Anthony Dresser
4cb9009606 use our issue bot for duplicate detection (#9667) 2020-03-19 12:27:31 -07:00
ADS Merger
84f67f61c4 Merge from vscode 61d5f2b82f17bf9f99f56405204caab88a7e8747 2020-03-19 06:57:07 +00:00
Alan Ren
03ce5d1ba7 redesign of deployment profile page (#9659) 2020-03-18 14:40:43 -07:00
Alan Ren
2cb77441ad remove the message on page enter (#9661) 2020-03-18 13:39:13 -07:00
Amir Omidi
166f0d164e Change to the old format (#9662) 2020-03-18 12:57:49 -07:00
Amir Omidi
e100b8f88e A simple file and memory based database (#9649)
* File and memory database

* Add read and write hook tests
2020-03-18 12:20:25 -07:00
Aditya Bist
a884f6a39d Add ability to scroll horizontally in the server table (#9308)
* add to scroll horizontally in the server table

* respect workbench tree settings for connections
2020-03-18 12:20:07 -07:00
Amir Omidi
ae1f3df490 Fixes how azure auth is handled on the azure pane (#9654) 2020-03-18 11:50:25 -07:00
Amir Omidi
502621e2e1 Update change logs for March 2020 Release (#9652)
* Update change logs

* Formatting

* update changelog

* Explain that the link will change
2020-03-18 10:07:36 -07:00
Anthony Dresser
61831d8642 Merge from vscode 708b019bb4e20f07cf89df9f1d943af3d38d7a70 (#9657) 2020-03-17 22:35:18 -07:00
Amir Omidi
5ee7454793 Fixes error introduced in #9653 (#9655) 2020-03-17 17:50:36 -07:00
Alan Ren
1e1cd2f797 remove the alert role from the wizard page title (#9653)
* announce page change

* Use status() and update message

* localize the page number text

* comments
2020-03-17 16:43:59 -07:00
Amir Omidi
cc6cc2889a Simple web server component (#9648)
* Simple web server component

* More testing
2020-03-17 16:32:06 -07:00
Anthony Dresser
bd8c4a44c8 change to freeze configuration models (#9644) 2020-03-17 15:45:29 -07:00
Alan Ren
19dec78349 fix accessibility issue caused by not using table (#9645)
* fix accessibility issue caused by not using table

* remove fixed background color
2020-03-17 12:01:55 -07:00
Alan Ren
6c8a7dc97f setting aria-label for table (#9647)
* setting aria-label for table

* use variable
2020-03-17 11:41:34 -07:00
Monica Gupta
fa6898ded7 Pre-installs and registers kqlmagic (#9558)
Co-authored-by: Monica Gupta <mogupt@microsoft.com>
2020-03-17 09:02:58 -07:00
Anthony Dresser
a53b78c0c8 Merge from vscode 099a7622e6e90dbcc226e428d4e35a72cb19ecbc (#9646)
* Merge from vscode 099a7622e6e90dbcc226e428d4e35a72cb19ecbc

* fix strict
2020-03-16 23:16:40 -07:00
dependabot[bot]
81e1b9a434 Bump minimist from 1.2.0 to 1.2.2 in /build (#9640)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.2.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-03-16 17:22:13 -07:00
Elliot Boschwitz
1affd5f728 Timeout extention for Linux and Windows pipelines (#9643) 2020-03-16 16:34:15 -07:00
Aditya Bist
5429850a98 Add dotted lines for selected colors (#9641)
* add dotted lines for selected colors

* use default selection styling
2020-03-16 15:38:37 -07:00
Charles Gagnon
0ad40c1baa Work around coveralls parallel upload issue (#9635)
* Work around coveralls parallel upload issue

* Make dir

* Fix extension paths

* Revert "Fix extension paths" (#9639)

This reverts commit 4598561f858a62b49de5f951de95c099889a85b2.

Co-authored-by: Amir Omidi <amomidi@microsoft.com>
2020-03-16 12:44:25 -07:00
Kim Santiago
b9ce15158d remove role=alert (#9621) 2020-03-16 12:11:59 -07:00
Alan Ren
7ed072c44d do nothing if the focus is already in dialog (#9629)
* do nothing if the focus is already in dialog

* use document.activeElement instead
2020-03-16 11:51:57 -07:00
Anthony Dresser
0405658be7 fix issue with setting false (#9611) 2020-03-16 11:12:57 -07:00
Amir Omidi
11cf5654bf New shared config for our extensions (#9624)
* New shared config for our extensions

* Path
2020-03-16 10:25:27 -07:00
Alan Ren
919b058175 fix the focus outline color (#9632) 2020-03-16 10:20:55 -07:00
Alan Ren
13d2f39004 fix the contrast ratio (#9631) 2020-03-16 10:20:20 -07:00
Alan Ren
1e6f102352 set the role to img (#9630) 2020-03-16 10:19:55 -07:00
Charles Gagnon
64eb406fdc Add connecting title to spinner for Connection dialog (#9623) 2020-03-16 08:26:35 -07:00
Maddy
d6d33165f1 fixed opening book on win (#9622) 2020-03-13 19:20:51 -07:00
Jorge Berumen
6a1037ab2d Fix trusting opened notebooks (#9615)
* Fix trusting opened notebooks

* Addressing comments
2020-03-13 18:10:55 -07:00
Charles Gagnon
4a54f53ae3 Increase test coverage of admin-tool-ext-win (#9619) 2020-03-13 17:05:05 -07:00
Charles Gagnon
71e72de792 Add coveralls support for extension tests (#9603)
* Test uploading multiple reports in parallel

* Fix filename

* Add rest of extensions

* Try removing parallel task running

* Add parallel back in
2020-03-13 15:33:16 -07:00
Kim Santiago
dbd9e5be2d fix nvda announcing wrong radio button grouping (#9613) 2020-03-13 14:36:12 -07:00
Alan Ren
56851dedd2 remove tabindex attribute (#9616) 2020-03-13 14:10:26 -07:00
Alan Ren
8a548c2b56 update elements order (#9614) 2020-03-13 13:52:57 -07:00
Charles Gagnon
1699dd0729 Check for valid uri/resource (#9593)
* Check for valid uri/resource

* Add a few other cases
2020-03-13 11:19:25 -07:00
Jorge Berumen
d5fdec5699 Introduce Trust Book in Book Viewlet (#9414) 2020-03-13 09:11:38 -07:00
Anthony Dresser
744e655dd3 revert changes we dont want 2020-03-12 22:39:24 -07:00
ADS Merger
a7e56d334f Merge from vscode fb5dc0083bfa9a0e3da7ed1f86e1ecb9836fcc8b 2020-03-13 05:35:18 +00:00
Chris LaFreniere
7658a5df28 Fix search icon only working when section expanded (#9596) 2020-03-12 21:35:38 -07:00
Anthony Dresser
6652801861 Move underscore to dev only (#9566)
* moev underscore to dev only

* distro

* build files

* distro
2020-03-12 19:34:27 -07:00
Maddy
1a831f94ed check for len > 1 (#9586) 2020-03-12 18:01:44 -07:00
Anthony Dresser
f7360771f0 change usage of view container (#9591) 2020-03-12 15:04:52 -07:00
Amir Omidi
c9170aaf0e Hook up the command again (#9587) 2020-03-12 12:26:28 -07:00
Alan Ren
8196f86386 add azdata open extension command (#9573) 2020-03-12 10:14:51 -07:00
ADS Merger
b5592959c7 Merge from vscode 1df23554b2e3d5f1efc6fbc76ee61d3f7f186c6d 2020-03-12 06:51:03 +00:00
Alan Ren
a68a6b9e44 update extension icon (#9542) 2020-03-11 19:25:32 -07:00
Maddy
8745714c86 vbump (#9567) 2020-03-11 18:36:03 -07:00
Amir Omidi
06cbde054d Fix Azure account picker (#9569)
* Fix orientation issue

* remove sql carbon to reduce conflict
2020-03-11 16:54:06 -07:00
Charles Gagnon
0226ad69da Add dashboard refresh icon back in (#9564) 2020-03-11 16:11:27 -07:00
Anthony Dresser
ba0d5feca3 fix master compile (#9557)
* fix master compile

* fix tests
2020-03-11 13:31:49 -07:00
Anthony Dresser
c9a68ddc1e fix issue label (#9555) 2020-03-11 12:53:03 -07:00
Anthony Dresser
a27e60b6ad Add automated comment for needs logs. (#9428)
* add auto logging comment for needs more info

* change label to Needs Logs

* update comment
2020-03-11 12:45:28 -07:00
Anthony Dresser
dbc20c1f67 Query editor input titles (#9512)
* address untitled editor file name differences; remove feature for updating title for untitled to content

* add tests for new methods

* fix tests

* fix up tests

* remove unncessary await

* revert changes to title for content
2020-03-11 12:42:13 -07:00
Anthony Dresser
edd396f0fe Fix text content in title (#9534)
* fix text content in title

* revert changes and change default setting instead
2020-03-11 12:38:26 -07:00
Anthony Dresser
37042a24bc Merge branch 'ads-master-vscode-2020-03-11T04-19-20' 2020-03-11 12:24:48 -07:00
Alan Ren
a2935fca3a remove the unused widgets (#9483) 2020-03-11 11:56:36 -07:00
Charles Gagnon
96f0ae79ca Fix account label being cut off (#9547) 2020-03-11 09:47:49 -07:00
Charles Gagnon
7caeba8549 Make form item labels normal text components instead of headers (#9540) 2020-03-11 08:41:37 -07:00
Anthony Dresser
2c34e07064 fix tests 2020-03-11 01:50:01 -07:00
Anthony Dresser
4a3fdd1ad5 distro 2020-03-11 01:34:55 -07:00
Anthony Dresser
75cdc19715 fix tests 2020-03-11 01:13:03 -07:00
Anthony Dresser
ad472c80be fix strict null 2020-03-11 00:35:08 -07:00
Anthony Dresser
324451ea22 fix hygiene 2020-03-10 22:02:15 -07:00
ADS Merger
4c3e48773d Merge from vscode cfc1ab4c5f816765b91fb7ead3c3427a7c8581a3 2020-03-11 04:19:23 +00:00
Chris LaFreniere
16fab722d5 Remove Decompress + Replace with Other Package (#9532)
* add windows support

* works on windows

* Still testing, works on Windows

* Reject on error

* Fix adm-zip external
2020-03-10 19:55:25 -07:00
Alan Ren
de65cd84a9 fix collapse widget action icon (#9537) 2020-03-10 19:14:47 -07:00
Kim Santiago
a013f7d6ff Accessibility fixes (#9516)
* add aria label for deploy plan table

* shift focus to options dialog when opened

* add check for when table is empty
2020-03-10 14:59:06 -07:00
Cory Rivera
0a117fbd00 Add separate dialog to notebook charts for specifying chart options. (#9454) 2020-03-10 14:10:34 -07:00
Chris LaFreniere
268463b5c7 Remove decompress (#9530) 2020-03-10 13:21:51 -07:00
Charles Gagnon
b02273de48 Fix long account dialog text hiding actions (#9449) 2020-03-10 13:09:37 -07:00
Charles Gagnon
efc8294f70 Add suppression for AutoMerge (#9524) 2020-03-10 12:50:18 -07:00
Chris LaFreniere
3a1cd98856 Add Internal Command for New Resource Deployment (#9122)
* Prevent check in openerService for cmdregistry

* Revert "Prevent check in openerService for cmdregistry"

This reverts commit c40079e6f38dcd379941474accc1a1e3b42f6103.

* Add internal command that calls extension command

* Add comment
2020-03-10 12:46:55 -07:00
Chris LaFreniere
80ed6131ce Fix find highlight for multiple find occurrences (#9518) 2020-03-10 10:23:16 -07:00
Alan Ren
96935f2f87 always show the header (#9521) 2020-03-10 10:06:55 -07:00
Chris LaFreniere
1fb3faeda1 Notebooks: Fix Internal Links on Windows (#9513)
* Improve workbench file path detection

* Use fspath instead
2020-03-09 18:10:24 -07:00
Anthony Dresser
6e14f13753 fix sml formatting (#9510) 2020-03-09 15:49:47 -07:00
Leila Lali
3be3563b0d Machine Learning Services Extension - Predict wizard (#9450)
*MLS extension - Added predict wizard
2020-03-09 15:40:05 -07:00
Amir Omidi
b017634431 add coverage reports for base product (#9499) 2020-03-09 11:01:39 -07:00
Charles Gagnon
964ff0119e Update aria label for modal dialog when title is updated (#9492) 2020-03-09 08:25:04 -07:00
Charles Gagnon
86b92b9a87 Suppress another file for CredScan (#9478) 2020-03-09 08:24:26 -07:00
Amir Omidi
9f9c65591d Update all test packages (#9490)
* Update all packages

* Potential fix for normal tests

* Revert a change and try something else

* Try this as well
2020-03-07 07:23:00 -08:00
Aditya Bist
a93f5883b9 Fix updating step icon (#9488)
* fix updating data

* bump toolsservice and agent versions

* unbumo the version
2020-03-06 16:51:32 -08:00
Amir Omidi
5578693635 Fix the svg issue (#9487) 2020-03-06 15:10:46 -08:00
Maddy
9cc31bee62 Feat/close book (#9453)
* initial commit

* Add Reveal in Books editor tab context option

* Select item in books viewlet automatically

* changes

* easier than i thought it'd be

* added file watcher on toc file v1

* Merge from Feat/create book

* Undo Merge from Feat/create book

* Use fsPath instead of path

* repen book on toc update

* update book in-place

* fix close book

* error handling for closeBook

* PR comments

* addressed comments

* moved the watch block to try ,watch vs watchFile

Co-authored-by: chlafreniere <hichise@gmail.com>
Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>
2020-03-06 14:55:22 -08:00
Kim Santiago
6f17f0de58 Add schema compare to database connection context menu (#9382)
* add schema compare to database connection context menu

* don't show dacfx and schema compare in context menus for system dbs

* Remove checks for system db

* undo whitespace change
2020-03-06 13:35:47 -08:00
Amir Omidi
20f7670b32 Stricter tslint rules (#9352) 2020-03-06 13:06:44 -08:00
Amir Omidi
f3a255a7f7 Revert "Revert "Revert "Temporarily add aaomidi (#9467)" (#9468)" (#9479)" (#9484)
This reverts commit cfcee3287a.
2020-03-06 11:57:59 -08:00
Amir Omidi
e1a0835140 Change to PAT (#9481) 2020-03-06 11:52:17 -08:00
Amir Omidi
cfcee3287a Revert "Revert "Temporarily add aaomidi (#9467)" (#9468)" (#9479)
This reverts commit 34a7340a18.
2020-03-06 11:38:33 -08:00
Chris LaFreniere
0a9a0d3f46 Ensure Active File is Highlighted in Books Viewlet (#9338)
* Add Reveal in Books editor tab context option

* Select item in books viewlet automatically

* changes

* easier than i thought it'd be

* Merge from Feat/create book

* Undo Merge from Feat/create book

* Use fsPath instead of path

* PR comments

* Fix tests

Co-authored-by: Maddy <12754347+MaddyDev@users.noreply.github.com>
2020-03-05 23:43:22 -08:00
Amir Omidi
34a7340a18 Revert "Temporarily add aaomidi (#9467)" (#9468)
This reverts commit 95f0ae32db.
2020-03-05 17:47:29 -08:00
Amir Omidi
95f0ae32db Temporarily add aaomidi (#9467) 2020-03-05 17:43:07 -08:00
Amir Omidi
2b427d8a62 Fix file format (#9466) 2020-03-05 17:18:01 -08:00
Amir Omidi
c6447d3280 Fixes the labeler (#9464) 2020-03-05 17:13:11 -08:00
Amir Omidi
d363bfb0da Fix the path to actions (#9461) 2020-03-05 17:06:42 -08:00
Amir Omidi
2ac6852cf1 Revert "Change path (#9456)" (#9459)
This reverts commit 8f15c05d8a.
2020-03-05 16:58:52 -08:00
Amir Omidi
8f15c05d8a Change path (#9456) 2020-03-05 16:52:38 -08:00
Amir Omidi
76cf10d23c Automatically label PRs (#9418)
* Automatically label and merge PRs
2020-03-05 16:46:06 -08:00
Amir Omidi
673e5a85cb Update the page based on feedback from PM/UX (#9452)
* Update the page based on feedback from PM/UX
2020-03-05 14:38:57 -08:00
Aditya Bist
997e91f19c Fix agent steps refresh when changing history (#9446)
* layering

* switch to events and emitters

* changed to self
2020-03-05 12:33:47 -08:00
Amir Omidi
a93cc68e24 Fail on error (#9429)
* Fail on error
2020-03-04 17:31:09 -08:00
Kim Santiago
eb1218b651 bump sqltoolsservice to 2.0.0-release.50 (#9444) 2020-03-04 16:45:09 -08:00
Charles Gagnon
df5a8dcb6a Revert "Hale test (#9442)" (#9443)
This reverts commit 837404b2d6.
2020-03-04 16:11:15 -08:00
Hale Rankin
837404b2d6 Hale test (#9442)
* Test commit

* Test commit. Added new line to comment.

Co-authored-by: Hale Rankin <61754801+harankin@users.noreply.github.com>
2020-03-04 15:42:17 -08:00
Charles Gagnon
9f62e2bf22 Bump Service Downloader (#9254)
* bump service-downloader

* handle new event

* Add output logging for servicedownloading events (#9277)

* bump service-downloader to 0.2.0

* bump service-downloader 0.2.1

* Retry github checks

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2020-03-04 15:24:46 -08:00
Charles Gagnon
299568a506 Remove some azure commands from palette (#9436) 2020-03-04 11:57:34 -08:00
Charles Gagnon
47c77cc2a7 Add CredScanSuppressions file (#9438)
* Add cred scan suppressions file

* Fix path
2020-03-04 11:55:19 -08:00
Chris LaFreniere
0f9d98730e Improve find by tracking actual rendered text (#9419)
* Improve find by tracking actual rendered text

* Fix tests, add notebook md render
2020-03-03 16:56:11 -08:00
Alan Ren
ff0992510b mark as test as unstable (#9426) 2020-03-03 10:47:47 -08:00
Charles Gagnon
9293d3654c Update postgres extension for integration tests (#9421) 2020-03-03 09:39:03 -08:00
Anthony Dresser
886329cd67 Merge from vscode 17c6d123d212f90300429ecad3fc96fcec6e338f (#9423) 2020-03-03 02:19:34 -08:00
Alan Ren
00d0e4778b upload the extension unit test coverage files to pipeline (#9398)
* copy coverage results

* tweek the parameters

* fix error
2020-03-02 17:48:58 -08:00
Anthony Dresser
89786bea04 remove special casing of untitled (#9379) 2020-03-02 17:24:34 -08:00
Charles Gagnon
efab499f1f Fix TSA scan issue (#9417) 2020-03-02 16:08:51 -08:00
Leila Lali
b5b65117a7 Machine Learning Extension - Model details (#9377)
* Machine Learning Services Extension - adding model details
2020-03-02 12:47:09 -08:00
Maddy
c1f6a67829 Feat/create book (#9159)
* added secondary action

* create book command

* open as untitled

* create toc.yml and update title

* added comments

* throw error if filenames have unsupported chars

* update prompt message

* remove the toLocaleLower

* added await

* moced createbookpath out of the command handler

* removed tolocalelower and added comments

* moved the formatting and file handling code from core to notebook

* fixes for contents with folders

* collapse the code cell

* remove output

* reused existing command to open book

* comment typu and added await
2020-03-02 12:45:53 -08:00
Charles Gagnon
01db78f743 Add required property to checkbox and set it for deployment dialog (#9392) 2020-03-02 07:54:13 -08:00
Charles Gagnon
6383bc7ebd Fix checks for checkbox height/width (#9393) 2020-03-02 07:53:59 -08:00
Anthony Dresser
4c3d51aa52 distro (#9390) 2020-02-28 13:06:30 -08:00
Anthony Dresser
5d13ebf0d2 Merge from vscode e5834d3280fcd04898efeac32b9cf1b893f9b127 (#9385)
* Merge from vscode e5834d3280fcd04898efeac32b9cf1b893f9b127

* distro
2020-02-28 00:37:06 -08:00
Aditya Bist
70851716f7 add back sql icons for ads installation (#9376) 2020-02-27 16:12:56 -08:00
Kim Santiago
c8bcd25832 Fix for dacfx wizard if user doesn't have access to master db (#9362)
* fix for if user doesn't have access to master db

* add console.warn with error
2020-02-27 15:37:04 -08:00
Alan Ren
2de3bd3209 only download the required files (#9374) 2020-02-27 15:00:06 -08:00
Amir Omidi
1c9841c8e6 Add ossRdmbs to getAccessTokens (#9364) 2020-02-27 14:09:58 -08:00
Alex Ma
2448a109fc Fix for table resizing (#9117)
* some optimization

* check for table

* fix table resizing

* Fix for sash crash

* Removed space

* small optimization

* small change in message

* small change

* changed wording

* removed timeout for onResize

* Removed onGridRendered

* fix isCellOnScreen

* small spacing fixes

* removed timeout in gridParentComponent

* fix for indexing

* reduced instances of "self"

* minor fixes for self and this
2020-02-27 12:52:35 -08:00
Charles Gagnon
c05ff67622 Update pgsql extension and readme (#9371) 2020-02-27 11:09:00 -08:00
Anthony Dresser
d6b5d3c6b1 implement editor move and fix disposal error in query editor (#9281) 2020-02-26 21:11:48 -08:00
Alan Ren
80baa4a732 only show the tabs for server context (#9344) 2020-02-26 16:11:43 -08:00
Amir Omidi
2ae3810dac Only install the cert on signed builds (#9357) 2020-02-26 14:55:44 -08:00
Alan Ren
7d7a7e2e37 pick up the latest sql tools service (#9354) 2020-02-26 14:42:19 -08:00
Chris LaFreniere
29cf1f898e Search sections in Jupyter Viewlet (#9346) 2020-02-26 13:59:38 -08:00
Amir Omidi
924815353d Fix a few notebook promises (#9315)
* Fix a few notebook promises

* Add a _ before sessionDetails

* Change to onUnexpectedError
2020-02-26 11:58:56 -08:00
Amir Omidi
6cf82d2611 Start on new eslint file (#9314) 2020-02-26 11:39:00 -08:00
Cory Rivera
73d9b7f22a Check if notebook model is undefined in setTrustForNewEditor. (#9312) 2020-02-26 11:17:56 -08:00
Cory Rivera
412214e193 Add charting functionality to SQL notebooks. (#9306) 2020-02-26 10:52:19 -08:00
Leila Lali
ff207859d6 Machine Learning Model Registry - Iteration1 (#9105)
* Machine learning services extension - model registration wizard
2020-02-26 09:19:48 -08:00
Anthony Dresser
067fcc8dfb Merge from vscode dbe62be3266ffb6772a7f3db0bf61d63f4aa7f65 (#9337) 2020-02-26 00:23:48 -08:00
Amir Omidi
d2892ff78b Runtime hardening and notarization for OSX (#8663) 2020-02-25 15:24:31 -08:00
Charles Gagnon
a9056bbba5 Fix server group dialog open (#9330) 2020-02-25 15:14:32 -08:00
Karl Burtram
70352f94ea Fix ADS branding in Git viewlet (#9332) 2020-02-25 12:47:41 -08:00
Charles Gagnon
b1d58767c4 Add livy_session_startup_timeout_seconds config back in (#9212) 2020-02-25 11:31:10 -08:00
Anthony Dresser
4a9c47d3d6 Merge from vscode 5e80bf449c995aa32a59254c0ff845d37da11b70 (#9317) 2020-02-24 21:15:52 -08:00
Amir Omidi
628fd8d74d Separator component (#9310)
* Separator component
2020-02-24 16:53:42 -08:00
Aditya Bist
d7ea1123ef fix azdata connection API for dashboard connections (#9311) 2020-02-24 16:32:38 -08:00
Aditya Bist
eeae87ea32 remove icon files and use codicons for extensions (#9305) 2020-02-24 13:19:24 -08:00
Benjin Dubishar
1a639f83c4 .sqlproj and datasources.json file parsing (#8921)
* Checkpoint

* Adding mock contents for tree

* added open sqlproj dialog

* reading files from directory

* Added directory traversal

* Adding tree sorting by folder vs file and label

* Improved auto-unfolding of tree based on node type

* replacing fs with fs.promise alias

* PR feedback

* added activation event for when workspace contains sqlproj files

* Returning after displaying error

* Fixing linter errors

* Reworked tree

* Fixing missing grandchildren

* Correcting tree URI construction

* Refactoring to isolate tree item responsibilities from data model responsibilities

* project file parsing

* constructing tree from project files rather than filesystem

* Fixing double-initialization

* Changing projectEntry to take enum for file type

* Correct node type for project item

* Parsing datasources.json

* Child nodes for sql data source

* Localizing strings

* Checkpoint

* Adding mock contents for tree

* added open sqlproj dialog

* reading files from directory

* Added directory traversal

* Adding tree sorting by folder vs file and label

* Improved auto-unfolding of tree based on node type

* replacing fs with fs.promise alias

* PR feedback

* added activation event for when workspace contains sqlproj files

* Returning after displaying error

* Fixing linter errors

* Reworked tree

* Fixing missing grandchildren

* Correcting tree URI construction

* Refactoring to isolate tree item responsibilities from data model responsibilities

* project file parsing

* constructing tree from project files rather than filesystem

* Fixing double-initialization

* Changing projectEntry to take enum for file type

* Correct node type for project item

* Parsing datasources.json

* Child nodes for sql data source

* Localizing strings

* missed file in merge

* changed extension method to helper

* cleanup

* Adding docstrings
2020-02-24 12:11:41 -08:00
Aditya Bist
933cfb21ef formatted file (#9303) 2020-02-24 11:20:36 -08:00
Alan Ren
5982925ed7 keep up with latest azdata (#9276) 2020-02-24 10:54:54 -08:00
Kim Santiago
9090143f9d Add a few unit tests for dacpac extension (#9194)
* add a few unit tests

* fix tests for linux
2020-02-24 10:01:30 -08:00
Charles Gagnon
10b681b3c8 Add Arc Resources to Azure view (#9271)
* Initial work

* Add setting change handler

* Fix tests

* Update loc names and add preview tag

* Remove TODOs
2020-02-24 08:15:27 -08:00
Anthony Dresser
de5f1eb780 Merge from vscode 33a65245075e4d18908652865a79cf5489c30f40 (#9279)
* Merge from vscode 33a65245075e4d18908652865a79cf5489c30f40

* remove github
2020-02-21 23:42:19 -08:00
Alan Ren
c446cea3a0 fix the input width height issue (#9273)
* fix the input width height issue

* updates
2020-02-21 16:12:56 -08:00
Chris LaFreniere
41a90c01c3 Listen to escape key to close nb find widget (#9247) 2020-02-21 15:54:21 -08:00
Anthony Dresser
1b78a9b1e0 Merge from vscode e6a45f4242ebddb7aa9a229f85555e8a3bd987e2 (#9253)
* Merge from vscode e6a45f4242ebddb7aa9a229f85555e8a3bd987e2

* skip failing tests

* remove github-authentication extensions

* ignore github compile steps

* ignore github compile steps

* check in compiled files
2020-02-21 12:11:51 -08:00
Anthony Dresser
c74bac3746 Add missing resources (#9246)
* add missing resources

* don't bump versions

* fix workbench file

* distro
2020-02-20 22:58:52 -08:00
Anthony Dresser
4c54b5dbac Batch messages on the exthost to not freeze ads (#8949)
* batch messages on the exthost to not freeze ads

* clear out messages on query complete
2020-02-20 14:50:13 -08:00
Charles Gagnon
8fe0a13b61 Update release notes link (#9191) 2020-02-20 14:29:02 -08:00
Kim Santiago
2fc0e28e57 Remove required from dacpac wizard dropdowns (#9200)
* remove required from dropdowns

* set required for dropdown

* also set required for editable dropdown

* add back required for db and server dropdowns

* add back to required to databaseLoader
2020-02-20 11:49:26 -08:00
Charles Gagnon
c6bc68f399 Fix UI not selecting false options initially (#9213) 2020-02-20 07:36:56 -08:00
Anthony Dresser
0cec223301 Merge from vscode 777931080477e28b7c27e8f7d4b0d69897945946 (#9220) 2020-02-19 22:27:53 -08:00
Anthony Dresser
ab6fb810f8 move update model for notebook save to the input (#8995) 2020-02-19 22:01:07 -08:00
Charles Gagnon
7eef23f232 Fix refreshing nodes in Azure view (#9215)
* Fix refreshing nodes in Azure view

* refactor

* Remove refreshNode from shim

* Add missing await
2020-02-19 16:55:17 -08:00
Anthony Dresser
1d0f76d26a Setup files for workbench/services to be strict compiled (#9168)
* setup services to be strict compiled. fix some of the issues

* fix compile

* fix compile

* revert some undefined changes
2020-02-19 16:07:57 -08:00
Anthony Dresser
cec7753e3d Final layering (#9164)
* move handling generated files to the serilization classes

* remove unneeded methods

* add more folders to strictire compile, add more strict compile options

* update ci

* wip

* add more layering and fix issues

* add more strictness

* remove unnecessary assertion

* add missing checks

* fix indentation

* wip

* remove jsdoc

* fix layering

* fix compile

* fix compile errors

* wip

* wip

* finish layering

* fix css

* more layering

* rip

* reworking results serializer

* move some files around

* move capabilities to platform wip

* implement capabilities register provider

* fix capabilities service

* fix usage of the regist4ry

* add contribution

* wip

* wip

* wip

* remove no longer good parts

* fix strict-nulls

* fix issues with startup

* another try

* fix startup

* fix imports

* fix tests

* fix tests

* fix more tests

* fix tests

* fix more tests

* fix broken test

* fix tabbing

* fix naming

* wip

* finished layering

* fix imports

* fix valid layers

* fix layers

* wip

* finish layering

* final layering

* finish layering

* fix spacing
2020-02-19 14:43:16 -08:00
Karl Burtram
161ea001c0 Update changelog for Feb Hotfix 1 release (#9195) 2020-02-19 13:16:53 -08:00
Charles Gagnon
f2ffa6c7e5 Initial post-release extension vBump (#9144) 2020-02-19 07:56:15 -08:00
Anthony Dresser
5194ee2f9b distro 2020-02-19 03:55:41 +00:00
ADS Merger
1e308639e5 Merge from vscode 9bc92b48d945144abb405b9e8df05e18accb9148 2020-02-19 03:11:35 +00:00
Anthony Dresser
98584d32a7 distro (#9198) 2020-02-18 17:16:58 -08:00
Jeff Trimmer
5672500af2 Add Always Encrypted enclave connection parameters to the ADS UI (#9062)
* Add Always Encrypted enclave connection parameters to Advanced Connections Options dialog.

* Update always encrypted advanced connection options strings.

* Change enclave protocol category name properties to the Enum constants.
2020-02-18 15:32:49 -08:00
Arvind Ranasaria
d69cda80c3 wipe status message only when not installing (#9192) 2020-02-18 15:16:54 -08:00
Anthony Dresser
47e716d3b2 warn instead of error on disabled apis (#9193) 2020-02-18 14:09:16 -08:00
Charles Gagnon
6bd3ed72dd Display azure resource fetch errors as warnings (#9158) 2020-02-18 10:48:39 -08:00
Charles Gagnon
48c3702c7a Add null ref check for click handler (#9190) 2020-02-18 10:18:02 -08:00
Anthony Dresser
506c6a5e5f More Layering (#9139)
* move handling generated files to the serilization classes

* remove unneeded methods

* add more folders to strictire compile, add more strict compile options

* update ci

* wip

* add more layering and fix issues

* add more strictness

* remove unnecessary assertion

* add missing checks

* fix indentation

* wip

* remove jsdoc

* fix layering

* fix compile

* fix compile errors

* wip

* wip

* finish layering

* fix css

* more layering

* rip

* reworking results serializer

* move some files around

* move capabilities to platform wip

* implement capabilities register provider

* fix capabilities service

* fix usage of the regist4ry

* add contribution

* wip

* wip

* wip

* remove no longer good parts

* fix strict-nulls

* fix issues with startup

* another try

* fix startup

* fix imports

* fix tests

* fix tests

* fix more tests

* fix tests

* fix more tests

* fix broken test

* fix tabbing

* fix naming

* wip

* finished layering

* fix imports

* fix valid layers

* fix layers
2020-02-15 01:54:23 -06:00
Anthony Dresser
873c6a39fe Merge from vscode 1a81711a85e38ccf784110568ebf3784ab9094a5 (#9161)
* Merge from vscode 1a81711a85e38ccf784110568ebf3784ab9094a5

* small spacing fix
2020-02-15 00:43:09 -06:00
Anthony Dresser
74b89a0a85 No console linting (#9156)
* add no-console linting and change to just using overrides for sql files

* whitespace

* fix tests
2020-02-14 21:13:16 -06:00
Alex Ma
6b0332b2d1 call refreshDatasets upon loading new dataset (#9160)
* call refreshDatasets upon loading new dataset

* readded space
2020-02-14 18:25:52 -08:00
Charles Gagnon
2d70ff7f4e Improve azure resource API error handling (#9151)
* Improve azure resource API error handling

* Add ref path

* Add missed typings file and remove module references
2020-02-14 14:22:05 -08:00
Cory Rivera
dd5c0ce08f Maintain notebook trust status after saving. (#9127) 2020-02-14 10:07:02 -08:00
Anthony Dresser
71375808b9 Merge from vscode 4c9161a3f125f5a788aafa73a4ecfcb27dcfc319 (#9143)
* Merge from vscode 4c9161a3f125f5a788aafa73a4ecfcb27dcfc319

* minor spacing fix
2020-02-13 21:20:36 -06:00
Arvind Ranasaria
0c56d44e4f Add support for 4 part version numbers (#8925)
* first crack at fix

* after test complete

* pr feedback + tests

* fix whitespace

* PR fedback
2020-02-13 16:59:22 -08:00
Charles Gagnon
321b41b7e1 Bump version to 1.16.0 (#9135)
* Bump version to 1.16.0

* Update version
2020-02-13 16:53:20 -08:00
Chris LaFreniere
2503b18d4b Fix for manage access dialog focus (#9114)
* Fix for manage access dialog focus

* Leverage eventuallyRunOnInitialized
2020-02-13 16:40:23 -08:00
Charles Gagnon
bbf6fcb0fc Fix min/max ignoring 0 value (#9137) 2020-02-13 11:53:06 -08:00
Maddy
6e5b13ac8f Tests/book tests (#9075)
* Conditionally add associatedResource t untitled nb

* Fix Jupyter Book notebook titles (#9039)

* Fix notebook titles

* Fix navigation links for books

* Added comments

Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>

* PR comment nit

* fix book tests

* tslint formatting fixes

* merged master and undid formatting

* added book path to error message

Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>
Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2020-02-13 11:35:04 -08:00
Cory Rivera
30c8182f16 Print jupyter URL without encoded characters in notebook start message. (#9131) 2020-02-13 11:19:34 -08:00
Chris LaFreniere
f10a504f45 Notebooks: Listen for Enter on Add Package Tab (#9124)
* Pressing enter searches for package

* cleanup
2020-02-13 11:14:51 -08:00
Charles Gagnon
844bf04c42 Update CHANGELOG and README for 1.15 release (#9133)
* Update CHANGELOG and README for 1.15 release

* Correct link
2020-02-13 09:07:47 -08:00
Anthony Dresser
17bb895f7c fix tests 2020-02-13 03:15:18 +00:00
Anthony Dresser
e257612e82 fix tests 2020-02-13 03:15:08 +00:00
Anthony Dresser
3d8ed48bee distro 2020-02-13 03:14:18 +00:00
ADS Merger
73ea8b79b2 Merge from vscode 1fbacccbc900bb59ba8a8f26a4128d48a1c97842 2020-02-13 02:56:02 +00:00
Anthony Dresser
9af1f3b0eb More layering (#9111)
* move handling generated files to the serilization classes

* remove unneeded methods

* add more folders to strictire compile, add more strict compile options

* update ci

* wip

* add more layering and fix issues

* add more strictness

* remove unnecessary assertion

* add missing checks

* fix indentation

* wip

* remove jsdoc

* fix layering

* fix compile

* fix compile errors

* wip

* wip

* finish layering

* fix css

* more layering

* rip

* reworking results serializer

* move some files around

* move capabilities to platform wip

* implement capabilities register provider

* fix capabilities service

* fix usage of the regist4ry

* add contribution

* remove no longer good parts

* fix issues with startup

* another try

* fix startup

* fix imports

* fix tests

* fix tests

* fix more tests

* fix tests

* fix more tests

* fix broken test

* fix tabbing

* fix naming
2020-02-12 18:24:08 -06:00
Anthony Dresser
fa3eaa59f5 disable ci browser tests 2020-02-11 09:12:15 +00:00
Anthony Dresser
fcec5f2b59 disable browser tests for now 2020-02-11 08:32:36 +00:00
Anthony Dresser
92fa296533 distro 2020-02-11 07:19:25 +00:00
ADS Merger
085752f111 Merge from vscode 8a997f7321ae6612fc0e6eb3eac4f358a6233bfb 2020-02-11 07:08:19 +00:00
Anthony Dresser
0f934081e1 More layering and strictness (#9004)
* move handling generated files to the serilization classes

* remove unneeded methods

* add more folders to strictire compile, add more strict compile options

* update ci

* wip

* add more layering and fix issues

* add more strictness

* remove unnecessary assertion

* add missing checks

* fix indentation

* wip

* remove jsdoc

* fix layering

* fix compile

* fix compile errors

* wip

* wip

* finish layering

* fix css

* more layering

* remove no longer good parts

* fix issues with startup

* another try

* fix startup
2020-02-11 00:47:17 -06:00
Cory Rivera
3a8b74a311 Set notebook as trusted after executing a cell. (#9108)
* Also set trusted by default when opening a notebook without any code cells.
2020-02-10 17:03:57 -08:00
Kim Santiago
45341d786b Move dacpac and schema compare localized strings (#9107)
* move localized strings

* move schema compare localized strings
2020-02-10 13:30:52 -08:00
Charles Gagnon
eac05c85f1 Make connectionProfileGroup support undefined values (#9102)
* Make connectionProfileGroup able to support undefined values being passed

* Fix strict null checks

* More strict null check fixes
2020-02-10 13:03:57 -08:00
Anthony Dresser
c11c7d2f0e Merge branch 'ads-master-vscode-2020-02-08T04-50-56' 2020-02-10 20:41:19 +00:00
Leila Lali
ac6a27b9c2 Machine Learning Services Extension - External Languages (#9043)
* Added external language list, edit and delete UIs to Machine Learning extension
2020-02-10 08:58:46 -08:00
Anthony Dresser
5d81d70a9a distro 2020-02-08 06:24:28 +00:00
Anthony Dresser
68061de010 distro 2020-02-08 05:01:14 +00:00
ADS Merger
2af13c18d2 Merge from vscode 718331d6f3ebd1b571530ab499edb266ddd493d5 2020-02-08 04:50:58 +00:00
Alan Ren
8c61538a27 fix charting issue (#9094)
* fix charting issue

* fix charting issue 2

* revert version bump
2020-02-07 17:42:58 -08:00
Anthony Dresser
1a2381cc7c Disable unnecessary parts in testing (#8996)
* disable unnecessary parts in testing

* fix options for extension unit tests
2020-02-07 18:59:04 -06:00
Amir Omidi
5283a7c874 Remove unused nls line (#9098) 2020-02-07 16:53:28 -08:00
Charles Gagnon
ec0a7a29d3 Remove quality checks for events (#8934)
* Remove quality checks for events

* Update iKey

* Add missed quality check
2020-02-07 14:43:03 -08:00
Alex Ma
aa22466c0f Fix for revert on pressing escape. (#9090)
* added working revert

* set currentEditCellValue to undefined

* Some consolidation
2020-02-07 14:24:29 -08:00
Charles Gagnon
fe9ffddd3b Fix loading and clickable div screen reader issues (#9088)
* Fix loading and clickable div screen reader issues

* Change back to default clickable to false
2020-02-07 13:27:29 -08:00
Charles Gagnon
39ac8498dc Fix feature request links (#9089)
* Fix feature request links

* fwlink for send a smile link too
2020-02-07 13:03:49 -08:00
Chris LaFreniere
b4e30e17af Remove unnecessary code to sql-vnext extension (#9027) 2020-02-06 17:37:46 -08:00
Maddy
32ac169906 Task/check file length (#9047)
* add filelength task to vscodeTasks

* added to package task instead of build

* testing for failures with reduced limits

* reverted to actual lengths
2020-02-06 16:45:10 -08:00
Amir Omidi
df3f1768f7 Show error to user (#9014)
* Show error to user

* Update the errors

* change message
2020-02-06 13:42:01 -08:00
Chris LaFreniere
343daf58fe Notebooks: Fix Padding on Mac SelectContainers in Toolbar (#9021)
* fix css on mac

* change to monaco workbench mac
2020-02-05 16:06:55 -08:00
Chris LaFreniere
8e67b104c3 BDC: Add another command for bdc extension activation events (#9050)
* Add another command for bdc extension activation

* spaces

* Add other activation events

* spacing
2020-02-04 20:09:39 -08:00
Alex Ma
4b2121e3f8 removed unnecessary formatting in formatter (#9041) 2020-02-04 11:59:58 -08:00
Chris LaFreniere
10d817b6b4 Change ps kernel version to latest 4 updated flow (#9023) 2020-02-04 11:52:28 -08:00
Chris LaFreniere
2208666eef Books: Ensure associatedResource is Present for Untitled Notebooks that have a File Associated with them (#9037)
* Conditionally add associatedResource t untitled nb

* Fix Jupyter Book notebook titles (#9039)

* Fix notebook titles

* Fix navigation links for books

* Added comments

Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>

* PR comment nit

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2020-02-04 11:42:24 -08:00
Karl Burtram
9c7f844d59 Import "fromPromise" so Observables work correctly (#9034)
* Import "fromPromise" so Observables work correctly

* Bump distro guid

* Fix unit test missing file error

* Bump distro to pick up latest changes
2020-02-04 11:15:31 -08:00
Charles Gagnon
86ad477c77 Add enabled property and make default account option empty (#9036)
* Add enabled property and make default account option empty

* Rmove unused loc string

* Add descriptive comment and support required azure dropdowns.
2020-02-04 08:06:14 -08:00
Charles Gagnon
62df5359e2 Even more robust handling of extension tree loading (#9007)
* Even more robust handling of extension tree loading

* Fix initial loading and add new test for CMS

* Fix compile errors

* Fix logic

* Remove debug log statements
2020-02-04 08:03:34 -08:00
Charles Gagnon
5a2bbc0375 Add location to azure-account deploy field (#9019) 2020-02-03 18:25:54 -08:00
khoiph1
2cce8b21c8 Loc Update (#9031) 2020-02-03 14:07:26 -08:00
Leila Lali
56a6f70c0d Machine Learning Services Settings (#8968)
* Added two config to Machine Learning Services extension to enable and disable python and r
2020-02-03 09:25:36 -08:00
Amir Omidi
c6689700f6 Move files locations (#9015)
* Move files locations

* Extension path
2020-01-31 14:54:32 -08:00
Alex Ma
5b2c14f11a Fix for table name not showing up on the header. (#9016)
* fix for edit data table header

* Fix for name, and SQL load
2020-01-31 14:06:56 -08:00
Charles Gagnon
402d693885 Fix action id for OpenFileInFolderAction (#9005)
* Fix action id for OpenFileInFolderAction

* Undo unrelated change
2020-01-31 13:15:23 -08:00
Anthony Dresser
7d751a20ab Move handling generated files to the serialization classes (#8952)
* move handling generated files to the serilization classes

* remove unneeded methods

* fix compile
2020-01-30 21:27:21 -08:00
Charles Gagnon
261e6fa89e Fix error when using azure-account deployment field (#8992)
* Fix error when using azure-account deployment field

* Make param optional

* Remove extra comment
2020-01-30 16:51:10 -08:00
Charles Gagnon
637a33c7a7 Support for removing hardcoded deployment options (#8986)
* Support for removing hardcode deployment options

* Add missing file

* Generalize errors and make name and id required. Sort dropdowns.

* Fix test

* Capitalize text
2020-01-30 10:35:37 -08:00
Anthony Dresser
56695be14a More layering and compile strictness (#8973)
* add more folders to strictire compile, add more strict compile options

* update ci

* wip

* add more layering and fix issues

* add more strictness

* remove unnecessary assertion

* add missing checks

* fix indentation

* remove jsdoc
2020-01-29 20:35:11 -08:00
Charles Gagnon
ddfdd43fc3 Bump extension versions (#8990) 2020-01-29 17:20:11 -08:00
Maddy
648287fa85 listen to command a and select the active element. (#8969)
* listen to command a and select the active element.

* type fix
2020-01-29 16:55:59 -08:00
Chris LaFreniere
de27f2c2a5 stop firing active cell change events unnecessary (#8983) 2020-01-29 13:54:48 -08:00
Amir Omidi
8ff0ee59c5 Add entitlements (#8985)
* add entitlements

* Move location

* Rename entitlements file
2020-01-29 13:47:44 -08:00
Alex Ma
a5a8c9761e Fix for SQL text file for editdata upon reload. (#8947)
* set dirty for editdata to false (prevent backup)

* small wording change

* Temporary fix for issue

* using proper fix

* Used editInputData onDidChangeDirty

* Moved all code to editDataInput

* Implemented fix from notebooks into editdata.

* Fix for unregistering copy service

* Fix in QueryEditorService

* add handling in case of changes made while editing

* Small optimization, removed setdirty in sql check

* moved onDidChangeDirty to EditDataInput

* some text changes

* small fix for consistency in slickColorTheme
2020-01-29 13:03:27 -08:00
Chris LaFreniere
89554e5c14 Re-enable windows test (#8981) 2020-01-28 17:48:07 -08:00
Charles Gagnon
5618799305 Refactor node loading logic for tree controllers (#8980)
* Refactor node loading logic for tree controllers

* Add comment
2020-01-28 17:12:15 -08:00
Alex Ma
32a89676f1 EditDataTest Merge (removal of angular in edit data) (#8951)
* another commmit

* Now shows blank grid, nullcheck in queryhistory

* renamed onAngularLoaded to onComponentLoaded

* removed whitespace

* removed unused dataservice import

* now displays data, need to fix contextmenu actions

* minor changes

* another small commit

* added timeout for context menu

* updated queryhistoryserviceimpl

* removed log

* added commented out contextmenuregistrations

* context menu now shows up need to test

* added plugin registration WIP

* another commit

* yet another commit

* added wip function

* Clean up commit

* more cleaning up

* removed accessor

* renamed instances of parts

* updated

* fixed merge conflicts

* refactored bootstrapparams

* fixed code

* small changes to format

* set editable to true for testing

* added more options

* moved options to separate variable

* added texteditorclass for later

* added rudimentary create editor support

* changed grid.resize.emit to fire

* added formatterfactory

* added tslint disable

* removed debug message

* added more functions from Slickgrid.ts

* added wip handlechanges function

* another change

* added columndefinitions

* Managed to display table using handlechange

* added ability to edit for now

* added changes to table creation

* added setupevents

* added onInit

* fixed sql.xlf

* minor changes

* tidying up

* more cleaning up

* changed console.log messages to debug ones.

* added this.enableEditing

* made changes to getoverridabletexteditor

* fixed opencontextmenu

* added timeout for detectChange

* need to find way to run oncontext asynchronously

* check stuff

* oncontextmenu now no longer constantly refreshes

* added oldDataRows for future use

* add check for datarows

* small changes made

* set enableediting to true

* more changes

* added additional information for handlechanges

* another change

* more changes

* set enableediting to true

* fixed rerender

* added small test mssage for jquery

* text editor is in getOverridableTextEditorClass()

* removed debug messages

* added transparency for input.editor for table.

* need to find out how to add editing for input

* Added grid div to make slickgrid style work

* reinstated selected.

* disabled selectedcellcssclass

* restored selected

* removed selectionmodel due to not being found in the original code

* Added externalSelectionModel for correct results

* removed selectionmodel as its not used.

* WIP work on refreshresultsets

* temporarily bringing back selection model for now

* added getSelectedRanges from slickgrid into Table

* added getselectedranges from slickgrid into table

* small cleanup changes

* removed detectchanges

* removed last of detectchanges

* return of toprownumber

* no need for toprownumber

* removed isColumnLoading

* some small formatting

* fixed null check

* added back todo comment

* Added fix for context menu

* small change

* added missing value to getFormatter in grid panel

* added fix for last row italics

* added fix for null inconsistencies

* Some consolidation

* added new check for null cells

* minor change

* add check for selections (usually undefined)

* removed null check in formatters

* Some changes made

* changed plugins array

* removed todo

* renamed some variables

* deleted html file

* Moved height and width to editData.css

* added box-sizing for slickgridcontainer

* fixed editdatagridpanel css

* added small changes

* More minor changes

* removed params

* renamed refreshResultsets to refreshDatasets

* removed the  stylesheet.remove lines

* added fix for null

* removed tables

* removed spaces in refreshGrid

* More minor changes

* optimization and formatting

* removal of unnecessary lines

* replaced firstRender in some parts with firstLoad

* Added timeout fix

* minor changes

* Still testing

* cleanup

* restored 200 timeout

* added styling changes for editdata

* removed angular2-slickgrid and added styling

* Small formatting changes to editDataGridPanel

* consolidation
2020-01-28 14:24:39 -08:00
Charles Gagnon
461dd79bc2 Only log if an actual error occurred (#8979) 2020-01-28 13:05:31 -08:00
Amir Omidi
7ef3f003dd handle import errors (#8905) 2020-01-28 12:42:14 -08:00
Maddy
0c1edc1aeb version bump for cu1 tsg books (#8976) 2020-01-28 11:30:57 -08:00
Charles Gagnon
2dfd75352f Add coverage for extension tests (#8961)
* wip

* Add code coverage files to all extensions

* Update vscodetestcover

* Update yarn.lock

* Update CMS yarn.lock

* Update vscodetestcover version
2020-01-28 07:23:45 -08:00
Chris LaFreniere
136a1d8cee Temporarily Disable Windows_Test Job in Product Build (#8971)
* Temporarily Disable Windows Test Job

* Ensure Windows Test is removed from dependsOn
2020-01-27 17:32:24 -08:00
Anthony Dresser
5fd29d5ad8 Missing changes (#8972)
* add more folders to strictire compile, add more strict compile options

* update ci

* remove unnecessary assertion

* add missing checks
2020-01-27 16:47:42 -08:00
Anthony Dresser
64929de09d Add more folders to strict compile (#8954)
* add more folders to strictire compile, add more strict compile options

* update ci

* remove unnecessary assertion
2020-01-27 16:26:49 -08:00
Anthony Dresser
fefe1454de Merge from vscode 3c6f6af7347d38e87bc6406024e8dcf9e9bce229 (#8962)
* Merge from vscode 3c6f6af7347d38e87bc6406024e8dcf9e9bce229

* skip failing tests

* update mac build image
2020-01-27 15:28:17 -08:00
Aditya Bist
0eaee18dc4 Fix Run Query for widgets (#8960)
* format doc

* use new line instead of eol

* review comments

* return false
2020-01-27 12:27:00 -08:00
Leila Lali
28fff9ace8 MLS R package management bug fixing (#8920)
* MLS R package management bug fixing
2020-01-27 11:10:52 -08:00
Anthony Dresser
a41073adbf Add missing deps for linux image (#8958)
* add missing deps for linux image

* use docker versioning

* add comment to linux docker container
2020-01-25 22:53:41 -08:00
Charles Gagnon
379eae22ed Switch schema-compare to using ads common events (#8957)
* Switch schema-compare to using ads common events

* Update yarn.lock
2020-01-24 15:30:31 -08:00
Anthony Dresser
f49fe59e1f disable github ci linux until they fix the issue (#8953) 2020-01-24 11:54:53 -08:00
Kim Santiago
9e61c468d1 Add validation error message for inputbox component (#8909)
* add validation error message for inputbox component

* addressing comments

* remove copying entire definition for InputBoxProperties
2020-01-24 11:38:49 -08:00
Anthony Dresser
7e0c7e35a1 Update gcc for linux build (#8950)
* update gcc for linux build

* fix docker compile
2020-01-24 10:25:11 -08:00
Chris LaFreniere
b02bf17d1f Fixes for broken notebook experience (#8944)
* Fixes for broken notebook experience

* add sql carbon edit

* sql carbon edit

* add another sql carbon edit for import

* Set untitledResource instead of no resource
2020-01-23 17:06:32 -08:00
Alex Ma
510b84df3c Fix for null shift-tab/focus (#8937)
* Added fix for null

* removed space

* formatting and optimization
2020-01-23 16:24:32 -08:00
Cory Rivera
2eebcab74a Make notebook cells selectable for tab navigation. (#8946) 2020-01-23 15:39:27 -08:00
Maddy
5ccc0fd97b Implemented match case and whole wrd (#8904)
* Implemented match case and whole wrd

* removed unused ref

* renamed test method

* escape \

* refactored search

* added more tests

* updated tests appying match case and whole word to spcl characters

* regex update

* spcl to special

* non-capturing group added to the regex

* test
2020-01-23 07:28:12 -08:00
Alex Ma
76967d9467 minheight has been set to 55 for scrolling (#8851)
* minheight has been set to 50 for scrolling

* removed spaces

* changed value to 55 as it looked better

* removed comment
2020-01-22 16:42:41 -08:00
Anthony Dresser
eb0ee387ec distro update (#8935) 2020-01-22 13:52:22 -08:00
Anthony Dresser
bd7aac8ee0 Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2 (#8911)
* Merge from vscode a234f13c45b40a0929777cb440ee011b7549eed2

* update distro

* fix layering

* update distro

* fix tests
2020-01-22 13:42:37 -08:00
Anthony Dresser
977111eb21 distro update (#8933) 2020-01-22 13:30:27 -08:00
Anthony Dresser
5ccde42213 remove more instances of insiders builtinextensions (#8932) 2020-01-22 13:30:12 -08:00
Charles Gagnon
8b9aeb8679 Fix some dtslint errors in azdata.d.ts (#8931)
* Fix some dtslint errors in azdata.d.ts

* Undo return type change
2020-01-22 13:04:52 -08:00
Charles Gagnon
308dfee963 Bump SMO to fix script external table issue (#8922) 2020-01-21 17:23:55 -08:00
Anthony Dresser
f22dacadbe add disabled features option (#8678) 2020-01-21 16:51:57 -08:00
Anthony Dresser
13d4ab22b1 Remove quality from builtin (#8888)
* remove quality from builtin

* add compiled fles
2020-01-21 16:20:18 -08:00
Anthony Dresser
968d570073 ignore accessibility issues from locking (#8906) 2020-01-21 16:19:57 -08:00
Anthony Dresser
638eb151dd update distro (#8923) 2020-01-21 15:56:10 -08:00
Cory Rivera
52e3c2f9c7 Clear cell execution count when clearing output. (#8908) 2020-01-21 13:56:38 -08:00
Charles Gagnon
d517cf0c8c Fix new editor windows to open with global connection (#8901)
* Fix new editor windows to open with global connection

* Fix test

* Fix tests

* Move logic to queryInputFactory

* Remove unused function

* Remove unneeded check

* Add tests
2020-01-17 07:44:28 -08:00
Charles Gagnon
9acd757f6a Bump vscode version to latest from merge (#8894) 2020-01-16 08:29:52 -08:00
Leila Lali
167a9f991a Fixed broken notebook tests (#8885) 2020-01-15 13:57:52 -08:00
Amir Omidi
5cebfb3013 New Azure sign in experience (#8872)
* update

* Prepare for release for all

* Remove unused import

* Proper branding

* Handle error cases
2020-01-15 13:51:25 -08:00
khoiph1
4e5d001a9c loc update (#8879) 2020-01-15 13:03:27 -08:00
Leila Lali
09b578a169 Machine Learning Services R Packages (#8870)
* R Package management in Machine learning services extension
2020-01-15 12:19:22 -08:00
Cory Rivera
d3105beb43 Await should() methods involving promises in tests. (#8876) 2020-01-15 00:41:23 -08:00
Maddy
74c2d16660 getter for markdown editor on edit mode (#8871)
* getter for markdown editor on edit mode

* use first and find to work-around the code editor changes
2020-01-14 15:29:55 -08:00
Cory Rivera
c09e7b9e2f Increase timeouts for some integration tests. (#8869) 2020-01-13 13:43:18 -08:00
Anthony Dresser
88126c68e7 fix issues with uri being different format for query results (#8850) 2020-01-11 00:22:48 -08:00
Leila Lali
455de9add6 Activating MLS extension on specific events (#8862) 2020-01-10 19:00:35 -08:00
Anthony Dresser
2f6c944317 Add editor contribution tests (#8784)
* wip

* rewrite association

* fix tests

* add more tests

* fix tests

* fix more tests

* fix tests
2020-01-10 18:57:47 -08:00
Amir Omidi
0059ffb777 Increase timeouts (#8857) 2020-01-10 12:20:03 -08:00
kenvanhyning
12ba85ec33 update govt cloud login endpoint (#8855) 2020-01-09 16:18:46 -08:00
Alex Ma
c161f8d8ad Added fix for italics for last row (#8773)
* Added fix for italics for last row

* Added null handling in formatters

* Fixed issue with null not italicizing on grid

* small formatting fix

* some consolidation

* removed null check

* minor change

* removed null check in formatters
2020-01-09 10:23:11 -08:00
Arvind Ranasaria
206738db63 fix how failed/errored installation workflow (#8842)
* fix how failed/errored installation workflow

* address PR comments

* renaming UiControls method
2020-01-08 15:52:28 -08:00
Charles Gagnon
7ecb6b4427 Change test timeout for extension unit tests to 10sec (#8848) 2020-01-08 13:49:34 -08:00
Anthony Dresser
0c47a4486b distro (#8849) 2020-01-08 13:49:17 -08:00
Charles Gagnon
c79929fdd2 Fix small icon in dev build (#8672)
* Fix small icon in dev build

* Use distro instead (icons are temp)

* New insiders icons

* Fix merge conflicts

* Add back in types
2020-01-08 13:45:18 -08:00
Maddy
61cbc5eff0 uncommented old tests and fixed them (#8834)
* uncommneted old tests and fixed them

* removed comments
2020-01-08 13:21:40 -08:00
Leila Lali
fa4ad6cdb9 Adding a n activation event for opening the dashboard (#8733) 2020-01-08 12:18:17 -08:00
Amir Omidi
1b26dc0558 Consolidate connection namespace (#8844) 2020-01-08 12:08:59 -08:00
Amir Omidi
833313c72b Use the user's locale (#8843) 2020-01-08 12:02:18 -08:00
Amir Omidi
8a0824c1c6 Change the wizard setup (#8845) 2020-01-08 12:01:40 -08:00
Leila Lali
2d2376a2a6 Machine Learning Services Dashboard (#8796)
* Added a dashboard for Machine Learning Services Extension
2020-01-08 11:24:58 -08:00
Aditya Bist
774151b6e9 Fixes job history for Agent (#8847)
* fix job history function

* unbump version
2020-01-08 11:19:40 -08:00
Charles Gagnon
041f34beda Fix book provider load to not throw on startup (#8835)
* Fix book provider load to not throw on startup

* Move tests to stable

* Rename method

* Fix floating promises and broken test
2020-01-07 17:32:51 -08:00
Maddy
b1526603cc Tests/notebook find tests (#8827)
* updates to existing book tests

* notebookFindModal tests

* remove commented code

* undo book test changes

* undo book test changes

* resolve the find array

* additional tests
2020-01-07 16:35:28 -08:00
Cory Rivera
6070922579 Increase code signing timeout for Mac builds. (#8837) 2020-01-07 16:12:32 -08:00
Kim Santiago
8cdb5b36a9 Add test for schema compare include exclude (#8765)
* add test for schema compare include exclude

* combine a few checks

* small fixes

* add testData folder to whtiespace check exclusion list

* addressing comments

* fix testData path in gulpfile.hygiene.js

* move change up a couple lines
2020-01-07 10:05:36 -08:00
Alan Ren
ad68fddbc9 remove REL test step (#8825) 2020-01-06 23:00:41 -08:00
kenvanhyning
dd8b12f805 Kenvh/noazurecms (#8755)
* Disallow Azure SQL DB servers for CMS

* removed commented out lines

* added check for valid serverInfo
2020-01-06 16:53:06 -08:00
Alan Ren
c5d3251bb5 remove sql ops (#8805) 2020-01-06 15:37:09 -08:00
Kim Santiago
48b6dd796b Cleanup dacpac wizard (#8807)
* remove unnecessary awaits

* add back awaits and localize string

* add return types
2020-01-06 11:49:34 -08:00
Alex Ma
362af3c153 Changed class name for manage packages extension (#8789)
* Adds rule for .icon extensions

* revert

* Fixed issue and formatted for consistency

* reverted change for regular menuentryaction

* changed id back to old name

* Removed comment

* removed space
2020-01-03 16:09:06 -08:00
Charles Gagnon
fa2fcf2e40 Log original kerberos errors to console (#8804)
* Log original kerberos errors to console for debugging purposes

* Fix compile error
2020-01-03 15:30:42 -08:00
Alan Ren
8529b52e73 fix unstable tests (#8799)
* fix tests

* mark dac test unstable

* import export bac

* remove rel tag

* Update dacpac.test.ts

* bump sts and enable dac tests
2020-01-03 14:29:28 -08:00
Arvind Ranasaria
ef5ca7bc3a add handlers for promise rejections (#8735)
This change adds to handlers to unexpected promise rejection scenarios.
This PR fixes #8640


* add handlers for promise rejections
* Displaying all tools load errors
* Update toolBase.ts - setting errorMessage to be displayed in the additional information  field
* disable the select button  when tools not discovered
* PR fixes
2020-01-03 14:18:01 -08:00
Anthony Dresser
5b34dd2eee add listening for refreshing the top operations table (#8780) 2020-01-03 11:28:32 -08:00
Charles Gagnon
d647dbde09 Make dropdown update width immediately upon opening (#8716)
* Make dropdown update width immediately upon opening

* remove type

* min size of the input container width

* use clamp
2020-01-03 11:07:24 -08:00
Cory Rivera
d2e367c139 Use a single button for expanding and collapsing a notebook cell. (#8797) 2020-01-03 10:34:45 -08:00
Maddy
c3ddbba997 Only show find when modal is loaded and expand the collapsed cell on find. (#8790) 2020-01-01 20:17:50 -08:00
Benjin Dubishar
51ab435e5f Initial SQL Project tree viewlet in Explorer sidebar (#8639)
* Adding mock contents for tree
* added open sqlproj dialog
* reading files from directory
* Added directory traversal
* Adding tree sorting by folder vs file and label
* Improved auto-unfolding of tree based on node type
* replacing fs with fs.promise alias
* added activation event for when workspace contains sqlproj files
* Returning after displaying error
2019-12-27 12:42:23 -08:00
Karl Burtram
4a8609c3ef Update changelog for 1.14.1 release (#8778) 2019-12-26 09:10:29 -08:00
Anthony Dresser
03df1edcf8 use URI to equal (#8770) 2019-12-23 18:03:38 -08:00
Anthony Dresser
5bd983e7a3 fix icon for dataexplorer (#8769) 2019-12-23 12:15:46 -08:00
Anthony Dresser
4293d53e79 Merge from vscode d06f0e877ceaf3a35a283f1bfdc50927ec8dfd1e (#8767) 2019-12-22 08:53:45 -08:00
Alex Ma
ce10c3ac3f Added check for the last null row (#8764) 2019-12-20 15:16:56 -08:00
Anthony Dresser
74caccdfe6 Merge from vscode 4f85c3c94c15457e1d4c9e67da6800630394ea54 (#8757)
* Merge from vscode 4f85c3c94c15457e1d4c9e67da6800630394ea54

* disable failing tests
2019-12-19 23:41:55 -08:00
Maddy
778a34a9d2 Books/search within notebook (#8426)
* initial commit

* get notebook content

* skeleton for find in notebookModel

* add search function and keyboard shortcut

* add command for hiding find widget

* started on search logic

* continue search logic

* continue search logic

* add findcountchange listener

* notebook find position

* added css class

* hide find widget

* focus find input

* search for multiple occurrences in one line

* start notebook find decorations

* start adding decorations to notebook model

* added editor_model_defaults

* added cursor position

* merged master and resolved husky erros

* initial changes added to Lucyls base implementation

* pass NotebbokRange instead of Range to decorations

* changes after merging master

* temp changes for testing

* style updates from vscode merge

* implemented the empty methods and added supporting functionality from textModel

* just a little error checking

* It gets more and more yellow

* making highlight work between code cells

* highlight only word

* remove highlight on close and maintain the position

* cleanup of unused references

* clean up

* find between code cells refactored

* highlight markdown line and scroll to it

* find index fix

* find index fix

* code clean up

* remove commented code

* tslint fix for: Cannot use global 'NodeJS'

* linting rule fixes

* deltaDecoration base implementation on the base class

* moced class defnitions from interface fikle

* updated action names

* DOM.addClass instead of overwriting

* resooved conflicts

* moved 'find' code away from notebookmodel to sep class

* moved find realted code to seperate folder

* created notebookFindModel

* clean up

* highlight color changes

* spacing and typo fixes

* highlight correct element for nested elements

* do not iterate through paragraphs and li

* find accross notebooks

* keep track of index

* clear decorations on close

* floating promises

* maintain search context

Co-authored-by: Lucy Zhang <lucyzhang929@gmail.com>
Co-authored-by: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>
2019-12-19 17:21:03 -08:00
Alan Ren
102d820935 Alanren/remove bdc (#8737)
* remove bdc server dependency

* revert the change to script

* cms needs 2 servers, adding 2019 server

* fix pipeline yaml
2019-12-19 13:53:32 -08:00
Karl Burtram
4a4e6dd90c Update README and CHANGLOG for Dec (#8705)
* Update README and CHANGLOG for Dec

* Update changelog
2019-12-19 10:38:17 -08:00
Anthony Dresser
82a08d108b add more activation events (#8665) 2019-12-18 23:39:17 -08:00
Anthony Dresser
099916bf19 Merge from vscode e74405d11443c5361c31e2bc341866d146eee206 (#8740) 2019-12-18 23:36:29 -08:00
osmant
48dcb7258e Guest account connection issue while using (#8726)
AAD authentication
2019-12-18 12:13:46 -08:00
swjain23
e181cf2fcd Bug fix to return authType as undefined if displayName is not set (#8731)
We noticed that if displayName is undefined this method would return the first auth type it found as getAuthTypeDisplayName() would return undefined.
If the displayName is undefined, we would not have a matchingTYpe and it should be undefined.
2019-12-18 11:40:20 -08:00
Maddy
746b4d7815 Book/untitled file name updates (#8579)
* file-name has entire path as name, changes to address that

* await promises
2019-12-18 09:09:17 -08:00
Maddy
a67e3abb4c add open book command to open any book from local sys (#8632)
* add open book command to open any book from local sys

* no-floating promises

* moved all the loc strings to common loc file

* typos
2019-12-18 09:08:52 -08:00
Anthony Dresser
30d9e9c141 Merge from vscode 4636be2b71c87bfb0bfe3c94278b447a5efcc1f1 (#8722)
* Merge from vscode 4636be2b71c87bfb0bfe3c94278b447a5efcc1f1

* remove tests that aren't working
2019-12-18 00:14:28 -08:00
Kim Santiago
0fd870d156 bump sqltoolsservice to get dacfx fix for schema compare (#8720) 2019-12-17 16:27:47 -08:00
Karl Burtram
768d333b35 Bump SQL Tools to 2.0.0-release.40 (#8719)
To pick up DacFx vbump
2019-12-17 15:42:57 -08:00
Anthony Dresser
2058682743 change some activation events for bdc and admin-tool (#8660) 2019-12-17 12:49:08 -08:00
Anthony Dresser
1c0f7c6702 open external for files from results serialize (#8666) 2019-12-17 12:47:23 -08:00
Anthony Dresser
9e0ba700c1 defensive about query rows; fix styling on dropdown; fix bug with always using the first dataset (#8680) 2019-12-17 12:26:33 -08:00
Anthony Dresser
ea5f9be441 Properly expose errors in ads and tests (#8692)
* add code to expose errors outside zone

* remove unexpect error hiding

* remove uncessary code

* fix tests

* trying to catch more errros

* revert for testing

* wip

* wip

* figured out what was going on

* wip

* fix tests

* fix tests
2019-12-17 12:06:36 -08:00
Anthony Dresser
6b5c31410d add GITHUBTOKEN env for product installs (#8717) 2019-12-17 12:06:08 -08:00
Anthony Dresser
8e4d0ad446 remove unnecessary info from problem svgs (#8712) 2019-12-17 10:13:06 -08:00
Leila Lali
0a6dc2720d Machine Learning Services extension with package management feature (#8622)
* Machine Learning Services extension with package management feature
2019-12-17 09:55:42 -08:00
Aditya Bist
ef8c0e91e6 fix provider dropdown option for cms dialog (#8711) 2019-12-16 18:50:50 -08:00
Alan Ren
2f6c764869 download 2019 developer edition (#8704) 2019-12-16 14:53:22 -08:00
rajeshka
73b9849dd5 Toggle Trusted Button (#8569)
* Toggle Trusted Button

* Persist Trusted information to Cache

* Trusted toggle unit test fixed

* Updated test comment
2019-12-16 13:32:56 -08:00
Alan Ren
64e217eac2 change order of tasks (#8703) 2019-12-16 13:21:03 -08:00
Chris LaFreniere
826e069b63 Fix passing in connection profile (#8689) 2019-12-16 13:20:43 -08:00
Chris LaFreniere
6e8a08c27a Fix Notebook Scrolling by Setting alwaysConsumeMouseWheel to False (#8686)
* flip alwaysConsumeMouseWheel to false for nb

* remove semicolon
2019-12-16 13:17:02 -08:00
Amir Omidi
5a01218691 Check for signed variable (#8682)
* Check for signed variable

* Check for signed

* use variable syntax

* Signed has to be upper case
2019-12-16 12:25:22 -08:00
Karl Burtram
f45374bc30 Bump ADS to 1.15 for Feb release train (#8702) 2019-12-16 12:00:33 -08:00
Arvind Ranasaria
ecbd8fb82c add installation search path to tools discovery (#8687) 2019-12-16 11:39:08 -08:00
Charles Gagnon
a42407b81a Fix missing action buttons with single view (#8694) 2019-12-16 10:33:21 -08:00
Charles Gagnon
a622e4ac40 Fix options dropdown arrow alignment in options dialog (#8695) 2019-12-16 09:58:57 -08:00
Arvind Ranasaria
6816f2dabb fix informational/error messages when tools not installed/not discovered/not installable (#8679)
* fix informational/error messages
2019-12-13 18:32:20 -08:00
Aditya Bist
a0c3f8f614 fix modelview tables failing for number columns (#8681) 2019-12-13 16:46:57 -08:00
Charles Gagnon
01b9754c80 Fix alignment of select dropdown in modal dialogs (#8683) 2019-12-13 16:23:25 -08:00
Aditya Bist
cd8f26ae9d formatted file (#8677) 2019-12-13 15:53:49 -08:00
Charles Gagnon
b650168704 Add de viewlet tests back (#8673) 2019-12-13 14:08:01 -08:00
Charles Gagnon
9587edd867 Bump extension versions (#8674)
* Bump agent version

* Bump more extensions

* Undo version change for BDC - is builtin
2019-12-13 11:11:56 -08:00
Anthony Dresser
642920504a Merge from vscode cbeff45f80213db0ddda2183170281ed97ed3b12 (#8670)
* Merge from vscode cbeff45f80213db0ddda2183170281ed97ed3b12

* fix null strict checks
2019-12-13 00:50:37 -08:00
Amir Omidi
67abc2f690 zonejs changes (#8664) 2019-12-12 17:07:26 -08:00
Charles Gagnon
5bf85a2855 Add tests for refresh scripting action (#8648)
* Add tests for refresh action

* Revert changes to make tree public

* Move tests into subsuite
2019-12-12 16:04:28 -08:00
Anthony Dresser
829717f5de move the step for publishing integration test results (#8658) 2019-12-12 15:33:55 -08:00
Cory Rivera
866bfc61ba Add more unit tests for NotebookInput (#8654) 2019-12-12 14:59:56 -08:00
3813 changed files with 280461 additions and 108072 deletions

View File

@@ -0,0 +1,17 @@
{
"tool": "Credential Scanner",
"suppressions": [
{
"file": "src\\vs\\base\\test\\common\\uri.test.ts",
"_justification": "External code"
},
{
"file": "build\\actions\\AutoLabel\\dist\\index.js",
"_justification": "False positive from webpacked code"
},
{
"file": "build\\actions\\AutoMerge\\dist\\index.js",
"_justification": "False positive from webpacked code"
}
]
}

15
.eslintignore Normal file
View File

@@ -0,0 +1,15 @@
**/vs/nls.build.js
**/vs/nls.js
**/vs/css.build.js
**/vs/css.js
**/vs/loader.js
**/insane/**
**/marked/**
**/test/**/*.js
**/node_modules/**
**/vscode-api-tests/testWorkspace/**
**/vscode-api-tests/testWorkspace2/**
**/extensions/**/out/**
**/extensions/**/build/**
**/extensions/markdown-language-features/media/**
**/extensions/typescript-basics/test/colorize-fixtures/**

View File

@@ -1,20 +1,873 @@
{
"root": true,
"env": {
"node": true,
"es6": true
},
"rules": {
"no-console": 0,
"no-cond-assign": 0,
"no-unused-vars": 1,
"no-extra-semi": "warn",
"semi": "warn"
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true
}
}
"root": true,
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint",
"jsdoc"
],
"rules": {
"constructor-super": "warn",
"curly": "warn",
"eqeqeq": "warn",
"no-buffer-constructor": "warn",
"no-caller": "warn",
"no-debugger": "warn",
"no-duplicate-case": "warn",
"no-duplicate-imports": "warn",
"no-eval": "warn",
"no-extra-semi": "warn",
"no-new-wrappers": "warn",
"no-redeclare": "off",
"no-sparse-arrays": "warn",
"no-throw-literal": "warn",
"no-unsafe-finally": "warn",
"no-unused-labels": "warn",
"no-restricted-globals": [
"warn",
"name",
"length",
"event",
"closed",
"external",
"status",
"origin",
"orientation",
"context"
], // non-complete list of globals that are easy to access unintentionally
"no-var": "warn",
"jsdoc/no-types": "warn",
"semi": "off",
"@typescript-eslint/semi": "warn",
"@typescript-eslint/class-name-casing": "warn",
"code-no-unused-expressions": [
"warn",
{
"allowTernary": true
}
],
"code-translation-remind": "warn",
"code-no-nls-in-standalone-editor": "warn",
"code-no-standalone-editor": "warn",
"code-no-unexternalized-strings": "warn",
"code-layering": [
"warn",
{
"common": [],
"node": [
"common"
],
"browser": [
"common"
],
"electron-main": [
"common",
"node"
],
"electron-browser": [
"common",
"browser",
"node"
]
}
],
"code-import-patterns": [
"warn",
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// !!! Do not relax these rules !!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
"target": "**/{vs,sql}/base/common/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/common/**"
]
},
{
"target": "**/{vs,sql}/base/test/common/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/test/common/**"
]
},
{
"target": "**/{vs,sql}/base/browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"@angular/*",
"rxjs/*"
]
},
{
"target": "**/{vs,sql}/base/node/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/{common,node}/**",
"*" // node modules
]
},
{
// vs/base/test/browser contains tests for vs/base/browser
"target": "**/{vs,sql}/base/test/browser/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/test/{common,browser}/**",
"@angular/*",
"rxjs/*"
]
},
{
"target": "**/{vs,sql}/base/parts/*/common/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/parts/*/common/**"
]
},
{
"target": "**/{vs,sql}/base/parts/*/browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser}/**",
"@angular/*",
"rxjs/*"
]
},
{
"target": "**/{vs,sql}/base/parts/*/node/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/{common,node}/**",
"**/{vs,sql}/base/parts/*/{common,node}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/base/parts/*/electron-browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser,node,electron-browser}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/base/parts/*/electron-main/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/{common,node,electron-main}/**",
"**/{vs,sql}/base/parts/*/{common,node,electron-main}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/platform/*/common/**",
"restrictions": [
"vs/nls",
"azdata",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/parts/*/common/**",
"**/{vs,sql}/platform/*/common/**"
]
},
{
"target": "**/{vs,sql}/platform/*/test/common/**",
"restrictions": [
"assert",
"typemoq",
"sinon",
"vs/nls",
"azdata",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/test/common/**",
"**/{vs,sql}/base/parts/*/common/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/platform/*/test/common/**"
]
},
{
"target": "**/{vs,sql}/platform/*/browser/**",
"restrictions": [
"vs/nls",
"azdata",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/platform/*/node/**",
"restrictions": [
"vs/nls",
"azdata",
"**/{vs,sql}/base/{common,node}/**",
"**/{vs,sql}/base/parts/*/{common,node}/**",
"**/{vs,sql}/platform/*/{common,node}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/platform/*/electron-browser/**",
"restrictions": [
"vs/nls",
"azdata",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser,node}/**",
"**/{vs,sql}/base/parts/*/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/platform/*/{common,browser,node,electron-browser}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/platform/*/electron-main/**",
"restrictions": [
"vs/nls",
"azdata",
"**/{vs,sql}/base/{common,node,electron-main}/**",
"**/{vs,sql}/base/parts/*/{common,node,electron-main}/**",
"**/{vs,sql}/platform/*/{common,node,electron-main}/**",
"**/{vs,sql}/code/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/platform/*/test/browser/**",
"restrictions": [
"assert",
"typemoq",
"sinon",
"azdata",
"vs/nls",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/test/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/platform/*/test/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/editor/common/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/worker/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/editor/common/**"
]
},
{
"target": "**/{vs,sql}/editor/test/common/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/platform/*/test/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/editor/test/common/**"
]
},
{
"target": "**/{vs,sql}/editor/browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/editor/test/browser/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/platform/*/test/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/editor/test/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/editor/standalone/common/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/editor/standalone/common/**"
]
},
{
"target": "**/{vs,sql}/editor/standalone/test/common/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/platform/*/test/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/editor/test/common/**"
]
},
{
"target": "**/{vs,sql}/editor/standalone/browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/editor/contrib/**",
"**/{vs,sql}/editor/standalone/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/editor/standalone/test/browser/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/platform/*/test/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/editor/standalone/{common,browser}/**",
"**/{vs,sql}/editor/test/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/editor/contrib/*/test/**",
"restrictions": [
"assert",
"sinon",
"vs/nls",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/test/{common,browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/platform/*/test/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/editor/test/{common,browser}/**",
"**/{vs,sql}/editor/contrib/**"
]
},
{
"target": "**/{vs,sql}/editor/contrib/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser}/**",
"**/{vs,sql}/platform/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/editor/contrib/**"
]
},
{
"target": "**/{vs,sql}/workbench/common/**",
"restrictions": [
"vs/nls",
"azdata",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/base/parts/*/common/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/editor/contrib/*/common/**",
"**/{vs,sql}/workbench/common/**",
"**/{vs,sql}/workbench/services/*/common/**",
"assert"
]
},
{
"target": "**/{vs,sql}/workbench/browser/**",
"restrictions": [
"vs/nls",
"azdata",
"@angular/*",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser}/**",
"**/{vs,sql}/platform/*/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
"**/{vs,sql}/workbench/workbench.web.api",
"**/{vs,sql}/workbench/{common,browser}/**",
"**/{vs,sql}/workbench/services/*/{common,browser}/**",
"assert"
]
},
{
"target": "**/{vs,sql}/workbench/api/common/**",
"restrictions": [
"vscode",
"azdata",
"vs/nls",
"**/{vs,sql}/base/common/**",
"**/{vs,sql}/platform/*/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/editor/contrib/*/common/**",
"**/{vs,sql}/workbench/api/common/**",
"**/{vs,sql}/workbench/common/**",
"**/{vs,sql}/workbench/services/*/common/**",
"**/{vs,sql}/workbench/contrib/*/common/**"
]
},
{
"target": "**/{vs,sql}/workbench/api/worker/**",
"restrictions": [
"vscode",
"azdata",
"vs/nls",
"**/{vs,sql}/**/{common,worker}/**"
]
},
{
"target": "**/{vs,sql}/workbench/electron-browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/platform/*/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/editor/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/editor/contrib/**", // editor/contrib is equivalent to /browser/ by convention
"**/{vs,sql}/workbench/{common,browser,node,electron-browser,api}/**",
"**/{vs,sql}/workbench/services/*/{common,browser,node,electron-browser}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/workbench/services/**/test/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**",
"**/{vs,sql}/platform/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser,node,electron-browser}/**",
"vs/workbench/contrib/files/common/editors/fileEditorInput",
"**/{vs,sql}/workbench/services/**",
"**/{vs,sql}/workbench/test/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/workbench/services/**/common/**",
"restrictions": [
"vs/nls",
"azdata",
"**/{vs,sql}/base/**/common/**",
"**/{vs,sql}/platform/**/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/workbench/workbench.web.api",
"**/{vs,sql}/workbench/common/**",
"**/{vs,sql}/workbench/services/**/common/**",
"**/{vs,sql}/workbench/api/**/common/**",
"vs/workbench/contrib/files/common/editors/fileEditorInput", // this should be fine, it only accesses constants from contrib
"vscode-textmate"
]
},
{
"target": "**/{vs,sql}/workbench/services/**/worker/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/**/common/**",
"**/{vs,sql}/platform/**/common/**",
"**/{vs,sql}/editor/common/**",
"**/{vs,sql}/workbench/**/common/**",
"**/{vs,sql}/workbench/**/worker/**",
"**/{vs,sql}/workbench/services/**/common/**",
"vscode"
]
},
{
"target": "**/{vs,sql}/workbench/services/**/browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"azdata",
"vscode",
"**/{vs,sql}/base/**/{common,browser,worker}/**",
"**/{vs,sql}/platform/**/{common,browser}/**",
"**/{vs,sql}/editor/{common,browser}/**",
"**/{vs,sql}/workbench/workbench.web.api",
"**/{vs,sql}/workbench/{common,browser}/**",
"**/{vs,sql}/workbench/api/{common,browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser}/**",
"vscode-textmate",
"onigasm-umd",
"sanitize-html",
"@angular/*",
"rxjs/**"
]
},
{
"target": "**/{vs,sql}/workbench/services/**/node/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/**/{common,node}/**",
"**/{vs,sql}/platform/**/{common,node}/**",
"**/{vs,sql}/editor/{common,node}/**",
"**/{vs,sql}/workbench/{common,node}/**",
"**/{vs,sql}/workbench/api/{common,node}/**",
"**/{vs,sql}/workbench/services/**/{common,node}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/workbench/services/**/electron-browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,browser,worker,node,electron-browser}/**",
"**/{vs,sql}/platform/**/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser,node,electron-browser,api}/**",
"**/{vs,sql}/workbench/services/**/{common,browser,node,electron-browser}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/workbench/contrib/**/test/**",
"restrictions": [
"assert",
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**",
"**/{vs,sql}/platform/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/workbench/services/**",
"**/{vs,sql}/workbench/contrib/**",
"**/{vs,sql}/workbench/test/**",
"**"
]
},
{
"target": "**/{vs,sql}/workbench/contrib/terminal/browser/**",
"restrictions": [
// xterm and its addons are strictly browser-only components
"xterm",
"xterm-addon-*",
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,browser}/**",
"**/{vs,sql}/platform/**/{common,browser}/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser}/**",
"**/{vs,sql}/workbench/contrib/**/{common,browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/workbench/contrib/extensions/browser/**",
"restrictions": [
"semver-umd",
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,browser}/**",
"**/{vs,sql}/platform/**/{common,browser}/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser}/**",
"**/{vs,sql}/workbench/contrib/**/{common,browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/workbench/contrib/update/browser/update.ts",
"restrictions": [
"semver-umd",
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,browser}/**",
"**/{vs,sql}/platform/**/{common,browser}/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser}/**",
"**/{vs,sql}/workbench/contrib/**/{common,browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser}/**"
]
},
{
"target": "**/{vs,sql}/workbench/contrib/**/common/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"azdata",
"**/{vs,sql}/base/**/common/**",
"**/{vs,sql}/platform/**/common/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/common/**",
"**/{vs,sql}/workbench/api/common/**",
"**/{vs,sql}/workbench/services/**/common/**",
"**/{vs,sql}/workbench/contrib/**/common/**"
]
},
{
"target": "**/{vs,sql}/workbench/contrib/**/browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"azdata",
"vscode",
"**/{vs,sql}/base/**/{common,browser}/**",
"**/{vs,sql}/platform/**/{common,browser}/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser}/**",
"**/{vs,sql}/workbench/api/{common,browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser}/**",
"**/{vs,sql}/workbench/contrib/**/{common,browser}/**",
"@angular/*",
"rxjs/**",
"ng2-charts",
"chart.js",
"plotly.js-dist",
"angular2-grid",
"html-query-plan"
]
},
{
"target": "**/{vs,sql}/workbench/contrib/**/node/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,node}/**",
"**/{vs,sql}/platform/**/{common,node}/**",
"**/{vs,sql}/editor/**/common/**",
"**/{vs,sql}/workbench/{common,node}/**",
"**/{vs,sql}/workbench/api/{common,node}/**",
"**/{vs,sql}/workbench/services/**/{common,node}/**",
"**/{vs,sql}/workbench/contrib/**/{common,node}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/workbench/contrib/**/electron-browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,browser,worker,node,electron-browser}/**",
"**/{vs,sql}/platform/**/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/editor/**",
"**/{vs,sql}/workbench/{common,browser,node,electron-browser,api}/**",
"**/{vs,sql}/workbench/services/**/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/workbench/contrib/**/{common,browser,node,electron-browser}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/code/node/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/**/{common,node}/**",
"**/{vs,sql}/base/parts/**/{common,node}/**",
"**/{vs,sql}/platform/**/{common,node}/**",
"**/{vs,sql}/code/**/{common,node}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/code/electron-browser/**",
"restrictions": [
"vs/nls",
"vs/css!./**/*",
"**/{vs,sql}/base/**/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/base/parts/**/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/platform/**/{common,browser,node,electron-browser}/**",
"**/{vs,sql}/code/**/{common,browser,node,electron-browser}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/code/electron-main/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/**/{common,node,electron-main}/**",
"**/{vs,sql}/base/parts/**/{common,node,electron-main}/**",
"**/{vs,sql}/platform/**/{common,node,electron-main}/**",
"**/{vs,sql}/code/**/{common,node,electron-main}/**",
"*" // node modules
]
},
{
"target": "**/{vs,sql}/server/**",
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/**/{common,node}/**",
"**/{vs,sql}/base/parts/**/{common,node}/**",
"**/{vs,sql}/platform/**/{common,node}/**",
"**/{vs,sql}/workbench/**/{common,node}/**",
"**/{vs,sql}/server/**",
"**/{vs,sql}/code/**/{common,node}/**",
"*" // node modules
]
},
{
"target": "**/extensions/**",
"restrictions": "**/*"
},
{
"target": "**/test/smoke/**",
"restrictions": [
"**/test/smoke/**",
"*" // node modules
]
},
{
"target": "**/test/automation/**",
"restrictions": [
"**/test/automation/**",
"*" // node modules
]
},
{
"target": "**/test/integration/**",
"restrictions": [
"**/test/integration/**",
"*" // node modules
]
},
{
"target": "**/api/**.test.ts",
"restrictions": [
"**/{vs,sql}/**",
"assert",
"sinon",
"crypto",
"vscode",
"typemoq",
"azdata"
]
},
{
"target": "**/{node,electron-browser,electron-main}/**/*.test.ts",
"restrictions": [
"**/{vs,sql}/**",
"**" // node modules
]
},
{
"target": "**/{node,electron-browser,electron-main}/**/test/**",
"restrictions": [
"**/{vs,sql}/**",
"*" // node modules
]
},
{
"target": "**/test/{node,electron-browser,electron-main}/**",
"restrictions": [
"**/{vs,sql}/**",
"*" // node modules
]
},
{
"target": "**/**.test.ts",
"restrictions": [
"**/{vs,sql}/**",
"assert",
"typemoq",
"sinon",
"crypto",
"xterm*",
"azdata"
]
},
{
"target": "**/test/**",
"restrictions": [
"**/{vs,sql}/**",
"assert",
"typemoq",
"sinon",
"crypto",
"xterm*"
]
}
]
},
"overrides": [
{
"files": [
"*.js"
],
"rules": {
"jsdoc/no-types": "off"
}
},
{
"files": [
"**/sql/**"
],
"rules": {
"no-sync": "warn",
"strict": ["warn", "never"],
"no-console": "warn"
}
},
{
"files": [
"**/vscode.d.ts",
"**/vscode.proposed.d.ts"
],
"rules": {
"vscode-dts-create-func": "warn",
"vscode-dts-literal-or-types": "warn",
"vscode-dts-interface-naming": "warn",
"vscode-dts-event-naming": [
"warn",
{
"allowed": [
"onCancellationRequested",
"event"
],
"verbs": [
"accept",
"change",
"close",
"collapse",
"create",
"delete",
"dispose",
"edit",
"end",
"expand",
"hide",
"open",
"override",
"receive",
"register",
"rename",
"save",
"send",
"start",
"terminate",
"trigger",
"unregister",
"write"
]
}
]
}
}
]
}

20
.eslintrc.sql.ts.json Normal file
View File

@@ -0,0 +1,20 @@
{
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"project": "./tsconfig.sql.json"
},
"plugins": [
"@typescript-eslint",
"jsdoc"
],
"rules": {
"@typescript-eslint/no-floating-promises": [
"error",
{
"ignoreVoid": true
}
]
}
}

View File

@@ -6,7 +6,8 @@ labels: ''
assignees: ''
---
<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- Please search existing issues to avoid creating duplicates. -->
<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed. -->

View File

@@ -1,12 +1,11 @@
{
perform: false,
perform: true,
commands: [
{
type: 'label',
name: 'duplicate',
allowTriggerByBot: true,
action: 'close',
comment: "Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for existing issues [here](https://aka.ms/vscodeissuesearch). See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
name: 'Needs Logs',
action: 'comment',
comment: "We need more info to debug your particular issue. If you could attach your logs to the issue (ensure no private data is in them), it would help us fix the issue much faster.\n\nTo find your logs:\n\n- Open command palette (Click **View** -> **Command Palette**)\n- Run the command: **`Developer: Open Logs Folder`**\n\nThis will open the log file locally. Please include renderer.log"
}
]
}

2
.github/locker.yml vendored
View File

@@ -1,6 +1,6 @@
{
daysAfterClose: 45,
daysSinceLastUpdate: 3,
ignoredLabels: [],
ignoredLabels: ['A11y_ADS_OctTestPass', 'A11y_ADS_Schema_Dacpac_Backup', 'A11y_AzureDataStudio', 'A11yExclusion', 'A11yMAS', 'A11yResolved: Will Not Fix', 'A11yTCS'],
perform: true
}

7
.github/mergers.json vendored Normal file
View File

@@ -0,0 +1,7 @@
[
"kenvanhyning",
"kburtram",
"udeeshagautam",
"qifahs",
"chlafreniere"
]

View File

@@ -1,6 +0,0 @@
{
newReleaseLabel: 'new-release',
newReleaseColor: '006b75',
daysAfterRelease: 5,
perform: true
}

View File

@@ -2,13 +2,16 @@ name: CI
on:
push:
branches:
- master
- release/*
pull_request:
branches:
- master
- release/*
branches-ignore:
- '**'
# push:
# branches:
# - master
# - release/*
# pull_request:
# branches:
# - master
# - release/*
jobs:
linux:
@@ -35,22 +38,38 @@ jobs:
name: Install Dependencies
- run: yarn electron x64
name: Download Electron
- run: yarn gulp hygiene --skip-tslint
- run: yarn gulp hygiene
name: Run Hygiene Checks
- run: yarn gulp tslint
name: Run TSLint Checks
- run: yarn strict-null-check # {{SQL CARBON EDIT}} add step
name: Run Strict Null Check
- run: yarn strict-vscode # {{SQL CARBON EDIT}} add step
name: Run Strict Compile Options
# - run: yarn monaco-compile-check {{SQL CARBON EDIT}} remove step
# name: Run Monaco Editor Checks
- run: yarn valid-layers-check
name: Run Valid Layers Checks
- run: yarn compile
name: Compile Sources
# - run: yarn download-builtin-extensions {{SQL CARBON EDIT}} remove step
# name: Download Built-in Extensions
- run: DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
name: Run Unit Tests
- run: DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests" --coverage --runGlob "**/sql/**/*.test.js"
name: Run Unit Tests (Electron)
- run: DISPLAY=:10 ./scripts/test-extensions-unit.sh
name: Run Extension Unit Tests (Electron)
# {{SQL CARBON EDIT}} Add coveralls. We merge first to get around issue where parallel builds weren't being combined correctly
- run: |
mkdir .build/coverage-combined
cat .build/coverage-single/lcov.info ./extensions/admin-tool-ext-win/coverage/lcov.info ./extensions/agent/coverage/lcov.info ./extensions/azurecore/coverage/lcov.info ./extensions/cms/coverage/lcov.info ./extensions/dacpac/coverage/lcov.info ./extensions/schema-compare/coverage/lcov.info ./extensions/notebook/coverage/lcov.info ./extensions/resource-deployment/coverage/lcov.info ./extensions/machine-learning-services/coverage/lcov.info > .build/coverage-combined/lcov.info
name: Merge coverage reports
- name: Upload Code Coverage
uses: coverallsapp/github-action@v1.0.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: '.build/coverage-combined/lcov.info'
# Fails with cryptic error (e.g. https://github.com/microsoft/vscode/pull/90292/checks?check_run_id=433681926#step:13:9)
# - run: DISPLAY=:10 yarn test-browser --browser chromium
# name: Run Unit Tests (Browser)
# - run: DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests" {{SQL CARBON EDIT}} remove step
# name: Run Integration Tests
# name: Run Integration Tests (Electron)
windows:
runs-on: windows-2016
@@ -69,22 +88,24 @@ jobs:
name: Install Dependencies
- run: yarn electron
name: Download Electron
- run: yarn gulp hygiene --skip-tslint
- run: yarn gulp hygiene
name: Run Hygiene Checks
- run: yarn gulp tslint
name: Run TSLint Checks
- run: yarn strict-null-check # {{SQL CARBON EDIT}} add step
name: Run Strict Null Check
- run: yarn strict-vscode # {{SQL CARBON EDIT}} add step
name: Run Strict Compile Options
# - run: yarn monaco-compile-check {{SQL CARBON EDIT}} remove step
# name: Run Monaco Editor Checks
- run: yarn valid-layers-check
name: Run Valid Layers Checks
- run: yarn compile
name: Compile Sources
# - run: yarn download-builtin-extensions {{SQL CARBON EDIT}} remove step
# name: Download Built-in Extensions
- run: .\scripts\test.bat --tfs "Unit Tests"
name: Run Unit Tests
name: Run Unit Tests (Electron)
# - run: yarn test-browser --browser chromium {{SQL CARBON EDIT}} disable for now @TODO @anthonydresser
# name: Run Unit Tests (Browser)
# - run: .\scripts\test-integration.bat --tfs "Integration Tests" {{SQL CARBON EDIT}} remove step
# name: Run Integration Tests
# name: Run Integration Tests (Electron)
darwin:
runs-on: macos-latest
@@ -100,19 +121,47 @@ jobs:
name: Install Dependencies
- run: yarn electron x64
name: Download Electron
- run: yarn gulp hygiene --skip-tslint
- run: yarn gulp hygiene
name: Run Hygiene Checks
- run: yarn gulp tslint
name: Run TSLint Checks
- run: yarn strict-null-check # {{SQL CARBON EDIT}} add step
name: Run Strict Null Check
- run: yarn strict-vscode # {{SQL CARBON EDIT}} add step
name: Run Strict Compile Options
# - run: yarn monaco-compile-check {{SQL CARBON EDIT}} remove step
# name: Run Monaco Editor Checks
- run: yarn valid-layers-check
name: Run Valid Layers Checks
- run: yarn compile
name: Compile Sources
# - run: yarn download-builtin-extensions {{SQL CARBON EDIT}} remove step
# name: Download Built-in Extensions
- run: ./scripts/test.sh --tfs "Unit Tests"
name: Run Unit Tests
# - run: ./scripts/test-integration.sh --tfs "Integration Tests" {{SQL CARBON EDIT}} remove step
# name: Run Integration Tests
name: Run Unit Tests (Electron)
# - run: yarn test-browser --browser chromium --browser webkit
# name: Run Unit Tests (Browser)
# - run: ./scripts/test-integration.sh --tfs "Integration Tests"
# name: Run Integration Tests (Electron)
# monaco:
# runs-on: ubuntu-latest
# env:
# CHILD_CONCURRENCY: "1"
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# steps:
# - uses: actions/checkout@v1
# # TODO: rename azure-pipelines/linux/xvfb.init to github-actions
# - run: |
# sudo apt-get update
# sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 libgbm1
# sudo cp build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb
# sudo chmod +x /etc/init.d/xvfb
# sudo update-rc.d xvfb defaults
# sudo service xvfb start
# name: Setup Build Environment
# - uses: actions/setup-node@v1
# with:
# node-version: 10
# - run: yarn --frozen-lockfile
# name: Install Dependencies
# - run: yarn monaco-compile-check
# name: Run Monaco Editor Checks
# - run: yarn gulp editor-esm-bundle
# name: Editor Distro & ESM Bundle

16
.github/workflows/merger.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: AutoMerger
on:
issue_comment:
types: [created]
jobs:
release_labeler:
name: Auto Merger
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v2
- uses: ./build/actions/AutoMerge
env:
GITHUB_TOKEN: "${{ secrets.GithubMerger }}"

19
.github/workflows/portlabel.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Port Request Labeler
on:
pull_request:
branches:
- release/**
jobs:
release_labeler:
name: Release labeler
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v2
- uses: ./build/actions/AutoLabel
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
with:
label: "Port Request"

View File

@@ -1,13 +0,0 @@
name: TSLint Enforcement
on: [pull_request]
jobs:
job:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v1
- name: TSLint
uses: aaomidi/gh-action-tslint@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
tslint_config: 'tslint-sql.json'

1
.gitignore vendored
View File

@@ -11,6 +11,7 @@ out-editor/
out-editor-src/
out-editor-build/
out-editor-esm/
out-editor-esm-bundle/
out-editor-min/
out-monaco-editor-core/
out-vscode/

View File

@@ -2,7 +2,6 @@
// See https://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"ms-vscode.vscode-typescript-tslint-plugin",
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"msjsdiag.debugger-for-chrome"

100
.vscode/launch.json vendored
View File

@@ -16,8 +16,6 @@
"request": "attach",
"name": "Attach to Extension Host",
"port": 5870,
"timeout": 30000,
"restart": true,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
]
@@ -36,7 +34,10 @@
"port": 5876,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
]
],
"presentation": {
"hidden": true,
}
},
{
"type": "node",
@@ -54,7 +55,10 @@
"port": 5875,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
]
],
"presentation": {
"hidden": true,
}
},
{
"type": "chrome",
@@ -84,9 +88,15 @@
"urlFilter": "*workbench.html*",
"runtimeArgs": [
"--inspect=5875",
"--no-cached-data"
"--no-cached-data",
],
"webRoot": "${workspaceFolder}",
// Settings for js-debug:
"userDataDir": false,
"pauseForSourceMap": false,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
"webRoot": "${workspaceFolder}"
},
{
"type": "node",
@@ -101,7 +111,11 @@
],
"outFiles": [
"${workspaceFolder}/out/**/*.js"
]
],
"presentation": {
"group": "2_launch",
"order": 1
}
},
{
"type": "chrome",
@@ -135,13 +149,21 @@
"runtimeArgs": [
"web"
],
"presentation": {
"group": "2_launch",
"order": 2
}
},
{
"type": "chrome",
"request": "launch",
"name": "Launch ADS (Web, Chrome) (TBD)",
"url": "http://localhost:8080",
"preLaunchTask": "Run web"
"preLaunchTask": "Run web",
"presentation": {
"group": "2_launch",
"order": 3
}
},
{
"type": "node",
@@ -152,16 +174,11 @@
"cwd": "${workspaceFolder}/extensions/git",
"outFiles": [
"${workspaceFolder}/extensions/git/out/**/*.js"
]
},
{
"name": "Launch Built-in Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}/extensions/debug-auto-launch"
]
],
"presentation": {
"group": "5_tests",
"order": 10
}
},
{
"type": "node",
@@ -171,13 +188,17 @@
"cwd": "${workspaceFolder}/test/smoke",
"env": {
"BUILD_ARTIFACTSTAGINGDIRECTORY": "${workspaceFolder}"
},
"presentation": {
"group": "5_tests",
"order": 8
}
},
{
"type": "node",
"request": "launch",
"name": "Run Unit Tests",
"program": "${workspaceFolder}/test/electron/index.js",
"program": "${workspaceFolder}/test/unit/electron/index.js",
"runtimeExecutable": "${workspaceFolder}/.build/electron/Azure Data Studio.app/Contents/MacOS/Electron",
"windows": {
"runtimeExecutable": "${workspaceFolder}/.build/electron/azuredatastudio.exe"
@@ -195,6 +216,9 @@
],
"env": {
"MOCHA_COLORS": "true"
},
"presentation": {
"hidden": true
}
},
{
@@ -245,19 +269,16 @@
"Run Extension Unit Tests"
]
},
{
"name": "Debug Extension Integration Tests",
"configurations": [
"Attach to Extension Host",
"Run Extension Integration Tests"
]
},
{
"name": "Debug azuredatastudio Main and Renderer",
"configurations": [
"Launch azuredatastudio",
"Attach to Main Process"
]
],
"presentation": {
"group": "1_vscode",
"order": 1
}
},
{
"name": "Debug azuredatastudio Main, Renderer & Extension Host",
@@ -265,28 +286,33 @@
"Launch azuredatastudio",
"Attach to Main Process",
"Attach to Extension Host"
]
},
{
"name": "Debug Renderer and search processes",
"configurations": [
"Launch azuredatastudio",
"Attach to Search Process"
]
],
"presentation": {
"group": "1_vscode",
"order": 3
}
},
{
"name": "Debug Renderer and Extension Host processes",
"configurations": [
"Launch azuredatastudio",
"Attach to Extension Host"
]
],
"presentation": {
"group": "1_vscode",
"order": 2
}
},
{
"name": "Attach Renderer and Extension Host",
"configurations": [
"Attach to azuredatastudio",
"Attach to Extension Host"
]
],
"presentation": {
"group": "1_vscode",
"order": 2
}
}
]
}

63
.vscode/searches/es6.code-search vendored Normal file
View File

@@ -0,0 +1,63 @@
# Query: @deprecated ES6
# Flags: CaseSensitive WordMatch
# ContextLines: 2
9 results - 4 files
src/vs/base/common/arrays.ts:
401
402 /**
403: * @deprecated ES6: use `Array.findIndex`
404 */
405 export function firstIndex<T>(array: ReadonlyArray<T>, fn: (item: T) => boolean): number {
417
418 /**
419: * @deprecated ES6: use `Array.find`
420 */
421 export function first<T>(array: ReadonlyArray<T>, fn: (item: T) => boolean, notFoundValue: T): T;
560
561 /**
562: * @deprecated ES6: use `Array.find`
563 */
564 export function find<T>(arr: ArrayLike<T>, predicate: (value: T, index: number, arr: ArrayLike<T>) => any): T | undefined {
src/vs/base/common/map.ts:
9
10 /**
11: * @deprecated ES6: use `[...SetOrMap.values()]`
12 */
13 export function values<V = any>(set: Set<V>): V[];
20
21 /**
22: * @deprecated ES6: use `[...map.keys()]`
23 */
24 export function keys<K, V>(map: Map<K, V>): K[] {
src/vs/base/common/objects.ts:
115
116 /**
117: * @deprecated ES6
118 */
119 export function assign<T>(destination: T): T;
src/vs/base/common/strings.ts:
15
16 /**
17: * @deprecated ES6: use `String.padStart`
18 */
19 export function pad(n: number, l: number, char: string = '0'): string {
146
147 /**
148: * @deprecated ES6: use `String.startsWith`
149 */
150 export function startsWith(haystack: string, needle: string): boolean {
167
168 /**
169: * @deprecated ES6: use `String.endsWith`
170 */
171 export function endsWith(haystack: string, needle: string): boolean {

9
.vscode/searches/ts36031.code-search vendored Normal file
View File

@@ -0,0 +1,9 @@
# Query: \\w+\\?\\..+![(.[]
# Flags: RegExp
# ContextLines: 2
src/vs/base/browser/ui/tree/asyncDataTree.ts:
270 } : undefined,
271 isChecked: options.ariaProvider!.isChecked ? (e) => {
272: return options.ariaProvider?.isChecked!(e.element as T);
273 } : undefined
274 },

12
.vscode/settings.json vendored
View File

@@ -22,6 +22,8 @@
"i18n/**": true,
"extensions/**/out/**": true,
"test/smoke/out/**": true,
"test/automation/out/**": true,
"test/integration/browser/out/**": true,
"src/vs/base/test/node/uri.test.data.txt": true
},
"lcov.path": [
@@ -37,6 +39,11 @@
}
}
],
"eslint.options": {
"rulePaths": [
"./build/lib/eslint"
]
},
"typescript.tsdk": "node_modules/typescript/lib",
"npm.exclude": "**/extensions/**",
"npm.packageManager": "yarn",
@@ -62,5 +69,8 @@
"msjsdiag.debugger-for-chrome": "workspace"
},
"gulp.autoDetect": "off",
"files.insertFinalNewline": true
"files.insertFinalNewline": true,
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
}

37
.vscode/tasks.json vendored
View File

@@ -33,40 +33,18 @@
},
{
"type": "npm",
"script": "strict-function-types-watch",
"label": "TS - Strict Function Types",
"script": "strict-vscode-watch",
"label": "TS - Strict VSCode",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"problemMatcher": {
"base": "$tsc-watch",
"owner": "typescript-function-types",
"owner": "typescript-vscode",
"applyTo": "allDocuments"
}
},
{
"type": "npm",
"script": "strict-null-check-watch",
"label": "TS - Strict Null Checks",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"problemMatcher": {
"base": "$tsc-watch",
"owner": "typescript-strict-null-checks",
"applyTo": "allDocuments"
}
},
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"problemMatcher": [
"$tslint5"
]
},
{
"label": "Run tests",
"type": "shell",
@@ -104,7 +82,6 @@
"command": "yarn web -- --no-launch",
"label": "Run web",
"isBackground": true,
// This section to make error go away when launching the debug config
"problemMatcher": {
"pattern": {
"regexp": ""
@@ -118,5 +95,13 @@
"reveal": "never"
}
},
{
"type": "npm",
"script": "eslint",
"problemMatcher": {
"source": "eslint",
"base": "$eslint-stylish"
}
}
]
}

View File

@@ -1,3 +1,3 @@
disturl "https://atom.io/download/electron"
target "6.1.5"
target "7.1.11"
runtime "electron"

View File

@@ -1,5 +1,48 @@
# Change Log
## Version 1.16.0
* Release date: March 18, 2020
* Release status: General Availability
* Notebooks:
* Charting
* Creating Jupyter books
* Postgres extension update - Users can now authenticate to Azure Postgres servers with their linked Azure account
* Accessibility bugs
* VS Code merge
* In the next release, GitHub releases will no longer contain the binary files to the latest version. Rather, they will contain links to the latest release. This will have no impact on users using the in-app update functionality.
## Version 1.15.1
* Release date: February 19, 2020
* Release status: General Availability
* Resolved [#9145 Edit Data render the result grid incorrectly when using custom query](https://github.com/microsoft/azuredatastudio/issues/9145).
* Resolved [#9149 Show Active Connections](https://github.com/microsoft/azuredatastudio/issues/9149).
## Version 1.15.0
* Release date: February 13, 2020
* Release status: General Availability
* New Azure Sign-in improvement - Added improved Azure Sign-in experience, including removal of copy/paste of device code to make a more seamless connected experience.
* Find in Notebook support - Users can now use Ctrl+F inside of a notebook. Find in Notebook support searches line by line through both code and text cells.
* VS Code merge from 1.38 to 1.42 - This release includes updates to VS Code from the 3 previous VS Code releases. Read their [release notes](https://code.visualstudio.com/updates/v1_42) to learn more.
* Fix for the ["white/blank screen"](https://github.com/microsoft/azuredatastudio/issues/8775) issue reported by many users.
* Resolved [bugs and issues](https://github.com/microsoft/azuredatastudio/issues?q=is%3Aissue+label%3ABug+milestone%3A%22February+2020%22+is%3Aclosed).
## Version 1.14.1
* Release date: December 26, 2019
* Release status: General Availability
* Hotfix for bug https://github.com/microsoft/azuredatastudio/issues/8768
## Version 1.14.0
* Release date: December 19, 2019
* Release status: General Availability
* Added bigdatacluster.ignoreSslVerification setting to allow ignoring SSL verification errors when connecting to a BDC [#8129](https://github.com/microsoft/azuredatastudio/issues/8129)
* Changed attach to connection dropdown in Notebooks to only list the currently active connection [#8582](https://github.com/microsoft/azuredatastudio/pull/8582)
* Allow changing default language flavor for offline query editors [#8419](https://github.com/microsoft/azuredatastudio/pull/8419)
* GA status for Big Data Cluster/SQL 2019 features [#8269](https://github.com/microsoft/azuredatastudio/issues/8269)
* Resolved [bugs and issues](https://github.com/microsoft/azuredatastudio/milestone/44?closed=1).
## Contributions and "thank you"
We would like to thank all our users who raised issues, and in particular the following users who helped contribute fixes:
## Version 1.13.1
* Release date: November 15, 2019
* Release status: General Availability

View File

@@ -8,15 +8,16 @@ Azure Data Studio is a data management tool that enables you to work with SQL Se
## **Download the latest Azure Data Studio release**
Platform | Link
-- | --
Windows User Installer | https://go.microsoft.com/fwlink/?linkid=2109256
Windows System Installer | https://go.microsoft.com/fwlink/?linkid=2109085
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=2109255
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=2109180
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=2109179
Linux RPM | https://go.microsoft.com/fwlink/?linkid=2109178
Linux DEB | https://go.microsoft.com/fwlink/?linkid=2109254
| Platform |
| --------------------------------------- |
| [Windows User Installer][win-user] |
| [Windows System Installer][win-system] |
| [Windows ZIP][win-zip] |
| [macOS ZIP][osx-zip] |
| [Linux TAR.GZ][linux-zip] |
| [Linux RPM][linux-rpm] |
| [Linux DEB][linux-deb] |
Go to our [download page](https://aka.ms/azuredatastudio) for more specific instructions.
@@ -140,3 +141,11 @@ And of course, we'd like to thank the authors of all upstream dependencies. Ple
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the [Source EULA](LICENSE.txt).
[win-user]: https://go.microsoft.com/fwlink/?linkid=2121609
[win-system]: https://go.microsoft.com/fwlink/?linkid=2121612
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2121511
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2121611
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2121510
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2121613
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2121610

View File

@@ -12,6 +12,7 @@ expressly granted herein, whether by implication, estoppel or otherwise.
angular2-grid: https://github.com/BTMorton/angular2-grid
angular2-slickgrid: https://github.com/Microsoft/angular2-slickgrid
applicationinsights: https://github.com/Microsoft/ApplicationInsights-node.js
axios: https://github.com/axios/axios
bootstrap: https://github.com/twbs/bootstrap
chart.js: https://github.com/Timer/chartjs
chokidar: https://github.com/paulmillr/chokidar
@@ -38,6 +39,7 @@ expressly granted herein, whether by implication, estoppel or otherwise.
jschardet: https://github.com/aadsm/jschardet
jupyter-powershell: https://github.com/vors/jupyter-powershell
JupyterLab: https://github.com/jupyterlab/jupyterlab
keytar: https://github.com/atom/node-keytar
make-error: https://github.com/JsCommunity/make-error
minimist: https://github.com/substack/minimist
moment: https://github.com/moment/moment
@@ -50,6 +52,7 @@ expressly granted herein, whether by implication, estoppel or otherwise.
primeng: https://github.com/primefaces/primeng
process-nextick-args: https://github.com/calvinmetcalf/process-nextick-args
pty.js: https://github.com/chjj/pty.js
qs: https://github.com/ljharb/qs
reflect-metadata: https://github.com/rbuckton/reflect-metadata
request: https://github.com/request/request
rxjs: https://github.com/ReactiveX/RxJS

View File

@@ -17,6 +17,6 @@ jobs:
- job: macOS
pool:
vmImage: macOS 10.13
vmImage: macOS-latest
steps:
- template: build/azure-pipelines/darwin/continuous-build-darwin.yml

View File

@@ -108,6 +108,8 @@ jquery-ui/demos/**
slickgrid/node_modules/**
slickgrid/examples/**
kerberos/build/**
# END SQL Modules
nsfw/binding.gyp

View File

@@ -0,0 +1,17 @@
{
"env": {
"commonjs": true,
"es6": true,
"node": true
},
"extends": "eslint:recommended",
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2018
},
"rules": {
}
}

98
build/actions/AutoLabel/.gitignore vendored Normal file
View File

@@ -0,0 +1,98 @@
# Created by https://www.gitignore.io/api/node
# Edit at https://www.gitignore.io/?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# react / gatsby
public/
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# End of https://www.gitignore.io/api/node

View File

@@ -0,0 +1,9 @@
name: 'Auto Labeler'
description: 'Automatically add a label to a PR'
author: 'aaomidi'
inputs:
token:
description: 'The GITHUB_TOKEN secret'
runs:
using: 'node12'
main: 'dist/index.js'

View File

@@ -0,0 +1 @@
export {};

35714
build/actions/AutoLabel/dist/index.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
{
"name": "auto-merge",
"version": "1.0.0",
"main": "src/index.js",
"repository": "git@github.com:aaomidi/AutoLabel.git",
"author": "Amir Omidi <amir@aaomidi.com>",
"license": "MIT",
"scripts": {
"package": "ncc build src/index.ts -o dist",
"lint": "eslint src/index.js"
},
"devDependencies": {
"@types/node": "^12.11.1",
"@zeit/ncc": "^0.21.1",
"eslint": "^6.8.0",
"typescript": "^3.8.3"
},
"dependencies": {
"@actions/core": "^1.1.3",
"@actions/github": "^1.1.0",
"@octokit/rest": "^16.33.1",
"actions-toolkit": "^3.0.1"
}
}

View File

@@ -0,0 +1,37 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Toolkit } from 'actions-toolkit';
const tools = new Toolkit({
event: 'pull_request',
secrets: ['GITHUB_TOKEN']
});
const label = tools.inputs.label || 'Port Request';
async function run() {
try {
let prNumber = tools.context.payload?.pull_request?.number;
if (prNumber === undefined) {
console.error('PR Number was undefined');
tools.log.error('PR Number was undefined');
return;
}
tools.github.issues.addLabels({
...tools.context.repo,
labels: [label],
issue_number: prNumber
});
} catch (ex) {
console.error(ex);
tools.log.error(ex);
}
}
run();

View File

@@ -0,0 +1,76 @@
{
"compilerOptions": {
/* Basic Options */
"target": "es6",
/* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
"module": "commonjs",
/* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
// "lib": [], /* Specify library files to be included in the compilation. */
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
"declaration": true,
/* Generates corresponding '.d.ts' file. */
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
"sourceMap": true,
/* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "out",
/* Redirect output structure to the directory. */
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
// "removeComments": true, /* Do not emit comments to output. */
// "noEmit": true, /* Do not emit outputs. */
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
/* Strict Type-Checking Options */
"strict": true,
/* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
"strictNullChecks": true,
/* Enable strict null checks. */
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
"alwaysStrict": true,
/* Parse in strict mode and emit "use strict" for each source file. */
/* Additional Checks */
// "noUnusedLocals": true, /* Report errors on unused locals. */
// "noUnusedParameters": true, /* Report errors on unused parameters. */
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
/* Module Resolution Options */
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
"types": ["node"],
"skipLibCheck": true,
/* Type declaration files to be included in compilation. */
"allowSyntheticDefaultImports": true,
/* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
},
"include": [
"./src/**/*.ts"
],
"exclude": [
"node_modules"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,17 @@
{
"env": {
"commonjs": true,
"es6": true,
"node": true
},
"extends": "eslint:recommended",
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2018
},
"rules": {
}
}

100
build/actions/AutoMerge/.gitignore vendored Normal file
View File

@@ -0,0 +1,100 @@
# Created by https://www.gitignore.io/api/node
# Edit at https://www.gitignore.io/?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# react / gatsby
public/
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# End of https://www.gitignore.io/api/node
out/

View File

@@ -0,0 +1,6 @@
name: 'Auto Merge'
description: 'Automatically merges a PR based on command'
author: 'aaomidi'
runs:
using: 'node12'
main: 'dist/index.js'

View File

@@ -0,0 +1 @@
export {};

35769
build/actions/AutoMerge/dist/index.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
{
"name": "auto-merge",
"version": "1.0.0",
"main": "src/index.js",
"repository": "git@github.com:aaomidi/AutoMerge.git",
"author": "Amir Omidi <amir@aaomidi.com>",
"license": "MIT",
"scripts": {
"package": "ncc build src/index.ts -o dist",
"lint": "eslint src/index.js"
},
"devDependencies": {
"@types/node": "^12.11.1",
"@zeit/ncc": "^0.21.1",
"eslint": "^6.8.0",
"typescript": "^3.8.3"
},
"dependencies": {
"@actions/core": "^1.1.3",
"@actions/github": "^1.1.0",
"@octokit/rest": "^16.33.1",
"actions-toolkit": "^3.0.1"
}
}

View File

@@ -0,0 +1,134 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Toolkit } from 'actions-toolkit';
import { Octokit } from '@octokit/rest';
interface LabelDefinition {
id: number,
name: string
}
interface RepoContext {
repo: string,
owner: string
}
const tools = new Toolkit({
event: 'issue_comment',
secrets: ['GITHUB_TOKEN']
});
const labelToCheckFor = tools.inputs.label || 'Approved';
const fileToCheckFor = tools.inputs.filePath || './.github/mergers.json';
const checkMerged = async (repoContext: RepoContext, pullNumber: number): Promise<boolean> => {
let isMerged: boolean;
try {
const result = await tools.github.pulls.checkIfMerged({
...repoContext,
pull_number: pullNumber
});
isMerged = result.status === 204;
} catch (ex) {
isMerged = false;
}
return isMerged;
};
const checkCollabrator = async (repoContext: RepoContext, username: string): Promise<boolean> => {
let isCollabrator: boolean;
try {
const result = await tools.github.repos.checkCollaborator({
...repoContext,
username,
});
isCollabrator = result.status === 204;
} catch (ex) {
isCollabrator = false;
}
return isCollabrator;
};
tools.command('merge', async () => {
try {
const issue = tools.context.payload.issue;
if (issue?.pull_request === undefined) {
console.log('This command only works on pull requests');
return;
}
const sender = tools.context.payload.sender;
const senderName = sender?.login ?? ' Unknown Sender';
const issueNumber = issue?.number;
if (!issueNumber) {
return tools.log.error('Issue number not defined.');
}
const isMerged = await checkMerged(tools.context.repo, issueNumber);
if (isMerged === true) {
console.log('PR is already merged');
return;
}
const mergers: string[] = JSON.parse(tools.getFile(fileToCheckFor));
if (!mergers.includes(senderName)) {
console.log('Unrecognized user tried to merge!', senderName);
return;
}
const isCollabrator = await checkCollabrator(tools.context.repo, senderName);
if (isCollabrator !== true) {
console.log('User is not a collabrator');
return;
}
const labels: LabelDefinition[] = issue.labels || [];
const foundLabel = labels.find(l => l.name === labelToCheckFor);
if (foundLabel === undefined) {
console.log(`Label ${labelToCheckFor} must be applied`);
const createCommentParams: Octokit.IssuesCreateCommentParams = {
...tools.context.repo,
issue_number: issueNumber,
body: `The label ${labelToCheckFor} is required for using this command.`
};
await tools.github.issues.createComment(createCommentParams);
return;
}
const createCommentParams: Octokit.IssuesCreateCommentParams = {
...tools.context.repo,
issue_number: issueNumber,
body: `Merging PR based on approval from @${senderName}`
};
const commentResult = await tools.github.issues.createComment(createCommentParams);
if (commentResult.status !== 201) {
console.log('Comment not created');
return;
}
const mergeResult = await tools.github.pulls.merge({
...tools.context.repo,
pull_number: issueNumber,
merge_method: 'squash'
});
console.log(mergeResult);
} catch (ex) {
console.error(ex);
}
});
console.log('Running...');

View File

@@ -0,0 +1,76 @@
{
"compilerOptions": {
/* Basic Options */
"target": "es6",
/* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
"module": "commonjs",
/* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
// "lib": [], /* Specify library files to be included in the compilation. */
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
"declaration": true,
/* Generates corresponding '.d.ts' file. */
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
"sourceMap": true,
/* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "out",
/* Redirect output structure to the directory. */
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
// "removeComments": true, /* Do not emit comments to output. */
// "noEmit": true, /* Do not emit outputs. */
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
/* Strict Type-Checking Options */
"strict": true,
/* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
"strictNullChecks": true,
/* Enable strict null checks. */
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
"alwaysStrict": true,
/* Parse in strict mode and emit "use strict" for each source file. */
/* Additional Checks */
// "noUnusedLocals": true, /* Report errors on unused locals. */
// "noUnusedParameters": true, /* Report errors on unused parameters. */
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
/* Module Resolution Options */
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
"types": ["node"],
"skipLibCheck": true,
/* Type declaration files to be included in compilation. */
"allowSyntheticDefaultImports": true,
/* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
},
"include": [
"./src/**/*.ts"
],
"exclude": [
"node_modules"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -44,15 +44,16 @@ async function doesAssetExist(blobService: azure.BlobService, quality: string, b
return existsResult.exists;
}
async function uploadBlob(blobService: azure.BlobService, quality: string, blobName: string, file: string): Promise<void> {
async function uploadBlob(blobService: azure.BlobService, quality: string, blobName: string, filePath: string, fileName: string): Promise<void> {
const blobOptions: azure.BlobService.CreateBlockBlobRequestOptions = {
contentSettings: {
contentType: mime.lookup(file),
contentType: mime.lookup(filePath),
contentDisposition: `attachment; filename="${fileName}"`,
cacheControl: 'max-age=31536000, public'
}
};
await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, file, blobOptions, err => err ? e(err) : c()));
await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
}
function getEnv(name: string): string {
@@ -66,24 +67,24 @@ function getEnv(name: string): string {
}
async function main(): Promise<void> {
const [, , platform, type, name, file] = process.argv;
const [, , platform, type, fileName, filePath] = process.argv;
const quality = getEnv('VSCODE_QUALITY');
const commit = getEnv('BUILD_SOURCEVERSION');
console.log('Creating asset...');
const stat = await new Promise<fs.Stats>((c, e) => fs.stat(file, (err, stat) => err ? e(err) : c(stat)));
const stat = await new Promise<fs.Stats>((c, e) => fs.stat(filePath, (err, stat) => err ? e(err) : c(stat)));
const size = stat.size;
console.log('Size:', size);
const stream = fs.createReadStream(file);
const stream = fs.createReadStream(filePath);
const [sha1hash, sha256hash] = await Promise.all([hashStream('sha1', stream), hashStream('sha256', stream)]);
console.log('SHA1:', sha1hash);
console.log('SHA256:', sha256hash);
const blobName = commit + '/' + name;
const blobName = commit + '/' + fileName;
const storageAccount = process.env['AZURE_STORAGE_ACCOUNT_2']!;
const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2']!)
@@ -98,7 +99,7 @@ async function main(): Promise<void> {
console.log('Uploading blobs to Azure storage...');
await uploadBlob(blobService, quality, blobName, file);
await uploadBlob(blobService, quality, blobName, filePath, fileName);
console.log('Blobs successfully uploaded.');

View File

@@ -49,11 +49,12 @@ function getConfig(quality: string): Promise<Config> {
query: `SELECT TOP 1 * FROM c WHERE c.id = @quality`,
parameters: [
{ name: '@quality', value: quality }
]
],
};
return new Promise<Config>((c, e) => {
client.queryDocuments(collection, query).toArray((err, results) => {
client.queryDocuments(collection, query, { enableCrossPartitionQuery: true }).toArray((err, results) => {
if (err && err.code !== 409) { return e(err); }
c(!results || results.length === 0 ? createDefaultConfig(quality) : results[0] as any as Config);
@@ -86,7 +87,7 @@ function createOrUpdate(commit: string, quality: string, platform: string, type:
updateTries++;
return new Promise<void>((c, e) => {
client.queryDocuments(collection, updateQuery).toArray((err, results) => {
client.queryDocuments(collection, updateQuery, { enableCrossPartitionQuery: true }).toArray((err, results) => {
if (err) { return e(err); }
if (results.length !== 1) { return e(new Error('No documents')); }
@@ -217,7 +218,13 @@ async function publish(commit: string, quality: string, platform: string, type:
// {{SQL CARBON EDIT}}
// Insiders: nightly build from master
const isReleased = (quality === 'insider' && /^master$|^refs\/heads\/master$/.test(sourceBranch) && /Project Collection Service Accounts|Microsoft.VisualStudio.Services.TFS/.test(queuedBy));
const isReleased = (
(
(quality === 'insider' && /^master$|^refs\/heads\/master$/.test(sourceBranch)) ||
(quality === 'rc1' && /^release\/|^refs\/heads\/release\//.test(sourceBranch))
) &&
/Project Collection Service Accounts|Microsoft.VisualStudio.Services.TFS/.test(queuedBy)
);
const release = {
id: commit,

View File

@@ -24,20 +24,17 @@ steps:
yarn electron x64
displayName: Download Electron
- script: |
yarn gulp hygiene --skip-tslint
yarn gulp hygiene
displayName: Run Hygiene Checks
- script: |
yarn gulp tslint
displayName: Run TSLint Checks
- script: | # {{SQL CARBON EDIT}} add step
yarn strict-null-check
yarn strict-vscode
displayName: Run Strict Null Check.
- script: | # {{SQL CARBON EDIT}} add step
yarn tslint
displayName: Run TSLint (gci)
# - script: | {{SQL CARBON EDIT}} remove step
# yarn monaco-compile-check
# displayName: Run Monaco Editor Checks
- script: |
yarn valid-layers-check
displayName: Run Valid Layers Checks
- script: |
yarn compile
displayName: Compile Sources
@@ -46,10 +43,13 @@ steps:
# displayName: Download Built-in Extensions
- script: |
./scripts/test.sh --tfs "Unit Tests"
displayName: Run Unit Tests
displayName: Run Unit Tests (Electron)
# - script: | {{SQL CARBON EDIT}} disable for now @TODO @anthonydresser
# yarn test-browser --browser chromium --browser webkit
# displayName: Run Unit Tests (Browser)
# - script: | {{SQL CARBON EDIT}} remove step
# ./scripts/test-integration.sh --tfs "Integration Tests"
# displayName: Run Integration Tests
# displayName: Run Integration Tests (Electron)
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:

View File

@@ -5,9 +5,6 @@ REPO="$(pwd)"
# ensure drop directories exist
mkdir -p $REPO/.build/darwin/{archive,server}
# remove pkg from archive
zip -d $REPO/.build/darwin/archive/azuredatastudio-darwin.zip "*.pkg"
# package Remote Extension Host
pushd .. && mv azuredatastudio-reh-darwin azuredatastudio-server-darwin && zip -Xry $REPO/.build/darwin/server/azuredatastudio-server-darwin.zip azuredatastudio-server-darwin && popd

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<false/>
<key>com.apple.security.automation.apple-events</key>
<true/>
</dict>
</plist>

View File

@@ -77,6 +77,23 @@ steps:
yarn postinstall
displayName: Run postinstall scripts
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
env:
OSS_GITHUB_ID: "a5d3c261b032765a78de"
OSS_GITHUB_SECRET: $(oss-github-client-secret)
INSIDERS_GITHUB_ID: "31f02627809389d9f111"
INSIDERS_GITHUB_SECRET: $(insiders-github-client-secret)
STABLE_GITHUB_ID: "baa8a44b5e861d918709"
STABLE_GITHUB_SECRET: $(stable-github-client-secret)
EXPLORATION_GITHUB_ID: "94e8376d3a90429aeaea"
EXPLORATION_GITHUB_SECRET: $(exploration-github-client-secret)
VSO_GITHUB_ID: "3d4be8f37a0325b5817d"
VSO_GITHUB_SECRET: $(vso-github-client-secret)
VSO_PPE_GITHUB_ID: "eabf35024dc2e891a492"
VSO_PPE_GITHUB_SECRET: $(vso-ppe-github-client-secret)
VSO_DEV_GITHUB_ID: "84383ebd8a7c5f5efc5c"
VSO_DEV_GITHUB_SECRET: $(vso-dev-github-client-secret)
GITHUB_APP_ID: "Iv1.ae51e546bef24ff1"
GITHUB_APP_SECRET: $(github-app-client-secret)
- script: |
set -e
@@ -96,9 +113,13 @@ steps:
- script: |
set -e
./scripts/test.sh --build --tfs "Unit Tests"
# APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`"
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME"
displayName: Run unit tests
displayName: Run unit tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
yarn test-browser --build --browser chromium --browser webkit
displayName: Run unit tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
@@ -111,33 +132,57 @@ steps:
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
# Web Smoke Tests disabled due to https://github.com/microsoft/vscode/issues/80308
# - script: |
# set -e
# cd test/smoke
# yarn compile
# cd -
# yarn smoketest --web --headless
# continueOnError: true
# displayName: Run web smoke tests
# condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
cd test/smoke
yarn compile
cd -
APP_ROOT=$(agent.builddirectory)/VSCode-darwin
APP_NAME="`ls $APP_ROOT | head -n 1`"
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME/Contents/MacOS/Electron" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
./resources/server/test/test-remote-integration.sh
displayName: Run remote integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
./resources/server/test/test-web-integration.sh --browser webkit
displayName: Run integration tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest --build "$APP_ROOT/$APP_NAME"
continueOnError: true
displayName: Run smoke tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
yarn smoketest --web --headless
continueOnError: true
displayName: Run smoke tests
displayName: Run smoke tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin.zip * && popd
security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
security default-keychain -s $(agent.tempdirectory)/buildagent.keychain
security unlock-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
echo "$(macos-developer-certificate)" | base64 -D > $(agent.tempdirectory)/cert.p12
security import $(agent.tempdirectory)/cert.p12 -k $(agent.tempdirectory)/buildagent.keychain -P "$(macos-developer-certificate-key)" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k pwd $(agent.tempdirectory)/buildagent.keychain
codesign -s 99FM488X57 --deep --force --options runtime --entitlements build/azure-pipelines/darwin/entitlements.plist $(agent.builddirectory)/VSCode-darwin/*.app
displayName: Set Hardened Entitlements
- script: |
set -e
pushd $(agent.builddirectory)/VSCode-darwin && zip -r -X -y $(agent.builddirectory)/VSCode-darwin.zip * && popd
displayName: Archive build
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
@@ -151,14 +196,61 @@ steps:
{
"keyCode": "CP-401337-Apple",
"operationSetCode": "MacAppDeveloperSign",
"parameters": [ ],
"parameters": [
{
"parameterName": "Hardening",
"parameterValue": "--options=runtime"
}
],
"toolName": "sign",
"toolVersion": "1.0"
}
]
SessionTimeout: 120
SessionTimeout: 60
displayName: Codesign
- script: |
zip -d $(agent.builddirectory)/VSCode-darwin.zip "*.pkg"
displayName: Clean Archive
- script: |
set -e
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
node build/azure-pipelines/common/createAsset.js darwin-unnotarized archive "VSCode-darwin-$VSCODE_QUALITY.zip" $(agent.builddirectory)/VSCode-darwin.zip
displayName: Publish Unnotarized Build
- script: |
APP_ROOT=$(agent.builddirectory)/VSCode-darwin
APP_NAME="`ls $APP_ROOT | head -n 1`"
BUNDLE_IDENTIFIER=$(node -p "require(\"$APP_ROOT/$APP_NAME/Contents/Resources/app/product.json\").darwinBundleIdentifier")
echo "##vso[task.setvariable variable=BundleIdentifier]$BUNDLE_IDENTIFIER"
displayName: Export bundle identifier
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
inputs:
ConnectedServiceName: 'ESRP CodeSign'
FolderPath: '$(agent.builddirectory)'
Pattern: 'VSCode-darwin.zip'
signConfigType: inlineSignParams
inlineOperation: |
[
{
"keyCode": "CP-401337-Apple",
"operationSetCode": "MacAppNotarize",
"parameters": [
{
"parameterName": "BundleId",
"parameterValue": "$(BundleIdentifier)"
}
],
"toolName": "sign",
"toolVersion": "1.0"
}
]
SessionTimeout: 60
displayName: Notarization
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \

View File

@@ -1,9 +1,6 @@
#!/usr/bin/env bash
set -e
# remove pkg from archive
zip -d ../VSCode-darwin.zip "*.pkg"
# publish the build
node build/azure-pipelines/common/createAsset.js \
darwin \
@@ -22,7 +19,9 @@ node build/azure-pipelines/common/createAsset.js \
../vscode-server-darwin.zip
# publish hockeyapp symbols
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" x64 "$VSCODE_HOCKEYAPP_ID_MACOS"
# node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" x64 "$VSCODE_HOCKEYAPP_ID_MACOS"
# Skip hockey app because build failure.
# https://github.com/microsoft/vscode/issues/90491
# upload configuration
yarn gulp upload-vscode-configuration

View File

@@ -1,4 +1,10 @@
steps:
- task: InstallAppleCertificate@2
displayName: 'Install developer certificate'
inputs:
certSecureFile: 'osx_signing_key.p12'
condition: eq(variables['signed'], true)
- script: |
mkdir -p .build
echo -n $BUILD_SOURCEVERSION > .build/commit
@@ -64,6 +70,8 @@ steps:
set -e
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
displayName: Install dependencies
env:
GITHUB_TOKEN: $(github-distro-mixin-password)
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
@@ -84,11 +92,6 @@ steps:
node build/azure-pipelines/mixin
displayName: Mix in quality
- script: |
set -e
yarn gulp install-sqltoolsservice
displayName: Install sqltoolsservice
- script: |
set -e
yarn gulp package-rebuild-extensions
@@ -105,12 +108,64 @@ steps:
displayName: Run unit tests
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/azuredatastudio-darwin
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots"
displayName: Run smoke tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-web-darwin" \
yarn smoketest --web --headless --screenshots "$(build.artifactstagingdirectory)/smokeshots"
displayName: Run smoke tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
pushd ../azuredatastudio-darwin
ls
echo "Cleaning the application"
xattr -cr *.app
cd *.app
find . -name '._*' -print0 | xargs -0 rm -rf --
cd ..
echo "Signing the application with deep"
codesign --deep --force --timestamp --options runtime --entitlements $(Build.SourcesDirectory)/build/azure-pipelines/darwin/entitlements.xml -s LPV3BJJYXS *.app
cd *.app
ls
echo "Signing specific components"
find . -type f -print0 | xargs -0 file | grep ': *Mach-O' | sed 's/: *Mach-O.*//' | while read -r file; do codesign --options runtime --timestamp --entitlements $(Build.SourcesDirectory)/build/azure-pipelines/darwin/entitlements.xml -s LPV3BJJYXS --force "$file" || break; done
echo "Signing Electron again..."
codesign --force --timestamp --options runtime --entitlements $(Build.SourcesDirectory)/build/azure-pipelines/darwin/entitlements.xml -s LPV3BJJYXS Contents/Frameworks/Electron\ Framework.framework
cd ..
echo "Signing the entire application one more time"
codesign --force --timestamp --options runtime --entitlements $(Build.SourcesDirectory)/build/azure-pipelines/darwin/entitlements.xml -s LPV3BJJYXS *.app
popd
displayName: 'Manual codesign'
condition: and(succeeded(), eq(variables['signed'], true))
- script: |
set -e
mkdir -p .build/darwin/archive
pushd ../azuredatastudio-darwin && zip -r -X -y $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip * && popd
pushd ../azuredatastudio-darwin
ditto -c -k --keepParent *.app $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip
popd
displayName: 'Archive'
- task: PublishPipelineArtifact@0
displayName: 'Publish SelfSigned'
inputs:
artifactName: darwin-selfsigned
targetPath: $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
displayName: 'ESRP CodeSigning'
inputs:
@@ -122,13 +177,57 @@ steps:
[
{
"keyCode": "CP-401337-Apple",
"operationSetCode": "MacAppDeveloperSign",
"parameters": [],
"operationCode": "MacAppDeveloperSign",
"parameters": {
"Hardening": "Enable"
},
"toolName": "sign",
"toolVersion": "1.0"
}
]
SessionTimeout: 20
SessionTimeout: 90
condition: and(succeeded(), eq(variables['signed'], true))
- script: |
zip -d $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip "*.pkg"
displayName: Clean Archive
condition: and(succeeded(), eq(variables['signed'], true))
- task: PublishPipelineArtifact@0
displayName: 'Publish Signed'
inputs:
artifactName: darwin-signed
targetPath: $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip
condition: and(succeeded(), eq(variables['signed'], true))
- task: EsrpCodeSigning@1
displayName: 'ESRP Notarization'
inputs:
ConnectedServiceName: 'Code Signing'
FolderPath: '$(Build.SourcesDirectory)/.build/darwin/archive'
Pattern: 'azuredatastudio-darwin.zip'
signConfigType: inlineSignParams
inlineOperation: |
[
{
"KeyCode": "CP-401337-Apple",
"OperationCode": "MacAppNotarize",
"Parameters": {
"BundleId": "com.microsoft.azuredatastudio-$(VSCODE_QUALITY)"
},
"ToolName": "sign",
"ToolVersion": "1.0"
}
]
SessionTimeout: 120
condition: and(succeeded(), eq(variables['signed'], true))
- task: PublishPipelineArtifact@0
displayName: 'Publish Notarized'
inputs:
artifactName: darwin-notarized
targetPath: $(Build.SourcesDirectory)/.build/darwin/archive/azuredatastudio-darwin.zip
condition: and(succeeded(), eq(variables['signed'], true))
- script: |
set -e
@@ -146,14 +245,6 @@ steps:
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- task: PublishTestResults@2
displayName: 'Publish Integration and Smoke Test Results'
inputs:
testResultsFiles: 'dawin-integration-tests-results.xml'
searchFolder: '$(Build.ArtifactStagingDirectory)\test-results'
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage from $(Build.SourcesDirectory)/.build/coverage/cobertura-coverage.xml'
inputs:

View File

@@ -0,0 +1,13 @@
set -e
REPO="$(pwd)"
ROOT="$REPO/.."
PLATFORM_LINUX="linux-x64"
SERVER_BUILD_NAME="azuredatastudio-server-$PLATFORM_LINUX"
# create docker
mkdir -p $REPO/.build/docker
docker build -t azuredatastudio-server -f $REPO/build/azure-pipelines/docker/Dockerfile $ROOT/$SERVER_BUILD_NAME
docker save azuredatastudio-server | gzip > $REPO/.build/docker/azuredatastudio-server-docker.tar.gz
node build/azure-pipelines/common/copyArtifacts.js

View File

@@ -0,0 +1,96 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.15.1'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
inputs:
azureSubscription: 'ClientToolsInfra_670062 (88d5392f-a34f-4769-b405-f597fc533613)'
KeyVaultName: ado-secrets
SecretsFilter: 'github-distro-mixin-password'
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login azuredatastudio
password $(github-distro-mixin-password)
EOF
git config user.email "andresse@microsoft.com"
git config user.name "AzureDataStudio"
displayName: Prepare tooling
- script: |
set -e
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
git fetch distro
git merge $(node -p "require('./package.json').distro")
displayName: Merge distro
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock, !samples/**/yarn.lock'
targetfolder: '**/node_modules, !**/node_modules/**/node_modules, !samples/**/node_modules'
vstsFeed: 'BuildCache'
- script: |
set -e
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
displayName: Install dependencies
env:
GITHUB_TOKEN: $(github-distro-mixin-password)
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
inputs:
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock, !samples/**/yarn.lock'
targetfolder: '**/node_modules, !**/node_modules/**/node_modules, !samples/**/node_modules'
vstsFeed: 'BuildCache'
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- script: |
set -e
yarn postinstall
displayName: Run postinstall scripts
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
- script: |
set -e
node build/azure-pipelines/mixin
displayName: Mix in quality
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
targetPath: '$(Build.SourcesDirectory)/.build'
artifactName: drop
itemPattern: |
drop/linux/server/*.tar.gz
- script: |
set -e
for f in $(Build.SourcesDirectory)/.build/linux/server/*.tar.gz
do
tar -C $(agent.builddirectory) -zxvf $f
rm $f
done
displayName: Unzip artifacts
- script: |
set -e
./build/azure-pipelines/docker/createDrop.sh
displayName: Create Drop
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
inputs:
failOnAlert: true

View File

@@ -2,11 +2,16 @@
FROM ubuntu:16.04
# Update Software repository
RUN apt-get update --fix-missing
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 \
libkrb5-dev git apt-transport-https ca-certificates curl gnupg-agent software-properties-common \
libnss3 libasound2 make gcc libx11-dev fakeroot rpm
libnss3 libasound2 make gcc libx11-dev fakeroot rpm libgconf-2-4 libunwind8 g++-4.8
RUN rm /usr/bin/gcc
RUN rm /usr/bin/g++
RUN ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
RUN ln -s /usr/bin/g++-4.8 /usr/bin/g++
#docker
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
@@ -15,6 +20,8 @@ RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubunt
RUN apt-get update
RUN apt-get -y install docker-ce docker-ce-cli containerd.io
# This image needs to be built on a linux host; some weird stuff happens and the xvfb service won't start
# if built on a windows host.
ADD ./xvfb.init /etc/init.d/xvfb
RUN chmod +x /etc/init.d/xvfb
RUN update-rc.d xvfb defaults

View File

@@ -32,20 +32,17 @@ steps:
yarn electron x64
displayName: Download Electron
- script: |
yarn gulp hygiene --skip-tslint
yarn gulp hygiene
displayName: Run Hygiene Checks
- script: |
yarn gulp tslint
displayName: Run TSLint Checks
- script: | # {{SQL CARBON EDIT}} add gci checks
yarn tslint
displayName: Run TSLint (gci)
- script: | # {{SQL CARBON EDIT}} add strict null check
yarn strict-null-check
yarn strict-vscode
displayName: Run Strict Null Check
# - script: | {{SQL CARBON EDIT}} remove monaco editor checks
# yarn monaco-compile-check
# displayName: Run Monaco Editor Checks
- script: |
yarn valid-layers-check
displayName: Run Valid Layers Checks
- script: |
yarn compile
displayName: Compile Sources
@@ -54,10 +51,13 @@ steps:
# displayName: Download Built-in Extensions
- script: |
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
displayName: Run Unit Tests
displayName: Run Unit Tests (Electron)
# - script: | {{SQL CARBON EDIT}} disable for now @TODO @anthonydresser
# DISPLAY=:10 yarn test-browser --browser chromium
# displayName: Run Unit Tests (Browser)
# - script: | {{SQL CARBON EDIT}} remove step
# DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests"
# displayName: Run Integration Tests
# displayName: Run Integration Tests (Electron)
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:

View File

@@ -29,9 +29,4 @@ SERVER_TARBALL_PATH="$REPO/.build/linux/server/$SERVER_TARBALL_FILENAME"
rm -rf $ROOT/azuredatastudio-server-*.tar.*
(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
# create docker
mkdir -p $REPO/.build/docker
docker build -t azuredatastudio-server -f $REPO/build/azure-pipelines/docker/Dockerfile $ROOT/$SERVER_BUILD_NAME
docker save azuredatastudio-server | gzip > $REPO/.build/docker/azuredatastudio-server-docker.tar.gz
node build/azure-pipelines/common/copyArtifacts.js

View File

@@ -86,6 +86,23 @@ steps:
yarn postinstall
displayName: Run postinstall scripts
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
env:
OSS_GITHUB_ID: "a5d3c261b032765a78de"
OSS_GITHUB_SECRET: $(oss-github-client-secret)
INSIDERS_GITHUB_ID: "31f02627809389d9f111"
INSIDERS_GITHUB_SECRET: $(insiders-github-client-secret)
STABLE_GITHUB_ID: "baa8a44b5e861d918709"
STABLE_GITHUB_SECRET: $(stable-github-client-secret)
EXPLORATION_GITHUB_ID: "94e8376d3a90429aeaea"
EXPLORATION_GITHUB_SECRET: $(exploration-github-client-secret)
VSO_GITHUB_ID: "3d4be8f37a0325b5817d"
VSO_GITHUB_SECRET: $(vso-github-client-secret)
VSO_PPE_GITHUB_ID: "eabf35024dc2e891a492"
VSO_PPE_GITHUB_SECRET: $(vso-ppe-github-client-secret)
VSO_DEV_GITHUB_ID: "84383ebd8a7c5f5efc5c"
VSO_DEV_GITHUB_SECRET: $(vso-dev-github-client-secret)
GITHUB_APP_ID: "Iv1.ae51e546bef24ff1"
GITHUB_APP_SECRET: $(github-app-client-secret)
- script: |
set -e

View File

@@ -76,6 +76,23 @@ steps:
yarn postinstall
displayName: Run postinstall scripts
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
env:
OSS_GITHUB_ID: "a5d3c261b032765a78de"
OSS_GITHUB_SECRET: $(oss-github-client-secret)
INSIDERS_GITHUB_ID: "31f02627809389d9f111"
INSIDERS_GITHUB_SECRET: $(insiders-github-client-secret)
STABLE_GITHUB_ID: "baa8a44b5e861d918709"
STABLE_GITHUB_SECRET: $(stable-github-client-secret)
EXPLORATION_GITHUB_ID: "94e8376d3a90429aeaea"
EXPLORATION_GITHUB_SECRET: $(exploration-github-client-secret)
VSO_GITHUB_ID: "3d4be8f37a0325b5817d"
VSO_GITHUB_SECRET: $(vso-github-client-secret)
VSO_PPE_GITHUB_ID: "eabf35024dc2e891a492"
VSO_PPE_GITHUB_SECRET: $(vso-ppe-github-client-secret)
VSO_DEV_GITHUB_ID: "84383ebd8a7c5f5efc5c"
VSO_DEV_GITHUB_SECRET: $(vso-dev-github-client-secret)
GITHUB_APP_ID: "Iv1.ae51e546bef24ff1"
GITHUB_APP_SECRET: $(github-app-client-secret)
- script: |
set -e
@@ -101,7 +118,13 @@ steps:
- script: |
set -e
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests
displayName: Run unit tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
DISPLAY=:10 yarn test-browser --build --browser chromium
displayName: Run unit tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
@@ -114,8 +137,24 @@ steps:
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-x64" \
DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-x64"
displayName: Run integration tests
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-linux-x64
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-x64" \
DISPLAY=:10 ./resources/server/test/test-remote-integration.sh
displayName: Run remote integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-x64" \
DISPLAY=:10 ./resources/server/test/test-web-integration.sh --browser chromium
displayName: Run integration tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |

View File

@@ -28,7 +28,9 @@ rm -rf $ROOT/vscode-server-*.tar.*
node build/azure-pipelines/common/createAsset.js "server-$PLATFORM_LINUX" archive-unsigned "$SERVER_TARBALL_FILENAME" "$SERVER_TARBALL_PATH"
# Publish hockeyapp symbols
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "x64" "$VSCODE_HOCKEYAPP_ID_LINUX64"
# node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "x64" "$VSCODE_HOCKEYAPP_ID_LINUX64"
# Skip hockey app because build failure.
# https://github.com/microsoft/vscode/issues/90491
# Publish DEB
PLATFORM_DEB="linux-deb-x64"

View File

@@ -63,6 +63,8 @@ steps:
set -e
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
displayName: Install dependencies
env:
GITHUB_TOKEN: $(github-distro-mixin-password)
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
@@ -83,12 +85,6 @@ steps:
node build/azure-pipelines/mixin
displayName: Mix in quality
- script: |
set -e
yarn gulp install-sqltoolsservice
yarn gulp install-ssmsmin
displayName: Install extension binaries
- script: |
set -e
yarn gulp vscode-linux-x64-min-ci
@@ -145,24 +141,23 @@ steps:
./build/azure-pipelines/linux/createDrop.sh
displayName: Create Drop
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
- task: CopyFiles@2
displayName: 'Copy Extension Unit Test Coverage Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.SourcesDirectory)/extensions'
Contents: '*/coverage/**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/test-results/coverage'
- task: PublishTestResults@2
displayName: 'Publish Test Results test-results.xml'
inputs:
testResultsFiles: 'test-results.xml'
searchFolder: '$(Build.SourcesDirectory)'
testResultsFiles: '*.xml'
searchFolder: '$(Build.ArtifactStagingDirectory)/test-results'
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage from $(Build.SourcesDirectory)/.build/coverage/cobertura-coverage.xml'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/.build/coverage/cobertura-coverage.xml'
reportDirectory: '$(Build.SourcesDirectory)/.build/coverage'
continueOnError: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'

View File

@@ -19,7 +19,7 @@
[ "${NETWORKING}" = "no" ] && exit 0
PROG="/usr/bin/Xvfb"
PROG_OPTIONS=":10 -ac"
PROG_OPTIONS=":10 -ac -screen 0 1024x768x24"
PROG_OUTPUT="/tmp/Xvfb.out"
case "$1" in
@@ -50,4 +50,4 @@ case "$1" in
exit 1
esac
exit $RETVAL
exit $RETVAL

View File

@@ -102,7 +102,7 @@ jobs:
- job: macOS
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
pool:
vmImage: macOS 10.13
vmImage: macOS-latest
dependsOn:
- Compile
steps:

View File

@@ -77,6 +77,23 @@ steps:
yarn postinstall
displayName: Run postinstall scripts
condition: and(succeeded(), ne(variables['CacheExists-Compilation'], 'true'), eq(variables['CacheRestored'], 'true'))
env:
OSS_GITHUB_ID: "a5d3c261b032765a78de"
OSS_GITHUB_SECRET: $(oss-github-client-secret)
INSIDERS_GITHUB_ID: "31f02627809389d9f111"
INSIDERS_GITHUB_SECRET: $(insiders-github-client-secret)
STABLE_GITHUB_ID: "baa8a44b5e861d918709"
STABLE_GITHUB_SECRET: $(stable-github-client-secret)
EXPLORATION_GITHUB_ID: "94e8376d3a90429aeaea"
EXPLORATION_GITHUB_SECRET: $(exploration-github-client-secret)
VSO_GITHUB_ID: "3d4be8f37a0325b5817d"
VSO_GITHUB_SECRET: $(vso-github-client-secret)
VSO_PPE_GITHUB_ID: "eabf35024dc2e891a492"
VSO_PPE_GITHUB_SECRET: $(vso-ppe-github-client-secret)
VSO_DEV_GITHUB_ID: "84383ebd8a7c5f5efc5c"
VSO_DEV_GITHUB_SECRET: $(vso-dev-github-client-secret)
GITHUB_APP_ID: "Iv1.ae51e546bef24ff1"
GITHUB_APP_SECRET: $(github-app-client-secret)
# Mixin must run before optimize, because the CSS loader will
# inline small SVGs
@@ -88,10 +105,10 @@ steps:
- script: |
set -e
yarn gulp hygiene --skip-tslint
yarn gulp tslint
yarn gulp hygiene
yarn monaco-compile-check
displayName: Run hygiene, tslint and monaco compile checks
yarn valid-layers-check
displayName: Run hygiene, monaco compile & valid layers checks
condition: and(succeeded(), ne(variables['CacheExists-Compilation'], 'true'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |

View File

@@ -1,7 +1,7 @@
resources:
containers:
- container: linux-x64
image: sqltoolscontainers.azurecr.io/linux-build-agent:x64
image: sqltoolscontainers.azurecr.io/linux-build-agent:1
endpoint: ContainerRegistry
jobs:
@@ -10,16 +10,21 @@ jobs:
vmImage: 'Ubuntu-16.04'
container: linux-x64
steps:
- script: |
set -e
echo "##vso[build.addbuildtag]$(VSCODE_QUALITY)"
displayName: Add Quality Build Tag
- template: sql-product-compile.yml
- job: macOS
condition: eq(variables['VSCODE_BUILD_MACOS'], 'true')
pool:
vmImage: macOS 10.13
vmImage: macOS-latest
dependsOn:
- Compile
steps:
- template: darwin/sql-product-build-darwin.yml
timeoutInMinutes: 180
- job: Linux
condition: eq(variables['VSCODE_BUILD_LINUX'], 'true')
@@ -30,6 +35,17 @@ jobs:
- Compile
steps:
- template: linux/sql-product-build-linux.yml
timeoutInMinutes: 70
- job: Docker
condition: eq(variables['VSCODE_BUILD_DOCKER'], 'true')
pool:
vmImage: 'Ubuntu-16.04'
container: linux-x64
dependsOn:
- Linux
steps:
- template: docker/sql-product-build-docker.yml
- job: Windows
condition: eq(variables['VSCODE_BUILD_WIN32'], 'true')
@@ -39,6 +55,7 @@ jobs:
- Compile
steps:
- template: win32/sql-product-build-win32.yml
timeoutInMinutes: 70
- job: Windows_Test
condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
@@ -57,6 +74,7 @@ jobs:
dependsOn:
- macOS
- Linux
- Docker
- Windows
- Windows_Test
steps:

View File

@@ -87,9 +87,11 @@ steps:
- script: |
set -e
yarn gulp hygiene --skip-tslint
yarn gulp tslint
displayName: Run hygiene, tslint
yarn sqllint
yarn gulp hygiene
yarn strict-vscode
yarn valid-layers-check
displayName: Run hygiene, eslint
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EsrpClient" version="1.0.27" />
<package id="Microsoft.ESRPClient" version="1.2.25" />
</packages>

View File

@@ -29,20 +29,17 @@ steps:
- powershell: |
yarn electron
- script: |
yarn gulp hygiene --skip-tslint
yarn gulp hygiene
displayName: Run Hygiene Checks
- script: |
yarn gulp tslint
displayName: Run TSLint Checks
- script: | # {{SQL CARBON EDIT}} add step
yarn tslint
displayName: Run TSLint (gci)
- script: | # {{SQL CARBON EDIT}} add step
yarn strict-null-check
yarn strict-vscode
displayName: Run Strict Null Check
# - powershell: | {{SQL CARBON EDIT}} remove step
# yarn monaco-compile-check
# displayName: Run Monaco Editor Checks
- script: |
yarn valid-layers-check
displayName: Run Valid Layers Checks
- powershell: |
yarn compile
displayName: Compile Sources
@@ -51,10 +48,13 @@ steps:
# displayName: Download Built-in Extensions
- powershell: |
.\scripts\test.bat --tfs "Unit Tests"
displayName: Run Unit Tests
displayName: Run Unit Tests (Electron)
# - powershell: | {{SQL CARBON EDIT}} disable for now @TODO @anthonydresser
# yarn test-browser --browser chromium
# displayName: Run Unit Tests (Browser)
# - powershell: | {{SQL CARBON EDIT}} remove step
# .\scripts\test-integration.bat --tfs "Integration Tests"
# displayName: Run Integration Tests
# displayName: Run Integration Tests (Electron)
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:

View File

@@ -86,6 +86,23 @@ steps:
exec { yarn postinstall }
displayName: Run postinstall scripts
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
env:
OSS_GITHUB_ID: "a5d3c261b032765a78de"
OSS_GITHUB_SECRET: $(oss-github-client-secret)
INSIDERS_GITHUB_ID: "31f02627809389d9f111"
INSIDERS_GITHUB_SECRET: $(insiders-github-client-secret)
STABLE_GITHUB_ID: "baa8a44b5e861d918709"
STABLE_GITHUB_SECRET: $(stable-github-client-secret)
EXPLORATION_GITHUB_ID: "94e8376d3a90429aeaea"
EXPLORATION_GITHUB_SECRET: $(exploration-github-client-secret)
VSO_GITHUB_ID: "3d4be8f37a0325b5817d"
VSO_GITHUB_SECRET: $(vso-github-client-secret)
VSO_PPE_GITHUB_ID: "eabf35024dc2e891a492"
VSO_PPE_GITHUB_SECRET: $(vso-ppe-github-client-secret)
VSO_DEV_GITHUB_ID: "84383ebd8a7c5f5efc5c"
VSO_DEV_GITHUB_SECRET: $(vso-dev-github-client-secret)
GITHUB_APP_ID: "Iv1.ae51e546bef24ff1"
GITHUB_APP_SECRET: $(github-app-client-secret)
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -109,7 +126,14 @@ steps:
$ErrorActionPreference = "Stop"
exec { yarn electron $(VSCODE_ARCH) }
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
displayName: Run unit tests
displayName: Run unit tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn test-browser --build --browser chromium }
displayName: Run unit tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
@@ -122,7 +146,24 @@ steps:
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
displayName: Run integration tests
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-remote-integration.bat }
displayName: Run remote integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-web-integration.bat --browser firefox }
displayName: Run integration tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1

View File

@@ -11,13 +11,12 @@ $SystemExe = "$Repo\.build\win32-$Arch\system-setup\VSCodeSetup.exe"
$UserExe = "$Repo\.build\win32-$Arch\user-setup\VSCodeSetup.exe"
$Zip = "$Repo\.build\win32-$Arch\archive\VSCode-win32-$Arch.zip"
$LegacyServer = "$Root\vscode-reh-win32-$Arch"
$ServerName = "vscode-server-win32-$Arch"
$Server = "$Root\$ServerName"
$Server = "$Root\vscode-server-win32-$Arch"
$ServerZip = "$Repo\.build\vscode-server-win32-$Arch.zip"
$Build = "$Root\VSCode-win32-$Arch"
# Create server archive
exec { Rename-Item -Path $LegacyServer -NewName $ServerName }
exec { xcopy $LegacyServer $Server /H /E /I }
exec { .\node_modules\7zip\7zip-lite\7z.exe a -tzip $ServerZip $Server -r }
# get version
@@ -31,6 +30,8 @@ exec { node build/azure-pipelines/common/createAsset.js "$AssetPlatform" setup "
exec { node build/azure-pipelines/common/createAsset.js "$AssetPlatform-user" setup "VSCodeUserSetup-$Arch-$Version.exe" $UserExe }
exec { node build/azure-pipelines/common/createAsset.js "server-$AssetPlatform" archive "vscode-server-win32-$Arch.zip" $ServerZip }
# Skip hockey app because build failure.
# https://github.com/microsoft/vscode/issues/90491
# publish hockeyapp symbols
$hockeyAppId = if ("$Arch" -eq "ia32") { "$env:VSCODE_HOCKEYAPP_ID_WIN32" } else { "$env:VSCODE_HOCKEYAPP_ID_WIN64" }
exec { node build/azure-pipelines/common/symbols.js "$env:VSCODE_MIXIN_PASSWORD" "$env:VSCODE_HOCKEYAPP_TOKEN" "$Arch" $hockeyAppId }
# $hockeyAppId = if ("$Arch" -eq "ia32") { "$env:VSCODE_HOCKEYAPP_ID_WIN32" } else { "$env:VSCODE_HOCKEYAPP_ID_WIN64" }
# exec { node build/azure-pipelines/common/symbols.js "$env:VSCODE_MIXIN_PASSWORD" "$env:VSCODE_HOCKEYAPP_TOKEN" "$Arch" $hockeyAppId }

View File

@@ -67,4 +67,4 @@ $Input = Create-TmpJson @{
$Output = [System.IO.Path]::GetTempFileName()
$ScriptPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
& "$ScriptPath\ESRPClient\packages\EsrpClient.1.0.27\tools\ESRPClient.exe" Sign -a $Auth -p $Policy -i $Input -o $Output
& "$ScriptPath\ESRPClient\packages\Microsoft.ESRPClient.1.2.25\tools\ESRPClient.exe" Sign -a $Auth -p $Policy -i $Input -o $Output

View File

@@ -66,6 +66,8 @@ steps:
$env:CHILD_CONCURRENCY="1"
exec { yarn --frozen-lockfile }
displayName: Install dependencies
env:
GITHUB_TOKEN: $(github-distro-mixin-password)
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
@@ -88,12 +90,6 @@ steps:
exec { node build/azure-pipelines/mixin }
displayName: Mix in quality
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn gulp "install-sqltoolsservice" }
displayName: Install sqltoolsservice
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
@@ -101,6 +97,8 @@ steps:
exec { yarn gulp "vscode-win32-x64-min-ci" }
exec { yarn gulp "vscode-reh-win32-x64-min-ci" }
exec { yarn gulp "vscode-reh-web-win32-x64-min-ci" }
exec { yarn gulp "vscode-win32-x64-code-helper" }
exec { yarn gulp "vscode-win32-x64-inno-updater" }
displayName: Build
env:
VSCODE_MIXIN_PASSWORD: $(github-distro-mixin-password)
@@ -108,7 +106,7 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { .\scripts\test-unstable.bat --build --coverage --reporter mocha-junit-reporter }
exec { .\scripts\test-unstable.bat --build --tfs }
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_UNSTABLE_TESTS'], 'true'))
displayName: Run unstable tests
@@ -260,17 +258,7 @@ steps:
searchFolder: '$(Build.SourcesDirectory)'
failTaskOnFailedTests: true
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
- task: PublishTestResults@2
displayName: 'Publish Integration and Smoke Test Results'
inputs:
testResultsFiles: '*.xml'
searchFolder: '$(Build.ArtifactStagingDirectory)\test-results'
mergeTestResults: true
failTaskOnFailedTests: true
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
condition: and(succeeded(), eq(variables['RUN_UNSTABLE_TESTS'], 'true'))
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'

View File

@@ -19,6 +19,9 @@ steps:
buildType: 'current'
targetPath: '$(Build.SourcesDirectory)\.build'
artifactName: drop
itemPattern: |
drop/extensions/**
drop/win32-x64/**
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -38,7 +41,7 @@ steps:
inputs:
azureSubscription: 'ClientToolsInfra_670062 (88d5392f-a34f-4769-b405-f597fc533613)'
KeyVaultName: SqlToolsSecretStore
SecretsFilter: 'ads-integration-test-azure-server,ads-integration-test-azure-server-password,ads-integration-test-azure-server-username,ads-integration-test-bdc-server,ads-integration-test-bdc-server-password,ads-integration-test-bdc-server-username,ads-integration-test-standalone-server,ads-integration-test-standalone-server-password,ads-integration-test-standalone-server-username'
SecretsFilter: 'ads-integration-test-azure-server,ads-integration-test-azure-server-password,ads-integration-test-azure-server-username,ads-integration-test-bdc-server,ads-integration-test-bdc-server-password,ads-integration-test-bdc-server-username,ads-integration-test-standalone-server,ads-integration-test-standalone-server-password,ads-integration-test-standalone-server-username,ads-integration-test-standalone-server-2019,ads-integration-test-standalone-server-password-2019,ads-integration-test-standalone-server-username-2019'
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -47,7 +50,7 @@ steps:
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:INTEGRATION_TEST_CLI_PATH = "$AppRoot\bin\$AppNameShort"; .\scripts\sql-test-integration.bat }
continueOnError: true
continueOnError: false
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
displayName: Run stable tests
env:
@@ -60,29 +63,9 @@ steps:
AZURE_SQL_USERNAME: $(ads-integration-test-azure-server-username)
AZURE_SQL_PWD: $(ads-integration-test-azure-server-password)
AZURE_SQL: $(ads-integration-test-azure-server)
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(Agent.TempDirectory)\azuredatastudio-win32-x64"
$AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
$AppNameShort = $AppProductJson.nameShort
exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:INTEGRATION_TEST_CLI_PATH = "$AppRoot\bin\$AppNameShort"; .\scripts\sql-test-integration.bat }
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
displayName: Run release tests
env:
ADS_TEST_GREP: (.*@REL@|integration test setup)
ADS_TEST_INVERT_GREP: 0
BDC_BACKEND_USERNAME: $(ads-integration-test-bdc-server-username)
BDC_BACKEND_PWD: $(ads-integration-test-bdc-server-password)
BDC_BACKEND_HOSTNAME: $(ads-integration-test-bdc-server)
STANDALONE_SQL_USERNAME: $(ads-integration-test-standalone-server-username)
STANDALONE_SQL_PWD: $(ads-integration-test-standalone-server-password)
STANDALONE_SQL: $(ads-integration-test-standalone-server)
AZURE_SQL_USERNAME: $(ads-integration-test-azure-server-username)
AZURE_SQL_PWD: $(ads-integration-test-azure-server-password)
AZURE_SQL: $(ads-integration-test-azure-server)
STANDALONE_SQL_USERNAME_2019: $(ads-integration-test-standalone-server-username-2019)
STANDALONE_SQL_PWD_2019: $(ads-integration-test-standalone-server-password-2019)
STANDALONE_SQL_2019: $(ads-integration-test-standalone-server-2019)
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -104,3 +87,16 @@ steps:
AZURE_SQL_USERNAME: $(ads-integration-test-azure-server-username)
AZURE_SQL_PWD: $(ads-integration-test-azure-server-password)
AZURE_SQL: $(ads-integration-test-azure-server)
STANDALONE_SQL_USERNAME_2019: $(ads-integration-test-standalone-server-username-2019)
STANDALONE_SQL_PWD_2019: $(ads-integration-test-standalone-server-password-2019)
STANDALONE_SQL_2019: $(ads-integration-test-standalone-server-2019)
- task: PublishTestResults@2
displayName: 'Publish Integration and Smoke Test Results'
inputs:
testResultsFiles: '*.xml'
searchFolder: '$(Build.ArtifactStagingDirectory)\test-results'
mergeTestResults: true
failTaskOnFailedTests: true
continueOnError: true
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))

View File

@@ -1,7 +0,0 @@
[
{
"name": "Microsoft.sqlservernotebook",
"version": "0.3.3",
"repo": "https://github.com/Microsoft/azuredatastudio"
}
]

View File

@@ -1,7 +0,0 @@
[
{
"name": "Microsoft.sqlservernotebook",
"version": "0.3.3",
"repo": "https://github.com/Microsoft/azuredatastudio"
}
]

View File

@@ -6,11 +6,10 @@
const fs = require('fs');
const path = require('path');
const os = require('os');
// @ts-ignore review
const { remote } = require('electron');
const dialog = remote.dialog;
const builtInExtensionsPath = path.join(__dirname, '..', 'builtInExtensions.json');
const builtInExtensionsPath = path.join(__dirname, '..', '..', 'product.json');
const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
function readJson(filePath) {
@@ -111,7 +110,7 @@ function render(el, state) {
function main() {
const el = document.getElementById('extensions');
const builtin = readJson(builtInExtensionsPath);
const builtin = readJson(builtInExtensionsPath).builtInExtensions;
let control;
try {
@@ -123,4 +122,4 @@ function main() {
render(el, { builtin, control });
}
window.onload = main;
window.onload = main;

View File

@@ -16,15 +16,17 @@ const cp = require('child_process');
const compilation = require('./lib/compilation');
const monacoapi = require('./monaco/api');
const fs = require('fs');
const webpack = require('webpack');
const webpackGulp = require('webpack-stream');
var root = path.dirname(__dirname);
var sha1 = util.getVersion(root);
var semver = require('./monaco/package.json').version;
var headerVersion = semver + '(' + sha1 + ')';
let root = path.dirname(__dirname);
let sha1 = util.getVersion(root);
let semver = require('./monaco/package.json').version;
let headerVersion = semver + '(' + sha1 + ')';
// Build
var editorEntryPoints = [
let editorEntryPoints = [
{
name: 'vs/editor/editor.main',
include: [],
@@ -40,11 +42,11 @@ var editorEntryPoints = [
}
];
var editorResources = [
let editorResources = [
'out-editor-build/vs/base/browser/ui/codiconLabel/**/*.ttf'
];
var BUNDLED_FILE_HEADER = [
let BUNDLED_FILE_HEADER = [
'/*!-----------------------------------------------------------',
' * Copyright (c) Microsoft Corporation. All rights reserved.',
' * Version: ' + headerVersion,
@@ -70,13 +72,8 @@ const extractEditorSrcTask = task.define('extract-editor-src', () => {
apiusages,
extrausages
],
libs: [
`lib.es5.d.ts`,
`lib.dom.d.ts`,
`lib.webworker.importscripts.d.ts`
],
shakeLevel: 2, // 0-Files, 1-InnerFile, 2-ClassMembers
importIgnorePattern: /(^vs\/css!)|(promise-polyfill\/polyfill)/,
importIgnorePattern: /(^vs\/css!)/,
destRoot: path.join(root, 'out-editor-src'),
redirects: []
});
@@ -129,6 +126,7 @@ const createESMSourcesAndResourcesTask = task.define('extract-editor-esm', () =>
});
const compileEditorESMTask = task.define('compile-editor-esm', () => {
const KEEP_PREV_ANALYSIS = false;
console.log(`Launching the TS compiler at ${path.join(__dirname, '../out-editor-esm')}...`);
let result;
if (process.platform === 'win32') {
@@ -147,41 +145,45 @@ const compileEditorESMTask = task.define('compile-editor-esm', () => {
if (result.status !== 0) {
console.log(`The TS Compilation failed, preparing analysis folder...`);
const destPath = path.join(__dirname, '../../vscode-monaco-editor-esm-analysis');
return util.rimraf(destPath)().then(() => {
fs.mkdirSync(destPath);
// initialize a new repository
cp.spawnSync(`git`, [`init`], {
cwd: destPath
});
const keepPrevAnalysis = (KEEP_PREV_ANALYSIS && fs.existsSync(destPath));
const cleanDestPath = (keepPrevAnalysis ? Promise.resolve() : util.rimraf(destPath)());
return cleanDestPath.then(() => {
// build a list of files to copy
const files = util.rreddir(path.join(__dirname, '../out-editor-esm'));
// copy files from src
for (const file of files) {
const srcFilePath = path.join(__dirname, '../src', file);
const dstFilePath = path.join(destPath, file);
if (fs.existsSync(srcFilePath)) {
util.ensureDir(path.dirname(dstFilePath));
const contents = fs.readFileSync(srcFilePath).toString().replace(/\r\n|\r|\n/g, '\n');
fs.writeFileSync(dstFilePath, contents);
if (!keepPrevAnalysis) {
fs.mkdirSync(destPath);
// initialize a new repository
cp.spawnSync(`git`, [`init`], {
cwd: destPath
});
// copy files from src
for (const file of files) {
const srcFilePath = path.join(__dirname, '../src', file);
const dstFilePath = path.join(destPath, file);
if (fs.existsSync(srcFilePath)) {
util.ensureDir(path.dirname(dstFilePath));
const contents = fs.readFileSync(srcFilePath).toString().replace(/\r\n|\r|\n/g, '\n');
fs.writeFileSync(dstFilePath, contents);
}
}
// create an initial commit to diff against
cp.spawnSync(`git`, [`add`, `.`], {
cwd: destPath
});
// create the commit
cp.spawnSync(`git`, [`commit`, `-m`, `"original sources"`, `--no-gpg-sign`], {
cwd: destPath
});
}
// create an initial commit to diff against
cp.spawnSync(`git`, [`add`, `.`], {
cwd: destPath
});
// create the commit
cp.spawnSync(`git`, [`commit`, `-m`, `"original sources"`, `--no-gpg-sign`], {
cwd: destPath
});
// copy files from esm
// copy files from tree shaken src
for (const file of files) {
const srcFilePath = path.join(__dirname, '../out-editor-esm', file);
const srcFilePath = path.join(__dirname, '../out-editor-src', file);
const dstFilePath = path.join(destPath, file);
if (fs.existsSync(srcFilePath)) {
util.ensureDir(path.dirname(dstFilePath));
@@ -197,7 +199,7 @@ const compileEditorESMTask = task.define('compile-editor-esm', () => {
});
function toExternalDTS(contents) {
let lines = contents.split('\n');
let lines = contents.split(/\r\n|\r|\n/);
let killNextCloseCurlyBrace = false;
for (let i = 0; i < lines.length; i++) {
let line = lines[i];
@@ -227,8 +229,13 @@ function toExternalDTS(contents) {
if (line.indexOf('declare namespace monaco.') === 0) {
lines[i] = line.replace('declare namespace monaco.', 'export namespace ');
}
if (line.indexOf('declare let MonacoEnvironment') === 0) {
lines[i] = `declare global {\n let MonacoEnvironment: Environment | undefined;\n}`;
// lines[i] = line.replace('declare namespace monaco.', 'export namespace ');
}
}
return lines.join('\n');
return lines.join('\n').replace(/\n\n\n+/g, '\n\n');
}
function filterStream(testFunc) {
@@ -263,7 +270,7 @@ const finalEditorResourcesTask = task.define('final-editor-resources', () => {
// package.json
gulp.src('build/monaco/package.json')
.pipe(es.through(function (data) {
var json = JSON.parse(data.contents.toString());
let json = JSON.parse(data.contents.toString());
json.private = false;
data.contents = Buffer.from(JSON.stringify(json, null, ' '));
this.emit('data', data);
@@ -307,10 +314,10 @@ const finalEditorResourcesTask = task.define('final-editor-resources', () => {
return;
}
var relativePathToMap = path.relative(path.join(data.relative), path.join('min-maps', data.relative + '.map'));
let relativePathToMap = path.relative(path.join(data.relative), path.join('min-maps', data.relative + '.map'));
var strContents = data.contents.toString();
var newStr = '//# sourceMappingURL=' + relativePathToMap.replace(/\\/g, '/');
let strContents = data.contents.toString();
let newStr = '//# sourceMappingURL=' + relativePathToMap.replace(/\\/g, '/');
strContents = strContents.replace(/\/\/# sourceMappingURL=[^ ]+$/, newStr);
data.contents = Buffer.from(strContents);
@@ -327,6 +334,13 @@ const finalEditorResourcesTask = task.define('final-editor-resources', () => {
);
});
gulp.task('extract-editor-src',
task.series(
util.rimraf('out-editor-src'),
extractEditorSrcTask
)
);
gulp.task('editor-distro',
task.series(
task.parallel(
@@ -353,6 +367,56 @@ gulp.task('editor-distro',
)
);
const bundleEditorESMTask = task.define('editor-esm-bundle-webpack', () => {
const result = es.through();
const webpackConfigPath = path.join(root, 'build/monaco/monaco.webpack.config.js');
const webpackConfig = {
...require(webpackConfigPath),
...{ mode: 'production' }
};
const webpackDone = (err, stats) => {
if (err) {
result.emit('error', err);
return;
}
const { compilation } = stats;
if (compilation.errors.length > 0) {
result.emit('error', compilation.errors.join('\n'));
}
if (compilation.warnings.length > 0) {
result.emit('data', compilation.warnings.join('\n'));
}
};
return webpackGulp(webpackConfig, webpack, webpackDone)
.pipe(gulp.dest('out-editor-esm-bundle'));
});
gulp.task('editor-esm-bundle',
task.series(
task.parallel(
util.rimraf('out-editor-src'),
util.rimraf('out-editor-esm'),
util.rimraf('out-monaco-editor-core'),
util.rimraf('out-editor-esm-bundle'),
),
extractEditorSrcTask,
createESMSourcesAndResourcesTask,
compileEditorESMTask,
bundleEditorESMTask,
)
);
gulp.task('monacodts', task.define('monacodts', () => {
const result = monacoapi.execute();
fs.writeFileSync(result.filePath, result.content);
fs.writeFileSync(path.join(root, 'src/vs/editor/common/standalone/standaloneEnums.ts'), result.enums);
return Promise.resolve(true);
}));
//#region monaco type checking
function createTscCompileTask(watch) {
@@ -391,10 +455,8 @@ function createTscCompileTask(watch) {
// e.g. src/vs/base/common/strings.ts(663,5): error TS2322: Type '1234' is not assignable to type 'string'.
let fullpath = path.join(root, match[1]);
let message = match[3];
// @ts-ignore
reporter(fullpath + message);
} else {
// @ts-ignore
reporter(str);
}
}

View File

@@ -8,10 +8,8 @@
const gulp = require('gulp');
const filter = require('gulp-filter');
const es = require('event-stream');
const gulptslint = require('gulp-tslint');
const gulpeslint = require('gulp-eslint');
const tsfmt = require('typescript-formatter');
const tslint = require('tslint');
const VinylFile = require('vinyl');
const vfs = require('vinyl-fs');
const path = require('path');
@@ -35,7 +33,9 @@ const all = [
'scripts/**/*',
'src/**/*',
'test/**/*',
'!**/node_modules/**'
'!test/**/out/**',
'!**/node_modules/**',
'!build/actions/**/dist/*' // {{ SQL CARBON EDIT }}
];
const indentationFilter = [
@@ -55,8 +55,7 @@ const indentationFilter = [
'!src/vs/base/common/marked/marked.js',
'!src/vs/base/node/terminateProcess.sh',
'!src/vs/base/node/cpuUsage.sh',
'!test/assert.js',
'!build/testSetup.js',
'!test/unit/assert.js',
// except specific folders
'!test/automation/out/**',
@@ -86,8 +85,8 @@ const indentationFilter = [
'!src/vs/*/**/*.d.ts',
'!src/typings/**/*.d.ts',
'!extensions/**/*.d.ts',
'!**/*.{svg,exe,png,bmp,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,template,yaml,yml,d.ts.recipe,ico,icns}',
'!build/{lib,tslintRules,download}/**/*.js',
'!**/*.{svg,exe,png,bmp,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,template,yaml,yml,d.ts.recipe,ico,icns,plist}',
'!build/{lib,download}/**/*.js',
'!build/**/*.sh',
'!build/azure-pipelines/**/*.js',
'!build/azure-pipelines/**/*.config',
@@ -97,14 +96,17 @@ const indentationFilter = [
'!**/*.dockerfile',
'!extensions/markdown-language-features/media/*.js',
// {{SQL CARBON EDIT}}
'!**/*.{xlf,docx,sql,vsix,bacpac,ipynb}',
'!build/actions/**/dist/*',
'!**/*.{xlf,docx,sql,vsix,bacpac,ipynb,jpg}',
'!extensions/mssql/sqltoolsservice/**',
'!extensions/import/flatfileimportservice/**',
'!extensions/admin-tool-ext-win/ssmsmin/**',
'!extensions/resource-deployment/notebooks/**',
'!extensions/mssql/notebooks/**',
'!extensions/integration-tests/testData/**',
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts',
'!extensions/big-data-cluster/src/bigDataCluster/controller/clusterApiGenerated2.ts'
'!extensions/big-data-cluster/src/bigDataCluster/controller/clusterApiGenerated2.ts',
'!resources/linux/snap/electron-launch'
];
const copyrightFilter = [
@@ -126,7 +128,6 @@ const copyrightFilter = [
'!**/*.disabled',
'!**/*.code-workspace',
'!**/*.js.map',
'!**/promise-polyfill/polyfill.js',
'!build/**/*.init',
'!resources/linux/snap/snapcraft.yaml',
'!resources/linux/snap/electron-launch',
@@ -142,9 +143,9 @@ const copyrightFilter = [
'!extensions/mssql/src/hdfs/webhdfs.ts',
'!src/sql/workbench/contrib/notebook/browser/outputs/tableRenderers.ts',
'!src/sql/workbench/contrib/notebook/common/models/url.ts',
'!src/sql/workbench/contrib/notebook/browser/models/renderMimeInterfaces.ts',
'!src/sql/workbench/services/notebook/browser/outputs/renderMimeInterfaces.ts',
'!src/sql/workbench/contrib/notebook/browser/models/outputProcessor.ts',
'!src/sql/workbench/contrib/notebook/browser/models/mimemodel.ts',
'!src/sql/workbench/services/notebook/browser/outputs/mimemodel.ts',
'!src/sql/workbench/contrib/notebook/browser/cellViews/media/*.css',
'!src/sql/base/browser/ui/table/plugins/rowSelectionModel.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/rowDetailView.ts',
@@ -152,11 +153,11 @@ const copyrightFilter = [
'!src/sql/base/browser/ui/table/plugins/checkboxSelectColumn.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/autoSizeColumns.plugin.ts',
'!src/sql/workbench/contrib/notebook/browser/outputs/sanitizer.ts',
'!src/sql/workbench/services/notebook/browser/outputs/sanitizer.ts',
'!src/sql/workbench/contrib/notebook/browser/outputs/renderers.ts',
'!src/sql/workbench/contrib/notebook/browser/outputs/registry.ts',
'!src/sql/workbench/contrib/notebook/browser/outputs/factories.ts',
'!src/sql/workbench/contrib/notebook/common/models/nbformat.ts',
'!src/sql/workbench/services/notebook/browser/outputs/registry.ts',
'!src/sql/workbench/services/notebook/browser/outputs/factories.ts',
'!src/sql/workbench/services/notebook/common/nbformat.ts',
'!extensions/markdown-language-features/media/tomorrow.css',
'!src/sql/workbench/browser/modelComponents/media/highlight.css',
'!src/sql/workbench/contrib/notebook/electron-browser/cellViews/media/highlight.css',
@@ -172,7 +173,7 @@ const copyrightFilter = [
'!**/*.bacpac'
];
const eslintFilter = [
const jsHygieneFilter = [
'src/**/*.js',
'build/gulpfile.*.js',
'!src/vs/loader.js',
@@ -185,7 +186,10 @@ const eslintFilter = [
'!**/test/**'
];
const tslintBaseFilter = [
const tsHygieneFilter = [
'src/**/*.ts',
'test/**/*.ts',
'extensions/**/*.ts',
'!**/fixtures/**',
'!**/typings/**',
'!**/node_modules/**',
@@ -196,68 +200,10 @@ const tslintBaseFilter = [
'!extensions/html-language-features/server/lib/jquery.d.ts',
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts', // {{SQL CARBON EDIT}},
'!extensions/big-data-cluster/src/bigDataCluster/controller/tokenApiGenerated.ts', // {{SQL CARBON EDIT}},
'!src/vs/workbench/services/themes/common/textMateScopeMatcher.ts' // {{SQL CARBON EDIT}} skip this because we have no plans on touching this and its not ours
'!src/vs/workbench/services/themes/common/textMateScopeMatcher.ts', // {{SQL CARBON EDIT}} skip this because we have no plans on touching this and its not ours
'!src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.ts' // {{SQL CARBON EDIT}} skip this because known issue
];
// {{SQL CARBON EDIT}}
const sqlFilter = [
'src/sql/**',
'extensions/**',
// Ignore VS Code extensions
'!extensions/bat/**',
'!extensions/configuration-editing/**',
'!extensions/docker/**',
'!extensions/extension-editing/**',
'!extensions/git/**',
'!extensions/git-ui/**',
'!extensions/image-preview/**',
'!extensions/insights-default/**',
'!extensions/json/**',
'!extensions/json-language-features/**',
'!extensions/markdown-basics/**',
'!extensions/markdown-language-features/**',
'!extensions/merge-conflict/**',
'!extensions/powershell/**',
'!extensions/python/**',
'!extensions/r/**',
'!extensions/theme-*/**',
'!extensions/vscode-*/**',
'!extensions/xml/**',
'!extensions/xml-language-features/**',
'!extensions/yarml/**',
];
const tslintCoreFilter = [
'src/**/*.ts',
'test/**/*.ts',
'!extensions/**/*.ts',
'!test/automation/**',
'!test/smoke/**',
...tslintBaseFilter
];
const tslintExtensionsFilter = [
'extensions/**/*.ts',
'!src/**/*.ts',
'!test/**/*.ts',
'test/automation/**/*.ts',
...tslintBaseFilter
];
const tslintHygieneFilter = [
'src/**/*.ts',
'test/**/*.ts',
'extensions/**/*.ts',
'!src/vs/workbench/contrib/extensions/browser/extensionTipsService.ts', // {{SQL CARBON EDIT}} known formatting issue do to commenting out code
...tslintBaseFilter
];
const fileLengthFilter = filter([
'**',
'!extensions/import/*.docx',
'!extensions/admin-tool-ext-win/license/**'
], {restore: true});
const copyrightHeaderLines = [
'/*---------------------------------------------------------------------------------------------',
' * Copyright (c) Microsoft Corporation. All rights reserved.',
@@ -267,27 +213,17 @@ const copyrightHeaderLines = [
gulp.task('eslint', () => {
return vfs.src(all, { base: '.', follow: true, allowEmpty: true })
.pipe(filter(eslintFilter))
.pipe(gulpeslint('src/.eslintrc'))
.pipe(filter(jsHygieneFilter.concat(tsHygieneFilter)))
.pipe(gulpeslint({
configFile: '.eslintrc.json',
rulePaths: ['./build/lib/eslint']
}))
.pipe(gulpeslint.formatEach('compact'))
.pipe(gulpeslint.failAfterError());
});
gulp.task('tslint', () => {
return es.merge([
// Core: include type information (required by certain rules like no-nodejs-globals)
vfs.src(all, { base: '.', follow: true, allowEmpty: true })
.pipe(filter(tslintCoreFilter))
.pipe(gulptslint.default({ rulesDirectory: 'build/lib/tslint', program: tslint.Linter.createProgram('src/tsconfig.json') }))
.pipe(gulptslint.default.report({ emitError: true })),
// Exenstions: do not include type information
vfs.src(all, { base: '.', follow: true, allowEmpty: true })
.pipe(filter(tslintExtensionsFilter))
.pipe(gulptslint.default({ rulesDirectory: 'build/lib/tslint' }))
.pipe(gulptslint.default.report({ emitError: true }))
]).pipe(es.through());
.pipe(gulpeslint.results(results => {
if (results.warningCount > 0 || results.errorCount > 0) {
throw new Error('eslint failed with warnings and/or errors');
}
}));
});
function checkPackageJSON(actualPath) {
@@ -309,7 +245,7 @@ function checkPackageJSON(actualPath) {
const checkPackageJSONTask = task.define('check-package-json', () => {
return gulp.src('package.json')
.pipe(es.through(function() {
.pipe(es.through(function () {
checkPackageJSON.call(this, 'remote/package.json');
checkPackageJSON.call(this, 'remote/web/package.json');
}));
@@ -376,8 +312,6 @@ function hygiene(some) {
replace: undefined,
tsconfig: undefined,
tsconfigFile: undefined,
tslint: undefined,
tslintFile: undefined,
tsfmtFile: undefined,
vscode: undefined,
vscodeFile: undefined
@@ -386,7 +320,7 @@ function hygiene(some) {
let formatted = result.dest.replace(/\r\n/gm, '\n');
if (original !== formatted) {
console.error("File not formatted. Run the 'Format Document' command to fix it:", file.relative);
console.error('File not formatted. Run the \'Format Document\' command to fix it:', file.relative);
errorCount++;
}
cb(null, file);
@@ -396,33 +330,6 @@ function hygiene(some) {
});
});
const filelength = es.through(function (file) {
const fileName = path.basename(file.relative);
const fileDir = path.dirname(file.relative);
//check the filename is < 50 characters (basename gets the filename with extension).
if (fileName.length > 50) {
console.error(`File name '${fileName}' under ${fileDir} is too long. Rename file to have less than 50 characters.`);
errorCount++;
}
if (file.relative.length > 150) {
console.error(`File path ${file.relative} exceeds acceptable file-length. Rename the path to have less than 150 characters.`);
errorCount++;
}
this.emit('data', file);
});
const tslintConfiguration = tslint.Configuration.findConfiguration('tslint.json', '.');
const tslintOptions = { fix: false, formatter: 'json' };
const tsLinter = new tslint.Linter(tslintOptions);
const tsl = es.through(function (file) {
const contents = file.contents.toString('utf8');
tsLinter.lint(file.relative, contents, tslintConfiguration.results);
this.emit('data', file);
});
let input;
if (Array.isArray(some) || typeof some === 'string' || !some) {
@@ -436,22 +343,9 @@ function hygiene(some) {
input = some;
}
// {{SQL CARBON EDIT}} Linting for SQL
const tslintSqlConfiguration = tslint.Configuration.findConfiguration('tslint-sql.json', '.');
const tslintSqlOptions = { fix: false, formatter: 'json' };
const sqlTsLinter = new tslint.Linter(tslintSqlOptions);
const sqlTsl = es.through(function (file) { //TODO restore
const contents = file.contents.toString('utf8');
sqlTsLinter.lint(file.relative, contents, tslintSqlConfiguration.results);
});
const productJsonFilter = filter('product.json', { restore: true });
const result = input
.pipe(fileLengthFilter)
.pipe(filelength)
.pipe(fileLengthFilter.restore)
.pipe(filter(f => !f.stat.isDirectory()))
.pipe(productJsonFilter)
.pipe(process.env['BUILD_SOURCEVERSION'] ? es.through() : productJson)
@@ -461,22 +355,21 @@ function hygiene(some) {
.pipe(filter(copyrightFilter))
.pipe(copyrights);
let typescript = result
.pipe(filter(tslintHygieneFilter))
const typescript = result
.pipe(filter(tsHygieneFilter))
.pipe(formatting);
if (!process.argv.some(arg => arg === '--skip-tslint')) {
typescript = typescript.pipe(tsl);
typescript = typescript
.pipe(filter(sqlFilter)) // {{SQL CARBON EDIT}}
.pipe(sqlTsl);
}
const javascript = result
.pipe(filter(eslintFilter))
.pipe(gulpeslint('src/.eslintrc'))
.pipe(filter(jsHygieneFilter.concat(tsHygieneFilter)))
.pipe(gulpeslint({
configFile: '.eslintrc.json',
rulePaths: ['./build/lib/eslint']
}))
.pipe(gulpeslint.formatEach('compact'))
.pipe(gulpeslint.failAfterError());
.pipe(gulpeslint.results(results => {
errorCount += results.warningCount;
errorCount += results.errorCount;
}));
let count = 0;
return es.merge(typescript, javascript)
@@ -488,33 +381,6 @@ function hygiene(some) {
this.emit('data', data);
}, function () {
process.stdout.write('\n');
const tslintResult = tsLinter.getResult();
if (tslintResult.failures.length > 0) {
for (const failure of tslintResult.failures) {
const name = failure.getFileName();
const position = failure.getStartPosition();
const line = position.getLineAndCharacter().line;
const character = position.getLineAndCharacter().character;
console.error(`${name}:${line + 1}:${character + 1}:${failure.getFailure()}`);
}
errorCount += tslintResult.failures.length;
}
const sqlTslintResult = sqlTsLinter.getResult();
if (sqlTslintResult.failures.length > 0) {
for (const failure of sqlTslintResult.failures) {
const name = failure.getFileName();
const position = failure.getStartPosition();
const line = position.getLineAndCharacter().line;
const character = position.getLineAndCharacter().character;
console.error(`${name}:${line + 1}:${character + 1}:${failure.getFailure()}`);
}
errorCount += sqlTslintResult.failures.length;
}
if (errorCount > 0) {
this.emit('error', 'Hygiene failed with ' + errorCount + ' errors. Check \'build/gulpfile.hygiene.js\'.');
} else {

View File

@@ -118,7 +118,7 @@ function mixinServer(watch) {
const packageJSONPath = path.join(path.dirname(__dirname), 'package.json');
function exec(cmdLine) {
console.log(cmdLine);
cp.execSync(cmdLine, { stdio: "inherit" });
cp.execSync(cmdLine, { stdio: 'inherit' });
}
function checkout() {
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString());

View File

@@ -5,13 +5,9 @@
'use strict';
const gulp = require('gulp');
const util = require('./lib/util');
const tsfmt = require('typescript-formatter');
const es = require('event-stream');
const filter = require('gulp-filter');
const del = require('del');
const serviceDownloader = require('service-downloader').ServiceDownloadProvider;
const platform = require('service-downloader/out/platform').PlatformInformation;
const path = require('path');
const ext = require('./lib/extensions');
const task = require('./lib/task');
@@ -19,9 +15,6 @@ const glob = require('glob');
const vsce = require('vsce');
const mkdirp = require('mkdirp');
gulp.task('clean-mssql-extension', util.rimraf('extensions/mssql/node_modules'));
gulp.task('clean-credentials-extension', util.rimraf('extensions/credentials/node_modules'));
gulp.task('fmt', () => formatStagedFiles());
const formatFiles = (some) => {
const formatting = es.map(function (file, cb) {
@@ -96,45 +89,6 @@ const formatStagedFiles = () => {
});
};
function installService() {
let config = require('../extensions/mssql/config.json');
return platform.getCurrent().then(p => {
let runtime = p.runtimeId;
// fix path since it won't be correct
config.installDirectory = path.join(__dirname, '../extensions/mssql/src', config.installDirectory);
var installer = new serviceDownloader(config);
let serviceInstallFolder = installer.getInstallDirectory(runtime);
console.log('Cleaning up the install folder: ' + serviceInstallFolder);
return del(serviceInstallFolder + '/*').then(() => {
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
return installer.installService(runtime);
}, delError => {
console.log('failed to delete the install folder error: ' + delError);
});
});
}
gulp.task('install-sqltoolsservice', () => {
return installService();
});
gulp.task('install-ssmsmin', () => {
const config = require('../extensions/admin-tool-ext-win/config.json');
const runtime = 'Windows_64'; // admin-tool-ext is a windows only extension, and we only ship a 64 bit version, so locking the binaries as such
// fix path since it won't be correct
config.installDirectory = path.join(__dirname, '..', 'extensions', 'admin-tool-ext-win', config.installDirectory);
var installer = new serviceDownloader(config);
const serviceInstallFolder = installer.getInstallDirectory(runtime);
const serviceCleanupFolder = path.join(serviceInstallFolder, '..');
console.log('Cleaning up the install folder: ' + serviceCleanupFolder);
return del(serviceCleanupFolder + '/*').then(() => {
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
return installer.installService(runtime);
}, delError => {
console.log('failed to delete the install folder error: ' + delError);
});
});
const root = path.dirname(__dirname);
gulp.task('package-external-extensions', task.series(

View File

@@ -36,13 +36,12 @@ const { compileBuildTask } = require('./gulpfile.compile');
const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
const productionDependencies = deps.getProductionDependencies(path.dirname(__dirname));
const baseModules = Object.keys(process.binding('natives')).filter(n => !/^_|\//.test(n));
// {{SQL CARBON EDIT}}
const nodeModules = [
const nodeModules = [ // {{SQL CARBON EDIT}}
'electron',
'original-fs',
'rxjs/Observable',
'rxjs/add/observable/fromPromise',
'rxjs/Subject',
'rxjs/Observer',
'slickgrid/lib/jquery.event.drag-2.3.0',
@@ -122,7 +121,6 @@ const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
resources: vscodeResources,
loaderConfig: common.loaderConfig(nodeModules),
out: 'out-vscode',
inlineAmdImages: true,
bundleInfo: undefined
})
));
@@ -150,9 +148,9 @@ gulp.task(minifyVSCodeTask);
* @return {Object} A map of paths to checksums.
*/
function computeChecksums(out, filenames) {
var result = {};
let result = {};
filenames.forEach(function (filename) {
var fullPath = path.join(process.cwd(), out, filename);
let fullPath = path.join(process.cwd(), out, filename);
result[filename] = computeChecksum(fullPath);
});
return result;
@@ -165,9 +163,9 @@ function computeChecksums(out, filenames) {
* @return {string} The checksum for `filename`.
*/
function computeChecksum(filename) {
var contents = fs.readFileSync(filename);
let contents = fs.readFileSync(filename);
var hash = crypto
let hash = crypto
.createHash('md5')
.update(contents)
.digest('base64')
@@ -188,6 +186,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const checksums = computeChecksums(out, [
'vs/workbench/workbench.desktop.main.js',
'vs/workbench/workbench.desktop.main.css',
'vs/workbench/services/extensions/node/extensionHostProcess.js',
'vs/code/electron-browser/workbench/workbench.html',
'vs/code/electron-browser/workbench/workbench.js'
]);
@@ -236,7 +235,6 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const api = gulp.src('src/vs/vscode.d.ts').pipe(rename('out/vs/vscode.d.ts'));
// {{SQL CARBON EDIT}}
const dataApi = gulp.src('src/sql/azdata.d.ts').pipe(rename('out/sql/azdata.d.ts'));
const sqlopsAPI = gulp.src('src/sql/sqlops.d.ts').pipe(rename('out/sql/sqlops.d.ts'));
const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
@@ -253,8 +251,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
productJsonStream,
license,
api,
dataApi,
sqlopsAPI, // {{SQL CARBON EDIT}}
dataApi, // {{SQL CARBON EDIT}}
telemetry,
sources,
deps
@@ -276,6 +273,9 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
}
let result = all
.pipe(fileLengthFilter)
.pipe(filelength)
.pipe(fileLengthFilter.restore)
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions())
.pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true })))
@@ -330,6 +330,29 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
};
}
const fileLengthFilter = filter([
'**',
'!extensions/import/*.docx',
'!extensions/admin-tool-ext-win/license/**'
], {restore: true});
const filelength = es.through(function (file) {
const fileName = path.basename(file.relative);
const fileDir = path.dirname(file.relative);
//check the filename is < 50 characters (basename gets the filename with extension).
if (fileName.length > 50) {
console.error(`File name '${fileName}' under ${fileDir} is too long. Rename file to have less than 50 characters.`);
throw new Error('File name exceeds acceptable length of 50 characters: ' + fileName);
}
if (file.relative.length > 150) {
console.error(`File path ${file.relative} exceeds acceptable file-length. Rename the path to have less than 150 characters.`);
throw new Error('File path exceeds acceptable path-length of 150 characters: ' + file.relative);
}
this.emit('data', file);
});
const buildRoot = path.dirname(root);
const BUILD_TARGETS = [

View File

@@ -23,7 +23,7 @@ const commit = util.getVersion(root);
const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
function getDebPackageArch(arch) {
return { x64: 'amd64', arm: 'armhf', arm64: "arm64" }[arch];
return { x64: 'amd64', arm: 'armhf', arm64: 'arm64' }[arch];
}
function prepareDebPackage(arch) {
@@ -92,9 +92,7 @@ function prepareDebPackage(arch) {
const postinst = gulp.src('resources/linux/debian/postinst.template', { base: '.' })
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@ARCHITECTURE@@', debArch))
// @ts-ignore JSON checking: quality is optional
.pipe(replace('@@QUALITY@@', product.quality || '@@QUALITY@@'))
// @ts-ignore JSON checking: updateUrl is optional
.pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@'))
.pipe(rename('DEBIAN/postinst'));
@@ -118,7 +116,7 @@ function getRpmBuildPath(rpmArch) {
}
function getRpmPackageArch(arch) {
return { x64: 'x86_64', arm: 'armhf', arm64: "arm64" }[arch];
return { x64: 'x86_64', arm: 'armhf', arm64: 'arm64' }[arch];
}
function prepareRpmPackage(arch) {
@@ -169,9 +167,7 @@ function prepareRpmPackage(arch) {
.pipe(replace('@@RELEASE@@', linuxPackageRevision))
.pipe(replace('@@ARCHITECTURE@@', rpmArch))
.pipe(replace('@@LICENSE@@', product.licenseName))
// @ts-ignore JSON checking: quality is optional
.pipe(replace('@@QUALITY@@', product.quality || '@@QUALITY@@'))
// @ts-ignore JSON checking: updateUrl is optional
.pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@'))
.pipe(replace('@@DEPENDENCIES@@', rpmDependencies[rpmArch].join(', ')))
.pipe(rename('SPECS/' + product.applicationName + '.spec'));

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAsar = void 0;
const path = require("path");
const es = require("event-stream");
const pickle = require('chromium-pickle-js');

View File

@@ -18,10 +18,7 @@ const fancyLog = require('fancy-log');
const ansiColors = require('ansi-colors');
const root = path.dirname(path.dirname(__dirname));
// {{SQL CARBON EDIT}}
const quality = process.env['VSCODE_QUALITY'];
const builtInExtensions = quality && quality === 'stable' ? require('../builtInExtensions.json') : require('../builtInExtensions-insiders.json');
// {{SQL CARBON EDIT}} - END
const builtInExtensions = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8')).builtInExtensions;
const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SILENCE_PLEASE'];

View File

@@ -4,6 +4,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.bundle = void 0;
const fs = require("fs");
const path = require("path");
const vm = require("vm");

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.watchTask = exports.compileTask = void 0;
const es = require("event-stream");
const fs = require("fs");
const gulp = require("gulp");

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = exports.getElectronVersion = void 0;
const fs = require("fs");
const path = require("path");
const vfs = require("vinyl-fs");

View File

@@ -0,0 +1,59 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
const path_1 = require("path");
const minimatch = require("minimatch");
const utils_1 = require("./utils");
module.exports = new class {
constructor() {
this.meta = {
messages: {
badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
}
};
}
create(context) {
const configs = context.options;
for (const config of configs) {
if (minimatch(context.getFilename(), config.target)) {
return utils_1.createImportRuleListener((node, value) => this._checkImport(context, config, node, value));
}
}
return {};
}
_checkImport(context, config, node, path) {
// resolve relative paths
if (path[0] === '.') {
path = path_1.join(context.getFilename(), path);
}
let restrictions;
if (typeof config.restrictions === 'string') {
restrictions = [config.restrictions];
}
else {
restrictions = config.restrictions;
}
let matched = false;
for (const pattern of restrictions) {
if (minimatch(path, pattern)) {
matched = true;
break;
}
}
if (!matched) {
// None of the restrictions matched
context.report({
loc: node.loc,
messageId: 'badImport',
data: {
restrictions: restrictions.join(' or ')
}
});
}
}
};

View File

@@ -0,0 +1,75 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/experimental-utils';
import { join } from 'path';
import * as minimatch from 'minimatch';
import { createImportRuleListener } from './utils';
interface ImportPatternsConfig {
target: string;
restrictions: string | string[];
}
export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const configs = <ImportPatternsConfig[]>context.options;
for (const config of configs) {
if (minimatch(context.getFilename(), config.target)) {
return createImportRuleListener((node, value) => this._checkImport(context, config, node, value));
}
}
return {};
}
private _checkImport(context: eslint.Rule.RuleContext, config: ImportPatternsConfig, node: TSESTree.Node, path: string) {
// resolve relative paths
if (path[0] === '.') {
path = join(context.getFilename(), path);
}
let restrictions: string[];
if (typeof config.restrictions === 'string') {
restrictions = [config.restrictions];
} else {
restrictions = config.restrictions;
}
let matched = false;
for (const pattern of restrictions) {
if (minimatch(path, pattern)) {
matched = true;
break;
}
}
if (!matched) {
// None of the restrictions matched
context.report({
loc: node.loc,
messageId: 'badImport',
data: {
restrictions: restrictions.join(' or ')
}
});
}
}
};

View File

@@ -0,0 +1,68 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
const path_1 = require("path");
const utils_1 = require("./utils");
module.exports = new class {
constructor() {
this.meta = {
messages: {
layerbreaker: 'Bad layering. You are not allowed to access {{from}} from here, allowed layers are: [{{allowed}}]'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
}
};
}
create(context) {
const fileDirname = path_1.dirname(context.getFilename());
const parts = fileDirname.split(/\\|\//);
const ruleArgs = context.options[0];
let config;
for (let i = parts.length - 1; i >= 0; i--) {
if (ruleArgs[parts[i]]) {
config = {
allowed: new Set(ruleArgs[parts[i]]).add(parts[i]),
disallowed: new Set()
};
Object.keys(ruleArgs).forEach(key => {
if (!config.allowed.has(key)) {
config.disallowed.add(key);
}
});
break;
}
}
if (!config) {
// nothing
return {};
}
return utils_1.createImportRuleListener((node, path) => {
if (path[0] === '.') {
path = path_1.join(path_1.dirname(context.getFilename()), path);
}
const parts = path_1.dirname(path).split(/\\|\//);
for (let i = parts.length - 1; i >= 0; i--) {
const part = parts[i];
if (config.allowed.has(part)) {
// GOOD - same layer
break;
}
if (config.disallowed.has(part)) {
// BAD - wrong layer
context.report({
loc: node.loc,
messageId: 'layerbreaker',
data: {
from: part,
allowed: [...config.allowed.keys()].join(', ')
}
});
break;
}
}
});
}
};

View File

@@ -0,0 +1,83 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join, dirname } from 'path';
import { createImportRuleListener } from './utils';
type Config = {
allowed: Set<string>;
disallowed: Set<string>;
};
export = new class implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
layerbreaker: 'Bad layering. You are not allowed to access {{from}} from here, allowed layers are: [{{allowed}}]'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const fileDirname = dirname(context.getFilename());
const parts = fileDirname.split(/\\|\//);
const ruleArgs = <Record<string, string[]>>context.options[0];
let config: Config | undefined;
for (let i = parts.length - 1; i >= 0; i--) {
if (ruleArgs[parts[i]]) {
config = {
allowed: new Set(ruleArgs[parts[i]]).add(parts[i]),
disallowed: new Set()
};
Object.keys(ruleArgs).forEach(key => {
if (!config!.allowed.has(key)) {
config!.disallowed.add(key);
}
});
break;
}
}
if (!config) {
// nothing
return {};
}
return createImportRuleListener((node, path) => {
if (path[0] === '.') {
path = join(dirname(context.getFilename()), path);
}
const parts = dirname(path).split(/\\|\//);
for (let i = parts.length - 1; i >= 0; i--) {
const part = parts[i];
if (config!.allowed.has(part)) {
// GOOD - same layer
break;
}
if (config!.disallowed.has(part)) {
// BAD - wrong layer
context.report({
loc: node.loc,
messageId: 'layerbreaker',
data: {
from: part,
allowed: [...config!.allowed.keys()].join(', ')
}
});
break;
}
}
});
}
};

View File

@@ -0,0 +1,38 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
const path_1 = require("path");
const utils_1 = require("./utils");
module.exports = new class NoNlsInStandaloneEditorRule {
constructor() {
this.meta = {
messages: {
noNls: 'Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts'
}
};
}
create(context) {
const fileName = context.getFilename();
if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(fileName)) {
return utils_1.createImportRuleListener((node, path) => {
// resolve relative paths
if (path[0] === '.') {
path = path_1.join(context.getFilename(), path);
}
if (/vs(\/|\\)nls/.test(path)) {
context.report({
loc: node.loc,
messageId: 'noNls'
});
}
});
}
return {};
}
};

View File

@@ -0,0 +1,48 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join } from 'path';
import { createImportRuleListener } from './utils';
export = new class NoNlsInStandaloneEditorRule implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
noNls: 'Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts'
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const fileName = context.getFilename();
if (
/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(fileName)
|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(fileName)
) {
return createImportRuleListener((node, path) => {
// resolve relative paths
if (path[0] === '.') {
path = join(context.getFilename(), path);
}
if (
/vs(\/|\\)nls/.test(path)
) {
context.report({
loc: node.loc,
messageId: 'noNls'
});
}
});
}
return {};
}
};

View File

@@ -0,0 +1,41 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
const path_1 = require("path");
const utils_1 = require("./utils");
module.exports = new class NoNlsInStandaloneEditorRule {
constructor() {
this.meta = {
messages: {
badImport: 'Not allowed to import standalone editor modules.'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
}
};
}
create(context) {
if (/vs(\/|\\)editor/.test(context.getFilename())) {
// the vs/editor folder is allowed to use the standalone editor
return {};
}
return utils_1.createImportRuleListener((node, path) => {
// resolve relative paths
if (path[0] === '.') {
path = path_1.join(context.getFilename(), path);
}
if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(path)) {
context.report({
loc: node.loc,
messageId: 'badImport'
});
}
});
}
};

View File

@@ -0,0 +1,50 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { join } from 'path';
import { createImportRuleListener } from './utils';
export = new class NoNlsInStandaloneEditorRule implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
badImport: 'Not allowed to import standalone editor modules.'
},
docs: {
url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
if (/vs(\/|\\)editor/.test(context.getFilename())) {
// the vs/editor folder is allowed to use the standalone editor
return {};
}
return createImportRuleListener((node, path) => {
// resolve relative paths
if (path[0] === '.') {
path = join(context.getFilename(), path);
}
if (
/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(path)
) {
context.report({
loc: node.loc,
messageId: 'badImport'
});
}
});
}
};

View File

@@ -0,0 +1,111 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
var _a;
const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
function isStringLiteral(node) {
return !!node && node.type === experimental_utils_1.AST_NODE_TYPES.Literal && typeof node.value === 'string';
}
function isDoubleQuoted(node) {
return node.raw[0] === '"' && node.raw[node.raw.length - 1] === '"';
}
module.exports = new (_a = class NoUnexternalizedStrings {
constructor() {
this.meta = {
messages: {
doubleQuoted: 'Only use double-quoted strings for externalized strings.',
badKey: 'The key \'{{key}}\' doesn\'t conform to a valid localize identifier.',
duplicateKey: 'Duplicate key \'{{key}}\' with different message value.',
badMessage: 'Message argument to \'{{message}}\' must be a string literal.'
}
};
}
create(context) {
const externalizedStringLiterals = new Map();
const doubleQuotedStringLiterals = new Set();
function collectDoubleQuotedStrings(node) {
if (isStringLiteral(node) && isDoubleQuoted(node)) {
doubleQuotedStringLiterals.add(node);
}
}
function visitLocalizeCall(node) {
// localize(key, message)
const [keyNode, messageNode] = node.arguments;
// (1)
// extract key so that it can be checked later
let key;
if (isStringLiteral(keyNode)) {
doubleQuotedStringLiterals.delete(keyNode); //todo@joh reconsider
key = keyNode.value;
}
else if (keyNode.type === experimental_utils_1.AST_NODE_TYPES.ObjectExpression) {
for (let property of keyNode.properties) {
if (property.type === experimental_utils_1.AST_NODE_TYPES.Property && !property.computed) {
if (property.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier && property.key.name === 'key') {
if (isStringLiteral(property.value)) {
doubleQuotedStringLiterals.delete(property.value); //todo@joh reconsider
key = property.value.value;
break;
}
}
}
}
}
if (typeof key === 'string') {
let array = externalizedStringLiterals.get(key);
if (!array) {
array = [];
externalizedStringLiterals.set(key, array);
}
array.push({ call: node, message: messageNode });
}
// (2)
// remove message-argument from doubleQuoted list and make
// sure it is a string-literal
doubleQuotedStringLiterals.delete(messageNode);
if (!isStringLiteral(messageNode)) {
context.report({
loc: messageNode.loc,
messageId: 'badMessage',
data: { message: context.getSourceCode().getText(node) }
});
}
}
function reportBadStringsAndBadKeys() {
// (1)
// report all strings that are in double quotes
for (const node of doubleQuotedStringLiterals) {
context.report({ loc: node.loc, messageId: 'doubleQuoted' });
}
for (const [key, values] of externalizedStringLiterals) {
// (2)
// report all invalid NLS keys
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
for (let value of values) {
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
}
}
// (2)
// report all invalid duplicates (same key, different message)
if (values.length > 1) {
for (let i = 1; i < values.length; i++) {
if (context.getSourceCode().getText(values[i - 1].message) !== context.getSourceCode().getText(values[i].message)) {
context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
}
}
}
}
}
return {
['Literal']: (node) => collectDoubleQuotedStrings(node),
['ExpressionStatement[directive] Literal:exit']: (node) => doubleQuotedStringLiterals.delete(node),
['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node) => visitLocalizeCall(node),
['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node) => visitLocalizeCall(node),
['Program:exit']: reportBadStringsAndBadKeys,
};
}
},
_a._rNlsKeys = /^[_a-zA-Z0-9][ .\-_a-zA-Z0-9]*$/,
_a);

View File

@@ -0,0 +1,126 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/experimental-utils';
function isStringLiteral(node: TSESTree.Node | null | undefined): node is TSESTree.StringLiteral {
return !!node && node.type === AST_NODE_TYPES.Literal && typeof node.value === 'string';
}
function isDoubleQuoted(node: TSESTree.StringLiteral): boolean {
return node.raw[0] === '"' && node.raw[node.raw.length - 1] === '"';
}
export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
private static _rNlsKeys = /^[_a-zA-Z0-9][ .\-_a-zA-Z0-9]*$/;
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
doubleQuoted: 'Only use double-quoted strings for externalized strings.',
badKey: 'The key \'{{key}}\' doesn\'t conform to a valid localize identifier.',
duplicateKey: 'Duplicate key \'{{key}}\' with different message value.',
badMessage: 'Message argument to \'{{message}}\' must be a string literal.'
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const externalizedStringLiterals = new Map<string, { call: TSESTree.CallExpression, message: TSESTree.Node }[]>();
const doubleQuotedStringLiterals = new Set<TSESTree.Node>();
function collectDoubleQuotedStrings(node: TSESTree.Literal) {
if (isStringLiteral(node) && isDoubleQuoted(node)) {
doubleQuotedStringLiterals.add(node);
}
}
function visitLocalizeCall(node: TSESTree.CallExpression) {
// localize(key, message)
const [keyNode, messageNode] = (<TSESTree.CallExpression>node).arguments;
// (1)
// extract key so that it can be checked later
let key: string | undefined;
if (isStringLiteral(keyNode)) {
doubleQuotedStringLiterals.delete(keyNode); //todo@joh reconsider
key = keyNode.value;
} else if (keyNode.type === AST_NODE_TYPES.ObjectExpression) {
for (let property of keyNode.properties) {
if (property.type === AST_NODE_TYPES.Property && !property.computed) {
if (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === 'key') {
if (isStringLiteral(property.value)) {
doubleQuotedStringLiterals.delete(property.value); //todo@joh reconsider
key = property.value.value;
break;
}
}
}
}
}
if (typeof key === 'string') {
let array = externalizedStringLiterals.get(key);
if (!array) {
array = [];
externalizedStringLiterals.set(key, array);
}
array.push({ call: node, message: messageNode });
}
// (2)
// remove message-argument from doubleQuoted list and make
// sure it is a string-literal
doubleQuotedStringLiterals.delete(messageNode);
if (!isStringLiteral(messageNode)) {
context.report({
loc: messageNode.loc,
messageId: 'badMessage',
data: { message: context.getSourceCode().getText(<any>node) }
});
}
}
function reportBadStringsAndBadKeys() {
// (1)
// report all strings that are in double quotes
for (const node of doubleQuotedStringLiterals) {
context.report({ loc: node.loc, messageId: 'doubleQuoted' });
}
for (const [key, values] of externalizedStringLiterals) {
// (2)
// report all invalid NLS keys
if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
for (let value of values) {
context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
}
}
// (2)
// report all invalid duplicates (same key, different message)
if (values.length > 1) {
for (let i = 1; i < values.length; i++) {
if (context.getSourceCode().getText(<any>values[i - 1].message) !== context.getSourceCode().getText(<any>values[i].message)) {
context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
}
}
}
}
}
return {
['Literal']: (node: any) => collectDoubleQuotedStrings(node),
['ExpressionStatement[directive] Literal:exit']: (node: any) => doubleQuotedStringLiterals.delete(node),
['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node: any) => visitLocalizeCall(node),
['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node: any) => visitLocalizeCall(node),
['Program:exit']: reportBadStringsAndBadKeys,
};
}
};

View File

@@ -0,0 +1,145 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// FORKED FROM https://github.com/eslint/eslint/blob/b23ad0d789a909baf8d7c41a35bc53df932eaf30/lib/rules/no-unused-expressions.js
// and added support for `OptionalCallExpression`, see https://github.com/facebook/create-react-app/issues/8107 and https://github.com/eslint/eslint/issues/12642
/**
* @fileoverview Flag expressions in statement position that do not side effect
* @author Michael Ficarra
*/
'use strict';
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
type: 'suggestion',
docs: {
description: 'disallow unused expressions',
category: 'Best Practices',
recommended: false,
url: 'https://eslint.org/docs/rules/no-unused-expressions'
},
schema: [
{
type: 'object',
properties: {
allowShortCircuit: {
type: 'boolean',
default: false
},
allowTernary: {
type: 'boolean',
default: false
},
allowTaggedTemplates: {
type: 'boolean',
default: false
}
},
additionalProperties: false
}
]
},
create(context) {
const config = context.options[0] || {},
allowShortCircuit = config.allowShortCircuit || false,
allowTernary = config.allowTernary || false,
allowTaggedTemplates = config.allowTaggedTemplates || false;
// eslint-disable-next-line jsdoc/require-description
/**
* @param {ASTNode} node any node
* @returns {boolean} whether the given node structurally represents a directive
*/
function looksLikeDirective(node) {
return node.type === 'ExpressionStatement' &&
node.expression.type === 'Literal' && typeof node.expression.value === 'string';
}
// eslint-disable-next-line jsdoc/require-description
/**
* @param {Function} predicate ([a] -> Boolean) the function used to make the determination
* @param {a[]} list the input list
* @returns {a[]} the leading sequence of members in the given list that pass the given predicate
*/
function takeWhile(predicate, list) {
for (let i = 0; i < list.length; ++i) {
if (!predicate(list[i])) {
return list.slice(0, i);
}
}
return list.slice();
}
// eslint-disable-next-line jsdoc/require-description
/**
* @param {ASTNode} node a Program or BlockStatement node
* @returns {ASTNode[]} the leading sequence of directive nodes in the given node's body
*/
function directives(node) {
return takeWhile(looksLikeDirective, node.body);
}
// eslint-disable-next-line jsdoc/require-description
/**
* @param {ASTNode} node any node
* @param {ASTNode[]} ancestors the given node's ancestors
* @returns {boolean} whether the given node is considered a directive in its current position
*/
function isDirective(node, ancestors) {
const parent = ancestors[ancestors.length - 1],
grandparent = ancestors[ancestors.length - 2];
return (parent.type === 'Program' || parent.type === 'BlockStatement' &&
(/Function/u.test(grandparent.type))) &&
directives(parent).indexOf(node) >= 0;
}
/**
* Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
* @param {ASTNode} node any node
* @returns {boolean} whether the given node is a valid expression
*/
function isValidExpression(node) {
if (allowTernary) {
// Recursive check for ternary and logical expressions
if (node.type === 'ConditionalExpression') {
return isValidExpression(node.consequent) && isValidExpression(node.alternate);
}
}
if (allowShortCircuit) {
if (node.type === 'LogicalExpression') {
return isValidExpression(node.right);
}
}
if (allowTaggedTemplates && node.type === 'TaggedTemplateExpression') {
return true;
}
return /^(?:Assignment|OptionalCall|Call|New|Update|Yield|Await)Expression$/u.test(node.type) ||
(node.type === 'UnaryExpression' && ['delete', 'void'].indexOf(node.operator) >= 0);
}
return {
ExpressionStatement(node) {
if (!isValidExpression(node.expression) && !isDirective(node, context.getAncestors())) {
context.report({ node, message: 'Expected an assignment or function call and instead saw an expression.' });
}
}
};
}
};

View File

@@ -0,0 +1,57 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
var _a;
const fs_1 = require("fs");
const utils_1 = require("./utils");
module.exports = new (_a = class TranslationRemind {
constructor() {
this.meta = {
messages: {
missing: 'Please add \'{{resource}}\' to ./build/lib/i18n.resources.json file to use translations here.'
}
};
}
create(context) {
return utils_1.createImportRuleListener((node, path) => this._checkImport(context, node, path));
}
_checkImport(context, node, path) {
if (path !== TranslationRemind.NLS_MODULE) {
return;
}
const currentFile = context.getFilename();
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
if (!matchService && !matchPart) {
return;
}
const resource = matchService ? matchService[0] : matchPart[0];
let resourceDefined = false;
let json;
try {
json = fs_1.readFileSync('./build/lib/i18n.resources.json', 'utf8');
}
catch (e) {
console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
return;
}
const workbenchResources = JSON.parse(json).workbench;
workbenchResources.forEach((existingResource) => {
if (existingResource.name === resource) {
resourceDefined = true;
return;
}
});
if (!resourceDefined) {
context.report({
loc: node.loc,
messageId: 'missing',
data: { resource }
});
}
}
},
_a.NLS_MODULE = 'vs/nls',
_a);

Some files were not shown because too many files have changed in this diff Show More