Compare commits

..

531 Commits

Author SHA1 Message Date
Karl Burtram
d08d07fe39 Cleanup the copy output (#8072) (#8339)
* Cleanup the copy output

* Use helper functions and cleanup promise handling
2019-11-14 14:34:05 -08:00
Karl Burtram
7725d1f6a8 Bump ADS to 1.13.1 (#8340) 2019-11-14 14:14:10 -08:00
Udeesha Gautam
63803ea6f2 update dacpac and schema compare readme to remove preview text (#8191)
update dacpac and schema compare readme to remove preview text (#8191)
2019-11-01 18:57:59 -07:00
Charles Gagnon
cacd481bff Fix ssl config issue 2019-11-01 15:56:48 -07:00
Charles Gagnon
650ab3b800 Port ssl config fix (#8185) 2019-11-01 15:37:22 -07:00
Karl Burtram
517b375395 Bump SQL Tools to 2.0.0-release.30 to pick up SMO update 2019-11-01 14:13:16 -07:00
Chris LaFreniere
29ccbb5497 Ensure cwd matches notebook path (#8137)
* Ensure cwd matches notebook path

* add error checking

* silent, don't store history
2019-11-01 11:42:19 -07:00
Karl Burtram
ba3e92e5be Fix break in jupyterServerInstallation.ts 2019-10-31 21:06:22 -07:00
Udeesha Gautam
5013a76565 Updating SqlToolsService To Revert SqlCmd explicit handling (#8133)
Updating SqlToolsService To Revert SqlCmd explicit handling (#8133)
2019-10-31 20:55:32 -07:00
Charles Gagnon
fe896e8b1a ADS changes for new engine edition (#7695) (#8176)
* Sql on demand changes

* Formating files

* Removing features for new Engine Edition

* Fixing Restore & Backup issue. Adding support for multiple conditions per flavor

* tabifying

* Formating documents

* Work in progress

* Resolving comments

* Resolving comments.

* Fixing typo
2019-10-31 20:47:03 -07:00
Maddy
ea71c0e39c version bump books package (#8174) 2019-10-31 20:32:09 -07:00
maddydev
32acda343d refactored error method and added try for the entire method 2019-10-31 20:31:54 -07:00
Kevin Cunnane
e97e098a14 recommend datavirtualization instead of sql-vnext (#8172) 2019-10-31 20:27:47 -07:00
BranislavGrbicMDCS
b317ccde28 Adjusting context menu for SqlOnDemand (#8018) 2019-10-31 17:47:10 -07:00
BranislavGrbicMDCS
3d1d20a472 Adjusting OE and hiding nodes for sql on demand (#8087) 2019-10-31 17:46:28 -07:00
Karl Burtram
7b2ae58aa6 Package LiveShare outside core ADS (#8024) 2019-10-31 17:39:03 -07:00
Kevin Cunnane
ecedd3108d Fix #8162 Spark timeout in BDC cluster is higher than client-side, causing successful sessions to show as failed (#8164)
* Fix #8162 Spark timeout in BDC cluster is higher than client-side, causing successful sessions to show as failed
2019-10-31 17:25:25 -07:00
Charles Gagnon
6d598b1362 Fix metrics log links (#8140) 2019-10-31 15:10:15 -07:00
Kevin Cunnane
1cae74c6d3 Fix #8159 Mount HDFS broken against latest cluster (#8160)
connectWithRetry needed to pass as ... so each arg was set correctly,
instead of having 1st param be an array of the input arguments
2019-10-31 15:09:45 -07:00
Charles Gagnon
fbcd3c620c Merge BDC error fixes into release (#8145)
* Fix BDC remember password and reprompting connection (#7957)

* Fix remember password and reprompting connection

* comment

* Fix to remember password for session

* Fix floating promises

* Add error messages to BDC dashboard page (#8103)

* Add error messages to BDC dashboard page

* Remove testing code

* PR fixes
2019-10-31 13:36:14 -07:00
Alan Ren
78ec3c016b profiler icon issue (#8115) 2019-10-31 08:26:00 -07:00
Alan Ren
71a6ced5bf fix the missing icon issue of expand/collapse btn (#8132) 2019-10-31 08:24:08 -07:00
Chris LaFreniere
eee799aeef Notebooks: Improvements to Connection Profile Passing (#8105)
* Fix relative images on notebook markdown pc

* PR feedback around replace ordering

* update databaseName when it's set to master

* usinng query as example
2019-10-31 08:22:58 -07:00
Alan Ren
3ffef2fb02 use addtionalEnvironmentVariables (#8123) 2019-10-31 08:20:15 -07:00
Alan Ren
c7d7faa167 notebook background execution 2019-10-30 10:54:51 -07:00
Maddy
64e95edc96 added openLocalizedook action that opens up the link to localized books. (#8025)
* initial commit

* addressed the tslint floating promise errors

* updated the command name with PM's feedback
2019-10-30 00:03:39 -07:00
Chris LaFreniere
761e3d1692 Notebooks: Fix relative images not rendering on PC for Markdown Cells (#8091)
* Fix relative images on notebook markdown pc

* PR feedback around replace ordering
2019-10-30 00:03:30 -07:00
Kim Santiago
c1fb00b3f2 Bump dacpac and schema compare extension versions and remove preview (#8095)
* bump dacpac and schema compare extension versions and remove preview

* bump azdata dependency version
2019-10-30 00:03:13 -07:00
Kim Santiago
8c925a31b6 Fix schema compare include/exclude behavior 2019-10-30 00:02:54 -07:00
Charles Gagnon
b196291052 Add SQL Metrics links to BDC dashboard (#8056)
* Add SQL metrics link to dashboard pages

* Only show SQL metrics column for SQL service

* Add param doc
2019-10-28 15:19:11 -07:00
Karl Burtram
068b64973f Update agent and import versions for Nov (#8054) 2019-10-28 15:18:51 -07:00
Karl Burtram
d83444ffeb dependencies messages, no curl on win32, fixes to min Version 2019-10-27 21:43:30 -07:00
Karl Burtram
872973c4d2 Bump SQL Tools Service to pickup schema compare changes (#8048) 2019-10-27 14:00:09 -07:00
Alan Ren
ca36aa5b2d min version check (#8038)
* min version check

* comments
2019-10-27 11:16:59 -07:00
Alan Ren
0a7cdf79ba update the message (#8031) 2019-10-27 11:16:53 -07:00
Alan Ren
ccb7a03a0f fix 2 issues found during testing (#8029) 2019-10-27 11:16:46 -07:00
Arvind Ranasaria
beab3cb48c pass install paths to notebooks (#8008)
* pass install paths to notebooks

* onComplete

* discover and publish actual installation Path

* pass the path to notebook

* minor fixes needed post merge of code from remote

* fix some errors

* remove unused variable
2019-10-27 11:16:41 -07:00
Chris LaFreniere
fd7b5a8628 serverManager to decide if server start needed (#8017) 2019-10-27 11:16:34 -07:00
Chris LaFreniere
fd0d3855df fix stdin cancel breaks notebook (#8012) 2019-10-27 11:16:27 -07:00
Amir Omidi
0498253b56 Distribute area evenly 2019-10-25 15:33:04 -07:00
Udeesha Gautam
e5609ffd5c Work with single ext loc file (#7894)
* try loc with single file model

* adding filter and languages

* add links in langpack json

* changing variable name and limiting the list to only tested extensions
2019-10-25 15:00:48 -07:00
Chris LaFreniere
29e6145920 Fix for Markdown File in Jupyter Books Viewlet not Opening After 2x (#8009)
* fix for markdown not opening after opened twice

* PR comment to add return type
2019-10-24 22:44:15 -07:00
Chris LaFreniere
b03ff643e5 Fix Issue when Saving Wrong Kernel (#7974)
* Only fire kernelChangeEmitter after lang set

* Fix unused import found by lgtm

* Fix comment
2019-10-24 22:44:08 -07:00
Charles Gagnon
053be4756d Fix column text overflow on BDC status pages (#7928)
* Fix column text overflow on status page

* Fix typo

* Fix another typo
2019-10-24 22:44:01 -07:00
Chris LaFreniere
2bdd55dea4 search book gone from command palette (#8002) 2019-10-24 22:43:55 -07:00
Chris LaFreniere
738c8231ee Always send \n instead of \r\n to Jupyter kernel (#7995)
* Always send \n instead of \r\n to kernel

* Use replace instead of split/join
2019-10-24 22:43:46 -07:00
Alan Ren
1e29949273 Remove RC from strings (#8001) 2019-10-24 22:43:32 -07:00
Maddy
cdd3899648 builtinExtension-insiders to builtinExtension (#7973)
* builtinExtension-insiders to builtinExtension

* maintain both insiders and stable.

* builtinExtension.js is for build time and skipping the check for dev.

* check quality and pick insider vs stable json
2019-10-24 22:43:25 -07:00
Chris LaFreniere
933dfc0f3f Fix starting and separators in a row (#7861) 2019-10-24 22:43:02 -07:00
Alan Ren
10a7b47604 make the azdata install url configurable (#7989)
* make the azdata install url configurable

* use settings without reloading

* comments
2019-10-24 22:42:52 -07:00
Maddy
910dc32623 hide save book action from command pallet (#7981) 2019-10-24 22:42:40 -07:00
Alan Ren
86f38f5074 revert the notebook background execution (#7984) 2019-10-24 22:41:56 -07:00
Charles Gagnon
ba9d3169c5 Change BDC view errors to use modal dialog instead of error toast (#7985)
* Change BDC view errors to use modal dialog instead of error toast

* Move to common control
2019-10-24 22:39:59 -07:00
Charles Gagnon
a19885e719 Fix troubleshoot URL lookup (#7978) 2019-10-24 22:39:51 -07:00
Amir Omidi
84457bf981 Installer icons (#7057) 2019-10-24 12:17:17 -07:00
Karl Burtram
d73fa5e168 Revert "Separate icons for non-stable builds (#7857)"
This reverts commit a60cd0132e.
2019-10-24 12:15:19 -07:00
Alan Ren
e9c3ffe424 remove insider build check (#7926)
* remove insider build check

* fix welcome page not load issue
2019-10-24 00:11:49 -07:00
Aditya Bist
a1aa303922 Fix node infinitely loading when a firewall dialog is cancelled (#7970)
* add back icons for azure actions

* fix firewall infinite loop

* formatting

* change message to firewall canceled

* fix tests
2019-10-24 00:11:43 -07:00
Chris LaFreniere
c9dd2fb4a8 Notebooks: ensure python path dirs added to path on session start (#7968)
* ensure python path dirs add to path session start

* Change logic slightly

* PR feedback from Charles
2019-10-24 00:11:38 -07:00
Chris LaFreniere
3d95b0032e Update recommended package versions for ps (#7972) 2019-10-24 00:11:31 -07:00
Chris LaFreniere
5ff747d6ef check for ownerDocument focus for focus (#7964) 2019-10-24 00:11:24 -07:00
Chris LaFreniere
d26f4167fb Fix for relative links not being resolved in notebook outputs (#7966)
* Fix for relative links not being resolved

* Add comment
2019-10-24 00:11:17 -07:00
Aditya Bist
93a28b30c7 add back icons for azure actions (#7963) 2019-10-24 00:11:10 -07:00
Cory Rivera
10d7db8b37 Append stdErr log to error message when a streamed console command fails. (#7868) 2019-10-24 00:06:33 -07:00
Chris LaFreniere
c4a8b786c3 Add Option to Halt Notebook when Error Occurs in SQL Kernel (#7884)
* Add Option to Halt Nb when Error Occurs

* PR comments
2019-10-23 09:12:32 -07:00
Maddy
c99c09a6ab Update/sqlserverbook extension to stable (#7914)
* move package info from builtin-inisders to builtin extensions

* vbump for the filename fiasco change

* merged master

* revert sql.bat update
2019-10-23 09:12:25 -07:00
Charles Gagnon
b6a36ebc59 BDC Dashboard context sensitive troubleshoot links (#7895)
* Add context awareness to troubleshoot button on dashboard

* Remove tests for now

* Undo yarn.lock changes

* Correct yarn.lock version

* Lower case service check
2019-10-23 09:12:16 -07:00
Charles Gagnon
b783a69e36 Fix HDFS paths to be encoded properly (#7896) 2019-10-23 09:12:08 -07:00
Kevin Cunnane
bbad8f194c Add help text to mount HDFS dialog (#7865) 2019-10-23 09:12:02 -07:00
Charles Gagnon
6f6ba99251 Disable failing test (#7882) 2019-10-23 09:11:55 -07:00
Amir Omidi
f991293ee8 Move vscode from dependencies to devDependencies (#7864)
* Update package.json

Move vscode out of dependencies

* Change extensions.js
2019-10-23 09:11:44 -07:00
Charles Gagnon
a60cd0132e Separate icons for non-stable builds (#7857)
* Use separate icons for non-stable builds

* Fix file name

* Switch icon

* Updated icons

* Switch to copy of code.ico until issue is fixed

* Fix icon

* remove

* add

* Fix file renaming

* Fix a couple naming issues

* Move iss changes to build file
2019-10-22 17:47:27 -07:00
Karl Burtram
05a53af085 Ports to release/1.13 for 10/21 (#7879)
* Add (dummy) IPyWidgets Renderer (#7849)

* Updates to package.json to show books on stable (#7836)

* Updates to package.json to show books on stable

* remove notebookQuality context key

* renamed untitiled to unsaved

* fix the wizard opened twice issue #7866 (#7869)

* fix a typo (#7871)
2019-10-21 23:07:32 -07:00
Amir Omidi
143b70c6a8 Revert "Fix BDC and resource-deploy extensions to not be packaged separately (#7858)" (#7860)
This reverts commit 53a081262d.
2019-10-21 12:06:00 -07:00
Kevin Cunnane
c1e95a2246 Fix errors due to icon to codicon rename in VSCode (#7837)
Found numerous errors where icons weren't rendering correctly.
- Anything that's an action must have CSS using "codicon" not "icon"
since VSCode sets the "codicon" class automatically.
This affected Agent view in particular, but also:
  - acounts view
  - new tab view in dashboard
 - many more
- Anything referencing the common-icons.css icons needed updating.
This hid help tooltip text in FormContainer UI for example.
- Finally I tried to convert all references from icon -> codicon,
even when the CSS was technically correct. This was done
for maintainability reasons - from now on always add codicon.

Fixes #7827
2019-10-21 12:02:30 -07:00
Charles Gagnon
53a081262d Fix BDC and resource-deploy extensions to not be packaged separately (#7858)
* Fix BDC and resource-deploy extensions to not be packaged separately

* Update js too
2019-10-21 11:06:22 -07:00
Charles Gagnon
8b46143d48 Fix Manage Access dialog to not allow entering blank user (#7844) 2019-10-21 10:07:28 -07:00
Alan Ren
a05edc619c use required attribute (#7850)
* use required attribute

* readable sql port
2019-10-21 09:53:12 -07:00
Alan Yu
6c5aa6b367 Update ThirdPartyNotices.txt (#7479)
* Update ThirdPartyNotices.txt

* tab -> spaces
2019-10-20 21:56:29 -07:00
Charles Gagnon
0246c3f895 Fix ModelView tree A11y issue (#7835)
* Fix tree A11y issue

* Toggle expanded state on enter

* Move onkeydown method to base class
2019-10-20 21:42:55 -07:00
Chris LaFreniere
e3ae5263c6 Starting Fewer Jupyter Servers for Notebooks (#7744)
* Start fewer Jupyter servers

* Windows fix for drive casing

* PR Feedback

* Quick fix

* Fixing bug

* Ensure environment variables set 4 session startup

* test fix

* Dummy commit to update comment
2019-10-20 21:38:58 -07:00
Alan Ren
0bfb1aab7e set storage settings table name (#7841) 2019-10-20 19:27:50 -07:00
Chris LaFreniere
d120102805 Bump up widths for pick, remove schedule buttons (#7517) 2019-10-20 13:22:49 -07:00
Charles Gagnon
7e5b864299 BDC Dashboard connection retry (#7784)
* Open cluster dashboard

* Remove old translated strings and update var name

* Add exported auth type

* Add newline

* Add connection retry for dashboard

* Change getMainSectionComponent to return multiple (no undefined)

* Move try/catch to withConnectRetry

* Add connection retry for dashboard

* Change getMainSectionComponent to return multiple (no undefined)

* Move try/catch to withConnectRetry
2019-10-19 15:42:49 -07:00
Arvind Ranasaria
4dd6db57ee Feat/tool install master merge back to master (#7819)
* add install tools button (#7454)

* add install tools button

* address comments

* remove description for install tools hint message

* First working version of AutoDeployment of tools (#7647)

First working version of AutoDeployment of tools.

This pull request adds feature to install the tools needed for doing BDC/TINA deployments.

This has been tested so far only on win32 and testing on other platforms is in progress.

* removing TODO and redundant code

* Not localizing azuredatastudio product name

* convert methods returning Promises to async-await

* changing from null to undefined

* Localize all the command labels

* using existing sudo-prompt typings

* progres/error status in ModalDialogue && PR fixes

* review feedback to change warning to information

* revert settings.json changes

* fix resource-Deployment Extension Unit Test

* ensuring platform service's working directory

* incorporate review feedback

* review feedback

* addressing PR feedback

* PR fixes

* PR Feedback

* remove debug logs

* disable UI deployment containers when installing

* addding data type to stdout/stderr messaging

* remove commented code

* revert accidental change

* addressing review feedback

* fix failed install with zero exit code

* fixing bug due to typo

* fixes for linux

* Misc fixes during mac testing

* PR fixes
2019-10-18 23:17:21 -07:00
Udeesha Gautam
a2f105a913 Fix Local keys for spark so that dup key error doesnt occur (#7634) 2019-10-18 18:06:37 -07:00
Charles Gagnon
ab31a7b964 Open cluster dashboard from SQL Dashboard (#7783)
* Open cluster dashboard

* Remove old translated strings and update var name

* Add exported auth type

* Add newline

* PR feedback
2019-10-18 17:35:47 -07:00
Amir Omidi
203ff3872f Test run list proposal (#7617)
* Test run list propsal

* fixed ts errors

* added js file

* excluding testSetup.js file from hygiene

* moved ignore line to indententationFilter
2019-10-18 17:21:40 -07:00
Chris LaFreniere
2ee3840650 First improvements for SQL Cell Looping (#7733)
* First improvements

* clear results

* cleanup

* error handling
2019-10-18 17:12:10 -07:00
Cory Rivera
fa80dbfb27 Update download links for our notebook Python packages. (#7839) 2019-10-18 16:53:29 -07:00
Amir Omidi
2237d286b6 XML output is truncated (#7748)
* QueryExecutionOptions change

* add config points

* Change api type used

* Revert "QueryExecutionOptions change"

This reverts commit 7adc3b032b5e4bc92234d337f0a145f0963c2d34.

Let's not change the azdata file.

* Change the signature of this api

* Change the event

* Change SqlCMD to use the API properly

* Add type

* Change type to interface - handle existing files

* Remove unused import

* Delete useless code

* Remove unnecessary code

* Fix the interface

* remove whitespace
2019-10-18 16:35:45 -07:00
Anthony Dresser
4124f6b1ad Readd labeling (#7834)
* readd labeling

* fix yml structure

* fix more yml structure
2019-10-18 15:07:31 -07:00
Karl Burtram
23361d3d56 Update ENU loc resource files (#7831) 2019-10-18 14:35:15 -07:00
Anthony Dresser
4c8f3ddfd3 Add scripting contributions for explorer widget (#7830)
* add scripting contributions for explorer widget

* utilize or
2019-10-18 14:26:43 -07:00
Amir Omidi
f631a8aa9a Delete unused code (#7800)
* Update cmsUtils.ts

Fix small issue

* Delete unused code
2019-10-18 13:29:34 -07:00
Amir Omidi
bbc6460d3f Update groupContainer.component.ts (#7803)
Fix small issue
2019-10-18 13:27:25 -07:00
Amir Omidi
09d78544cf Update sqlExtHostTypes.ts (#7801)
Fix small mistake
2019-10-18 13:26:53 -07:00
Amir Omidi
a791aff0a2 Update pythonPathLookup.ts (#7807)
Fix regex problem
2019-10-18 13:26:38 -07:00
Amir Omidi
ce318f123f remove unusued deps (#7810) 2019-10-18 13:22:50 -07:00
Amir Omidi
9374056e61 move dependencies around (#7808) 2019-10-18 13:22:13 -07:00
Charles Gagnon
5ef19affd0 Update SqlToolsService (#7826) 2019-10-18 12:12:16 -07:00
Charles Gagnon
d40abf4add Add husky back for precommit hooks (#7825) 2019-10-18 08:47:58 -07:00
Alan Ren
86f8b3f9ec change field type to Password (#7791) 2019-10-17 22:39:31 -07:00
Chris LaFreniere
385d7f2803 Clear Output -> Clear Result for consistency (#7776) 2019-10-17 19:54:12 -07:00
Chris LaFreniere
2ee04e0cf0 null checks for onBeforeDetached (#7782) 2019-10-17 18:24:30 -07:00
Cory Rivera
9bdaba3b65 Remove sqlmlutils from default packages due to installation failures on OSX. (#7780) 2019-10-17 17:21:53 -07:00
Chris LaFreniere
80d46fb8a4 Add search book icon (#7777) 2019-10-17 17:20:07 -07:00
Maddy
268f9ef725 revert the version bump. (#7772) 2019-10-17 15:10:53 -07:00
Alan Ren
3813d9385b update the extensions.json (#7771) 2019-10-17 14:26:47 -07:00
Charles Gagnon
48bf72bfc4 Fix TelemetryOptOut error and add debug targets for running extension integration tests (#7765) 2019-10-17 13:39:11 -07:00
Amir Omidi
fa1d5cc49d Revert "Move Notebook tests back to stable" (#7755)
* Revert "Move Notebook tests back to stable (#7749)"

This reverts commit 5d4da455bd.

* Update notebook.test.ts

* Update notebook.test.ts
2019-10-17 11:30:58 -07:00
Amir Omidi
de5fd11155 Add some more asserts to integration tests (#7759) 2019-10-17 10:55:16 -07:00
Alan Ren
cd30a8cbc0 enable bdc features for stable (#7757) 2019-10-17 09:59:29 -07:00
Alex Ma
ec1e54db9a Handling for parsing of iconpaths (#7738)
* Check if light and dark are URI

* Added a map in the extensionsRegistry to check

* Moved resolve check to connectionProviderExtension

* removed resolvedUsers from extensionsRegistry.ts

* removed unused imports and spaces

* Formatting for import

* Simplified resolver check.

* ToString is sufficient to avoid any complications

* Small formatting fix

* removed extra comment
2019-10-17 09:51:33 -07:00
Maddy
82963ad075 vbump for the updates (#7752) 2019-10-16 23:10:24 -07:00
Elliot Boschwitz
b24671bbf6 disabled failing tests in vs code
Add skip statements for tests found to be failing.
2019-10-16 21:25:03 -07:00
Alan Ren
2ab7a47353 deploy BDC wizard improvement for CU1 (#7756)
* unified admin user account (#7485)

* azdata changes

* spaces

* error message

* comments

* support AD authentication for bdc deployment (#7518)

* enable ad authentication

* remove export for internal interface

* add comments

* more changes after testing

* update notebooks

* escape slash

* more comments

* Update deploy-bdc-aks.ipynb

* Update deploy-bdc-existing-aks.ipynb

* Update deploy-bdc-existing-kubeadm.ipynb

* AD changes and review feedback (#7618)

* enable ad authentication

* remove export for internal interface

* add comments

* more changes after testing

* update notebooks

* escape slash

* more comments

* Update deploy-bdc-aks.ipynb

* Update deploy-bdc-existing-aks.ipynb

* Update deploy-bdc-existing-kubeadm.ipynb

* address comments from scenario review (#7546)

* support AD authentication for bdc deployment (#7518)

* enable ad authentication

* remove export for internal interface

* add comments

* more changes after testing

* update notebooks

* escape slash

* more comments

* Update deploy-bdc-aks.ipynb

* Update deploy-bdc-existing-aks.ipynb

* Update deploy-bdc-existing-kubeadm.ipynb

* scenario review feedbacks

* more fixes

* adjust the display order of resource types

* different way to implement left side buttons

* revert unwanted changes

* rename variable

* more fixes for the scenario review feedback (#7589)

* fix more issues

* add help links

* model view readonly text with links

* fix size string

* address comments

* update notebooks

* text update

* address the feedback of 2nd round of deploy BDC wizard review (#7646)

* 2nd review meeting comments

* fix the unit test failure

* recent changes in azdata

* notebook background execution with azdata (#7741)

* notebook background execution with azdata

* prompt to open notebook in case of failure

* fix path quote issue

* better temp file handling

* expose docker settings (#7751)

* add docker settings

* new icon for container image
2019-10-16 20:41:15 -07:00
Charles Gagnon
5d4da455bd Move Notebook tests back to stable (#7749)
* SqlClient fix is in so these should be stable again

* removed comments
2019-10-16 16:44:36 -07:00
Cory Rivera
0b039830ea Add sqlmlutils to list of required notebook packages. (#7740) 2019-10-16 14:16:09 -07:00
Charles Gagnon
77e1ca59ed Roll back tree icon merge changes to fix loading icon issue (#7722) 2019-10-15 22:44:37 -07:00
Charles Gagnon
e8e8ee5941 BDC Dashboard fixes (#7732)
* BDC Dashboard fixes

* Make refresh indicate when refresh is happening

* Fix refresh button to properly reset even if error occurs. Refactor onclick into own method.

* Undo refresh button rotation per design feedback
2019-10-15 21:50:02 -07:00
Cory Rivera
23861bd369 Wait for python installs to complete before starting a python notebook. (#7729) 2019-10-15 17:06:19 -07:00
Chris LaFreniere
4c946b21a9 Jupyter Book Search First Steps (#7704)
* Crawling for book search. needs icon

* Remove context until decision on entry point

* Add undefined check
2019-10-15 17:04:24 -07:00
Alex Ma
e74538b40d Added notification for unsaved file in scheduling (#7705)
* Added notification for unsaved file in scheduling

* Removed logging message in line 216

* Changed regex for all 3 platforms (forbid '/')

* Untitled file prompts to save in mainController

* removed spaces and changed save message
2019-10-15 14:29:34 -07:00
Cory Rivera
b6ef5469de Correctly handle exceptions in package upgrade promise. (#7734) 2019-10-15 13:50:30 -07:00
Amir Omidi
ee2850f2e2 Add name and change severity (#7727)
Add a name and change severity to error.
2019-10-15 10:37:26 -07:00
Amir Omidi
3387a762c4 Update lgtm.yml (#7723)
Get rid of path classifiers
2019-10-15 01:42:05 -07:00
Amir Omidi
75388cc3af Add the promises ql file (#7720) 2019-10-14 18:55:26 -07:00
Kim Santiago
087f7fc43d remove role=document ffrom dialog so screenreader doesn't read it (#7685) 2019-10-14 16:57:09 -07:00
Amir Omidi
5da0e16e44 Check for error (#7711)
* Custom error
2019-10-14 16:26:51 -07:00
Cory Rivera
eb465fde1a Skip prompting for package upgrade if a python install is already in progress. (#7717) 2019-10-14 15:31:53 -07:00
Charles Gagnon
26ece1ee86 Fixes to apply recursive (#7714)
* Fix apply recursive Promise.all to correctly await promises and fix apply to not apply defaults to child files.

* PR comments
2019-10-14 15:04:14 -07:00
Kevin Cunnane
f18b65a690 Mount delete, refresh and default to new folder for mount create (#7702)
* Mount delete, refresh and default to new folder for mount create
- Delete mount action added
- Refresh mount action added
- Added "mymount" to theend of existing path so that we don't use already-existing HDFS folder. The call fails unless folder doesn't exist
2019-10-14 13:26:14 -07:00
Charles Gagnon
6851b2091f Add return to getControllerEndpoint (#7699) 2019-10-14 09:05:09 -07:00
Amir Omidi
74396c1558 Rename icon to codicon #7709 (#7710) 2019-10-13 22:24:52 -07:00
Charles Gagnon
d02c680dab More HDFS Manage Access dialog updates (#7692)
* Add support for default permissions on directories

(cherry picked from commit 4e81cceba142c6763c3447b4d2965cd75764f8f9)

* Remove unneeded import

(cherry picked from commit ffe5f357357e75e9290966e89768c699df2e1311)

* Add recursive apply and clean up webhdfs

(cherry picked from commit ae76df14f99e599df1cdfcc74ee22d3822f11a59)

* Final set of changes

* Undo changes to azdata/sqlops and few minor fixes

* Remove cast to fix build error

* Hide defaults checkbox for files and switch checkbox order
2019-10-11 15:18:17 -07:00
Cory Rivera
888327f5bc Hide collapse cell button if cell only has one line. (#7701) 2019-10-11 15:12:42 -07:00
Charles Gagnon
2623e7da88 Update Component API properties (#7694) 2019-10-11 13:33:35 -07:00
Amir Omidi
0d2a3bc2d7 Update lgtm.yml (#7698)
Add a trailing slash
2019-10-11 12:54:03 -07:00
Chris LaFreniere
5eeaa5710c Adding in separators (#7651) 2019-10-11 11:06:57 -07:00
Kevin Cunnane
92e1f83046 Mount HDFS Dialog: basic support (#7580)
Implemented in this PR

- New base dialog for anything needing to work with the controller. This is important since going from SQL -> Controller we "should" have the right permissions but aren't guaranteed
- Support for Mount HDFS via a dialog. Includes basic polling for success/failure, but have to give up after 2.5min as mounting could take hours. By then it's assumed to be successful since server-side has 2min timeout built in.


Not implemented in this PR

- Script as Notebook button. This should convert the inputs to a set of cells in a notebook so users can run things themselves
- Updates based on PM / UX reviews. I think we'll need a round of feedback before completing this work.
2019-10-11 11:06:40 -07:00
Cory Rivera
9a3f72591e Show a background task when upgrading python packages. (#7649) 2019-10-11 10:56:19 -07:00
Alex Ma
12d824d791 Fix for chart names in dropdown select box. (#7642)
* isolated problem involving user friendly names

* Fix to handle horizontalBar

* Working rough version, need to implement data structure to store alternative names later

* consolidated checks into its own static method, data structure still highly recommended to implement

* Version with hashMap implemented

* Moved check for alternative names into chartView

* removed parseOption

* removed space in selectbox

* removed unused import

* removed unused import and spaces

* Fixed formatting

* Added new comment and modified changeToAltNames

* Localization has been added to the Hash

* flxed small formatting issue

* fixed double quotes for nls.localize
2019-10-11 09:50:23 -07:00
Charles Gagnon
613fef5e73 Fix checkbox component layout (#7678) 2019-10-11 09:45:53 -07:00
Karl Burtram
1d4babefba Bump changelog for 1.12.2 (#7653) 2019-10-10 22:55:54 -07:00
Karl Burtram
6e9e81e3a1 Bump Azure Data Studio to 1.13.0 for Nov (#7654) 2019-10-10 20:54:16 -07:00
Karl Burtram
c292561eb1 Update XLF files and fix errors with export (#7586)
* Update XLF files and fix errors with export

* Update file name

* Patch
2019-10-10 20:47:28 -07:00
Amir Omidi
248464191d add lgtm file (#7650) 2019-10-10 18:10:48 -07:00
Charles Gagnon
f1cdfb768d Make health status header wider so text isn't multiline (#7637) 2019-10-10 14:10:28 -07:00
Cory Rivera
777c188a3f Add collapsed argument to insertCell extension method. (#7635) 2019-10-10 14:06:31 -07:00
Kim Santiago
bf00a6b695 bump dacpac and schema compare extension versions (#7629) 2019-10-10 13:20:23 -07:00
Amir Omidi
b58927fea1 Fix the CI (#7633) 2019-10-10 11:52:02 -07:00
Charles Gagnon
2aa7a145d4 Fix connection group input not correctly selecting nested groups (#7625) 2019-10-10 11:21:13 -07:00
Alex Ma
4d618c5ef1 Improved chart names for chart type dropdown. (#7631)
* isolated problem involving user friendly names

* Fix to handle horizontalBar

* Working rough version, need to implement data structure to store alternative names later

* consolidated checks into its own static method, data structure still highly recommended to implement

* Version with hashMap implemented
2019-10-10 11:08:33 -07:00
Charles Gagnon
543e3e2c09 More updates to HDFS Manage Access dialog (#7611)
* Add display property to ModelView components

* Update DisplayType property in sqlops as well

* More updates to HDFS Manage Access dialog

* More updates to HDFS Manage Access dialog
2019-10-10 10:57:38 -07:00
Kim Santiago
93c9426f25 fix aria labels for database text boxes (#7628) 2019-10-10 10:30:43 -07:00
Chris LaFreniere
d4feb903b0 Supporting Different Kernel JSONs for Various Platforms (#7552)
* First go at it

* undo unnecessary change to copy api

* Revert "undo unnecessary change to copy api"

This reverts commit f95f7f7a42277586f4d4d0eb7b0733c11853b413.

* Revert "First go at it"

This reverts commit 410c0d3c61b7c7cae3a2469a2672f67fe3b745b6.

* Actual super simple fix
2019-10-09 19:19:05 -07:00
Chris LaFreniere
5a1183a457 Fix async problem with jupyter book viewlet loading (#7591)
* Fix async problem with jupyter book viewlet

* PR Feedback
2019-10-09 16:06:32 -07:00
Alan Ren
22774f28c0 notebook linebreak update (#7614) 2019-10-09 14:46:52 -07:00
Amir Omidi
1936e0dbbd Enable prod mode if the service is built (#7575) 2019-10-09 11:24:51 -07:00
Rahul Ajmera
df6e86554c Microsoft logo in SVG format (#7572)
* Adding SVG for microsoft logo. Will allow for scalable use of image

* Rename Microsoft-logo_cmyk_c-gray.svg to microsoft_logo_gray.svg
2019-10-09 11:02:00 -07:00
Charles Gagnon
33218bb0e5 Add display property to ModelView components (#7579)
* Add display property to ModelView components

* Update DisplayType property in sqlops as well
2019-10-09 10:28:18 -07:00
Amir Omidi
f475c04ce3 Fix mocha issues (#7588)
* mocha invert boolean

* Run integration test setup either way
2019-10-08 22:14:06 -07:00
Amir Omidi
0788796f1a add --nogpu to our integration tests (#7495) 2019-10-08 17:43:57 -07:00
Cory Rivera
3a01f960a7 Add prompt for user to upgrade python packages when starting a notebook (#7574) 2019-10-08 17:42:10 -07:00
Cory Rivera
d37105ada2 Don't expand notebook cells after being run, and don't hide outputs when cell is collapsed. (#7585) 2019-10-08 17:39:21 -07:00
Cory Rivera
66fda57513 Block Enter key from closing Manage Packages dialog. (#7584) 2019-10-08 16:58:23 -07:00
Charles Gagnon
2fe82e4b2f Styling updates for HDFS Manage Access Dialog (#7551) 2019-10-08 16:02:55 -07:00
Amir Omidi
eee7e52bd4 Release tests (#7577) 2019-10-08 15:06:21 -07:00
Elliot Boschwitz
ecd76eb870 removed hidden overflow for schema compare splitview (#7104)
Fixes issue where scrollbars wouldn't appear with vertical overflow in schema compare
2019-10-08 13:44:12 -07:00
Amir Omidi
bcaa09e910 Disable unstable tests (#7571) 2019-10-08 13:01:49 -07:00
Charles Gagnon
32df727ff9 Revert ""Retry resubmit" - allows zone.js to cleanup error stacktraces (#7502)" (#7568)
This reverts commit d91488da62.
2019-10-08 10:04:58 -07:00
Karl Burtram
e1bfe6cdda Update changelog for 1.12.1 (#7548) 2019-10-08 09:05:10 -07:00
Charles Gagnon
e4e71af597 Fix all await-promise tslint errors (#7530)
* Fix all await-promise tslint errors

* Remove unnecessary await
2019-10-07 17:52:01 -07:00
Kim Santiago
749ddc30c7 fixing error and splitview not showing for schema compare (#7549) 2019-10-07 17:51:46 -07:00
Charles Gagnon
c4965c7fe9 Fix parseAclPermissionFromOctal to include optional sticky bit (#7542)
* Fix parseAclPermissionFromOctal to include optional sticky bit

* Fix doc
2019-10-07 17:21:08 -07:00
Amir Omidi
de72ab176c Add chmod +x to all the scripts (#7550) 2019-10-07 17:12:06 -07:00
Amir Omidi
b453c3a48e Flat file import version bump (#7525) 2019-10-07 16:09:26 -07:00
Amir Omidi
857c658888 cleanup promises and async (#7169) 2019-10-07 15:30:38 -07:00
Amir Omidi
d91488da62 "Retry resubmit" - allows zone.js to cleanup error stacktraces (#7502)
* Revert "Revert "Revert "Revert "allows zone.js to cleanup error stacktraces (#7203)" (#7499)" (#7500)" (#7501)"

This reverts commit 080d9bbaa6.

* Don't include the setup file here

* Change setup.js
2019-10-07 15:30:15 -07:00
Amir Omidi
16fbd4abfd Return values (#7521) 2019-10-07 15:29:51 -07:00
Amir Omidi
285f8bc28c Move around scripting utils (#7523)
* Move around scripting utils

* Don't set a file path

* Version bump
2019-10-07 15:09:49 -07:00
Charles Gagnon
3fb4877859 Change script file names back to original names (#7544) 2019-10-07 14:03:34 -07:00
Charles Gagnon
e25cbdf4b9 Fix BDC dashboard to update status icons on refresh (#7520) 2019-10-07 13:40:58 -07:00
Charles Gagnon
b1db9a8cf1 Update Query History readme with latest feature additions (#7529) 2019-10-07 13:38:28 -07:00
Charles Gagnon
f418104b7a big data cluster -> Big Data Cluster (#7536) 2019-10-07 13:13:40 -07:00
Charles Gagnon
5454917569 Add ability to handle enter key propagation for input model components (#7524)
* Add ability to stop enter key propagation for input model components

* Fix spacing

* onInputEntered -> onEnterKeyPressed
2019-10-07 12:05:43 -07:00
Charles Gagnon
effa50a9bd Add unstable test params for core and extension tests (#7513)
* Add unstable test params for core and extension tests

* unset invert options for unstable script runs

* Fix copypasta

* Add nogpu to dacpac tests
2019-10-07 10:18:02 -07:00
Euler
ac87346507 Prevent connections from moving on click (#7528) 2019-10-07 08:49:05 -07:00
Amir Omidi
cacbcb5415 Add more functionality to the grid (#7516) 2019-10-05 12:08:18 -07:00
Chris LaFreniere
0b2a2ad0ed Allow git to open notebook files (#7403)
* Allow git to open notebook files

* pr feedback
2019-10-04 15:34:19 -07:00
Aasim Khan
44bc7a89df Register Notebook Editor Model during instantiation (#6891) 2019-10-04 15:33:37 -07:00
Charles Gagnon
bcb5384639 Capitalize action text for query history (#7512) 2019-10-04 14:14:05 -07:00
Kevin Cunnane
b23e577ccc Support mounted file icon (#7496) 2019-10-04 14:10:50 -07:00
Charles Gagnon
96a28f2c4d Add query-history package metadata (#7511)
* Add query-history package metadata

* Add newline
2019-10-04 13:58:12 -07:00
Cory Rivera
826c4115a7 Add powershell package to notebook python setup. (#7503)
Also added force-reinstall flag to installs when running Reinstall Dependencies.
2019-10-04 11:08:07 -07:00
Amir Omidi
c95ea16a44 Amir/tests after build (#7507)
* test

* remove disable extensions

* fix the file...
2019-10-04 02:16:07 -07:00
Chris LaFreniere
8e1a2248e4 Notebooks: Ensure quotes and backslashes are escaped properly in text editor model (#7497)
* Ensure quotes and backslashes are escaped properly

* PR comment

* PR comments

* Reliably fix
2019-10-03 19:21:01 -07:00
Cory Rivera
6b29fd05bd Add collapse/expand functionality to notebook code cells. (#7481) 2019-10-03 16:50:47 -07:00
Karl Burtram
080d9bbaa6 Revert "Revert "Revert "allows zone.js to cleanup error stacktraces (#7203)" (#7499)" (#7500)" (#7501)
This reverts commit 263d342a79.
2019-10-03 16:02:20 -07:00
Amir Omidi
263d342a79 Revert "Revert "allows zone.js to cleanup error stacktraces (#7203)" (#7499)" (#7500)
This reverts commit 0d2dcb3d25.
2019-10-03 16:01:16 -07:00
Amir Omidi
0d2dcb3d25 Revert "allows zone.js to cleanup error stacktraces (#7203)" (#7499)
This reverts commit a0f1d68cfb.
2019-10-03 15:57:50 -07:00
Alan Ren
9dd35c8c0d fix the bdc casing on welcome page (#7498) 2019-10-03 15:50:14 -07:00
Kevin Cunnane
e85f93abec Support HDFS Tiering (#7484)
This is the 1st step to supporting HDFS Tiering
Changes:

Add new mounted folder icon. Will have separate commit for file icon
Disable delete/mkdir/upload for mounted files and folders
Disable delete for root HDFS folder (this was added in error)
2019-10-03 14:48:19 -07:00
Charles Gagnon
18c12dac9a Fix to open ADS release notes instead of VS Code (#7418)
* Open latest ADS release notes in browser

* Only show release notes for stable builds

* Update config description text

* Have release notes notification prompt user before opening

* Remove unneeded import
2019-10-03 13:28:04 -07:00
Amir Omidi
a0f1d68cfb allows zone.js to cleanup error stacktraces (#7203)
* allows zone.js to cleanup error stacktraces

* zone.js changes

* Change ordering
2019-10-03 13:23:38 -07:00
Amir Omidi
37f651fe08 Mark test as unstable (#7493) 2019-10-03 12:56:42 -07:00
Alan Ren
d2e4e94aec fix issue 7489 and disposable handling (#7491) 2019-10-03 12:20:54 -07:00
Amir Omidi
cf1a09aeaf Revert "Disable schema compare tests (#7459)" (#7460)
This reverts commit 704c5174f9.
2019-10-03 11:57:11 -07:00
Amir Omidi
32897d3e07 Mock extension context (#7492) 2019-10-03 11:56:44 -07:00
AlexFsmn
3f2a728ed0 Fixed issue where task icons got hidden if text was too long (#6699)
* Fixed issue where task icons got hidden if text was too long
#6116

* Changed padding to min width
#6116

* Update tasksPanel.css
2019-10-03 10:10:56 -07:00
Charles Gagnon
af24a9d002 Initial work for Manage Access dialog (#7483)
* Add width and height properties to checkbox component

* Initial work on manage access dialog

* Add missed change

* Add comments and clean up

* Initial work on manage access dialog

* Add missed change

* Add comments and clean up

* Add return type

* Address comments and use apiWrapper

* Fix compile error
2019-10-03 08:58:06 -07:00
Amir Omidi
6582debd73 Unstable tests (#7487)
Setup unstable tests
2019-10-02 22:01:17 -07:00
Amir Omidi
575d1c8543 Disable one test and add a new utility function (#7486)
Skip problematic tests
2019-10-02 21:59:40 -07:00
Charles Gagnon
08b78c3ca5 Add width and height properties to checkbox component (#7482) 2019-10-02 16:21:08 -07:00
Amir Omidi
e0a867a184 Disable hw accl (#7457)
Allow headless running of tests
2019-10-02 14:08:22 -07:00
Amir Omidi
2b8508574d Create the azure folder differently. (#7470)
Create the folder with a different mechanism.
2019-10-02 12:57:29 -07:00
Chris LaFreniere
b8976785fd Stop grabbing focus when nb editor isn't in view (#7466)
* Stop grabbing focus when nb editor isn't in view

* Add comments
2019-10-02 11:56:57 -07:00
Charles Gagnon
79e2c56ec8 .Add types for ModelView CSS properties (#7465) 2019-10-02 11:21:18 -07:00
Charles Gagnon
1ea09c7add Update SqlToolsService for rows affected fix (#7469) 2019-10-02 11:20:40 -07:00
Udeesha Gautam
7489a65bbe Changing Sql cmd icons to more clear ones (#7451)
Changing Sql cmd icons to more clear ones
2019-10-02 11:04:22 -07:00
Karl Burtram
faabdb8d88 Update readme for October release (#7449) 2019-10-02 10:03:32 -07:00
Alan Ren
57c5d98bdc make it easy to indicate all platforms (#7467) 2019-10-02 09:33:27 -07:00
Charles Gagnon
b5c249c25d Update settings/descriptions to use ADS product name (#7425)
* Update settings to use ADS product name

* Fix JSON comment break
2019-10-02 09:04:09 -07:00
Alan Yu
60a244888d Update README.md (#7463)
* Update README.md

* Fix number and links
2019-10-02 08:24:58 -07:00
Anthony Dresser
c4dfc5cf70 Fix issue with startup (#7461)
* address startup erorr

* fix naming
2019-10-01 17:31:49 -07:00
Chris LaFreniere
4c2ffdfc68 Add powershell kernel.json (#7456) 2019-10-01 16:30:09 -07:00
Amir Omidi
704c5174f9 Disable schema compare tests (#7459) 2019-10-01 16:11:50 -07:00
Amir Omidi
b708b4a42b Add dependencies required for tests (#7450)
* Add the dependencies

* options -> testOptions

* tabs vs spaces

* dacpac
2019-10-01 15:48:36 -07:00
Kevin Cunnane
ee98ce5c18 Fix/controller ad (#7445)
Reapply my previous commit
add kerberos to excludes in the webpack for the extension
Fixes #7443
Verified on Windows and MacOS
2019-10-01 14:52:09 -07:00
Alan Ren
7162272f1e update timeout (#7446) 2019-10-01 12:51:42 -07:00
Udeesha Gautam
faee6b45e0 Extensions Localization (#7426)
* Correct Schema comapre single file path in xlfs

* converting SC and Dacpac from Xlf to Json

* Adding all exts other than mssql (needs fixing)
2019-10-01 11:53:46 -07:00
Alan Ren
aef69ab12a add readme (#7447) 2019-10-01 11:21:07 -07:00
Karl Burtram
a712426185 Bump Server Reports to 0.2.0 (#7431)
* Bump Server Reports to 0.2.0

* Add force reload flag

* vbump in package-lock.json
2019-10-01 10:42:11 -07:00
Karl Burtram
19be0d0ff3 Revert "Support AD in cluster connection dialog (#7367)" (#7444)
This reverts commit 9f065b2b5a.
2019-10-01 10:30:38 -07:00
Charles Gagnon
3202e46930 Fix typo in snippet (#7441) 2019-10-01 09:56:27 -07:00
Alan Ren
5b95d6777f new icons (#7433) 2019-10-01 09:50:37 -07:00
Anthony Dresser
084524cd2d Merge from vscode 313ede61cbad8f9dc748907b3384e059ddddb79a (#7436)
* Merge from vscode 313ede61cbad8f9dc748907b3384e059ddddb79a

* fix strict null checks
2019-09-30 23:35:45 -07:00
Charles Gagnon
6ab03053a0 Switch HDFS node to use normal Folder icon (#7430) 2019-09-30 16:00:08 -07:00
Kevin Cunnane
9f065b2b5a Support AD in cluster connection dialog (#7367)
- Use token API to get auth token before using other endpoints. Note this needs server updates before it'll work as expected (will only checkin after verifying this)
- Add auth option in controller UI and plumb through connection save, load, and uses of the controller API
Because the swagger spec is split in 2 created new file for the 2nd swagger spec including token auth endpoints. These come from a running cluster and instructions were updated to reflect this.

New UI Changes:
- Added authentication type field with "Basic" and "Windows Authentication" as the options
- Moved error notifications to the dialog instead of separate notification window. That's the recommended pattern
- Username / password aren't required for Windows Authentication. I couldn't find a way to change required status in form container on switching from Windows => Basic Auth so have error show on clicking OK. 
- Controller URL should use ":" not "," for IP:Port
2019-09-30 15:59:04 -07:00
Chris LaFreniere
5327ed84c1 Add ps to standard kernels in package.json (#7428) 2019-09-30 14:04:25 -07:00
Charles Gagnon
4018a29a16 Add toggle query history capture command/action (#7427)
* Add toggle query history capture command/action

* Add extension updates
2019-09-30 11:59:49 -07:00
Charles Gagnon
7cbc268c52 Add Clear All Query History command/action (#7408)
* Add clear all query history action/command

* Fix display issue when clearing

* Change localize ID and fix registration
2019-09-30 08:20:27 -07:00
Anthony Dresser
bca7c8e6bd Merge from vscode f2d41726ba5a0e8abfe61b2c743022b1b6372010 (#7415)
* Merge from vscode f2d41726ba5a0e8abfe61b2c743022b1b6372010

* add missing files
2019-09-27 23:30:36 -07:00
Alan Ren
d0fb6de390 sample of how to contribute a deployment type (#7414) 2019-09-27 16:03:30 -07:00
Charles Gagnon
63f3d9862f Add getaclstatus/setacl calls to WebHDFS API (#7378)
* Add getaclstatus/setacl calls to WebHDFS API

* Fix hygiene check
2019-09-27 13:45:45 -07:00
Anthony Dresser
00f8dcb23e clean up workbench files (#7392) 2019-09-27 12:17:07 -07:00
Alan Ren
bc4165037c fall back to the old text component behavior... (#7405)
* fall back to the old text component behavior...

if no required indicator and description is needed, fall back to the old text component behavior.

* Update text.component.ts

indention
2019-09-27 11:54:11 -07:00
Anthony Dresser
07109617b5 Merge from vscode e0762af258c0b20320ed03f3871a41967acc4421 (#7404)
* Merge from vscode e0762af258c0b20320ed03f3871a41967acc4421

* readd svgs
2019-09-27 11:13:19 -07:00
Alan Ren
6385443a4c deployment extensibility (#7394)
* rename button and update dialog button width

* make deployment resource type contributable

* conflicts

* fix card width hight issue

* comments
2019-09-27 10:13:38 -07:00
Chris LaFreniere
6ef415d0e6 Notebook Tokenization Fixes (#7375)
* Fix don't like; unclear if grammar necessssary too

* Cleanup and sanity check

* Cleanup and sanity check

* Add test

* Call onBeforeAttached for 3 types of editor models
2019-09-27 10:04:29 -07:00
Chris LaFreniere
ba8ba9f68d echo extension test names (#7391) 2019-09-27 10:04:10 -07:00
Charles Gagnon
b30252021b Sort endpoints (#7402) 2019-09-27 07:45:37 -07:00
Anthony Dresser
db57171ece fix dashboard icons (#7388) 2019-09-26 12:45:24 -07:00
Alan Ren
3688e9981d fixes #7383 and #7380 (#7384) 2019-09-26 12:35:44 -07:00
Anthony Dresser
b4de26a801 Disable tasks (#7329)
* disable tasks

* more disable

* disable more tasks
2019-09-26 12:15:48 -07:00
Anthony Dresser
2a15768a25 Remove diff (#7368)
* remove diff

* gulpfile changes (#7370)

* gulpfile changes

* Remove examples

* move require statements to the top of the file

* add await
2019-09-26 11:55:42 -07:00
Anthony Dresser
f971417746 fix workspace actions (#7345) 2019-09-26 11:47:44 -07:00
Charles Gagnon
33854d42e4 Fix endpoint links to not overflow text (#7312)
* Fix endpoint links to not overflow

* Add titles to links

* Re-add title to Text and fix errors
2019-09-26 11:47:22 -07:00
Alan Ren
2d9f6dcd86 rename button and update dialog button width (#7369)
* rename button and update dialog button width

* update padding to match portal
2019-09-25 20:21:41 -07:00
Kim Santiago
e3c347e148 Fixing folder path in dacpac and schema compare extensions (#7352)
* fixing folder path in dacpac and schema compare extensions

* created method

* import os
2019-09-25 15:00:56 -07:00
Amir Omidi
f7c468d6f0 Promise cleanup (#7210) 2019-09-25 14:46:14 -07:00
Kim Santiago
e6cac8cc14 Fix missing schema compare icons (#7355)
* move schema compare icons

* use extensionContext.extensionPath
2019-09-25 12:59:18 -07:00
Cory Rivera
79d0239362 Use python3 as the default python version in Spark sessions. (#7353) 2019-09-25 11:23:39 -07:00
Alan Ren
a0e31fc723 wizard for deploying bdc (#7183)
* wip

* wip2

* wip eod 820

* wip 822

* text component improvements and misc changes

* aria-label

* targetClusterPage wip

* target cluster page

* target cluster page

* wip 827

* wip deployment profile page

* profile page

* service settings page

* wip 0903

* 0909 wip

* 0910

* 0911

* sql instance and working directory

* notebooks

* docker version on windows

* EULA env var

* 917 updates

* address comments

* use async file access

* fix the summary page display issue for ad auth

* add save json file buttons

* use promise for private methds

* review feedbacks

* refactor

* pass json to notebooks

* fix no tool scenario

* bypass tool check if installed

* update hint text

* update notebooks

* workaround azdata first time use

* comments

* accept eula and some text update

* fix the error in package.json

* promise instead of thenable

* comments

* fix typo
2019-09-25 10:04:13 -07:00
Anthony Dresser
6a6048d40f Merge from vscode 817eb6b0c720a4ecbc13c020afbbebfed667aa09 (#7356) 2019-09-24 21:36:17 -07:00
Charles Gagnon
a29ae4d3b9 Add enable logs setting for Flat File Import (#7342)
* Add config for enabling Flat File Import logging

* Move logs to default log location for extensions

* Add localized strings
2019-09-24 18:07:46 -07:00
Charles Gagnon
82b19614e1 Update more CSS url use (#7341)
* Update more CSS urls

* URI with resources (#7348)

* URI with resources

* Remove logs
2019-09-24 18:07:23 -07:00
Amir Omidi
49851daf0d Don't check if directory exists (#7349) 2019-09-24 15:45:48 -07:00
Chris LaFreniere
d815ae0e83 Skip failing tests due to sqlclient issues (#7346) 2019-09-24 15:04:35 -07:00
Anthony Dresser
cb50fae12d move query plan to browser (#7343) 2019-09-24 12:14:24 -07:00
Charles Gagnon
26072af82f Use test.skip instead of commenting out disabled test (#7338)
* Use test.skip instead of commenting out disabled test

* Also disable OE test
2019-09-24 11:13:25 -07:00
Amir Omidi
89c1c4897a proper icon rendering (#7337)
* proper icon rendering

* address comments
2019-09-24 01:30:39 -07:00
Udeesha Gautam
5e5563f974 Disabling test for insiders build to pass (#7336)
Disabling dacpac import test for insiders build to pass
2019-09-23 23:29:09 -07:00
Amir Omidi
5df68e5942 Use URIs properly (#7334) 2019-09-23 21:09:54 -07:00
Udeesha Gautam
d895de0bc1 Trying to remove intermittent ext test failure (#7330)
* Trying to remove intermittent ext test failure

* taking PR comments
2019-09-23 19:52:05 -07:00
Maddy
2ec4a0c8a8 renamed .icon to .codicon as per vscode updates that are merged. (#7331) 2019-09-23 17:17:24 -07:00
Anthony Dresser
5e3ec6ea39 moves notebooks code to browser (#7313) 2019-09-23 13:32:29 -07:00
Amir Omidi
6f06ab440a Move css around (#7311)
* Move css around

* typings

* Keep it in both
2019-09-20 17:21:16 -07:00
Shafiq Ur Rahman
c3bb7a66e0 Show more of the url (closes #6348) (#7299) 2019-09-20 16:00:36 -07:00
Amir Omidi
aadc871124 Serializer (#7309) 2019-09-20 16:00:24 -07:00
Charles Gagnon
cb2cea4ebd Remove Data Services folder (#7147)
* Remove Data Services folder

* Remove copy path from HDFS node

* Add comment
2019-09-20 13:57:28 -07:00
Chris LaFreniere
6125e68c1f Ensure we call layout() as few times as possible for notebook cells (#7253)
* Call layout fewer times from queryTextEditor

* remove unused method
2019-09-20 12:06:37 -07:00
Arvind Ranasaria
71b80e0817 Set Mocha options based on environment settings (#7229)
* Set Mocha options based on environment settings

* fixing copy paste bugs in console logs

* incorporating review feedback
2019-09-20 12:04:22 -07:00
Maddy
ac6a4e590d Books/viewlet refactor (#7208)
* add saved/untitled views to the books viewlet and provide save option to untitled

* addressed comments

* fixes after merge

* await on async methods

* reverted back

* await on promise

* added localize for books view names

* initial commit

* missed a file change

* changes to make the merges work part1

* fixes after merges 2

* getChildren to get all books

* chnages to address comments

* fsPromises instead of fs.readSync

* merged master

* replaced deprecated fs.exists async call with pathExists

* renamed method
2019-09-20 10:47:33 -07:00
Karl Burtram
1f61a2581c Pickup latest SQL Tools for SMO\Driver bump (#7301)
* Pickup latest SQL Tools for SMO\Driver bump

* Bump to 2.0.0.15 for intellisense fix
2019-09-20 09:52:44 -07:00
Amir Omidi
bf23a52ba4 optional serialization service (#7303) 2019-09-19 22:14:10 -07:00
Anthony Dresser
db498db0a8 Merge from vscode 1eb87b0e9ce9886afeaecec22b31abd0d9b7939f (#7282)
* Merge from vscode 1eb87b0e9ce9886afeaecec22b31abd0d9b7939f

* fix various icon issues

* fix preview features
2019-09-19 21:50:52 -07:00
Charles Gagnon
9d3d64eef3 BDC dashboard 💄 (#7292)
* cleanup

* Undo bad merge

* extra undefined check
2019-09-19 15:06:44 -07:00
Alan Ren
e694e0273b Fix for issue 7233 (#7293) 2019-09-19 14:13:03 -07:00
Charles Gagnon
ced882a2e5 Update iKey for extensions (#7278) 2019-09-19 13:46:01 -07:00
Charles Gagnon
754c643b1b Don't show links for BDC logs if none available (#7286)
* Don't show links for BDC logs if none available

* Remove extra space

* Add comment

* Consolidate localize calls
2019-09-19 13:43:21 -07:00
Charles Gagnon
6a136854b0 Update whoIsActive extension to use azdata (#7287)
* Update whoIsActive extension to use azdata

* Change path

* Update package-lock
2019-09-19 11:38:18 -07:00
Chris LaFreniere
a584aca969 Stop clearing out connecting and connected state when cancelling out of connection dialog (#7254)
* Stop clearing out connecting and connected state

* tweaks

* Handling cancel while connecting

* fix typo

* PR comments
2019-09-18 17:21:32 -07:00
Anthony Dresser
b3fbb29bf2 add sql folding (#7270) 2019-09-18 15:02:22 -07:00
Anthony Dresser
b7299e5eec check for undefined (#7277) 2019-09-18 14:53:13 -07:00
Amir Omidi
510c45b9b7 use isNaN instead of == NaN (#7276) 2019-09-18 14:35:46 -07:00
Anthony Dresser
aad9c0f965 Add more areas to strict null (#7243)
* add more areas to strict null

* fix compile errors

* fix tests

* fix checks

* address PR comments
2019-09-18 12:27:19 -07:00
Charles Gagnon
373828d76f Have MSSQL extension wait for SqlToolsService ready before finishing activation (#7087)
* Have mssql activate wait for service to be ready before returning

* Change to using deferred promise

* Await on server ready

* Finish removing old code

* More cleanup

* Go back to exposed promise API

* Make property readonly

* Add missing file

* Add back in deleted stuff

* Go back to awaiting
2019-09-18 11:41:37 -07:00
Amir Omidi
86a9a2c069 NaN checks aren't possible with an equality check (#7268) 2019-09-18 10:59:58 -07:00
Karl Burtram
6e7e6ee434 Use the default connect timeout in OE tests (#7249) 2019-09-18 08:57:14 -07:00
Anthony Dresser
6af544afde Final fix for exploration merge (#7250)
* fix exploration merge

* use pool

* fix exploration

* add login
2019-09-17 16:25:17 -07:00
Amir Omidi
dca21bd3be Null/undefined check editors (#7084)
* Null check editors

* Add console.errors to the null checks

* Change promises

* Fix typo

* Add output type & change returns
2019-09-17 16:19:47 -07:00
Chris LaFreniere
9b82b101cd Fix for notebook line height (#7248) 2019-09-17 15:41:51 -07:00
Anthony Dresser
47a14bbbff fix exploration merge (#7247) 2019-09-17 15:16:03 -07:00
Cory Rivera
094d6f2339 Update python packages to use sparkmagic 0.12.9 (#7240) 2019-09-17 15:05:59 -07:00
Anthony Dresser
290dd9531f add explore merge build (#7241) 2019-09-17 14:40:56 -07:00
Chris LaFreniere
141226332c Add notebook grid actions (#7181)
* Add notebook grid actions

* pr comments
2019-09-17 14:16:35 -07:00
Udeesha Gautam
7e0a5205b2 Fix Failng dacpac and SC integration tests (#7245) 2019-09-17 14:11:23 -07:00
Aditya Bist
c6c863cd84 commiter work (#7244)
* fix incorrect css and removed redundant css warnings

* add gulp step to check all files

* added files file

* revert build to hygiene job

* keep css changes only
2019-09-17 14:10:38 -07:00
Anthony Dresser
28d453fced Implement a no sync rule (#7216)
* implement a no sync rule

* fix linting disable

* fix unused imports

* exclude more testing

* clean up fs usage

* clean up more fs usage

* remove duplicate of code

* fix compile errors
2019-09-17 13:32:42 -07:00
Chris LaFreniere
4d62983680 Add Default File Type when Saving Chart (#7235)
* add file filter

* Code cleanup
2019-09-17 10:38:39 -07:00
Anthony Dresser
d3ea9c3168 Implement use strict linting (#7223)
* implement use strict linting

* commit changes

* add additional check for strict
2019-09-16 17:36:31 -07:00
Charles Gagnon
603a79d094 Fix moved config (#7231) 2019-09-16 16:24:28 -07:00
Amir Omidi
16481927e8 EoL chars (#7225) 2019-09-16 15:53:59 -07:00
Cory Rivera
6f06c18014 Lighten colors used for inline notebook buttons in dark themes. (#7230) 2019-09-16 15:27:56 -07:00
Karl Burtram
7868afb4fd Activate XML features when SQL loads (#7228) 2019-09-16 14:34:58 -07:00
Anthony Dresser
66d4d5c73f revert changes to build files (#7227) 2019-09-16 14:12:35 -07:00
Anthony Dresser
075479274d Readd sql linting (#7217)
* readd sql linting

* add skip linting for pipeline hygiene
2019-09-16 10:59:28 -07:00
Charles Gagnon
bae797f975 Fix config path (#7220) 2019-09-16 09:37:02 -07:00
Anthony Dresser
ea0f9e6ce9 Merge from vscode 64980ea1f3f532c82bb6c28d27bba9ef2c5b4463 (#7206)
* Merge from vscode 64980ea1f3f532c82bb6c28d27bba9ef2c5b4463

* fix config changes

* fix strictnull checks
2019-09-15 22:38:26 -07:00
Karl Burtram
fa6c52699e Remove sqlops referece from server reports extension (#7212) 2019-09-13 20:43:59 -07:00
jamesrod817
209d7e48d8 Tempdb (#7022)
* Server changes by James

* tempdb
2019-09-13 16:19:48 -07:00
Charles Gagnon
0bd3e1b0e1 Fix query-history README links (#7205)
* Fix README URLs

* different fix
2019-09-13 15:24:14 -07:00
Anthony Dresser
9229b26b9e Rename some build steps (#7202)
* rename some build steps

* unify naming
2019-09-13 13:52:01 -07:00
Maddy
29dbce079b Fix/replace wrong imports (#7158)
* replaced fs with IFileService

* work around for URI with relative paths

* updates to comments

* renamed existsSync to exists

* await on promise inside non-async method

* .then change

* await async calls

* removed the old code

* include everthing in .then

* remove file exists check

* added _ for consistency

* use path.abosult method

* fixed the cleanIrl calls back and path.sep change

* reverted path.sep for now
2019-09-13 13:11:18 -07:00
Amir Omidi
86df538db9 Specialized clipboard service (#7195)
* Specialized clipboard service
2019-09-13 13:07:00 -07:00
Anthony Dresser
d9c5b7ea9e Clean up some more disposable usage (#7190)
* clean up some more disposable usage

* fix a bug

* add more to register
2019-09-13 12:28:33 -07:00
Anthony Dresser
c9128d56c0 Handle some promises better in cms (#7166)
* handle some promises better in cms

* 💄
2019-09-13 12:28:16 -07:00
Charles Gagnon
888755e842 Add abillity to open to specific item within a Jupyter book (#7155)
* Add abillity to open to specific item within a Jupyter book

* Move helper method into BookTreeItem class

* Fix default URL path

* Add typing to Jupyter book code

* Update comment and typings

* Fix compile error and cleanup
2019-09-13 11:51:15 -07:00
Charles Gagnon
3ac096b3b1 Fix ModelView tests (#7193) 2019-09-12 17:17:58 -07:00
Charles Gagnon
7ebd1eb053 Revert accidently change to sql.bat (#7194) 2019-09-12 17:03:57 -07:00
Chris LaFreniere
2128851bdf Add title to table (#7182) 2019-09-12 14:57:39 -07:00
Anthony Dresser
823d136a00 No browser from common (#7178)
* no browser from common

* clean up some imports
2019-09-12 14:52:42 -07:00
Charles Gagnon
a67e62b2d0 Add margin to BDC Dashboard pages/nav (#7129) 2019-09-12 13:25:26 -07:00
Benjin Dubishar
d262ea21e3 Addresses accessiblility bug by converting editable dropdowns to normal when in accessible mode (#7159)
* Automatically disabling editability on extension dropdowns when in accessible mode

* correcting variable name type
2019-09-12 11:08:05 -07:00
Elliot Boschwitz
aaf115a5c8 Dacpac extension announces invalid text inputs in screen reader mode (#7133)
Text input boxes will have an updated aria-label with a given error message if the input is invalid.
2019-09-12 11:05:56 -07:00
Charles Gagnon
206c5146e1 BDC Dashboard Style Updates (#7140)
* Style updates

* Add highlight line under resource group tabs

* Fixes

* Update font weight to semi-bold (600)
2019-09-12 09:15:25 -07:00
Amir Omidi
abe917f3c1 Better cell selection (#6914)
* Better cell selection

* Explicit return type and undefined assignment

* More complex copy/paste

* Get TS to be less mad at me

* Remove EoL

* Fail safe if statement

* strict null check
2019-09-11 18:23:49 -07:00
Charles Gagnon
0793e11b04 Update to the latest merged VS Code version (#7154) 2019-09-11 15:35:38 -07:00
Karl Burtram
9df66deb81 Initial LiveShare extension scaffolding (#7170)
* LiveShare initial shared connection

* Various cleanups

* Fix type

* Fix hygiene
2019-09-11 15:24:08 -07:00
Charles Gagnon
9765b0ed8e Bump extension versions (#7168) 2019-09-11 15:22:35 -07:00
Amir Omidi
83c9c3f618 New rule to stop floating promises (#7165)
* Rules surrounding promises
2019-09-11 14:25:21 -07:00
Charles Gagnon
dd5dd12ee6 Minor notebook cleanup (#7156)
* Minor notebook cleanup

* Undo fix to getBooks
2019-09-11 14:12:32 -07:00
Charles Gagnon
b68fd91a02 Update query history README (#7164)
* Update query history README

* Fix typos
2019-09-11 13:57:55 -07:00
Charles Gagnon
4270547147 Remove custom tree indent guide (#7119) 2019-09-11 09:58:55 -07:00
Charles Gagnon
c4b90360a5 Query History feature (#6579)
* Initial commit

* Fix up QueryEventType

* Making query history visible in view and open query command (#6479)

* Add QueryInfo to query event events

* Pull actual query text/connection info for displaying

* cons and expand (#6489)

* Making query history visible in view and open query command

* expand and icons

* Failure icon enabled (#6491)

* Making query history visible in view and open query command

* expand and icons

* failure icon enabled

* Minor cleanup

* Open query with connection and add run query (#6496)

* Add initial query-history extension

* Fix issues caused by master merge, cleanup and add query-history extension (#6567)

* Open query with connection and add run query

* Fix issues caused by latest master merges, cleanup and add query-history extension

* Remove child nodes (#6568)

* Open query with connection and add run query

* Fix issues caused by latest master merges, cleanup and add query-history extension

* Remove child node expansion

* Layering movement and add delete action (#6574)

* Open query with connection and add run query

* Fix issues caused by latest master merges, cleanup and add query-history extension

* Remove child node expansion

* Some layering movement and add delete action

* Move query tracking into service (#6578)

* Open query with connection and add run query

* Fix issues caused by latest master merges, cleanup and add query-history extension

* Remove child node expansion

* Some layering movement and add delete action

* Move query history tracking into service

* Add comment

* Fix actions

* Remove unnecessary type

* cleanup

* Remove unused section of README

* Fix merge issues and address PR comments

* Fix compile and tslint errors

* Change startup function name
2019-09-11 08:23:59 -07:00
Kim Santiago
7d49e75e46 make wizard page names get announced by screen reader (#7040) 2019-09-10 14:59:16 -07:00
Charles Gagnon
8db5bd438e Update iKey (#7150) 2019-09-10 13:43:44 -07:00
Karl Burtram
f6f18b68b5 Update readme for September release (#7096) 2019-09-10 10:19:39 -07:00
Maddy
ab8a9509b8 Books/fix relative links (#7083)
* fix to make relative links work on untitled notebooks

* changes to make the preb/next links to work

* show filename with extension
2019-09-10 09:43:00 -07:00
Karl Burtram
4dda5ee549 Bump ADS to 1.12.0 for October (#7139) 2019-09-09 15:43:01 -07:00
Udeesha Gautam
5ae8017233 Bug/accessibility 5 (#7008)
* fixing 6946 and 6796(second part)

* fix for https://github.com/microsoft/azuredatastudio/issues/6726

* comments cleanup

* taking PR comments

* adding strong border for HC focus

* convert to string template
2019-09-09 15:37:12 -07:00
Benjin Dubishar
66cdbbb335 Automatically focus the execute button in the DacFx wizard summary screens (#6984)
* Focus piping for extension buttons

* Focus the done button when entering the summary page for DacFx wizard

* Adding internal value resets for extension-side button model.

* Correcting remark string
2019-09-09 14:57:28 -07:00
Kim Santiago
3e9b694e6f Update dacpac and schema compare extensions to not use deprecated workspace.rootPath (#7125) 2019-09-09 13:21:35 -07:00
Alan Ren
b1eef13bb0 Update apiWrapper.ts (#7132)
remove the usage of workspace.rootPath, this is not being used.
2019-09-09 11:30:03 -07:00
Kim Santiago
82f93f7da5 remove non-descriptive tooltips (#7099) 2019-09-09 11:03:14 -07:00
Charles Gagnon
119008d05d Add metadata to Agent package.json (#7116) 2019-09-09 10:26:41 -07:00
Charles Gagnon
aeaac4bc17 Add ModelView ImageComponent (#7106)
* Add ModelView ImageComponent

* Remove duplicate property declarations

* Fix sqlops too
2019-09-08 18:29:30 -07:00
Charles Gagnon
789e26ae60 Add attach compound and align names (#7107) 2019-09-08 17:34:36 -07:00
Aasim Khan
b813ace79c Added opening latest notebook run to context menu from notebooks pane (#7066)
* added agent notebooks, notebook history view and view materialized notebook button

* Got a basic UI running for viewing notebook history

* made some changes to make UI look good

* Added new notebook dialog

* Added new notebook Dialog

* Added create notebook dialog

* Added edit and delete notebook job

* Added some notebook history features

* Added new notebook job icons, fixed a minor bug
in openmaterializednotebookAPI and added fixed the
schedule Picker API.

* Fixed Bugs in Notebook Grid expansion

* Fixed Notebook table highlighting and
grid generation is done using code.

* fixed some UI bugs

* Added changes to reflect sqltoolservice api

* Fixed some localize keys

* Made changes in the PR and added
ability to open Template Notebooks from
notebook history view.

* Added pin and renaming to notebook history

* made some library calls async

* fixed an import bug caused by merging from master

* Validation in NotebookJobDialog

* Added entry points for scheduling notebooks
on file explorer and notebook editor

* Handled no active connections and
a small bug in collapsing grid

* fix a bug in scheduling notebook from explorer
and toolbar

* setting up agent providers from connection now

* changed modals

* Reupload edited template

* Add dialog info, solved an edit bug and localized
UI strings.

* Bug fixes in UI, notebook renaming and
editing template on fly.

* fixed a bug that failed editing notebook jobs from notebook jobs table

* Fixed a cyclic dependency, made strings const and
some other changes in the PR

* Made some cyclic dependency and some fixes from PR

* made some changes mentioned in the PR

* Changed storage database health text

* Changed the sqltoolservice version to the point to the latest build.

* Added open Latest notebook notebook run to notebooks view context menu

* Fixed a small compilation error

* fixed a spelling mistake in function name

* made changes mentioned in the PR added open Notebook Functionality to charts

* Changed some context menues strings and order

* made some changes from the PR and fixed an API call

* made some changes mentioned in the PR

* Changed sqltoolsservice version to point to the latest build
2019-09-06 17:27:41 -07:00
Anthony Dresser
02f497712d clean up some promise use in cms (#7004) 2019-09-06 15:58:47 -07:00
Kim Santiago
fda4ba81c3 bump sqltoolsservice version to get DacFx fix for DW (#7102) 2019-09-06 10:18:03 -07:00
Hannah Qin
e7a9d34ecd Fix command palette keyboard shortcut in README.md (#6601)
Correcting keyboard shortcut for the command palette in the French lang pack README: changing from "Ctrl+Alt+P" to "Ctrl+Shift+P"
2019-09-05 16:11:29 -07:00
Aditya Bist
485cb43a34 fix issue where sometimes ownerUri was null (#7094) 2019-09-05 15:36:51 -07:00
Cory Rivera
3281d28de7 Disable 'should not be dirty after saving notebook' test in notebook integration tests. (#7091) 2019-09-05 15:34:43 -07:00
Aditya Bist
856833dbc4 fix disconnect option for extension nodes (#7085) 2019-09-05 13:48:47 -07:00
Charles Gagnon
15f1945f31 Localize some missed status messages (#7076)
* Localize some missed status messages

* More service text updates
2019-09-05 11:49:39 -07:00
Charles Gagnon
b1f29a8c92 Don't add unnecessary separator to OE action menu (#7071)
* Don't add unnecessary separator to OE action menu

* Fix another check
2019-09-05 09:22:53 -07:00
Maddy
cbbd4ffbb6 make books viewlet only available in insiders (#7055)
* make books viewlet only available in insiders

* insiders only: Books widget on dashboard
2019-09-05 09:20:03 -07:00
Karl Burtram
e2ea397fb9 Fix agent extension version back to 0.42.0 (#7068) 2019-09-04 17:18:38 -07:00
Aditya Bist
6a4c9b4108 fix cms server deletion from memento (#7062) 2019-09-04 15:45:06 -07:00
Amir Omidi
a61c86bff5 Remove the eol character at the end of string (#7056) 2019-09-04 15:30:46 -07:00
Aditya Bist
35b09542e2 removed separator from context menu (#7059)
* removed separator from context menu

* remove unused import
2019-09-04 15:29:27 -07:00
Udeesha Gautam
a57536be4b Trimming the text for SQLCMD button (#7050) 2019-09-04 15:25:41 -07:00
Aasim Khan
fbb2accacb Agent Notebooks Scheduler (#6786)
* added agent notebooks, notebook history view and view materialized notebook button

* Got a basic UI running for viewing notebook history

* made some changes to make UI look good

* Added new notebook dialog

* Added new notebook Dialog

* Added create notebook dialog

* Added edit and delete notebook job

* Added some notebook history features

* Added new notebook job icons, fixed a minor bug
in openmaterializednotebookAPI and added fixed the
schedule Picker API.

* Fixed Bugs in Notebook Grid expansion

* Fixed Notebook table highlighting and
grid generation is done using code.

* fixed some UI bugs

* Added changes to reflect sqltoolservice api

* Fixed some localize keys

* Made changes in the PR and added
ability to open Template Notebooks from
notebook history view.

* Added pin and renaming to notebook history

* made some library calls async

* fixed an import bug caused by merging from master

* Validation in NotebookJobDialog

* Added entry points for scheduling notebooks
on file explorer and notebook editor

* Handled no active connections and
a small bug in collapsing grid

* fix a bug in scheduling notebook from explorer
and toolbar

* setting up agent providers from connection now

* changed modals

* Reupload edited template

* Add dialog info, solved an edit bug and localized
UI strings.

* Bug fixes in UI, notebook renaming and
editing template on fly.

* fixed a bug that failed editing notebook jobs from notebook jobs table

* Fixed a cyclic dependency, made strings const and
some other changes in the PR

* Made some cyclic dependency and some fixes from PR

* made some changes mentioned in the PR

* Changed storage database health text

* Changed the sqltoolservice version to the point to the latest build.
2019-09-04 15:12:35 -07:00
Charles Gagnon
0a393400b2 Register loadCompletionExtension command (#6985) 2019-09-04 15:02:47 -07:00
Charles Gagnon
8b5ce753e4 More BDC updates (#6990) 2019-09-04 13:49:08 -07:00
Karl Burtram
f05b9396e8 Update extension versions for September (#7053) 2019-09-04 13:17:11 -07:00
DrewSK
6670fe8c1c fix(snippets): ads parenthesis to sqlcreateindex snippet (#7020) 2019-09-04 10:26:54 -07:00
Anthony Dresser
b8518f5795 Add pipeline args for testing (#7028)
* add pipeline args for testing

* fix test publish step

* simplify some testing code

* change coverage reporters

* fix coverage reports
2019-09-03 17:59:19 -07:00
Cory Rivera
c94291af52 Update CSS for inline notebook cell buttons (#7033) 2019-09-03 17:18:32 -07:00
Anthony Dresser
1d6f48806e fix index for panel push (#7035) 2019-09-03 17:17:23 -07:00
Chris LaFreniere
4626f37671 Notebooks: Fix double-click to edit with source as array (#7027)
* Fix dbl click to  edit with source as array

* Fix equality check
2019-09-03 10:37:19 -07:00
Amir Omidi
33a7fe38e1 Revert "Revert "OE clicking and awaiting the expansion calls"" (#6923)
* Revert "Revert "OE clicking and awaiting the expansion calls" (#6921)"

This reverts commit b9e3a468ae.

* Handle edge cases better

* Polling for OE load time
2019-09-03 10:31:29 -07:00
Udeesha Gautam
a5c824a318 fixing two backup issues - opening context of dialog and footer color (#7025) 2019-09-03 10:17:08 -07:00
Anthony Dresser
30df1d8b0f Fix pipeline electron download (#7023)
* add testing logging

* testing

* testing

* testing

* update env to work correctly

* add env to yarn as well

* remove unnecessary change
2019-08-30 17:13:51 -07:00
Chris LaFreniere
97a583e965 Ensure context key provider set before session (#7024) 2019-08-30 15:32:55 -07:00
Cory Rivera
f1f8ef4734 Update Resource Type Service Tests to use correct number of resource types. (#7021) 2019-08-30 13:36:02 -07:00
Anthony Dresser
ee1d5680a7 Build Cache (#7011)
* add build caching

* test caching
2019-08-30 11:34:43 -07:00
Anthony Dresser
b6e7ec51f0 update build status badge (#7009)
* update build status badgfe

* dummy update

* dummy update

* wip

* wip

* wip

* wip

* wip

* wip
2019-08-29 21:34:14 -07:00
Chris LaFreniere
2d6f69da1c no mathjax (#6995) 2019-08-29 18:07:05 -07:00
Kevin Cunnane
f51f1989aa Add connect protocol handler to SQL command line service (#7007)
- This already handles commandline which needs same logic
- Includes visual confirmation to avoid connecting by default to untrusted server
- If successful will connect & expand in Connections tree
- If failed, will show dialog with all presets
- Shows New Query by default, can add option for New Notebook instead in the future

Connection protocol is `azuredatastudio://connect?server=mysqldw.database.windows.net&database=db1&user=myusername&aad=true`
Same args as commandline, namely:
- server
- database
- user
- aad
- integrated

I have also added `provider` arg to allow non-MSSQL providers. In the future, we should update logic to prompt for install of correct extension for that provider if it's missing.
2019-08-29 17:26:50 -07:00
Udeesha Gautam
9b003ad285 Passing test sc service to unit test (#7006)
* passing test sc service to for UT execution
2019-08-29 17:22:14 -07:00
Anthony Dresser
947ac1fbf2 Fix context menu positioning. (#6992)
* hack in default actions into menu

* fix tests
2019-08-29 12:12:14 -07:00
Benjin Dubishar
faf6eae535 Inform screen-readers of Dacpac Deploy loading and loading complete for summary (#7000)
* Loading components now announce themselves.  Likely need way to disable.

* Adding focus elements to table for screen-reading after component is loaded in

* Adding piping for aria roles on tables

* Alerting on completion of deploy plan summary

* Removing extra ariaLive property
2019-08-28 14:42:40 -07:00
Chris LaFreniere
40d5667e63 Don't Inform extHostNotebookDocuments Unnecessarily on Cell Source Changes (#6981)
* Dont tell exthostnotebookdocuments on cell source

* Update comment
2019-08-28 11:49:57 -07:00
Kim Santiago
953bd064bc fix wrong dacfx wizard radio button count (#6991) 2019-08-28 10:11:03 -07:00
Chris LaFreniere
50a0b6e115 Stop Using os library in NotebookTextFileModel (#6993)
* Stop using os library

* small fix
2019-08-27 20:45:30 -07:00
Charles Gagnon
e96b1796b3 Make service names clickable tab links (#6987)
* Make sql master link clickable that opens connection

* Improve comments and fix break

* Show error message if failed to connect and clear username

* Make service names clickable tab links

* Remove key handler event again
2019-08-27 17:45:38 -07:00
Charles Gagnon
99350210d7 Make sql master link clickable that opens connection (#6982)
* Make sql master link clickable that opens connection

* Improve comments and fix break

* Show error message if failed to connect and clear username

* Remove key handler - text doesn't even get focus currently so this isn't doing anything
2019-08-27 17:39:05 -07:00
Chris LaFreniere
4e25bc9396 os.EOL instead of hardcode \n for fast notebook source changes (#6986)
* os.EOL instead of hardcode \n

* test fixes
2019-08-27 17:36:07 -07:00
Anthony Dresser
65b315bf4c fix icons (#6976) 2019-08-27 16:22:32 -07:00
Kevin Cunnane
4d19610c94 Fix #6845 Notebook: Pyspark3 links incorrectly mapped when AD enabled (#6885) 2019-08-27 14:28:14 -07:00
Charles Gagnon
a27b759b10 Add styling to selected tabs in BDC Dashboard (#6978)
* Change cursor over tabs to be hand (pointer)

* Change hyperlink color

* Hook up CSSStyles to be updated from extension side and make BDC dashboard tabs change style when selected

* Remove unused file

* Add back in call to updateStyles

* Fix typos
2019-08-27 14:14:46 -07:00
Amir Omidi
1e217094a7 Fix/6799 (#6979)
* remove IEditorProgressService

* Remove the import
2019-08-27 13:24:03 -07:00
Maddy
ae3b16024d version bump (#6975) 2019-08-27 12:20:25 -07:00
Maddy
04622d4cb3 azdata updates and relative formatting updates (#6970)
* azdata updates and relative formatting updates

* bigdatacluster case fix

* only upgrade pandas to 24.2 if it's lower

* rename bigdatacluster to caps
2019-08-27 11:51:34 -07:00
Alan Ren
0e9218ef5f update string (#6972) 2019-08-27 11:37:17 -07:00
Cory Rivera
8031f8b199 Insert generated cell in Analyze in Notebook at index 0, rather than replacing first cell's contents. (#6965) 2019-08-27 11:19:17 -07:00
Chris LaFreniere
f6140ebd11 Only show options on Controller viewlet (#6964) 2019-08-26 19:20:05 -07:00
Anthony Dresser
507bae90b7 Merge from vscode 91e99652cd5fcfc072387c64e151b435e39e8dcf (#6962) 2019-08-26 15:58:42 -07:00
Alan Ren
edf470c8fa update notebook for RC (#6961) 2019-08-26 15:34:20 -07:00
Maddy
8eab999e52 version bump (#6959) 2019-08-26 14:07:25 -07:00
Anthony Dresser
323e62c967 Utilize test skipping to reduce merge conflicts (#6937)
* utilize test skipping to reduce merge conflicts

* fix compile error
2019-08-26 13:05:19 -07:00
Charles Gagnon
83567d1a51 Fix build break (#6957) 2019-08-26 12:06:57 -07:00
Kim Santiago
9acbf48635 Bumping schema compare extension version (#6955)
* bumping schema compare extension version

* bump azdata dependency
2019-08-26 11:57:30 -07:00
Alan Ren
f70ee0c229 update strings (#6954) 2019-08-26 11:44:05 -07:00
Charles Gagnon
eea9d13350 Update and align endpoint names (#6953) 2019-08-26 11:39:46 -07:00
Charles Gagnon
877a71d673 Remove BDC view feature flag (#6952) 2019-08-26 11:09:18 -07:00
Chris LaFreniere
84b3e876d7 Notebook Performance Improvements to Cell Editing/Output Changes/Execution Count Changes (#6867)
* edit perf

* Save multiline source in notebooks

* More merges

* Single, multi line works needs work

* Works with single + multi and recomputes active

* Actual perf improvements this time

* code cleanup

* Calculating output position on the fly

* Hmm can we use brackets to make this simpler?

* monday progress

* output working. lots of improvements.

* First tests working

* 10 tests now, fixed bugs

* Cleanup, add output test

* More fixes

* Need to still fix execution count bug

* Tests pass, added comments

* Cleanup

* PR comments round 1

* Deal with merge issues from master, layering

* Deleting duplicate file

* More PR Comments

* PR Comments
2019-08-26 10:17:58 -07:00
Cory Rivera
4afa282ef9 Add Insert Cell actions back into cell overflow menu in Notebooks. (#6930) 2019-08-26 09:57:52 -07:00
Maddy
b1ebf60836 skip book tests for now (#6951) 2019-08-26 09:51:20 -07:00
Anthony Dresser
92a3acbfe8 Merge from vscode e3b9b8eefc062d68ba8a4b6a817162d132f3b533 (#6932)
* Merge from vscode e3b9b8eefc062d68ba8a4b6a817162d132f3b533

* skip failing test

* add comment
2019-08-24 00:19:48 -07:00
Charles Gagnon
023d06d114 Further BDC Dashboard Updates (#6926)
* BDC Dashboard updates

* Add service health status view details

* Add sanity check to endpoint fixing logic for SQL dashboard as well
2019-08-23 17:46:26 -07:00
Anthony Dresser
5513f0badd Change icon for accounts (#6924)
* change icon for accounts

* revert back octicon labels until vscode fixes person-filled
2019-08-23 17:13:17 -07:00
Maddy
82a80e7199 update icon (#6920) 2019-08-23 17:07:13 -07:00
Charles Gagnon
b9e3a468ae Revert "OE clicking and awaiting the expansion calls" (#6921) 2019-08-23 15:27:05 -07:00
Anthony Dresser
5b9a08359d remove circular dependency between server group and connection management (#6916) 2019-08-23 14:53:54 -07:00
Cory Rivera
d6950fa4b7 Skip URL parsing when rendering empty links in Notebooks. (#6889) 2019-08-23 14:51:01 -07:00
Alan Ren
9b7a7bd9dc Alanren/extension install (#6918)
* fix extension install

* fix azure account open url issue
2019-08-23 14:50:08 -07:00
Lucy Zhang
7f32473a10 Books/ Unit Tests for error handling (#6817)
* added tests for getBooks and getTableOfContents

* update tests for new getTableOfContents method

* wait for all toc.yml to be found

* add event to signal all toc.yml files read

* add workspae folder parameter back

* remove toc filter

* added timeout logic

* added test for invalid toc.yml

* added tests for invalid toc.yml file format

* added tests for error handling

* update uuid package

* increase timeout time

* change workspacefolder to string
2019-08-23 14:46:52 -07:00
Maddy
9274f223f0 Nb/open book without reload (#6635)
* initial commit

* fix: added initialize method to fix the previous/next links rendering

* added checks

* open first markdown/ipynb in the book ans expand the view

* added launch book from command pallete, removed the pick folder and save option added launching the first notebook/markdown

* moved the open book command pallet action from mssql to notebooks

* open as untitled to true

* opening markdown files issue fix

* removed opening as untitled files

* open ipynb files as untitled and changes for previous&next links to work

* add books as seperate viewlet

* localize double quote issues and renamed treeCollapsibleState

* renames and added logic to conditionally show Preview command

* moved registerCommands from widget to extension contribution

* isEditorUntitled check

* async comment updates

* formatting issues.

* promisfying the async calls

* moved existsAsync to top
2019-08-23 11:19:35 -07:00
Anthony Dresser
1a39fdae24 remove systemjs typings (#6894) 2019-08-23 11:11:19 -07:00
Udeesha Gautam
79af62f65b update SqlToolsService Version for Schema compare AAD changes (#6910)
update SqlToolsService Version for Schema compare AAD changes
2019-08-23 10:47:13 -07:00
Benjin Dubishar
5b75061bf0 Adding new aria properties to extHostModelView (#6881) 2019-08-23 10:37:14 -07:00
Arvind Ranasaria
bb4248c459 Adding retries to install-ssmsmin and install-sqltoolsservice for download/install failures (#6880)
* Changes to enable retry for Service downloader.
* removing 'enabled' flag from the "retry" config.
*  use 0.1.7 release of service-downloader which enables the retry feature.
2019-08-23 09:32:06 -07:00
Anthony Dresser
658cf51887 Merge from vscode 0f73473c08055054f317c1c94502f7f39fdbb164 (#6892)
* Merge from vscode 0f73473c08055054f317c1c94502f7f39fdbb164

* fix tslinting
2019-08-22 22:07:01 -07:00
Udeesha Gautam
1372cbaee1 Bug/Accessibility fix for 6796 (partial), 6800 and 6745 (#6882)
* fix for https://github.com/microsoft/azuredatastudio/issues/6796 (partial) and https://github.com/microsoft/azuredatastudio/issues/6800 and checkbox regression

* fix for https://github.com/microsoft/azuredatastudio/issues/6745
2019-08-22 17:31:06 -07:00
Charles Gagnon
faabcb43f9 BDC Dashboard updates (#6888)
* BDC Dashboard updates

* PR comments
2019-08-22 17:14:59 -07:00
Anthony Dresser
82a8f09709 Isolate more features (#6854)
* working; new query and scripting

* working; removing manage from menus and combining data explorer contributions

* consolidate dashboard contributions; move manage action to dashboard contributions; make groupings the same

* fix notebook actions not firing

* fix notebook actions

* notebooks working

* move backup and restore entry points into their own file; move explorerwidget contribution into their respective files

* fix tests

* move extension actions to their own file

* fix tests

* change tests
2019-08-22 16:54:30 -07:00
Lucy Zhang
36244ed517 Added console logs for Book unit tests (#6876)
* added logs

* use uuid for random path name
2019-08-22 16:53:01 -07:00
Anthony Dresser
26a22fa00e fix off by 1 error (#6886) 2019-08-22 16:07:02 -07:00
Cory Rivera
7beddeb999 Re-add carbon edit for handling undefined proxy in extHostTreeViews. (#6883) 2019-08-22 15:49:47 -07:00
Benjin Dubishar
887b2bfd2b Adding aria-live label support for input boxes (#6862)
* Adding aria-live support for InputBoxes

* Adding aria-live setting for DacFx wizard InputBox control

* Dud commit to unstick Github CI
2019-08-22 14:01:19 -07:00
Amir Omidi
ab9c4e0cbd Revert "Revert "OE clicking and awaiting the expansion calls (#6761)" (#6866)" (#6875)
This reverts commit a8d831d32e.
2019-08-22 13:16:39 -07:00
Udeesha Gautam
1a97313d19 fix for https://github.com/microsoft/azuredatastudio/issues/6729 (#6863)
Tables in Extensions need a way to override tab so that tabbing in table cells is not possible and tabbing takes control out of Table - this is the accessibility requirement for tables not having actionable cells. Keeping it as a switch so that we can continue having older behavior where needed.
2019-08-22 11:42:09 -07:00
Kim Santiago
5b94f8c4a7 add title to schema compare differences table (#6834) 2019-08-22 11:37:47 -07:00
Anthony Dresser
8e070454c3 Global object linting (#6857)
* add more linting

* fix linting issues
2019-08-22 10:51:59 -07:00
Udeesha Gautam
854508e940 Bug/accessibility - Focus related issues (#6859)
* fix for https://github.com/microsoft/azuredatastudio/issues/6798

* fix for https://github.com/microsoft/azuredatastudio/issues/6851
2019-08-22 10:29:27 -07:00
Charles Gagnon
09552c5f15 Fix OE tests (#6873) 2019-08-22 08:06:31 -07:00
Amir Omidi
a8d831d32e Revert "OE clicking and awaiting the expansion calls (#6761)" (#6866)
This reverts commit b731c56076.
2019-08-21 22:21:54 -07:00
Anthony Dresser
985bfae8a0 Merge from vscode e558dc6ea73a75bd69d7a0b485f0e7e4194c66bf (#6864) 2019-08-21 20:44:59 -07:00
Charles Gagnon
d2ae0f0154 Temporarily remove failing test (#6865)
* Disable book tests

* Remove tests completely
2019-08-21 20:26:14 -07:00
Kevin Cunnane
c107c154ef increase service endpoints table height (#6861)
- Increate height so rows are not truncated
2019-08-21 18:33:52 -07:00
Kevin Cunnane
017ed93061 Fix HDFS AD write support + improve error logging (#6855)
* Fix HDFS AD write support + improve error logging
- Implemented write stream piping correctly so data is paused until we're ready to push to server
- During testing, noted that things weren't awaited correctly. Tweaked some functions to improve this

* Use correct content type
2019-08-21 15:23:17 -07:00
Kim Santiago
8e668b657c add names for schema compare dialog (#6856) 2019-08-21 15:20:07 -07:00
Charles Gagnon
b075b035ab Fix custom tree views not displaying (#6858) 2019-08-21 15:03:52 -07:00
Amir Omidi
b731c56076 OE clicking and awaiting the expansion calls (#6761)
* Server selection with proper awaits

* Handle keyboard clicks immedietely.

* Clean up the event a little more

* Eat the event if its not mouse or keyboard
2019-08-21 10:25:52 -07:00
Amir Omidi
baa482bd79 Fallback to text if xml parser fails parsing (#6657) 2019-08-21 10:24:46 -07:00
Anthony Dresser
85bf22322f Isolate features (#6792)
* working; new query and scripting

* working; removing manage from menus and combining data explorer contributions

* consolidate dashboard contributions; move manage action to dashboard contributions; make groupings the same

* fix notebook actions

* fix tests
2019-08-21 09:51:02 -07:00
Charles Gagnon
3fde278ed2 Update events for insiders (#6807)
* Update events for insiders

* Add back in isBuilt check
2019-08-21 07:41:31 -07:00
Anthony Dresser
ecb80f14f0 Merge from vscode 6e530127a1bb8ffbd1bfb77dc680c321dc0d71f5 (#6844) 2019-08-20 21:07:47 -07:00
Kevin Cunnane
1f00249646 Fix HDFS with AD auth for browse, read file scenarios (#6840)
* Fix HDFS with AD auth for browse, read
- HDFS now fully supports expanding nodes for all levels, including using cookie for auth
- HDFS now support reading files from HDFS
- HDFS write file is broken and will be fixed (either in PR update or separate PR)
- Removed hack to use gateway-0 instead of actual DNS name now these are supported. Needed for testing

* Fix Jupyter error using new DMV with endpoints
2019-08-20 18:12:38 -07:00
Benjin Dubishar
29c5977281 Adding role="presentation" to all formContainers to silence the announcement of "table". (#6838) 2019-08-20 17:03:29 -07:00
Charles Gagnon
3fd487cfa2 Fix file URI input (#6837)
* Fix QueryInput URI to work with transformers

* Fix input for results as well
2019-08-20 16:30:46 -07:00
Charles Gagnon
8724944d26 Version bump (#6839) 2019-08-20 16:29:54 -07:00
Charles Gagnon
b7b01fafd0 BDC Dashboard WIP (#6812)
* Further work on dashboards

* More work on dashboard

* Undo adding manage to context menu until feature is complete

* Update cluster status name
2019-08-20 16:06:05 -07:00
Kim Santiago
8fbbd5127c Add aria labels to '•••' buttons in dacfx and schema compare (#6814)
* adding aria label to '•••' buttons in dacfx and schema compare extensions

* add tooltips and more descriptive labels

* fix typo
2019-08-20 15:18:18 -07:00
Kim Santiago
f64c2775b0 set aria-label for radio buttons (#6835) 2019-08-20 15:17:37 -07:00
Alan Ren
7bd8a6f2b1 Alanren/sql on windows (#6785)
* download file

* add entry

* fix issues

* add 2019

* string updates

* make dialog self contained

* expose notebook input dialog

* refactoring

* add log and correct the url

* comments
2019-08-20 14:45:27 -07:00
Anthony Dresser
c540e81108 clean up some disposable use (#6832) 2019-08-20 14:34:13 -07:00
Chris LaFreniere
54cf062737 Fix Notebook Connection Issues (#6831) 2019-08-20 13:40:15 -07:00
Benjin Dubishar
949ea4b6c3 Adds ariaRowcount to virtualized tables in SchemaCompare options (#6816)
* Adds button extension for explicitly setting aria-label, in case the label is not screen-reader friendly

* Explicitly set aria-label for ellipsis buttons in SchemaCompare

* Changing localize call to double-quotes

* Removes unused getter for ariaLabel

* Adding aria-rowcounts for long scrollable tables
2019-08-20 13:17:13 -07:00
Kim Santiago
4fb53622bc disable failing schema compare dacpac to database test (#6828) 2019-08-20 13:08:15 -07:00
Udeesha Gautam
9117b02c72 Feature/sqlcmd - ADS changes to enable SQLCMD (#6555)
* Basic SQLCMD functionality to run query and toggle mode

* icons and  some cleanup

* Adding PR comments
2019-08-20 11:40:16 -07:00
Udeesha Gautam
c513204501 Bug/accessibility 1 (#6774)
* fixing simple name changes

* Fixing button color and tabbing on tabs

* removing some extra lines of code

* Adding some null checks

* Updating as per PR comments
2019-08-20 10:11:34 -07:00
Lucy Zhang
23ed1e9123 Book Tests: Increase time for toc.yml search. (#6815) 2019-08-19 17:38:10 -07:00
Benjin Dubishar
77bf228809 Improve narration for backup and dacpac UIs (#6783)
* Added ability to specify aria-rowcount and -colcount to tables.

* Cleanup

* Adds aria role to table container so that screen-readers ignore it
2019-08-19 16:51:38 -07:00
Anthony Dresser
986ad33678 Remove dacfx and schema compare from the azdata api (#6684)
* refactor mssql extension to directly expose dacfx and schema compare

* remove more code

* fix compile errors
2019-08-19 16:34:09 -07:00
Kim Santiago
87b0e08a6a Add name property for DacFx wizard edit text boxes (#6775)
* add name property for file location edit and version edit

* add aria label property for drop down component

* remove 'Edit' from aria labels
2019-08-19 14:36:13 -07:00
Alan Ren
0be1cf8b73 add valid uri prefix (#6810) 2019-08-19 14:03:13 -07:00
Anthony Dresser
0a78a2e117 move open data explorer viewlet action (#6808) 2019-08-19 13:56:26 -07:00
Anthony Dresser
ed264aae81 remove some more small differences (#6791) 2019-08-19 12:38:59 -07:00
Anthony Dresser
7f6839d38e change how we detect if a untitled query is valid (#6776) 2019-08-17 14:44:16 -07:00
Anthony Dresser
b4c2acb8d0 remove some diffs from vscode (#6780) 2019-08-17 14:43:51 -07:00
Anthony Dresser
6f037ce064 exclude kerberos from webpack (#6790) 2019-08-17 14:43:34 -07:00
Anthony Dresser
41d8663b09 Merge from vscode 70dc55955d586ebd427658b43cdb344f2047f9c2 (#6789) 2019-08-16 21:47:46 -07:00
Lucy Zhang
fb26126bcb Unit Tests for Books (#6676)
* added test for sections and navigation

* update variable names

* latest from master

* add await for creating file methods

* wait for all toc.yml to be found

* add event to signal all toc.yml files read

* add workspae folder parameter back

* remove toc filter

* use onReadAllTOCFIles event

* added timeout logic for getting toc.yml files

* latest from master

* new method for comparing book items
2019-08-16 17:01:43 -07:00
Alan Ren
4c24ea0f7d change got overwritten (#6788) 2019-08-16 16:59:26 -07:00
Alan Ren
076aa51524 control the auto refresh state (#6577)
* control the auto refresh state

* visual indicator when autorefresh is off
2019-08-16 16:36:03 -07:00
Kim Santiago
bae87a0a24 Fix #6771: Dacfx wizard summary page has wrong page number (#6778)
* fix summary page number for deploy new db

* also fix page number for upgrade

* add enum for page names
2019-08-16 11:25:07 -07:00
Cory Rivera
447f1ec616 Add installer file associations for Notebook .ipynb files. (#6768) 2019-08-16 10:49:14 -07:00
Kim Santiago
1f1a720e01 fix deploy filename changing when it shouldn't (#6777) 2019-08-16 10:46:32 -07:00
Lucy Zhang
f4d37a2bb8 fix toc path for windows (#6772) 2019-08-16 08:59:36 -07:00
Anthony Dresser
6f297efb88 Merge from vscode 1ce89e2cb720d69c496c2815c4696ee4fd4429a6 (#6779)
* Merge from vscode 1ce89e2cb720d69c496c2815c4696ee4fd4429a6

* redisable accounts because of issues
2019-08-15 23:56:46 -07:00
Anthony Dresser
fb4e3c6a05 merge sqlops and azdata (#6773) 2019-08-15 16:15:32 -07:00
Benjin Dubishar
b05e35bdd7 Benjind/schema compare add aria label (#6767)
* Adds button extension for explicitly setting aria-label, in case the label is not screen-reader friendly

* Explicitly set aria-label for ellipsis buttons in SchemaCompare

* Changing localize call to double-quotes

* Removes unused getter for ariaLabel
2019-08-15 15:14:37 -07:00
Alan Ren
314bd0e212 run the whole thing instead of current statement (#6757)
* run the whole thing instead of current statement

* backward compact
2019-08-15 13:43:08 -07:00
Karl Burtram
d4d11aa260 Update README and CHANGELOG for 1.10 release (#6766) 2019-08-15 10:09:58 -07:00
Anthony Dresser
58bfba4b47 Merge from vscode b12f623603e2fc1c5b3037115fa37c1a6acc4165 (#6760) 2019-08-15 02:19:31 -07:00
Anthony Dresser
4966ed8b42 Strict Null Checks on platform/accounts (#6735)
* add some patches for strict null

* renable strict null checks

* wip

* finish adding account to strict nulls

* fix backup component

* wip

* fix tests
2019-08-14 20:26:21 -07:00
Anthony Dresser
7b8530a21e Integrate into vscode node module factory workflow (#6685)
* integrate into vscode node module factory workflow

* add missing file

* fix compile errors

* fix compile errors

* change uppercase

* fix compile
2019-08-14 20:26:08 -07:00
Kevin Cunnane
fdac1d5382 Re-add AD auth for SQL big data cluster (#6759)
* Revert "Revert "Initial AD support for BDCs (#6741)" as it breaks linux (#6758)"

This reverts commit 51660b25ef.

* Install kerberos package on linux
2019-08-14 20:19:31 -07:00
Kevin Cunnane
51660b25ef Revert "Initial AD support for BDCs (#6741)" as it breaks linux (#6758)
This reverts commit 52f8984a99.
2019-08-14 19:16:52 -07:00
Kevin Cunnane
52f8984a99 Initial AD support for BDCs (#6741)
Partially working AD support for BDCs with some known issues
- Plumbed through kerberos support to Notebooks.
  - Using "gateway-0" for service temporarily as service endpoints API doesn't yet return correct DNS name. Will update in separate PR once available
- Plumbed kerberos auth to HDFS, Spark. Only partially working as we use same token on each call 
  - Will fix in separate PR, as this requires a refactor of WebHDFS library. Will need to either get new token every time or set a cookie, both of which require refactors
- Fixed error when Data Service node expansion failed and blocked all OE expansion
- Support for SqlToolsService change to use new cluster endpoints DMV
  -  Updated API to add new endpoints field to replace IP + port
  - Added logic to handle case where endpoints for Yarn, Grafana etc. are in the list
  - Sort list and use expected new localized strings

- Updated SqlToolsService to include support for new DMV
- Add "gateway-0" handling in Jupyter session as workaround for lack of domain names in endpoints list
2019-08-14 18:09:41 -07:00
Alan Ren
4e8c06f36d add sql password validation (#6715)
* add sql password validation

* refactor the code

* correct the user name for bdc, it is also sa

* comments
2019-08-14 16:33:22 -07:00
Amir Omidi
3bb70a7b1f Fix JSON on package.nls.json (#6754) 2019-08-14 13:07:59 -07:00
Amir Omidi
e4e46b3e87 Handle selection for multiple values in tree (#6569)
Handle OE clicking and double clicking with less logic and timeouts
2019-08-14 12:08:31 -07:00
Kim Santiago
8287e0dda5 Add optional title to tables (#6740)
* Add optional title to tables

* addressing comments
2019-08-14 11:12:18 -07:00
Amir Omidi
462b5d1d53 Fixes bug when opening the scheduler dialog (#6624)
Checks if the loading component is loaded before using it
2019-08-14 10:51:06 -07:00
Charles Gagnon
5528a90eaf Initial work for BDC Dashboard (#6646) 2019-08-14 10:17:01 -07:00
Anthony Dresser
82c1c57c76 Merge from vscode ec07311dab2556c9d66a4cb3eecdc21c524202e1 (#6739) 2019-08-13 19:14:03 -07:00
Udeesha Gautam
a645a09f42 Bug/restore query editor tabs (#6654)
* trial run for query editor temp file fix

* Fixing restore tabs bug with right layering

* Moving FileService change from vscode to our code
2019-08-13 18:41:25 -07:00
Matthew McCune
b5fdf8c2a7 Update row count as updates are received (#6642) 2019-08-13 18:31:34 -07:00
Karl Burtram
f48b9e1b41 Enable visualizer recommendaton prompt in stable build (#6737) 2019-08-13 18:01:00 -07:00
Anthony Dresser
7008e88678 Reenable strict null checks (#6716)
* add some patches for strict null

* renable strict null checks
2019-08-13 14:33:08 -07:00
Cory Rivera
60bf331f19 Correctly set focus on new Notebook cells after clicking on inline buttons. (#6708) 2019-08-13 14:14:18 -07:00
Anthony Dresser
e9c234a0ae Fix cms integration tests (#6734)
* attmpt to fix cms tests

* attmpt to fix cms
2019-08-13 14:11:48 -07:00
Alan Ren
1d52a83730 revert the icon (#6733) 2019-08-13 13:41:28 -07:00
Anthony Dresser
8e8b936da4 add sanity check when adding tables to the results (#6714) 2019-08-13 13:35:12 -07:00
Anthony Dresser
6fd4b5eaf2 Fix encoding of uris for data protocol (#6723)
* fix encoding or uris

* fix tests
2019-08-13 09:58:16 -07:00
Charles Gagnon
bb010b2e53 Bump required azdata engine version for schema compare (#6717) 2019-08-13 09:44:57 -07:00
Anthony Dresser
7eba8c4c03 Merge from vscode 52dcb723a39ae75bee1bd56b3312d7fcdc87aeed (#6719) 2019-08-12 21:31:51 -07:00
Charles Gagnon
00250839fc Remove unused test channel (#6710) 2019-08-12 14:53:15 -07:00
Charles Gagnon
1f6164a0ca Fix resultSerializer to correctly check returned file picker path (#6713) 2019-08-12 14:52:37 -07:00
Kim Santiago
b4df060362 fix default connection not always being correct (#6711) 2019-08-12 14:24:05 -07:00
Lucy Zhang
e10cad21fe Fix Books Unit Tests (#6702)
* wait for all toc.yml to be found

* add event to signal all toc.yml files read

* add workspae folder parameter back

* remove toc filter
2019-08-12 13:47:29 -07:00
Alan Ren
68d62f861b kubeadm notebook (#6648)
* kubeadm notebook

* update title
2019-08-12 11:47:03 -07:00
Anthony Dresser
7e4c8bf8a0 upgrade language client and remove from webpack (#6612) 2019-08-12 11:44:39 -07:00
Anthony Dresser
d733525f2c Use vscode log path (#6599)
* use vscode log file

* remove log

* remove sqltools output log and add command to open log
2019-08-12 11:44:27 -07:00
3075 changed files with 137275 additions and 76911 deletions

View File

@@ -1,49 +1,34 @@
{
perform: false,
perform: true,
alwaysRequireAssignee: false,
labelsRequiringAssignee: [],
autoAssignees: {
accessibility: [],
acquisition: [],
agent: [],
azure: [],
backup: [],
bcdr: [],
'chart viewer': [],
connection: [],
dacfx: [],
dashboard: [],
'data explorer': [],
documentation: [],
'edit data': [],
export: [],
extensibility: [],
extensionManager: [],
globalization: [],
grid: [],
import: [],
insights: [],
intellisense: [],
localization: [],
'managed instance': [],
notebooks: [],
'object explorer': [],
performance: [],
profiler: [],
'query editor': [],
'query execution': [],
reliability: [],
restore: [],
scripting: [],
'server group': [],
settings: [],
setup: [],
shell: [],
showplan: [],
snippet: [],
sql2019Preview: [],
sqldw: [],
supportability: [],
ux: []
Area - Acquisition: [],
Area - Azure: [],
Area - Backup\Restore: [],
Area - Charting\Insights: [],
Area - Connection: [],
Area - DacFX: [],
Area - Dashboard: [],
Area - Data Explorer: [],
Area - Edit Data: [],
Area - Extensibility: [],
Area - External Table: [],
Area - Fundamentals: [],
Area - Language Service: [],
Area - Localization: [],
Area - Notebooks: [],
Area - Performance: [],
Area - Query Editor: [ anthonydresser ],
Area - Query Plan: [],
Area - Reliability: [],
Area - Resource Deployment: [],
Area - Schema Compare: [],
Area - Shell: [],
Area - SQL Agent: [],
Area - SQL Import: [],
Area - SQL Profiler: [],
Area - SQL 2019: [],
Area - SSMS Integration: []
}
}

1
.gitignore vendored
View File

@@ -30,3 +30,4 @@ coverage/
test_data/
test-results/
yarn-error.log
*.vsix

View File

@@ -0,0 +1,33 @@
/**
* @name No floating promises
* @kind problem
* @problem.severity error
* @id js/experimental/floating-promise
*/
import javascript
private predicate isEscapingPromise(PromiseDefinition promise) {
exists (DataFlow::Node escape | promise.flowsTo(escape) |
escape = any(DataFlow::InvokeNode invk).getAnArgument()
or
escape = any(DataFlow::FunctionNode fun).getAReturn()
or
escape = any(ThrowStmt t).getExpr().flow()
or
escape = any(GlobalVariable v).getAnAssignedExpr().flow()
or
escape = any(DataFlow::PropWrite write).getRhs()
or
exists(WithStmt with, Assignment assign |
with.mayAffect(assign.getLhs()) and
assign.getRhs().flow() = escape
)
)
}
from PromiseDefinition promise
where
not exists(promise.getAMethodCall(any(string m | m = "then" or m = "catch" or m = "finally"))) and
not exists (AwaitExpr e | promise.flowsTo(e.getOperand().flow())) and
not isEscapingPromise(promise)
select promise, "This promise appears to be a floating promise"

6
.prettierrc.json Normal file
View File

@@ -0,0 +1,6 @@
{
"useTabs": true,
"printWidth": 120,
"semi": true,
"singleQuote": true
}

View File

@@ -1,23 +1,61 @@
{
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"licenseDetail"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the dependency"
"oneOf": [
{
"type": "object",
"required": [
"name",
"prependLicenseText"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the dependency"
},
"fullLicenseText": {
"type": "array",
"description": "The complete license text of the dependency",
"items": {
"type": "string"
}
},
"prependLicenseText": {
"type": "array",
"description": "A piece of text to prepend to the auto-detected license text of the dependency",
"items": {
"type": "string"
}
}
}
},
"licenseDetail": {
"type": "array",
"description": "The complete license text of the dependency",
"items": {
"type": "string"
{
"type": "object",
"required": [
"name",
"fullLicenseText"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the dependency"
},
"fullLicenseText": {
"type": "array",
"description": "The complete license text of the dependency",
"items": {
"type": "string"
}
},
"prependLicenseText": {
"type": "array",
"description": "A piece of text to prepend to the auto-detected license text of the dependency",
"items": {
"type": "string"
}
}
}
}
}
]
}
}
}

48
.vscode/launch.json vendored
View File

@@ -16,6 +16,7 @@
"request": "attach",
"name": "Attach to Extension Host",
"port": 5870,
"timeout": 30000,
"restart": true,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
@@ -67,15 +68,15 @@
"name": "Launch azuredatastudio",
"windows": {
"runtimeExecutable": "${workspaceFolder}/scripts/sql.bat",
"timeout": 20000
"timeout": 45000
},
"osx": {
"runtimeExecutable": "${workspaceFolder}/scripts/sql.sh",
"timeout": 20000
"timeout": 45000
},
"linux": {
"runtimeExecutable": "${workspaceFolder}/scripts/sql.sh",
"timeout": 20000
"timeout": 45000
},
"env": {
"VSCODE_EXTHOST_WILL_SEND_SOCKET": null
@@ -165,7 +166,10 @@
"cwd": "${workspaceFolder}",
"outFiles": [
"${workspaceFolder}/out/**/*.js"
]
],
"env": {
"MOCHA_COLORS": "true"
}
},
{
"type": "chrome",
@@ -183,6 +187,22 @@
"webRoot": "${workspaceFolder}",
"timeout": 45000
},
{
"type": "chrome",
"request": "launch",
"name": "Run Extension Integration Tests",
"windows": {
"runtimeExecutable": "${workspaceFolder}/scripts/sql-test-integration.bat"
},
"osx": {
"runtimeExecutable": "${workspaceFolder}/scripts/sql-test-integration.sh"
},
"linux": {
"runtimeExecutable": "${workspaceFolder}/scripts/sql-test-integration.sh"
},
"webRoot": "${workspaceFolder}",
"timeout": 45000
},
],
"compounds": [
{
@@ -199,6 +219,13 @@
"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": [
@@ -207,18 +234,25 @@
]
},
{
"name": "Search and Renderer processes",
"name": "Debug Renderer and search processes",
"configurations": [
"Launch azuredatastudio",
"Attach to Search Process"
]
},
{
"name": "Renderer and Extension Host processes",
"name": "Debug Renderer and Extension Host processes",
"configurations": [
"Launch azuredatastudio",
"Attach to Extension Host"
]
},
{
"name": "Attach Renderer and Extension Host",
"configurations": [
"Attach to azuredatastudio",
"Attach to Extension Host"
]
}
]
}
}

View File

@@ -61,4 +61,4 @@
"msjsdiag.debugger-for-chrome": "workspace"
},
"files.insertFinalNewline": true
}
}

23
.vscode/tasks.json vendored
View File

@@ -5,7 +5,10 @@
"type": "npm",
"script": "watch",
"label": "Build VS Code",
"group": "build",
"group": {
"kind": "build",
"isDefault": true
},
"isBackground": true,
"presentation": {
"reveal": "never"
@@ -42,6 +45,20 @@
"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",
@@ -81,6 +98,6 @@
"type": "gulp",
"task": "hygiene",
"problemMatcher": []
}
},
]
}
}

View File

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

View File

@@ -1,5 +1,49 @@
# Change Log
## Version 1.12.2
* Release date: October 11, 2019
* Release status: General Availability
* Hotfix release (1.12.2): `Disable automatically starting the EH in inspect mode` https://github.com/microsoft/azuredatastudio/commit/c9bef82ace6c67190d0e83820011a2bbd1f793c1
## Version 1.12.1
* Release date: October 7, 2019
* Release status: General Availability
* Hotfix release: `Notebooks: Ensure quotes and backslashes are escaped properly in text editor model` https://github.com/microsoft/azuredatastudio/pull/7540
## Version 1.12.0
* Release date: October 2, 2019
* Release status: General Availability
## What's new in this version
* Announcing the Query History panel
* Improved Query Results Grid copy selection support
* TempDB page added to Server Reports extension
* PowerShell extension update
* Resolved [bugs and issues](https://github.com/microsoft/azuredatastudio/milestone/42?closed=1).
## Version 1.11.0
* Release date: September 10, 2019
* Release status: General Availability
## What's new in this version
* Resolved [bugs and issues](https://github.com/microsoft/azuredatastudio/milestone/41?closed=1).
## Version 1.10.0
* Release date: August 14, 2019
* Release status: General Availability
## What's new in this version
* [SandDance](https://github.com/microsoft/SandDance) integration — A new way to interact with data. Download the extension [here](https://docs.microsoft.com/sql/azure-data-studio/sanddance-extension)
* Notebook improvements
* Better loading performance
* Ability to right click SQL results grid to save your results as CSV, JSON, etc.
* Buttons to add code or text cells in-line
* [Other fixes and improvements](https://github.com/microsoft/azuredatastudio/issues?q=is%3Aissue+label%3A%22Area%3A+Notebooks%22+milestone%3A%22August+2019+Release%22+is%3Aclosed)
* SQL Server Dacpac extension can support Azure Active Directory authentication
* Updated SQL Server 2019 extension
* Visual Studio Code May Release Merge 1.37 - this includes changes from [1.36](https://code.visualstudio.com/updates/v1_37) and [1.37](https://code.visualstudio.com/updates/v1_37)
* Resolved [bugs and issues](https://github.com/microsoft/azuredatastudio/milestone/39?closed=1).
## Version 1.9.0
* Release date: July 11, 2019
* Release status: General Availability
@@ -181,7 +225,7 @@ We would like to thank all our users who raised issues, and in particular the fo
## What's new in this version
* Announcing the SQL Server 2019 Preview extension.
* Support for SQL Server 2019 preview features including big data cluster support.
* Support for SQL Server 2019 preview features including Big Data Cluster support.
* Azure Data Studio Notebooks
* The Azure Resource Explorer viewlets you browse data-related endpoints for your Azure accounts and create connections to them in Object Explorer. In this release Azure SQL Databases and servers are supported.
* SQL Server Polybase Create External Table Wizard

View File

@@ -1,7 +1,7 @@
# Azure Data Studio
[![Join the chat at https://gitter.im/Microsoft/sqlopsstudio](https://badges.gitter.im/Microsoft/sqlopsstudio.svg)](https://gitter.im/Microsoft/sqlopsstudio?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://dev.azure.com/ms/azuredatastudio/_apis/build/status/Microsoft.azuredatastudio)](https://dev.azure.com/ms/azuredatastudio/_build/latest?definitionId=4)
[![Build Status](https://dev.azure.com/azuredatastudio/azuredatastudio/_apis/build/status/Azure%20Data%20Studio%20CI?branchName=master)](https://dev.azure.com/azuredatastudio/azuredatastudio/_build/latest?definitionId=4&branchName=master)
Azure Data Studio is a data management tool that enables you to work with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
@@ -9,13 +9,13 @@ Azure Data Studio is a data management tool that enables you to work with SQL Se
Platform | Link
-- | --
Windows User Installer | https://go.microsoft.com/fwlink/?linkid=2098449
Windows System Installer | https://go.microsoft.com/fwlink/?linkid=2098450
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=2098500
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=2098501
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=2098197
Linux RPM | https://go.microsoft.com/fwlink/?linkid=2098280
Linux DEB | https://go.microsoft.com/fwlink/?linkid=2098279
Windows User Installer | https://go.microsoft.com/fwlink/?linkid=2105135
Windows System Installer | https://go.microsoft.com/fwlink/?linkid=2105134
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=2104938
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=2105133
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=2105132
Linux RPM | https://go.microsoft.com/fwlink/?linkid=2104937
Linux DEB | https://go.microsoft.com/fwlink/?linkid=2105131
Go to our [download page](https://aka.ms/azuredatastudio) for more specific instructions.
@@ -68,6 +68,9 @@ The [Microsoft Enterprise and Developer Privacy Statement](https://privacy.micro
## 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:
* dzsquared for `fix(snippets): ads parenthesis to sqlcreateindex snippet #7020`
* devmattrick for `Update row count as updates are received #6642`
* mottykohn for `In Message panel onclick scroll to line #6417`
* Stevoni for `Corrected Keyboard Shortcut Execution Issue #5480`
* yamatoya for `fix the format #4899`
* GeoffYoung for `Fix sqlDropColumn description #4422`

View File

@@ -36,6 +36,7 @@ expressly granted herein, whether by implication, estoppel or otherwise.
jquery-ui: https://github.com/jquery/jquery-ui
jquery.event.drag: https://github.com/devongovett/jquery.event.drag
jschardet: https://github.com/aadsm/jschardet
jupyter-powershell: https://github.com/vors/jupyter-powershell
JupyterLab: https://github.com/jupyterlab/jupyterlab
make-error: https://github.com/JsCommunity/make-error
minimist: https://github.com/substack/minimist
@@ -1175,7 +1176,35 @@ That's all there is to it!
=========================================
END OF jschardet NOTICES AND INFORMATION
%% jupyter-powershell NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)
Copyright (c) 2016 Sergei Vorobev
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=========================================
END OF jupyter-powershell NOTICES AND INFORMATION
%% JupyterLab NOTICES AND INFORMATION BEGIN HERE
=========================================
Copyright (c) 2015 Project Jupyter Contributors
All rights reserved.

View File

@@ -1,66 +1,85 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.15.1'
displayName: 'Install Node.js'
- script: |
export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:10
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
sudo apt-get install -y libkrb5-dev
# sh -e /etc/init.d/xvfb start
# sleep 3
displayName: "Linux preinstall"
condition: eq(variables['Agent.OS'], 'Linux')
- script: |
npm i -g yarn
displayName: 'preinstall'
- task: NodeTool@0
inputs:
versionSpec: "10.15.1"
- script: |
export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:10
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
# sh -e /etc/init.d/xvfb start
# sleep 3
displayName: 'Linux preinstall'
condition: eq(variables['Agent.OS'], 'Linux')
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: ".yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock"
targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
vstsFeed: "$(build-cache)"
- script: |
yarn
displayName: 'Install'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
versionSpec: "1.10.1"
- script: |
yarn gulp electron-x64
displayName: Download Electron
- script: |
yarn --frozen-lockfile
displayName: Install Dependencies
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)
- script: |
yarn gulp hygiene
displayName: Run Hygiene Checks
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
inputs:
keyfile: ".yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock"
targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
vstsFeed: "$(build-cache)"
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- script: |
yarn tslint
displayName: 'Run TSLint'
- script: |
yarn gulp electron-x64
displayName: Download Electron
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)
# - script: |
# yarn strict-null-check
# displayName: 'Run Strict Null Check'
- script: |
yarn gulp hygiene --skip-tslint
displayName: Run Hygiene Checks
- script: |
yarn compile
displayName: 'Compile'
- script: |
yarn tslint
displayName: Run TSLint
- script: |
DISPLAY=:10 ./scripts/test.sh --reporter mocha-junit-reporter
displayName: 'Tests'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
- script: |
yarn strict-null-check
displayName: Run Strict Null Check
- script: |
DISPLAY=:10 ./scripts/test.sh --reporter mocha-junit-reporter --coverage
displayName: 'Tests'
condition: and(succeeded(), ne(variables['Agent.OS'], 'Linux'))
- script: |
yarn compile
displayName: Compile
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/test-results.xml'
condition: succeededOrFailed()
- script: |
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
displayName: Run Unit Tests (Linux)
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: $(System.DefaultWorkingDirectory)/.build/coverage/cobertura-coverage.xml
reportDirectory: $(System.DefaultWorkingDirectory)/.build/coverage/lcov-reports
condition: ne(variables['Agent.OS'], 'Linux')
- script: |
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests" --coverage
displayName: Run Unit Tests (Mac)
condition: and(succeeded(), ne(variables['Agent.OS'], 'Linux'))
- task: PublishTestResults@2
inputs:
testResultsFiles: '*-results.xml'
searchFolder: '$(Build.ArtifactStagingDirectory)/test-results'
condition: succeededOrFailed()
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: $(System.DefaultWorkingDirectory)/.build/coverage/cobertura-coverage.xml
reportDirectory: $(System.DefaultWorkingDirectory)/.build/coverage/lcov-report
condition: ne(variables['Agent.OS'], 'Linux')

View File

@@ -1,44 +1,60 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.15.1'
displayName: 'Install Node.js'
- task: NodeTool@0
inputs:
versionSpec: "10.15.1"
- script: |
yarn
displayName: 'Yarn Install'
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: ".yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock"
targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
vstsFeed: "$(build-cache)"
- script: |
yarn gulp electron-x64
displayName: 'Electron'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
versionSpec: "1.10.1"
- script: |
yarn gulp hygiene
displayName: Run Hygiene Checks
- script: |
yarn --frozen-lockfile
displayName: Install Dependencies
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)
- script: |
yarn tslint
displayName: 'Run TSLint'
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
inputs:
keyfile: ".yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock"
targetfolder: "**/node_modules, !**/node_modules/**/node_modules"
vstsFeed: "$(build-cache)"
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
# - script: |
# yarn strict-null-check
# displayName: 'Run Strict Null Check'
- script: |
yarn gulp electron-x64
displayName: "Electron"
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)
- script: |
yarn compile
displayName: 'Compile'
- script: |
yarn gulp hygiene --skip-tslint
displayName: Run Hygiene Checks
- script: |
.\scripts\test.bat --reporter mocha-junit-reporter --coverage
displayName: 'Test'
- script: |
yarn tslint
displayName: Run TSLint
- task: PublishTestResults@2
inputs:
testResultsFiles: 'test-results.xml'
condition: succeededOrFailed()
- script: |
yarn strict-null-check
displayName: Run Strict Null Check
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: $(System.DefaultWorkingDirectory)\.build\coverage\cobertura-coverage.xml
reportDirectory: $(System.DefaultWorkingDirectory)\.build\coverage\lcov-report
- script: |
yarn compile
displayName: Compile
- powershell: |
.\scripts\test.bat --tfs "Unit Tests"
displayName: Run Unit Tests
- task: PublishTestResults@2
inputs:
testResultsFiles: "*-results.xml"
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
condition: succeededOrFailed()

View File

@@ -1,29 +1,22 @@
trigger:
- master
- releases/*
- master
- release/*
jobs:
- job: Windows
pool:
vmImage: VS2017-Win2016
steps:
- template: azure-pipelines-windows.yml
# All tasks on Windows
- job: build_all_windows
displayName: Build all tasks (Windows)
pool:
vmImage: vs2017-win2016
steps:
- template: azure-pipelines-windows.yml
- job: Linux
pool:
vmImage: "Ubuntu-16.04"
steps:
- template: azure-pipelines-linux-mac.yml
# All tasks on Linux
- job: build_all_linux
displayName: Build all tasks (Linux)
pool:
vmImage: 'Ubuntu 16.04'
steps:
- template: azure-pipelines-linux-mac.yml
# All tasks on macOS
- job: build_all_darwin
displayName: Build all tasks (macOS)
pool:
vmImage: macos-10.13
steps:
- template: azure-pipelines-linux-mac.yml
- job: macOS
pool:
vmImage: macOS 10.13
steps:
- template: azure-pipelines-linux-mac.yml

View File

@@ -1 +1 @@
2019-07-11T05:47:05.444Z
2019-08-30T20:24:23.714Z

View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -e
REPO="$(pwd)"
# Publish webview contents
PACKAGEJSON="$REPO/package.json"
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
node build/azure-pipelines/common/publish-webview.js "$REPO/src/vs/workbench/contrib/webview/browser/pre/"

View File

@@ -0,0 +1,87 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as azure from 'azure-storage';
import * as mime from 'mime';
import * as minimist from 'minimist';
import { basename, join } from 'path';
const fileNames = [
'fake.html',
'host.js',
'index.html',
'main.js',
'service-worker.js'
];
async function assertContainer(blobService: azure.BlobService, container: string): Promise<void> {
await new Promise((c, e) => blobService.createContainerIfNotExists(container, { publicAccessLevel: 'blob' }, err => err ? e(err) : c()));
}
async function doesBlobExist(blobService: azure.BlobService, container: string, blobName: string): Promise<boolean | undefined> {
const existsResult = await new Promise<azure.BlobService.BlobResult>((c, e) => blobService.doesBlobExist(container, blobName, (err, r) => err ? e(err) : c(r)));
return existsResult.exists;
}
async function uploadBlob(blobService: azure.BlobService, container: string, blobName: string, file: string): Promise<void> {
const blobOptions: azure.BlobService.CreateBlockBlobRequestOptions = {
contentSettings: {
contentType: mime.lookup(file),
cacheControl: 'max-age=31536000, public'
}
};
await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(container, blobName, file, blobOptions, err => err ? e(err) : c()));
}
async function publish(commit: string, files: readonly string[]): Promise<void> {
console.log('Publishing...');
console.log('Commit:', commit);
const storageAccount = process.env['AZURE_WEBVIEW_STORAGE_ACCOUNT']!;
const blobService = azure.createBlobService(storageAccount, process.env['AZURE_WEBVIEW_STORAGE_ACCESS_KEY']!)
.withFilter(new azure.ExponentialRetryPolicyFilter(20));
await assertContainer(blobService, commit);
for (const file of files) {
const blobName = basename(file);
const blobExists = await doesBlobExist(blobService, commit, blobName);
if (blobExists) {
console.log(`Blob ${commit}, ${blobName} already exists, not publishing again.`);
continue;
}
console.log('Uploading blob to Azure storage...');
await uploadBlob(blobService, commit, blobName, file);
}
console.log('Blobs successfully uploaded.');
}
function main(): void {
const commit = process.env['BUILD_SOURCEVERSION'];
if (!commit) {
console.warn('Skipping publish due to missing BUILD_SOURCEVERSION');
return;
}
const opts = minimist(process.argv.slice(2));
const [directory] = opts._;
const files = fileNames.map(fileName => join(directory, fileName));
publish(commit, files).catch(err => {
console.error(err);
process.exit(1);
});
}
if (process.argv.length < 3) {
console.error('Usage: node publish.js <directory>');
process.exit(-1);
}
main();

View File

@@ -9,7 +9,7 @@ steps:
vstsFeed: '$(ArtifactFeed)'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- script: |
yarn --frozen-lockfile
displayName: Install Dependencies
@@ -24,8 +24,11 @@ steps:
yarn gulp electron-x64
displayName: Download Electron
- script: |
yarn gulp hygiene
yarn gulp hygiene --skip-tslint
displayName: Run Hygiene Checks
- script: |
yarn gulp tslint
displayName: Run TSLint Checks
- script: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks

View File

@@ -2,11 +2,12 @@ steps:
- script: |
mkdir -p .build
echo -n $BUILD_SOURCEVERSION > .build/commit
echo -n $VSCODE_QUALITY > .build/quality
displayName: Prepare cache flag
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
@@ -24,7 +25,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
@@ -101,11 +102,39 @@ steps:
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
set -e
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" \
./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests
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 -
yarn smoketest --web --headless
continueOnError: true
displayName: Run smoke tests
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
pushd ../VSCode-darwin && zip -r -X -y ../VSCode-darwin.zip * && popd

View File

@@ -0,0 +1,36 @@
pool:
vmImage: 'Ubuntu-16.04'
trigger: none
pr: none
steps:
- task: NodeTool@0
inputs:
versionSpec: "10.15.1"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
inputs:
azureSubscription: 'vscode-builds-subscription'
KeyVaultName: vscode
- script: |
set -e
cat << EOF > ~/.netrc
machine github.com
login vscode
password $(github-distro-mixin-password)
EOF
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
git checkout origin/electron-6.0.x
git merge origin/master
# Push master branch into exploration branch
git push origin HEAD:electron-6.0.x
displayName: Sync & Merge Exploration

View File

@@ -0,0 +1,39 @@
trigger:
branches:
include: ['master']
pr: none
jobs:
- job: ExplorationMerge
pool:
vmImage: Ubuntu-16.04
steps:
- task: NodeTool@0
inputs:
versionSpec: "10.15.1"
- script: |
set -e
cat << EOF > ~/.netrc
machine mssqltools.visualstudio.com
login azuredatastudio
password $(DEVOPS_PASSWORD)
EOF
git config user.email "andresse@microsoft.com"
git config user.name "AzureDataStudio"
git remote add explore "$ADS_EXPLORE_REPO"
git fetch explore
git checkout -b merge-branch explore/master
git merge origin/master
git push explore HEAD:master
displayName: Sync & Merge Explore
env:
ADS_EXPLORE_REPO: $(ADS_EXPLORE_REPO)
DEVOPS_PASSWORD: $(DEVOPS_PASSWORD)

View File

@@ -17,7 +17,7 @@ steps:
vstsFeed: '$(ArtifactFeed)'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- script: |
yarn --frozen-lockfile
displayName: Install Dependencies
@@ -32,8 +32,11 @@ steps:
yarn gulp electron-x64
displayName: Download Electron
- script: |
yarn gulp hygiene
yarn gulp hygiene --skip-tslint
displayName: Run Hygiene Checks
- script: |
yarn gulp tslint
displayName: Run TSLint Checks
- script: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -e
echo 'noop'

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -e
echo 'noop'

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
set -e
echo 'noop'

View File

@@ -2,11 +2,12 @@ steps:
- script: |
mkdir -p .build
echo -n $BUILD_SOURCEVERSION > .build/commit
echo -n $VSCODE_QUALITY > .build/quality
displayName: Prepare cache flag
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
@@ -24,7 +25,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
@@ -112,4 +113,4 @@ steps:
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
continueOnError: true
continueOnError: true

View File

@@ -2,11 +2,12 @@ steps:
- script: |
mkdir -p .build
echo -n $BUILD_SOURCEVERSION > .build/commit
echo -n $VSCODE_QUALITY > .build/quality
displayName: Prepare cache flag
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
@@ -24,7 +25,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
@@ -104,7 +105,14 @@ steps:
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
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 ./scripts/test-integration.sh --build --tfs "Integration Tests"
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-x64"
displayName: Run integration tests

View File

@@ -5,7 +5,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
@@ -51,4 +51,4 @@ steps:
# Publish snap package
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-x64" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-x64" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"

View File

@@ -56,7 +56,7 @@ jobs:
- template: linux/snap-build-linux.yml
- job: LinuxArmhf
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'))
pool:
vmImage: 'Ubuntu-16.04'
variables:
@@ -66,8 +66,19 @@ jobs:
steps:
- template: linux/product-build-linux-multiarch.yml
- job: LinuxArm64
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARM64'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
pool:
vmImage: 'Ubuntu-16.04'
variables:
VSCODE_ARCH: arm64
dependsOn:
- Compile
steps:
- template: linux/product-build-linux-multiarch.yml
- job: LinuxAlpine
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'))
pool:
vmImage: 'Ubuntu-16.04'
variables:
@@ -128,6 +139,9 @@ jobs:
steps:
- template: sync-mooncake.yml
trigger: none
pr: none
schedules:
- cron: "0 5 * * Mon-Fri"
displayName: Mon-Fri at 7:00

View File

@@ -2,11 +2,12 @@ steps:
- script: |
mkdir -p .build
echo -n $BUILD_SOURCEVERSION > .build/commit
echo -n $VSCODE_QUALITY > .build/quality
displayName: Prepare cache flag
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
@@ -19,7 +20,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
- task: AzureKeyVault@1
@@ -86,9 +87,10 @@ steps:
- script: |
set -e
yarn gulp hygiene
yarn gulp hygiene --skip-tslint
yarn gulp tslint
yarn monaco-compile-check
displayName: Run hygiene checks
displayName: Run hygiene, tslint and monaco compile checks
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
@@ -97,6 +99,13 @@ steps:
displayName: Extract Telemetry
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
- script: |
set -e
AZURE_WEBVIEW_STORAGE_ACCESS_KEY="$(vscode-webview-storage-key)" \
./build/azure-pipelines/common/publish-webview.sh
displayName: Publish Webview
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
- script: |
set -e
yarn gulp compile-build
@@ -116,9 +125,9 @@ steps:
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
alias: 'Compilation'
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))

View File

@@ -13,7 +13,23 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- bash: |
TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
CHANNEL="G1C14HJ2F"
if [ "$TAG_VERSION" == "1.999.0" ]; then
MESSAGE="<!here>. Someone pushed 1.999.0 tag. Please delete it ASAP from remote and local."
curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
-H 'Content-type: application/json; charset=utf-8' \
--data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$MESSAGE"'"}' \
https://slack.com/api/chat.postMessage
exit 1
fi
displayName: Check 1.999.0 tag
- bash: |
# Install build dependencies

View File

@@ -5,7 +5,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'

View File

@@ -13,19 +13,37 @@ const util = require('../lib/util');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
function main() {
const vs = vfs.src('out-vscode-min/**/*.map', { base: 'out-vscode-min' }) // client source-maps only
// optionally allow to pass in explicit base/maps to upload
const [, , base, maps] = process.argv;
const fetch = function (base, maps = `${base}/**/*.map`) {
return vfs.src(maps, { base })
.pipe(es.mapSync(f => {
f.path = `${f.base}/core/${f.relative}`;
return f;
}));
};
const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
function main() {
const sources = [];
return es.merge(vs, extensionsOut)
// vscode client maps (default)
if (!base) {
const vs = fetch('out-vscode-min'); // client source-maps only
sources.push(vs);
const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
sources.push(extensionsOut);
}
// specific client base/maps
else {
sources.push(fetch(base, maps));
}
return es.merge(...sources)
.pipe(es.through(function (data) {
// debug
console.log('Uploading Sourcemap', data.relative);
console.log('Uploading Sourcemap', data.relative); // debug
this.emit('data', data);
}))
.pipe(azure.upload({
@@ -36,4 +54,4 @@ function main() {
}));
}
main();
main();

View File

@@ -2,11 +2,12 @@ steps:
- script: |
mkdir -p .build
echo -n $BUILD_SOURCEVERSION > .build/commit
echo -n $VSCODE_QUALITY > .build/quality
displayName: Prepare cache flag
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
@@ -24,7 +25,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
@@ -87,6 +88,15 @@ steps:
yarn gulp vscode-web-min-ci
displayName: Build
# upload only the workbench.web.api.js source maps because
# we just compiled these bits in the previous step and the
# general task to upload source maps has already been run
- script: |
set -e
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
node build/azure-pipelines/upload-sourcemaps out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.api.js.map
displayName: Upload sourcemaps (Web)
- script: |
set -e
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \

View File

@@ -4,7 +4,7 @@ steps:
versionSpec: "10.15.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: UsePythonVersion@0
inputs:
versionSpec: '2.x'
@@ -26,10 +26,12 @@ steps:
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- powershell: |
yarn gulp electron
displayName: Download Electron
- powershell: |
yarn gulp hygiene
- script: |
yarn gulp hygiene --skip-tslint
displayName: Run Hygiene Checks
- script: |
yarn gulp tslint
displayName: Run TSLint Checks
- powershell: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks

View File

@@ -2,11 +2,12 @@ steps:
- powershell: |
mkdir .build -ea 0
"$env:BUILD_SOURCEVERSION" | Out-File -Encoding ascii -NoNewLine .build\commit
"$env:VSCODE_QUALITY" | Out-File -Encoding ascii -NoNewLine .build\quality
displayName: Prepare cache flag
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
keyfile: 'build/.cachesalt, .build/commit'
keyfile: 'build/.cachesalt, .build/commit, .build/quality'
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
vstsFeed: 'npm-vscode'
platformIndependent: true
@@ -24,7 +25,7 @@ steps:
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
versionSpec: "1.x"
- task: UsePythonVersion@0
inputs:
@@ -112,10 +113,15 @@ steps:
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
exec { yarn gulp "electron-$(VSCODE_ARCH)" }
exec { .\scripts\test-integration.bat --build --tfs "Integration Tests" }
$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)"; .\scripts\test-integration.bat --build --tfs "Integration Tests" }
displayName: Run integration tests
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))

View File

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

View File

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

View File

@@ -41,12 +41,7 @@ var editorEntryPoints = [
];
var editorResources = [
'out-build/vs/{base,editor}/**/*.{svg,png}',
'!out-build/vs/base/browser/ui/splitview/**/*',
'!out-build/vs/base/browser/ui/toolbar/**/*',
'!out-build/vs/base/browser/ui/octiconLabel/**/*',
'!out-build/vs/workbench/**',
'!**/test/**'
'out-editor-build/vs/base/browser/ui/codiconLabel/**/*.ttf'
];
var BUNDLED_FILE_HEADER = [

View File

@@ -21,10 +21,15 @@ const nlsDev = require('vscode-nls-dev');
const root = path.dirname(__dirname);
const commit = util.getVersion(root);
const plumber = require('gulp-plumber');
const _ = require('underscore');
const ext = require('./lib/extensions');
const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
// {{SQL CARBON EDIT}}
const sqlLocalizedExtensions = [
'dacpac',
'schema-compare'
];
// {{SQL CARBON EDIT}}
const compilations = glob.sync('**/tsconfig.json', {
cwd: extensionsPath,
@@ -37,38 +42,38 @@ const tasks = compilations.map(function (tsconfigFile) {
const absolutePath = path.join(extensionsPath, tsconfigFile);
const relativeDirname = path.dirname(tsconfigFile);
const tsconfig = require(absolutePath);
const tsOptions = _.assign({}, tsconfig.extends ? require(path.join(extensionsPath, relativeDirname, tsconfig.extends)).compilerOptions : {}, tsconfig.compilerOptions);
tsOptions.verbose = false;
tsOptions.sourceMap = true;
const overrideOptions = {};
overrideOptions.sourceMap = true;
const name = relativeDirname.replace(/\//g, '-');
const root = path.join('extensions', relativeDirname);
const srcBase = path.join(root, 'src');
const src = path.join(srcBase, '**');
const srcOpts = { cwd: path.dirname(__dirname), base: srcBase };
const out = path.join(root, 'out');
const baseUrl = getBaseUrl(out);
let headerId, headerOut;
let index = relativeDirname.indexOf('/');
if (index < 0) {
headerId = 'vscode.' + relativeDirname;
headerId = 'microsoft.' + relativeDirname; // {{SQL CARBON EDIT}}
headerOut = 'out';
} else {
headerId = 'vscode.' + relativeDirname.substr(0, index);
headerId = 'microsoft.' + relativeDirname.substr(0, index); // {{SQL CARBON EDIT}}
headerOut = relativeDirname.substr(index + 1) + '/out';
}
function createPipeline(build, emitError) {
const reporter = createReporter();
tsOptions.inlineSources = !!build;
tsOptions.base = path.dirname(absolutePath);
overrideOptions.inlineSources = Boolean(build);
overrideOptions.base = path.dirname(absolutePath);
const compilation = tsb.create(tsOptions, null, null, err => reporter(err.toString()));
const compilation = tsb.create(absolutePath, overrideOptions, false, err => reporter(err.toString()));
return function () {
const pipeline = function () {
const input = es.through();
const tsFilter = filter(['**/*.ts', '!**/lib/lib*.d.ts', '!**/node_modules/**'], { restore: true });
const output = input
@@ -98,15 +103,19 @@ const tasks = compilations.map(function (tsconfigFile) {
return es.duplex(input, output);
};
}
const srcOpts = { cwd: path.dirname(__dirname), base: srcBase };
// add src-stream for project files
pipeline.tsProjectSrc = () => {
return compilation.src(srcOpts);
};
return pipeline;
}
const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out));
const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(false, true);
const input = gulp.src(src, srcOpts);
const pipeline = createPipeline(sqlLocalizedExtensions.includes(name), true); // {{SQL CARBON EDIT}}
const input = pipeline.tsProjectSrc();
return input
.pipe(pipeline())
@@ -115,8 +124,8 @@ const tasks = compilations.map(function (tsconfigFile) {
const watchTask = task.define(`watch-extension:${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(false);
const input = gulp.src(src, srcOpts);
const watchInput = watcher(src, srcOpts);
const input = pipeline.tsProjectSrc();
const watchInput = watcher(src, { ...srcOpts, ...{ readDelay: 200 } });
return watchInput
.pipe(util.incremental(pipeline, input))
@@ -125,7 +134,7 @@ const tasks = compilations.map(function (tsconfigFile) {
const compileBuildTask = task.define(`compile-build-extension-${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(true, true);
const input = gulp.src(src, srcOpts);
const input = pipeline.tsProjectSrc();
return input
.pipe(pipeline())
@@ -156,8 +165,8 @@ const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimr
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
cleanExtensionsBuildTask,
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream().pipe(gulp.dest('.build'))),
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream().pipe(gulp.dest('.build'))),
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream().pipe(gulp.dest('.build')))
));
gulp.task(compileExtensionsBuildTask);
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;

View File

@@ -17,6 +17,7 @@ const vfs = require('vinyl-fs');
const path = require('path');
const fs = require('fs');
const pall = require('p-all');
const task = require('./lib/task');
/**
* Hygiene works by creating cascading subsets of all our files and
@@ -50,12 +51,15 @@ const indentationFilter = [
'!src/vs/css.js',
'!src/vs/css.build.js',
'!src/vs/loader.js',
'!src/vs/base/common/insane/insane.js',
'!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',
// except specific folders
'!test/automation/out/**',
'!test/smoke/out/**',
'!extensions/vscode-api-tests/testWorkspace/**',
'!extensions/vscode-api-tests/testWorkspace2/**',
@@ -64,11 +68,13 @@ const indentationFilter = [
// except multiple specific files
'!**/package.json',
'!**/package-lock.json', // {{SQL CARBON EDIT}}
'!**/yarn.lock',
'!**/yarn-error.log',
// except multiple specific folders
'!**/octicons/**',
'!**/codicon/**',
'!**/fixtures/**',
'!**/lib/**',
'!extensions/**/out/**',
@@ -98,7 +104,8 @@ const indentationFilter = [
'!extensions/admin-tool-ext-win/ssmsmin/**',
'!extensions/resource-deployment/notebooks/**',
'!extensions/mssql/notebooks/**',
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts'
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts',
'!extensions/big-data-cluster/src/bigDataCluster/controller/clusterApiGenerated2.ts'
];
const copyrightFilter = [
@@ -131,12 +138,12 @@ const copyrightFilter = [
'!src/vs/editor/test/node/classification/typescript-test.ts',
// {{SQL CARBON EDIT}}
'!extensions/notebook/src/intellisense/text.ts',
'!extensions/mssql/src/objectExplorerNodeProvider/webhdfs.ts',
'!extensions/mssql/src/hdfs/webhdfs.ts',
'!src/sql/workbench/parts/notebook/browser/outputs/tableRenderers.ts',
'!src/sql/workbench/parts/notebook/common/models/url.ts',
'!src/sql/workbench/parts/notebook/common/models/renderMimeInterfaces.ts',
'!src/sql/workbench/parts/notebook/common/models/outputProcessor.ts',
'!src/sql/workbench/parts/notebook/common/models/mimemodel.ts',
'!src/sql/workbench/parts/notebook/browser/models/renderMimeInterfaces.ts',
'!src/sql/workbench/parts/notebook/browser/models/outputProcessor.ts',
'!src/sql/workbench/parts/notebook/browser/models/mimemodel.ts',
'!src/sql/workbench/parts/notebook/browser/cellViews/media/*.css',
'!src/sql/base/browser/ui/table/plugins/rowSelectionModel.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/rowDetailView.ts',
@@ -157,6 +164,7 @@ const copyrightFilter = [
'!extensions/notebook/src/prompts/**',
'!extensions/mssql/src/prompts/**',
'!extensions/notebook/resources/jupyter_config/**',
'!extensions/query-history/images/**',
'!**/*.gif',
'!**/*.xlf',
'!**/*.dacpac',
@@ -171,36 +179,50 @@ const eslintFilter = [
'!src/vs/nls.js',
'!src/vs/css.build.js',
'!src/vs/nls.build.js',
'!src/**/insane.js',
'!src/**/marked.js',
'!**/test/**'
];
const tslintFilter = [
'src/**/*.ts',
'test/**/*.ts',
'extensions/**/*.ts',
const tslintBaseFilter = [
'!**/fixtures/**',
'!**/typings/**',
'!**/node_modules/**',
'!extensions/typescript/test/colorize-fixtures/**',
'!extensions/typescript-basics/test/colorize-fixtures/**',
'!extensions/vscode-api-tests/testWorkspace/**',
'!extensions/vscode-api-tests/testWorkspace2/**',
'!extensions/**/*.test.ts',
'!extensions/html-language-features/server/lib/jquery.d.ts',
// {{SQL CARBON EDIT}}
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.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}},
];
// {{SQL CARBON EDIT}}
const useStrictFilter = [
'src/**'
const sqlFilter = ['src/sql/**']; // {{SQL CARBON EDIT}}
const tslintCoreFilter = [
'src/**/*.ts',
'test/**/*.ts',
'!extensions/**/*.ts',
'!test/automation/**',
'!test/smoke/**',
...tslintBaseFilter
];
const sqlFilter = [
'src/sql/**'
const tslintExtensionsFilter = [
'extensions/**/*.ts',
'!src/**/*.ts',
'!test/**/*.ts',
'test/automation/**/*.ts',
...tslintBaseFilter
];
const tslintHygieneFilter = [
'src/**/*.ts',
'test/**/*.ts',
'extensions/**/*.ts',
...tslintBaseFilter
];
// {{SQL CARBON EDIT}}
const copyrightHeaderLines = [
'/*---------------------------------------------------------------------------------------------',
' * Copyright (c) Microsoft Corporation. All rights reserved.',
@@ -217,14 +239,49 @@ gulp.task('eslint', () => {
});
gulp.task('tslint', () => {
const options = { emitError: true };
return es.merge([
return vfs.src(all, { base: '.', follow: true, allowEmpty: true })
.pipe(filter(tslintFilter))
.pipe(gulptslint.default({ rulesDirectory: 'build/lib/tslint' }))
.pipe(gulptslint.default.report(options));
// 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());
});
function checkPackageJSON(actualPath) {
const actual = require(path.join(__dirname, '..', actualPath));
const rootPackageJSON = require('../package.json');
for (let depName in actual.dependencies) {
const depVersion = actual.dependencies[depName];
const rootDepVersion = rootPackageJSON.dependencies[depName];
if (!rootDepVersion) {
// missing in root is allowed
continue;
}
if (depVersion !== rootDepVersion) {
this.emit('error', `The dependency ${depName} in '${actualPath}' (${depVersion}) is different than in the root package.json (${rootDepVersion})`);
}
}
}
const checkPackageJSONTask = task.define('check-package-json', () => {
return gulp.src('package.json')
.pipe(es.through(function() {
checkPackageJSON.call(this, 'remote/package.json');
checkPackageJSON.call(this, 'remote/web/package.json');
}));
});
gulp.task(checkPackageJSONTask);
function hygiene(some) {
let errorCount = 0;
@@ -274,23 +331,6 @@ function hygiene(some) {
this.emit('data', file);
});
// {{SQL CARBON EDIT}}
// Check for unnecessary 'use strict' lines. These are automatically added by the alwaysStrict compiler option so don't need to be added manually
const useStrict = es.through(function (file) {
const lines = file.__lines;
// Only take the first 10 lines to reduce false positives- the compiler will throw an error if it's not the first non-comment line in a file
// (10 is used to account for copyright and extraneous newlines)
lines.slice(0, 10).forEach((line, i) => {
if (/\s*'use\s*strict\s*'/.test(line)) {
console.error(file.relative + '(' + (i + 1) + ',1): Unnecessary \'use strict\' - this is already added by the compiler');
errorCount++;
}
});
this.emit('data', file);
});
// {{SQL CARBON EDIT}} END
const formatting = es.map(function (file, cb) {
tsfmt.processString(file.path, file.contents.toString('utf8'), {
verify: false,
@@ -343,11 +383,9 @@ function hygiene(some) {
const tslintSqlOptions = { fix: false, formatter: 'json' };
const sqlTsLinter = new tslint.Linter(tslintSqlOptions);
const sqlTsl = es.through(function (file) {
const sqlTsl = es.through(function (file) { //TODO restore
const contents = file.contents.toString('utf8');
sqlTsLinter.lint(file.relative, contents, tslintSqlConfiguration.results);
this.emit('data', file);
});
const productJsonFilter = filter('product.json', { restore: true });
@@ -362,15 +400,16 @@ function hygiene(some) {
.pipe(filter(copyrightFilter))
.pipe(copyrights);
const typescript = result
.pipe(filter(tslintFilter))
.pipe(formatting)
.pipe(tsl)
// {{SQL CARBON EDIT}}
.pipe(filter(useStrictFilter))
.pipe(useStrict)
.pipe(filter(sqlFilter))
.pipe(sqlTsl);
let typescript = result
.pipe(filter(tslintHygieneFilter))
.pipe(formatting);
if (!process.argv.some(arg => arg === '--skip-tslint')) {
typescript = typescript.pipe(tsl);
typescript = typescript
.pipe(filter(sqlFilter))
.pipe(sqlTsl); // {{SQL CARBON EDIT}}
}
const javascript = result
.pipe(filter(eslintFilter))
@@ -456,7 +495,7 @@ function createGitIndexVinyls(paths) {
.then(r => r.filter(p => !!p));
}
gulp.task('hygiene', () => hygiene());
gulp.task('hygiene', task.series(checkPackageJSONTask, () => hygiene()));
// this allows us to run hygiene as a git pre-commit hook
if (require.main === module) {

View File

@@ -31,6 +31,7 @@ const BUILD_TARGETS = [
{ platform: 'linux', arch: 'ia32', pkgTarget: 'node8-linux-x86' },
{ platform: 'linux', arch: 'x64', pkgTarget: 'node8-linux-x64' },
{ platform: 'linux', arch: 'armhf', pkgTarget: 'node8-linux-armv7' },
{ platform: 'linux', arch: 'arm64', pkgTarget: 'node8-linux-arm64' },
{ platform: 'linux', arch: 'alpine', pkgTarget: 'node8-linux-alpine' },
];
@@ -41,6 +42,7 @@ gulp.task('vscode-reh-win32-x64-min', noop);
gulp.task('vscode-reh-darwin-min', noop);
gulp.task('vscode-reh-linux-x64-min', noop);
gulp.task('vscode-reh-linux-armhf-min', noop);
gulp.task('vscode-reh-linux-arm64-min', noop);
gulp.task('vscode-reh-linux-alpine-min', noop);
gulp.task('vscode-reh-web-win32-ia32-min', noop);

View File

@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
const gulp = require('gulp');
const util = require('./lib/util');
const tsfmt = require('typescript-formatter');
@@ -14,6 +13,10 @@ const del = require('del');
const serviceDownloader = require('service-downloader').ServiceDownloadProvider;
const platformInfo = require('service-downloader/out/platform').PlatformInformation;
const path = require('path');
const fs = require('fs');
const rollup = require('rollup');
const rollupNodeResolve = require('rollup-plugin-node-resolve');
const rollupCommonJS = require('rollup-plugin-commonjs');
gulp.task('clean-mssql-extension', util.rimraf('extensions/mssql/node_modules'));
gulp.task('clean-credentials-extension', util.rimraf('extensions/credentials/node_modules'));
@@ -22,72 +25,78 @@ gulp.task('fmt', () => formatStagedFiles());
const formatFiles = (some) => {
const formatting = es.map(function (file, cb) {
tsfmt.processString(file.path, file.contents.toString('utf8'), {
replace: true,
tsfmt: true,
tslint: true,
tsconfig: true
// verbose: true
}).then(result => {
console.info('ran formatting on file ' + file.path + ' result: ' + result.message);
if (result.error) {
console.error(result.message);
}
cb(null, file);
tsfmt.processString(file.path, file.contents.toString('utf8'), {
replace: true,
tsfmt: true,
tslint: true,
tsconfig: true
// verbose: true
}).then(result => {
console.info('ran formatting on file ' + file.path + ' result: ' + result.message);
if (result.error) {
console.error(result.message);
}
cb(null, file);
}, err => {
cb(err);
});
}, err => {
cb(err);
});
return gulp.src(some, { base: '.' })
.pipe(filter(f => !f.stat.isDirectory()))
.pipe(formatting);
});
return gulp.src(some, {
base: '.'
})
.pipe(filter(f => !f.stat.isDirectory()))
.pipe(formatting);
};
const formatStagedFiles = () => {
const cp = require('child_process');
cp.exec('git diff --name-only', { maxBuffer: 2000 * 1024 }, (err, out) => {
if (err) {
console.error();
console.error(err);
process.exit(1);
}
cp.exec('git diff --name-only', {
maxBuffer: 2000 * 1024
}, (err, out) => {
if (err) {
console.error();
console.error(err);
process.exit(1);
}
const some = out
.split(/\r?\n/)
.filter(l => !!l)
.filter(l => l.match(/.*.ts$/i));
const some = out
.split(/\r?\n/)
.filter(l => !!l)
.filter(l => l.match(/.*.ts$/i));
formatFiles(some).on('error', err => {
console.error();
console.error(err);
process.exit(1);
});
formatFiles(some).on('error', err => {
console.error();
console.error(err);
process.exit(1);
});
});
cp.exec('git diff --cached --name-only', { maxBuffer: 2000 * 1024 }, (err, out) => {
if (err) {
console.error();
console.error(err);
process.exit(1);
}
cp.exec('git diff --cached --name-only', {
maxBuffer: 2000 * 1024
}, (err, out) => {
if (err) {
console.error();
console.error(err);
process.exit(1);
}
const some = out
.split(/\r?\n/)
.filter(l => !!l)
.filter(l => l.match(/.*.ts$/i));
const some = out
.split(/\r?\n/)
.filter(l => !!l)
.filter(l => l.match(/.*.ts$/i));
formatFiles(some).on('error', err => {
console.error();
console.error(err);
process.exit(1);
});
formatFiles(some).on('error', err => {
console.error();
console.error(err);
process.exit(1);
});
});
};
function installService() {
let config = require('../extensions/mssql/src/config.json');
let config = require('../extensions/mssql/config.json');
return platformInfo.getCurrent().then(p => {
let runtime = p.runtimeId;
// fix path since it won't be correct
@@ -109,7 +118,7 @@ gulp.task('install-sqltoolsservice', () => {
});
function installSsmsMin() {
const config = require('../extensions/admin-tool-ext-win/src/config.json');
const config = require('../extensions/admin-tool-ext-win/config.json');
return platformInfo.getCurrent().then(p => {
const runtime = p.runtimeId;
// fix path since it won't be correct
@@ -130,3 +139,60 @@ function installSsmsMin() {
gulp.task('install-ssmsmin', () => {
return installSsmsMin();
});
async function rollupModule(options) {
const moduleName = options.moduleName;
try {
const inputFile = options.inputFile;
const outputDirectory = options.outputDirectory;
await fs.promises.mkdir(outputDirectory, {
recursive: true
});
const outputFileName = options.outputFileName;
const outputMapName = `${outputFileName}.map`;
const external = options.external || [];
const outputFilePath = path.resolve(outputDirectory, outputFileName);
const outputMapPath = path.resolve(outputDirectory, outputMapName);
const bundle = await rollup.rollup({
input: inputFile,
plugins: [
rollupNodeResolve(),
rollupCommonJS(),
],
external,
});
const generatedBundle = await bundle.generate({
output: {
name: moduleName
},
format: 'umd',
sourcemap: true
});
const result = generatedBundle.output[0];
result.code = result.code + '\n//# sourceMappingURL=' + path.basename(outputMapName);
await fs.promises.writeFile(outputFilePath, result.code);
await fs.promises.writeFile(outputMapPath, result.map);
return {
name: moduleName,
result: true
};
} catch (ex) {
return {
name: moduleName,
result: false,
exception: ex
};
}
}
module.exports = {
rollupModule
};

View File

@@ -58,10 +58,9 @@ const nodeModules = [
// Build
const vscodeEntryPoints = _.flatten([
buildfile.entrypoint('vs/workbench/workbench.main'),
buildfile.entrypoint('vs/workbench/workbench.desktop.main'),
buildfile.base,
buildfile.serviceWorker,
buildfile.workbench,
buildfile.workbenchDesktop,
buildfile.code
]);
@@ -80,6 +79,7 @@ const vscodeResources = [
'out-build/vs/base/node/languagePacks.js',
'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}',
'out-build/vs/base/browser/ui/octiconLabel/octicons/**',
'out-build/vs/base/browser/ui/codiconLabel/codicon/**',
'out-build/vs/workbench/browser/media/*-theme.css',
'out-build/vs/workbench/contrib/debug/**/*.json',
'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
@@ -87,7 +87,6 @@ const vscodeResources = [
'out-build/vs/workbench/contrib/webview/electron-browser/pre/*.js',
'out-build/vs/**/markdown.css',
'out-build/vs/workbench/contrib/tasks/**/*.json',
'out-build/vs/workbench/contrib/welcome/walkThrough/**/*.md',
'out-build/vs/platform/files/**/*.exe',
'out-build/vs/platform/files/**/*.md',
'out-build/vs/code/electron-browser/workbench/**',
@@ -125,6 +124,7 @@ const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
resources: vscodeResources,
loaderConfig: common.loaderConfig(nodeModules),
out: 'out-vscode',
inlineAmdImages: true,
bundleInfo: undefined
})
));
@@ -255,8 +255,8 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const out = sourceFolderName;
const checksums = computeChecksums(out, [
'vs/workbench/workbench.main.js',
'vs/workbench/workbench.main.css',
'vs/workbench/workbench.desktop.main.js',
'vs/workbench/workbench.desktop.main.css',
'vs/code/electron-browser/workbench/workbench.html',
'vs/code/electron-browser/workbench/workbench.js'
]);
@@ -353,7 +353,15 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
.pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true })))
.pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'], { dot: true }));
// result = es.merge(result, gulp.src('resources/completions/**', { base: '.' }));
if (platform === 'linux') {
result = es.merge(result, gulp.src('resources/completions/bash/code', { base: '.' })
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename(function (f) { f.basename = product.applicationName; })));
result = es.merge(result, gulp.src('resources/completions/zsh/_code', { base: '.' })
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename(function (f) { f.basename = '_' + product.applicationName; })));
}
if (platform === 'win32') {
result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32', allowEmpty: true }));
@@ -460,7 +468,7 @@ gulp.task(task.define(
optimizeVSCodeTask,
function () {
const pathToMetadata = './out-vscode/nls.metadata.json';
const pathToExtensions = './extensions/*';
const pathToExtensions = '.build/extensions/*';
const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
return es.merge(
@@ -481,7 +489,7 @@ gulp.task(task.define(
optimizeVSCodeTask,
function () {
const pathToMetadata = './out-vscode/nls.metadata.json';
const pathToExtensions = './extensions/*';
const pathToExtensions = '.build/extensions/*';
const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
return es.merge(

View File

@@ -43,6 +43,7 @@ function prepareDebPackage(arch) {
.pipe(replace('@@NAME_LONG@@', product.nameLong))
.pipe(replace('@@NAME_SHORT@@', product.nameShort))
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@EXEC@@', `/usr/share/${product.applicationName}/${product.applicationName}`))
.pipe(replace('@@ICON@@', product.linuxIconName))
.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
@@ -55,11 +56,13 @@ function prepareDebPackage(arch) {
const icon = gulp.src('resources/linux/code.png', { base: '.' })
.pipe(rename('usr/share/pixmaps/' + product.linuxIconName + '.png'));
// const bash_completion = gulp.src('resources/completions/bash/code')
// .pipe(rename('usr/share/bash-completion/completions/code'));
const bash_completion = gulp.src('resources/completions/bash/code')
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename('usr/share/bash-completion/completions/' + product.applicationName));
// const zsh_completion = gulp.src('resources/completions/zsh/_code')
// .pipe(rename('usr/share/zsh/vendor-completions/_code'));
const zsh_completion = gulp.src('resources/completions/zsh/_code')
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename('usr/share/zsh/vendor-completions/_' + product.applicationName));
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = 'usr/share/' + product.applicationName + '/' + p.dirname; }));
@@ -95,7 +98,7 @@ function prepareDebPackage(arch) {
.pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@'))
.pipe(rename('DEBIAN/postinst'));
const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, icon, /* bash_completion, zsh_completion, */ code);
const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, icon, bash_completion, zsh_completion, code);
return all.pipe(vfs.dest(destination));
};
@@ -134,6 +137,7 @@ function prepareRpmPackage(arch) {
.pipe(replace('@@NAME_LONG@@', product.nameLong))
.pipe(replace('@@NAME_SHORT@@', product.nameShort))
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@EXEC@@', `/usr/share/${product.applicationName}/${product.applicationName}`))
.pipe(replace('@@ICON@@', product.linuxIconName))
.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
@@ -146,11 +150,13 @@ function prepareRpmPackage(arch) {
const icon = gulp.src('resources/linux/code.png', { base: '.' })
.pipe(rename('BUILD/usr/share/pixmaps/' + product.linuxIconName + '.png'));
// const bash_completion = gulp.src('resources/completions/bash/code')
// .pipe(rename('BUILD/usr/share/bash-completion/completions/code'));
const bash_completion = gulp.src('resources/completions/bash/code')
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename('BUILD/usr/share/bash-completion/completions/' + product.applicationName));
// const zsh_completion = gulp.src('resources/completions/zsh/_code')
// .pipe(rename('BUILD/usr/share/zsh/site-functions/_code'));
const zsh_completion = gulp.src('resources/completions/zsh/_code')
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename('BUILD/usr/share/zsh/site-functions/_' + product.applicationName));
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; }));
@@ -173,7 +179,7 @@ function prepareRpmPackage(arch) {
const specIcon = gulp.src('resources/linux/rpm/code.xpm', { base: '.' })
.pipe(rename('SOURCES/' + product.applicationName + '.xpm'));
const all = es.merge(code, desktops, appdata, icon, /* bash_completion, zsh_completion, */ spec, specIcon);
const all = es.merge(code, desktops, appdata, icon, bash_completion, zsh_completion, spec, specIcon);
return all.pipe(vfs.dest(getRpmBuildPath(rpmArch)));
};
@@ -202,21 +208,25 @@ function prepareSnapPackage(arch) {
const destination = getSnapBuildPath(arch);
return function () {
// A desktop file that is placed in snap/gui will be placed into meta/gui verbatim.
const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
.pipe(rename(`usr/share/applications/${product.applicationName}.desktop`));
.pipe(rename(`snap/gui/${product.applicationName}.desktop`));
// A desktop file that is placed in snap/gui will be placed into meta/gui verbatim.
const desktopUrlHandler = gulp.src('resources/linux/code-url-handler.desktop', { base: '.' })
.pipe(rename(`usr/share/applications/${product.applicationName}-url-handler.desktop`));
.pipe(rename(`snap/gui/${product.applicationName}-url-handler.desktop`));
const desktops = es.merge(desktop, desktopUrlHandler)
.pipe(replace('@@NAME_LONG@@', product.nameLong))
.pipe(replace('@@NAME_SHORT@@', product.nameShort))
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@ICON@@', `/usr/share/pixmaps/${product.linuxIconName}.png`))
.pipe(replace('@@EXEC@@', `${product.applicationName} --force-user-env`))
.pipe(replace('@@ICON@@', `\${SNAP}/meta/gui/${product.linuxIconName}.png`))
.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
// An icon that is placed in snap/gui will be placed into meta/gui verbatim.
const icon = gulp.src('resources/linux/code.png', { base: '.' })
.pipe(rename(`usr/share/pixmaps/${product.linuxIconName}.png`));
.pipe(rename(`snap/gui/${product.linuxIconName}.png`));
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = `usr/share/${product.applicationName}/${p.dirname}`; }));
@@ -237,7 +247,8 @@ function prepareSnapPackage(arch) {
function buildSnapPackage(arch) {
const snapBuildPath = getSnapBuildPath(arch);
return shell.task(`cd ${snapBuildPath} && snapcraft build`);
// Default target for snapcraft runs: pull, build, stage and prime, and finally assembles the snap.
return shell.task(`cd ${snapBuildPath} && snapcraft`);
}
const BUILD_TARGETS = [

View File

@@ -6,146 +6,11 @@
'use strict';
const gulp = require('gulp');
const path = require('path');
const es = require('event-stream');
const util = require('./lib/util');
const task = require('./lib/task');
const common = require('./lib/optimize');
const product = require('../product.json');
const rename = require('gulp-rename');
const filter = require('gulp-filter');
const json = require('gulp-json-editor');
const _ = require('underscore');
const deps = require('./dependencies');
const vfs = require('vinyl-fs');
const packageJson = require('../package.json');
const { compileBuildTask } = require('./gulpfile.compile');
const REPO_ROOT = path.dirname(__dirname);
const commit = util.getVersion(REPO_ROOT);
const BUILD_ROOT = path.dirname(REPO_ROOT);
const WEB_FOLDER = path.join(REPO_ROOT, 'remote', 'web');
const noop = () => { return Promise.resolve(); };
const productionDependencies = deps.getProductionDependencies(WEB_FOLDER);
const nodeModules = Object.keys(product.dependencies || {})
.concat(_.uniq(productionDependencies.map(d => d.name)));
const vscodeWebResources = [
// Workbench
'out-build/vs/{base,platform,editor,workbench}/**/*.{svg,png,html}',
'out-build/vs/base/browser/ui/octiconLabel/octicons/**',
'out-build/vs/**/markdown.css',
// Webview
'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
// Excludes
'!out-build/vs/**/{node,electron-browser,electron-main}/**',
'!out-build/vs/editor/standalone/**',
'!out-build/vs/workbench/**/*-tb.png',
'!**/test/**'
];
const buildfile = require('../src/buildfile');
const vscodeWebEntryPoints = [
buildfile.workbenchWeb,
buildfile.serviceWorker,
buildfile.keyboardMaps,
buildfile.base
];
const optimizeVSCodeWebTask = task.define('optimize-vscode-web', task.series(
util.rimraf('out-vscode-web'),
common.optimizeTask({
src: 'out-build',
entryPoints: _.flatten(vscodeWebEntryPoints),
otherSources: [],
resources: vscodeWebResources,
loaderConfig: common.loaderConfig(nodeModules),
out: 'out-vscode-web',
bundleInfo: undefined
})
));
const minifyVSCodeWebTask = task.define('minify-vscode-web', task.series(
optimizeVSCodeWebTask,
util.rimraf('out-vscode-web-min'),
common.minifyTask('out-vscode-web', `https://ticino.blob.core.windows.net/sourcemaps/${commit}/core`)
));
gulp.task(minifyVSCodeWebTask);
function packageTask(sourceFolderName, destinationFolderName) {
const destination = path.join(BUILD_ROOT, destinationFolderName);
return () => {
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }))
.pipe(filter(['**', '!**/*.js.map']));
const sources = es.merge(src);
let version = packageJson.version;
const quality = product.quality;
if (quality && quality !== 'stable') {
version += '-' + quality;
}
const name = product.nameShort;
const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' })
.pipe(json({ name, version }));
const date = new Date().toISOString();
const productJsonStream = gulp.src(['product.json'], { base: '.' })
.pipe(json({ commit, date }));
const license = gulp.src(['remote/LICENSE'], { base: 'remote' });
const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]));
const deps = gulp.src(dependenciesSrc, { base: 'remote/web', dot: true })
.pipe(filter(['**', '!**/package-lock.json']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')));
const favicon = gulp.src('resources/server/favicon.ico', { base: 'resources/server' });
let all = es.merge(
packageJsonStream,
productJsonStream,
license,
sources,
deps,
favicon
);
let result = all
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions());
return result.pipe(vfs.dest(destination));
};
}
const dashed = (str) => (str ? `-${str}` : ``);
['', 'min'].forEach(minified => {
const sourceFolderName = `out-vscode-web${dashed(minified)}`;
const destinationFolderName = `vscode-web`;
const vscodeWebTaskCI = task.define(`vscode-web${dashed(minified)}-ci`, task.series(
minified ? minifyVSCodeWebTask : optimizeVSCodeWebTask,
util.rimraf(path.join(BUILD_ROOT, destinationFolderName)),
packageTask(sourceFolderName, destinationFolderName)
));
gulp.task(vscodeWebTaskCI);
const vscodeWebTask = task.define(`vscode-web${dashed(minified)}`, task.series(
compileBuildTask,
vscodeWebTaskCI
));
gulp.task(vscodeWebTask);
});
gulp.task('minify-vscode-web', noop);
gulp.task('vscode-web', noop);
gulp.task('vscode-web-min', noop);
gulp.task('vscode-web-ci', noop);
gulp.task('vscode-web-min-ci', noop);

View File

@@ -19,7 +19,8 @@ const ansiColors = require('ansi-colors');
const root = path.dirname(path.dirname(__dirname));
// {{SQL CARBON EDIT}}
const builtInExtensions = require('../builtInExtensions-insiders.json');
const quality = process.env['VSCODE_QUALITY'];
const builtInExtensions = quality && quality === 'stable' ? require('../builtInExtensions.json') : require('../builtInExtensions-insiders.json');
// {{SQL CARBON EDIT}} - END
const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');

View File

@@ -11,7 +11,6 @@ const bom = require("gulp-bom");
const sourcemaps = require("gulp-sourcemaps");
const tsb = require("gulp-tsb");
const path = require("path");
const _ = require("underscore");
const monacodts = require("../monaco/api");
const nls = require("./nls");
const reporter_1 = require("./reporter");
@@ -22,14 +21,7 @@ const watch = require('./watch');
const reporter = reporter_1.createReporter();
function getTypeScriptCompilerOptions(src) {
const rootDir = path.join(__dirname, `../../${src}`);
const tsconfig = require(`../../${src}/tsconfig.json`);
let options;
if (tsconfig.extends) {
options = Object.assign({}, require(path.join(rootDir, tsconfig.extends)).compilerOptions, tsconfig.compilerOptions);
}
else {
options = tsconfig.compilerOptions;
}
let options = {};
options.verbose = false;
options.sourceMap = true;
if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
@@ -38,15 +30,14 @@ function getTypeScriptCompilerOptions(src) {
options.rootDir = rootDir;
options.baseUrl = rootDir;
options.sourceRoot = util.toFileUri(rootDir);
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 'CRLF' : 'LF';
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
return options;
}
function createCompile(src, build, emitError) {
const opts = _.clone(getTypeScriptCompilerOptions(src));
opts.inlineSources = !!build;
opts.noFilesystemLookup = true;
const ts = tsb.create(opts, true, undefined, err => reporter(err.toString()));
return function (token) {
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) });
const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));
function pipeline(token) {
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
const tsFilter = util.filter(data => /\.ts$/.test(data.path));
const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path)));
@@ -57,30 +48,28 @@ function createCompile(src, build, emitError) {
.pipe(utf8Filter.restore)
.pipe(tsFilter)
.pipe(util.loadSourcemaps())
.pipe(ts(token))
.pipe(compilation(token))
.pipe(noDeclarationsFilter)
.pipe(build ? nls() : es.through())
.pipe(noDeclarationsFilter.restore)
.pipe(sourcemaps.write('.', {
addComment: false,
includeContent: !!build,
sourceRoot: opts.sourceRoot
sourceRoot: overrideOptions.sourceRoot
}))
.pipe(tsFilter.restore)
.pipe(reporter.end(!!emitError));
return es.duplex(input, output);
}
pipeline.tsProjectSrc = () => {
return compilation.src({ base: src });
};
return pipeline;
}
const typesDts = [
'node_modules/typescript/lib/*.d.ts',
'node_modules/@types/**/*.d.ts',
'!node_modules/@types/webpack/**/*',
'!node_modules/@types/uglify-js/**/*',
];
function compileTask(src, out, build) {
return function () {
const compile = createCompile(src, build, true);
const srcPipe = es.merge(gulp.src(`${src}/**`, { base: `${src}` }), gulp.src(typesDts));
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
let generator = new MonacoGenerator(false);
if (src === 'src') {
generator.execute();
@@ -95,8 +84,8 @@ exports.compileTask = compileTask;
function watchTask(out, build) {
return function () {
const compile = createCompile('src', build);
const src = es.merge(gulp.src('src/**', { base: 'src' }), gulp.src(typesDts));
const watchSrc = watch('src/**', { base: 'src' });
const src = gulp.src('src/**', { base: 'src' });
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
let generator = new MonacoGenerator(true);
generator.execute();
return watchSrc

View File

@@ -12,27 +12,21 @@ import * as bom from 'gulp-bom';
import * as sourcemaps from 'gulp-sourcemaps';
import * as tsb from 'gulp-tsb';
import * as path from 'path';
import * as _ from 'underscore';
import * as monacodts from '../monaco/api';
import * as nls from './nls';
import { createReporter } from './reporter';
import * as util from './util';
import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
import ts = require('typescript');
const watch = require('./watch');
const reporter = createReporter();
function getTypeScriptCompilerOptions(src: string) {
function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
const rootDir = path.join(__dirname, `../../${src}`);
const tsconfig = require(`../../${src}/tsconfig.json`);
let options: { [key: string]: any };
if (tsconfig.extends) {
options = Object.assign({}, require(path.join(rootDir, tsconfig.extends)).compilerOptions, tsconfig.compilerOptions);
} else {
options = tsconfig.compilerOptions;
}
let options: ts.CompilerOptions = {};
options.verbose = false;
options.sourceMap = true;
if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
@@ -41,18 +35,17 @@ function getTypeScriptCompilerOptions(src: string) {
options.rootDir = rootDir;
options.baseUrl = rootDir;
options.sourceRoot = util.toFileUri(rootDir);
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 'CRLF' : 'LF';
options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
return options;
}
function createCompile(src: string, build: boolean, emitError?: boolean): (token?: util.ICancellationToken) => NodeJS.ReadWriteStream {
const opts = _.clone(getTypeScriptCompilerOptions(src));
opts.inlineSources = !!build;
opts.noFilesystemLookup = true;
function createCompile(src: string, build: boolean, emitError?: boolean) {
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
const overrideOptions = { ...getTypeScriptCompilerOptions(src), inlineSources: Boolean(build) };
const ts = tsb.create(opts, true, undefined, err => reporter(err.toString()));
const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));
return function (token?: util.ICancellationToken) {
function pipeline(token?: util.ICancellationToken) {
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
const tsFilter = util.filter(data => /\.ts$/.test(data.path));
@@ -65,39 +58,31 @@ function createCompile(src: string, build: boolean, emitError?: boolean): (token
.pipe(utf8Filter.restore)
.pipe(tsFilter)
.pipe(util.loadSourcemaps())
.pipe(ts(token))
.pipe(compilation(token))
.pipe(noDeclarationsFilter)
.pipe(build ? nls() : es.through())
.pipe(noDeclarationsFilter.restore)
.pipe(sourcemaps.write('.', {
addComment: false,
includeContent: !!build,
sourceRoot: opts.sourceRoot
sourceRoot: overrideOptions.sourceRoot
}))
.pipe(tsFilter.restore)
.pipe(reporter.end(!!emitError));
return es.duplex(input, output);
}
pipeline.tsProjectSrc = () => {
return compilation.src({ base: src });
};
return pipeline;
}
const typesDts = [
'node_modules/typescript/lib/*.d.ts',
'node_modules/@types/**/*.d.ts',
'!node_modules/@types/webpack/**/*',
'!node_modules/@types/uglify-js/**/*',
];
export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
return function () {
const compile = createCompile(src, build, true);
const srcPipe = es.merge(
gulp.src(`${src}/**`, { base: `${src}` }),
gulp.src(typesDts),
);
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
let generator = new MonacoGenerator(false);
if (src === 'src') {
generator.execute();
@@ -115,11 +100,8 @@ export function watchTask(out: string, build: boolean): () => NodeJS.ReadWriteSt
return function () {
const compile = createCompile('src', build);
const src = es.merge(
gulp.src('src/**', { base: 'src' }),
gulp.src(typesDts),
);
const watchSrc = watch('src/**', { base: 'src' });
const src = gulp.src('src/**', { base: 'src' });
const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
let generator = new MonacoGenerator(true);
generator.execute();

View File

@@ -29,12 +29,18 @@ const commit = util.getVersion(root);
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
function fromLocal(extensionPath) {
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
if (fs.existsSync(webpackFilename)) {
return fromLocalWebpack(extensionPath);
}
else {
return fromLocalNormal(extensionPath);
}
const input = fs.existsSync(webpackFilename)
? fromLocalWebpack(extensionPath)
: fromLocalNormal(extensionPath);
const tmLanguageJsonFilter = filter('**/*.tmLanguage.json', { restore: true });
return input
.pipe(tmLanguageJsonFilter)
.pipe(buffer())
.pipe(es.mapSync((f) => {
f.contents = Buffer.from(JSON.stringify(JSON.parse(f.contents.toString('utf8'))));
return f;
}))
.pipe(tmLanguageJsonFilter.restore);
}
function fromLocalWebpack(extensionPath) {
const result = es.through();
@@ -95,7 +101,7 @@ function fromLocalWebpack(extensionPath) {
result.emit('error', compilation.warnings.join('\n'));
}
};
const webpackConfig = Object.assign({}, require(webpackConfigPath), { mode: 'production' });
const webpackConfig = Object.assign(Object.assign({}, require(webpackConfigPath)), { mode: 'production' });
const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
return webpackGulp(webpackConfig, webpack, webpackDone)
.pipe(es.through(function (data) {
@@ -193,13 +199,10 @@ const sqlBuiltInExtensions = [
'admin-pack',
'dacpac',
'schema-compare',
'cms'
'cms',
'query-history',
'liveshare'
];
// make resource deployment and BDC extension only available in insiders
if (process.env['VSCODE_QUALITY'] === 'stable') {
sqlBuiltInExtensions.push('resource-deployment');
sqlBuiltInExtensions.push('big-data-cluster');
}
const builtInExtensions = process.env['VSCODE_QUALITY'] === 'stable' ? require('../builtInExtensions.json') : require('../builtInExtensions-insiders.json');
// {{SQL CARBON EDIT}} - End
function packageLocalExtensionsStream() {

View File

@@ -30,11 +30,20 @@ const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${
function fromLocal(extensionPath: string): Stream {
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
if (fs.existsSync(webpackFilename)) {
return fromLocalWebpack(extensionPath);
} else {
return fromLocalNormal(extensionPath);
}
const input = fs.existsSync(webpackFilename)
? fromLocalWebpack(extensionPath)
: fromLocalNormal(extensionPath);
const tmLanguageJsonFilter = filter('**/*.tmLanguage.json', { restore: true });
return input
.pipe(tmLanguageJsonFilter)
.pipe(buffer())
.pipe(es.mapSync((f: File) => {
f.contents = Buffer.from(JSON.stringify(JSON.parse(f.contents.toString('utf8'))));
return f;
}))
.pipe(tmLanguageJsonFilter.restore);
}
function fromLocalWebpack(extensionPath: string): Stream {
@@ -226,16 +235,11 @@ const sqlBuiltInExtensions = [
'admin-pack',
'dacpac',
'schema-compare',
'cms'
'cms',
'query-history',
'liveshare'
];
// make resource deployment and BDC extension only available in insiders
if (process.env['VSCODE_QUALITY'] === 'stable') {
sqlBuiltInExtensions.push('resource-deployment');
sqlBuiltInExtensions.push('big-data-cluster');
}
interface IBuiltInExtension {
name: string;
version: string;
@@ -346,4 +350,4 @@ export function packageExtensionTask(extensionName: string, platform: string, ar
return result.pipe(vfs.dest(destination));
};
}
// {{SQL CARBON EDIT}} - End
// {{SQL CARBON EDIT}} - End

View File

@@ -176,6 +176,7 @@ class XLF {
this.buffer.push(line.toString());
}
}
exports.XLF = XLF;
XLF.parsePseudo = function (xlfString) {
return new Promise((resolve) => {
let parser = new xml2js.Parser();
@@ -248,7 +249,6 @@ XLF.parse = function (xlfString) {
});
});
};
exports.XLF = XLF;
class Limiter {
constructor(maxDegreeOfParalellism) {
this.maxDegreeOfParalellism = maxDegreeOfParalellism;
@@ -586,7 +586,7 @@ function createXlfFilesForExtensions() {
}
return _xlf;
}
gulp.src([`./extensions/${extensionName}/package.nls.json`, `./extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(event_stream_1.through(function (file) {
gulp.src([`.build/extensions/${extensionName}/package.nls.json`, `.build/extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(event_stream_1.through(function (file) {
if (file.isBuffer()) {
const buffer = file.contents;
const basename = path.basename(file.path);
@@ -609,7 +609,7 @@ function createXlfFilesForExtensions() {
}
else if (basename === 'nls.metadata.json') {
const json = JSON.parse(buffer.toString('utf8'));
const relPath = path.relative(`./extensions/${extensionName}`, path.dirname(file.path));
const relPath = path.relative(`.build/extensions/${extensionName}`, path.dirname(file.path));
for (let file in json) {
const fileContent = json[file];
getXlf().addFile(`extensions/${extensionName}/${relPath}/${file}`, fileContent.keys, fileContent.messages);
@@ -912,8 +912,8 @@ function pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language
_coreAndExtensionResources.push(...json.workbench);
// extensions
let extensionsToLocalize = Object.create(null);
glob.sync('./extensions/**/*.nls.json').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('./extensions/*/node_modules/vscode-nls').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('.build/extensions/**/*.nls.json').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('.build/extensions/*/node_modules/vscode-nls').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
Object.keys(extensionsToLocalize).forEach(extension => {
_coreAndExtensionResources.push({ name: extension, project: extensionsProject });
});
@@ -1086,7 +1086,7 @@ function prepareI18nPackFiles(externalExtensions, resultingTranslationPaths, pse
resultingTranslationPaths.push({ id: 'vscode', resourceName: 'main.i18n.json' });
this.queue(translatedMainFile);
for (let extension in extensionsPacks) {
const translatedExtFile = createI18nFile(`./extensions/${extension}`, extensionsPacks[extension]);
const translatedExtFile = createI18nFile(`extensions/${extension}`, extensionsPacks[extension]);
this.queue(translatedExtFile);
const externalExtensionId = externalExtensions[extension];
if (externalExtensionId) {

View File

@@ -106,6 +106,10 @@
"name": "vs/workbench/contrib/quickopen",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/userData",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/remote",
"project": "vscode-workbench"
@@ -170,6 +174,10 @@
"name": "vs/workbench/contrib/webview",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/customEditor",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/welcome",
"project": "vscode-workbench"
@@ -178,6 +186,10 @@
"name": "vs/workbench/contrib/outline",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/userDataSync",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/actions",
"project": "vscode-workbench"
@@ -230,6 +242,10 @@
"name": "vs/workbench/services/keybinding",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/lifecycle",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/mode",
"project": "vscode-workbench"
@@ -255,7 +271,7 @@
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/workspace",
"name": "vs/workbench/services/workspaces",
"project": "vscode-workbench"
},
{
@@ -269,6 +285,14 @@
{
"name": "vs/workbench/services/preferences",
"project": "vscode-preferences"
},
{
"name": "vs/workbench/services/notification",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/userData",
"project": "vscode-workbench"
}
]
}

View File

@@ -709,7 +709,7 @@ export function createXlfFilesForExtensions(): ThroughStream {
}
return _xlf;
}
gulp.src([`./extensions/${extensionName}/package.nls.json`, `./extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(through(function (file: File) {
gulp.src([`.build/extensions/${extensionName}/package.nls.json`, `.build/extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(through(function (file: File) {
if (file.isBuffer()) {
const buffer: Buffer = file.contents as Buffer;
const basename = path.basename(file.path);
@@ -729,7 +729,7 @@ export function createXlfFilesForExtensions(): ThroughStream {
getXlf().addFile(`extensions/${extensionName}/package`, keys, messages);
} else if (basename === 'nls.metadata.json') {
const json: BundledExtensionFormat = JSON.parse(buffer.toString('utf8'));
const relPath = path.relative(`./extensions/${extensionName}`, path.dirname(file.path));
const relPath = path.relative(`.build/extensions/${extensionName}`, path.dirname(file.path));
for (let file in json) {
const fileContent = json[file];
getXlf().addFile(`extensions/${extensionName}/${relPath}/${file}`, fileContent.keys, fileContent.messages);
@@ -1053,8 +1053,8 @@ export function pullCoreAndExtensionsXlfFiles(apiHostname: string, username: str
// extensions
let extensionsToLocalize = Object.create(null);
glob.sync('./extensions/**/*.nls.json').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('./extensions/*/node_modules/vscode-nls').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('.build/extensions/**/*.nls.json').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
glob.sync('.build/extensions/*/node_modules/vscode-nls').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
Object.keys(extensionsToLocalize).forEach(extension => {
_coreAndExtensionResources.push({ name: extension, project: extensionsProject });
@@ -1253,7 +1253,7 @@ export function prepareI18nPackFiles(externalExtensions: Map<string>, resultingT
this.queue(translatedMainFile);
for (let extension in extensionsPacks) {
const translatedExtFile = createI18nFile(`./extensions/${extension}`, extensionsPacks[extension]);
const translatedExtFile = createI18nFile(`extensions/${extension}`, extensionsPacks[extension]);
this.queue(translatedExtFile);
const externalExtensionId = externalExtensions[extension];

View File

@@ -5,6 +5,7 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const es = require("event-stream");
const fs = require("fs");
const gulp = require("gulp");
const concat = require("gulp-concat");
const minifyCSS = require("gulp-cssnano");
@@ -17,7 +18,7 @@ const fancyLog = require("fancy-log");
const ansiColors = require("ansi-colors");
const path = require("path");
const pump = require("pump");
const uglifyes = require("uglify-es");
const terser = require("terser");
const VinylFile = require("vinyl");
const bundle = require("./bundle");
const i18n_1 = require("./i18n");
@@ -134,6 +135,14 @@ function optimizeTask(opts) {
if (err || !result) {
return bundlesStream.emit('error', JSON.stringify(err));
}
if (opts.inlineAmdImages) {
try {
result = inlineAmdImages(src, result);
}
catch (err) {
return bundlesStream.emit('error', JSON.stringify(err));
}
}
toBundleStream(src, bundledFileHeader, result.files).pipe(bundlesStream);
// Remove css inlined resources
const filteredResources = resources.slice();
@@ -169,6 +178,39 @@ function optimizeTask(opts) {
};
}
exports.optimizeTask = optimizeTask;
function inlineAmdImages(src, result) {
for (const outputFile of result.files) {
for (const sourceFile of outputFile.sources) {
if (sourceFile.path && /\.js$/.test(sourceFile.path)) {
sourceFile.contents = sourceFile.contents.replace(/\([^.]+\.registerAndGetAmdImageURL\(([^)]+)\)\)/g, (_, m0) => {
let imagePath = m0;
// remove `` or ''
if ((imagePath.charAt(0) === '`' && imagePath.charAt(imagePath.length - 1) === '`')
|| (imagePath.charAt(0) === '\'' && imagePath.charAt(imagePath.length - 1) === '\'')) {
imagePath = imagePath.substr(1, imagePath.length - 2);
}
if (!/\.(png|svg)$/.test(imagePath)) {
console.log(`original: ${_}`);
return _;
}
const repoLocation = path.join(src, imagePath);
const absoluteLocation = path.join(REPO_ROOT_PATH, repoLocation);
if (!fs.existsSync(absoluteLocation)) {
const message = `Invalid amd image url in file ${sourceFile.path}: ${imagePath}`;
console.log(message);
throw new Error(message);
}
const fileContents = fs.readFileSync(absoluteLocation);
const mime = /\.svg$/.test(imagePath) ? 'image/svg+xml' : 'image/png';
// Mark the file as inlined so we don't ship it by itself
result.cssInlinedResources.push(repoLocation);
return `("data:${mime};base64,${fileContents.toString('base64')}")`;
});
}
}
}
return result;
}
/**
* Wrap around uglify and allow the preserveComments function
* to have a file "context" to include our copyright only once per file.
@@ -199,7 +241,7 @@ function uglifyWithCopyrights() {
return false;
};
};
const minify = composer(uglifyes);
const minify = composer(terser);
const input = es.through();
const output = input
.pipe(flatmap((stream, f) => {

View File

@@ -6,6 +6,7 @@
'use strict';
import * as es from 'event-stream';
import * as fs from 'fs';
import * as gulp from 'gulp';
import * as concat from 'gulp-concat';
import * as minifyCSS from 'gulp-cssnano';
@@ -19,7 +20,7 @@ import * as ansiColors from 'ansi-colors';
import * as path from 'path';
import * as pump from 'pump';
import * as sm from 'source-map';
import * as uglifyes from 'uglify-es';
import * as terser from 'terser';
import * as VinylFile from 'vinyl';
import * as bundle from './bundle';
import { Language, processNlsFiles } from './i18n';
@@ -161,6 +162,10 @@ export interface IOptimizeTaskOpts {
* (emit bundleInfo.json file)
*/
bundleInfo: boolean;
/**
* replace calls to `registerAndGetAmdImageURL` with data uris
*/
inlineAmdImages: boolean;
/**
* (out folder name)
*/
@@ -194,6 +199,14 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
bundle.bundle(entryPoints, loaderConfig, function (err, result) {
if (err || !result) { return bundlesStream.emit('error', JSON.stringify(err)); }
if (opts.inlineAmdImages) {
try {
result = inlineAmdImages(src, result);
} catch (err) {
return bundlesStream.emit('error', JSON.stringify(err));
}
}
toBundleStream(src, bundledFileHeader, result.files).pipe(bundlesStream);
// Remove css inlined resources
@@ -238,6 +251,42 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
};
}
function inlineAmdImages(src: string, result: bundle.IBundleResult): bundle.IBundleResult {
for (const outputFile of result.files) {
for (const sourceFile of outputFile.sources) {
if (sourceFile.path && /\.js$/.test(sourceFile.path)) {
sourceFile.contents = sourceFile.contents.replace(/\([^.]+\.registerAndGetAmdImageURL\(([^)]+)\)\)/g, (_, m0) => {
let imagePath = m0;
// remove `` or ''
if ((imagePath.charAt(0) === '`' && imagePath.charAt(imagePath.length - 1) === '`')
|| (imagePath.charAt(0) === '\'' && imagePath.charAt(imagePath.length - 1) === '\'')) {
imagePath = imagePath.substr(1, imagePath.length - 2);
}
if (!/\.(png|svg)$/.test(imagePath)) {
console.log(`original: ${_}`);
return _;
}
const repoLocation = path.join(src, imagePath);
const absoluteLocation = path.join(REPO_ROOT_PATH, repoLocation);
if (!fs.existsSync(absoluteLocation)) {
const message = `Invalid amd image url in file ${sourceFile.path}: ${imagePath}`;
console.log(message);
throw new Error(message);
}
const fileContents = fs.readFileSync(absoluteLocation);
const mime = /\.svg$/.test(imagePath) ? 'image/svg+xml' : 'image/png';
// Mark the file as inlined so we don't ship it by itself
result.cssInlinedResources.push(repoLocation);
return `("data:${mime};base64,${fileContents.toString('base64')}")`;
});
}
}
}
return result;
}
declare class FileWithCopyright extends VinylFile {
public __hasOurCopyright: boolean;
}
@@ -275,7 +324,7 @@ function uglifyWithCopyrights(): NodeJS.ReadWriteStream {
};
};
const minify = (composer as any)(uglifyes);
const minify = (composer as any)(terser);
const input = es.through();
const output = input
.pipe(flatmap((stream, f) => {

View File

@@ -130,7 +130,7 @@ function createESMSourcesAndResources2(options) {
write(getDestAbsoluteFilePath(file), JSON.stringify(tsConfig, null, '\t'));
continue;
}
if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file)) {
if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
// Transport the files directly
write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
continue;
@@ -250,35 +250,37 @@ function transportCSS(module, enqueue, write) {
const filename = path.join(SRC_DIR, module);
const fileContents = fs.readFileSync(filename).toString();
const inlineResources = 'base64'; // see https://github.com/Microsoft/monaco-editor/issues/148
const inlineResourcesLimit = 300000; //3000; // see https://github.com/Microsoft/monaco-editor/issues/336
const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64', inlineResourcesLimit);
const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64');
write(module, newContents);
return true;
function _rewriteOrInlineUrls(contents, forceBase64, inlineByteLimit) {
function _rewriteOrInlineUrls(contents, forceBase64) {
return _replaceURL(contents, (url) => {
let imagePath = path.join(path.dirname(module), url);
let fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
if (fileContents.length < inlineByteLimit) {
const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
let DATA = ';base64,' + fileContents.toString('base64');
if (!forceBase64 && /\.svg$/.test(url)) {
// .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
let newText = fileContents.toString()
.replace(/"/g, '\'')
.replace(/</g, '%3C')
.replace(/>/g, '%3E')
.replace(/&/g, '%26')
.replace(/#/g, '%23')
.replace(/\s+/g, ' ');
let encodedData = ',' + newText;
if (encodedData.length < DATA.length) {
DATA = encodedData;
}
}
return '"data:' + MIME + DATA + '"';
const fontMatch = url.match(/^(.*).ttf\?(.*)$/);
if (fontMatch) {
const relativeFontPath = `${fontMatch[1]}.ttf`; // trim the query parameter
const fontPath = path.join(path.dirname(module), relativeFontPath);
enqueue(fontPath);
return relativeFontPath;
}
enqueue(imagePath);
return url;
const imagePath = path.join(path.dirname(module), url);
const fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
let DATA = ';base64,' + fileContents.toString('base64');
if (!forceBase64 && /\.svg$/.test(url)) {
// .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
let newText = fileContents.toString()
.replace(/"/g, '\'')
.replace(/</g, '%3C')
.replace(/>/g, '%3E')
.replace(/&/g, '%26')
.replace(/#/g, '%23')
.replace(/\s+/g, ' ');
let encodedData = ',' + newText;
if (encodedData.length < DATA.length) {
DATA = encodedData;
}
}
return '"data:' + MIME + DATA + '"';
});
}
function _replaceURL(contents, replacer) {

View File

@@ -154,7 +154,7 @@ export function createESMSourcesAndResources2(options: IOptions2): void {
continue;
}
if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file)) {
if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
// Transport the files directly
write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
continue;
@@ -290,40 +290,41 @@ function transportCSS(module: string, enqueue: (module: string) => void, write:
const filename = path.join(SRC_DIR, module);
const fileContents = fs.readFileSync(filename).toString();
const inlineResources = 'base64'; // see https://github.com/Microsoft/monaco-editor/issues/148
const inlineResourcesLimit = 300000;//3000; // see https://github.com/Microsoft/monaco-editor/issues/336
const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64', inlineResourcesLimit);
const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64');
write(module, newContents);
return true;
function _rewriteOrInlineUrls(contents: string, forceBase64: boolean, inlineByteLimit: number): string {
function _rewriteOrInlineUrls(contents: string, forceBase64: boolean): string {
return _replaceURL(contents, (url) => {
let imagePath = path.join(path.dirname(module), url);
let fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
if (fileContents.length < inlineByteLimit) {
const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
let DATA = ';base64,' + fileContents.toString('base64');
if (!forceBase64 && /\.svg$/.test(url)) {
// .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
let newText = fileContents.toString()
.replace(/"/g, '\'')
.replace(/</g, '%3C')
.replace(/>/g, '%3E')
.replace(/&/g, '%26')
.replace(/#/g, '%23')
.replace(/\s+/g, ' ');
let encodedData = ',' + newText;
if (encodedData.length < DATA.length) {
DATA = encodedData;
}
}
return '"data:' + MIME + DATA + '"';
const fontMatch = url.match(/^(.*).ttf\?(.*)$/);
if (fontMatch) {
const relativeFontPath = `${fontMatch[1]}.ttf`; // trim the query parameter
const fontPath = path.join(path.dirname(module), relativeFontPath);
enqueue(fontPath);
return relativeFontPath;
}
enqueue(imagePath);
return url;
const imagePath = path.join(path.dirname(module), url);
const fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
let DATA = ';base64,' + fileContents.toString('base64');
if (!forceBase64 && /\.svg$/.test(url)) {
// .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
let newText = fileContents.toString()
.replace(/"/g, '\'')
.replace(/</g, '%3C')
.replace(/>/g, '%3E')
.replace(/&/g, '%26')
.replace(/#/g, '%23')
.replace(/\s+/g, ' ');
let encodedData = ',' + newText;
if (encodedData.length < DATA.length) {
DATA = encodedData;
}
}
return '"data:' + MIME + DATA + '"';
});
}

View File

@@ -0,0 +1,45 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
class AbstractGlobalsRuleWalker extends Lint.RuleWalker {
constructor(file, program, opts, _config) {
super(file, opts);
this.program = program;
this._config = _config;
}
visitIdentifier(node) {
if (this.getDisallowedGlobals().some(disallowedGlobal => disallowedGlobal === node.text)) {
if (this._config.allowed && this._config.allowed.some(allowed => allowed === node.text)) {
return; // override
}
const checker = this.program.getTypeChecker();
const symbol = checker.getSymbolAtLocation(node);
if (symbol) {
const declarations = symbol.declarations;
if (Array.isArray(declarations) && symbol.declarations.some(declaration => {
if (declaration) {
const parent = declaration.parent;
if (parent) {
const sourceFile = parent.getSourceFile();
if (sourceFile) {
const fileName = sourceFile.fileName;
if (fileName && fileName.indexOf(this.getDefinitionPattern()) >= 0) {
return true;
}
}
}
}
return false;
})) {
this.addFailureAtNode(node, `Cannot use global '${node.text}' in '${this._config.target}'`);
}
}
}
super.visitIdentifier(node);
}
}
exports.AbstractGlobalsRuleWalker = AbstractGlobalsRuleWalker;

View File

@@ -0,0 +1,57 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as ts from 'typescript';
import * as Lint from 'tslint';
interface AbstractGlobalsRuleConfig {
target: string;
allowed: string[];
}
export abstract class AbstractGlobalsRuleWalker extends Lint.RuleWalker {
constructor(file: ts.SourceFile, private program: ts.Program, opts: Lint.IOptions, private _config: AbstractGlobalsRuleConfig) {
super(file, opts);
}
protected abstract getDisallowedGlobals(): string[];
protected abstract getDefinitionPattern(): string;
visitIdentifier(node: ts.Identifier) {
if (this.getDisallowedGlobals().some(disallowedGlobal => disallowedGlobal === node.text)) {
if (this._config.allowed && this._config.allowed.some(allowed => allowed === node.text)) {
return; // override
}
const checker = this.program.getTypeChecker();
const symbol = checker.getSymbolAtLocation(node);
if (symbol) {
const declarations = symbol.declarations;
if (Array.isArray(declarations) && symbol.declarations.some(declaration => {
if (declaration) {
const parent = declaration.parent;
if (parent) {
const sourceFile = parent.getSourceFile();
if (sourceFile) {
const fileName = sourceFile.fileName;
if (fileName && fileName.indexOf(this.getDefinitionPattern()) >= 0) {
return true;
}
}
}
}
return false;
})) {
this.addFailureAtNode(node, `Cannot use global '${node.text}' in '${this._config.target}'`);
}
}
}
super.visitIdentifier(node);
}
}

View File

@@ -0,0 +1,34 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
const minimatch = require("minimatch");
const abstractGlobalsRule_1 = require("./abstractGlobalsRule");
class Rule extends Lint.Rules.TypedRule {
applyWithProgram(sourceFile, program) {
const configs = this.getOptions().ruleArguments;
for (const config of configs) {
if (minimatch(sourceFile.fileName, config.target)) {
return this.applyWithWalker(new NoDOMGlobalsRuleWalker(sourceFile, program, this.getOptions(), config));
}
}
return [];
}
}
exports.Rule = Rule;
class NoDOMGlobalsRuleWalker extends abstractGlobalsRule_1.AbstractGlobalsRuleWalker {
getDefinitionPattern() {
return 'lib.dom.d.ts';
}
getDisallowedGlobals() {
// intentionally not complete
return [
"window",
"document",
"HTMLElement"
];
}
}

View File

@@ -0,0 +1,45 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as ts from 'typescript';
import * as Lint from 'tslint';
import * as minimatch from 'minimatch';
import { AbstractGlobalsRuleWalker } from './abstractGlobalsRule';
interface NoDOMGlobalsRuleConfig {
target: string;
allowed: string[];
}
export class Rule extends Lint.Rules.TypedRule {
applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] {
const configs = <NoDOMGlobalsRuleConfig[]>this.getOptions().ruleArguments;
for (const config of configs) {
if (minimatch(sourceFile.fileName, config.target)) {
return this.applyWithWalker(new NoDOMGlobalsRuleWalker(sourceFile, program, this.getOptions(), config));
}
}
return [];
}
}
class NoDOMGlobalsRuleWalker extends AbstractGlobalsRuleWalker {
getDefinitionPattern(): string {
return 'lib.dom.d.ts';
}
getDisallowedGlobals(): string[] {
// intentionally not complete
return [
"window",
"document",
"HTMLElement"
];
}
}

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.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
const minimatch = require("minimatch");
const abstractGlobalsRule_1 = require("./abstractGlobalsRule");
class Rule extends Lint.Rules.TypedRule {
applyWithProgram(sourceFile, program) {
const configs = this.getOptions().ruleArguments;
for (const config of configs) {
if (minimatch(sourceFile.fileName, config.target)) {
return this.applyWithWalker(new NoNodejsGlobalsRuleWalker(sourceFile, program, this.getOptions(), config));
}
}
return [];
}
}
exports.Rule = Rule;
class NoNodejsGlobalsRuleWalker extends abstractGlobalsRule_1.AbstractGlobalsRuleWalker {
getDefinitionPattern() {
return '@types/node';
}
getDisallowedGlobals() {
// https://nodejs.org/api/globals.html#globals_global_objects
return [
"NodeJS",
"Buffer",
"__dirname",
"__filename",
"clearImmediate",
"exports",
"global",
"module",
"process",
"setImmediate"
];
}
}

View File

@@ -0,0 +1,52 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as ts from 'typescript';
import * as Lint from 'tslint';
import * as minimatch from 'minimatch';
import { AbstractGlobalsRuleWalker } from './abstractGlobalsRule';
interface NoNodejsGlobalsConfig {
target: string;
allowed: string[];
}
export class Rule extends Lint.Rules.TypedRule {
applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] {
const configs = <NoNodejsGlobalsConfig[]>this.getOptions().ruleArguments;
for (const config of configs) {
if (minimatch(sourceFile.fileName, config.target)) {
return this.applyWithWalker(new NoNodejsGlobalsRuleWalker(sourceFile, program, this.getOptions(), config));
}
}
return [];
}
}
class NoNodejsGlobalsRuleWalker extends AbstractGlobalsRuleWalker {
getDefinitionPattern(): string {
return '@types/node';
}
getDisallowedGlobals(): string[] {
// https://nodejs.org/api/globals.html#globals_global_objects
return [
"NodeJS",
"Buffer",
"__dirname",
"__filename",
"clearImmediate",
"exports",
"global",
"module",
"process",
"setImmediate"
];
}
}

View File

@@ -0,0 +1,33 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
const minimatch = require("minimatch");
class Rule extends Lint.Rules.AbstractRule {
apply(sourceFile) {
const args = this.getOptions().ruleArguments[0];
if (args.exclude.every(x => !minimatch(sourceFile.fileName, x))) {
return this.applyWithWalker(new NoSyncRuleWalker(sourceFile, this.getOptions()));
}
return [];
}
}
exports.Rule = Rule;
class NoSyncRuleWalker extends Lint.RuleWalker {
constructor(file, opts) {
super(file, opts);
}
visitCallExpression(node) {
if (node.expression && NoSyncRuleWalker.operations.some(x => node.expression.getText().indexOf(x) >= 0)) {
this.addFailureAtNode(node, `Do not use Sync operations`);
}
super.visitCallExpression(node);
}
}
NoSyncRuleWalker.operations = ['readFileSync', 'writeFileSync', 'existsSync', 'fchmodSync', 'lchmodSync',
'statSync', 'fstatSync', 'lstatSync', 'linkSync', 'symlinkSync', 'readlinkSync', 'realpathSync', 'unlinkSync', 'rmdirSync',
'mkdirSync', 'mkdtempSync', 'readdirSync', 'openSync', 'utimesSync', 'futimesSync', 'fsyncSync', 'writeSync', 'readSync',
'appendFileSync', 'accessSync', 'fdatasyncSync', 'copyFileSync'];

View File

@@ -0,0 +1,45 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as ts from 'typescript';
import * as Lint from 'tslint';
import * as minimatch from 'minimatch';
interface NoSyncRuleConfig {
exclude: string[];
}
export class Rule extends Lint.Rules.AbstractRule {
apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
const args = <NoSyncRuleConfig>this.getOptions().ruleArguments[0];
if (args.exclude.every(x => !minimatch(sourceFile.fileName, x))) {
return this.applyWithWalker(new NoSyncRuleWalker(sourceFile, this.getOptions()));
}
return [];
}
}
class NoSyncRuleWalker extends Lint.RuleWalker {
private static readonly operations = ['readFileSync', 'writeFileSync', 'existsSync', 'fchmodSync', 'lchmodSync',
'statSync', 'fstatSync', 'lstatSync', 'linkSync', 'symlinkSync', 'readlinkSync', 'realpathSync', 'unlinkSync', 'rmdirSync',
'mkdirSync', 'mkdtempSync', 'readdirSync', 'openSync', 'utimesSync', 'futimesSync', 'fsyncSync', 'writeSync', 'readSync',
'appendFileSync', 'accessSync', 'fdatasyncSync', 'copyFileSync'];
constructor(file: ts.SourceFile, opts: Lint.IOptions) {
super(file, opts);
}
visitCallExpression(node: ts.CallExpression) {
if (node.expression && NoSyncRuleWalker.operations.some(x => node.expression.getText().indexOf(x) >= 0)) {
this.addFailureAtNode(node, `Do not use Sync operations`);
}
super.visitCallExpression(node);
}
}

View File

@@ -11,6 +11,9 @@ const Lint = require("tslint");
*/
class Rule extends Lint.Rules.AbstractRule {
apply(sourceFile) {
if (/\.d.ts$/.test(sourceFile.fileName)) {
return [];
}
return this.applyWithWalker(new NoUnexternalizedStringsRuleWalker(sourceFile, this.getOptions()));
}
}

View File

@@ -11,6 +11,9 @@ import * as Lint from 'tslint';
*/
export class Rule extends Lint.Rules.AbstractRule {
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
if (/\.d.ts$/.test(sourceFile.fileName)) {
return [];
}
return this.applyWithWalker(new NoUnexternalizedStringsRuleWalker(sourceFile, this.getOptions()));
}
}

View File

@@ -0,0 +1,28 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
class Rule extends Lint.Rules.TypedRule {
applyWithProgram(sourceFile, program) {
if (program.getCompilerOptions().alwaysStrict) {
return this.applyWithWalker(new NoUselessStrictRuleWalker(sourceFile, this.getOptions()));
}
return [];
}
}
exports.Rule = Rule;
class NoUselessStrictRuleWalker extends Lint.RuleWalker {
visitStringLiteral(node) {
this.checkStringLiteral(node);
super.visitStringLiteral(node);
}
checkStringLiteral(node) {
const text = node.getText();
if (text === '\'use strict\'' || text === '"use strict"') {
this.addFailureAtNode(node, 'use strict directive is unnecessary');
}
}
}

View File

@@ -0,0 +1,30 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as Lint from 'tslint';
import * as ts from 'typescript';
export class Rule extends Lint.Rules.TypedRule {
public applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] {
if (program.getCompilerOptions().alwaysStrict) {
return this.applyWithWalker(new NoUselessStrictRuleWalker(sourceFile, this.getOptions()));
}
return [];
}
}
class NoUselessStrictRuleWalker extends Lint.RuleWalker {
protected visitStringLiteral(node: ts.StringLiteral): void {
this.checkStringLiteral(node);
super.visitStringLiteral(node);
}
private checkStringLiteral(node: ts.StringLiteral): void {
const text = node.getText();
if (text === '\'use strict\'' || text === '"use strict"') {
this.addFailureAtNode(node, 'use strict directive is unnecessary');
}
}
}

View File

@@ -7,10 +7,12 @@ declare module "gulp-tsb" {
}
export interface IncrementalCompiler {
(token?:ICancellationToken): NodeJS.ReadWriteStream;
// program?: ts.Program;
(token?: ICancellationToken): NodeJS.ReadWriteStream;
src(opts?: {
cwd?: string;
base?: string;
}): NodeJS.ReadStream;
}
export function create(projectPath: string, existingOptions: any, verbose?: boolean, onError?: (message: any) => void): IncrementalCompiler;
export function create(configOrName: { [option: string]: string | number | boolean; } | string, verbose?: boolean, json?: boolean, onError?: (message: any) => void): IncrementalCompiler;
}
}

View File

@@ -121,7 +121,7 @@ function loadSourcemaps() {
return;
}
if (!f.contents) {
cb(new Error('empty file'));
cb(undefined, f);
return;
}
const contents = f.contents.toString('utf8');

View File

@@ -165,7 +165,7 @@ export function loadSourcemaps(): NodeJS.ReadWriteStream {
}
if (!f.contents) {
cb(new Error('empty file'));
cb(undefined, f);
return;
}

View File

@@ -5,17 +5,6 @@
const es = require('event-stream');
/** Ugly hack for gulp-tsb */
function handleDeletions() {
return es.mapSync(f => {
if (/\.ts$/.test(f.relative) && !f.contents) {
f.contents = Buffer.from('');
f.stat = { mtime: new Date() };
}
return f;
});
}
let watch = undefined;
@@ -24,6 +13,5 @@ if (!watch) {
}
module.exports = function () {
return watch.apply(null, arguments)
.pipe(handleDeletions());
return watch.apply(null, arguments);
};

View File

@@ -148,8 +148,9 @@ function getMassagedTopLevelDeclarationText(sourceFile, declaration, importName,
}
});
}
result = result.replace(/export default/g, 'export');
result = result.replace(/export declare/g, 'export');
result = result.replace(/export default /g, 'export ');
result = result.replace(/export declare /g, 'export ');
result = result.replace(/declare /g, '');
if (declaration.kind === ts.SyntaxKind.EnumDeclaration) {
result = result.replace(/const enum/, 'enum');
enums.push(result);

View File

@@ -178,8 +178,9 @@ function getMassagedTopLevelDeclarationText(sourceFile: ts.SourceFile, declarati
}
});
}
result = result.replace(/export default/g, 'export');
result = result.replace(/export declare/g, 'export');
result = result.replace(/export default /g, 'export ');
result = result.replace(/export declare /g, 'export ');
result = result.replace(/declare /g, '');
if (declaration.kind === ts.SyntaxKind.EnumDeclaration) {
result = result.replace(/const enum/, 'enum');

View File

@@ -48,7 +48,7 @@ declare namespace monaco.editor {
#include(vs/editor/standalone/common/standaloneThemeService): BuiltinTheme, IStandaloneThemeData, IColors
#include(vs/editor/common/modes/supports/tokenization): ITokenThemeRule
#include(vs/editor/common/services/webWorker): MonacoWebWorker, IWebWorkerOptions
#include(vs/editor/standalone/browser/standaloneCodeEditor): IActionDescriptor, IEditorConstructionOptions, IDiffEditorConstructionOptions, IStandaloneCodeEditor, IStandaloneDiffEditor
#include(vs/editor/standalone/browser/standaloneCodeEditor): IActionDescriptor, IStandaloneEditorConstructionOptions, IDiffEditorConstructionOptions, IStandaloneCodeEditor, IStandaloneDiffEditor
export interface ICommandHandler {
(...args: any[]): void;
}
@@ -62,6 +62,7 @@ export interface ICommandHandler {
#includeAll(vs/editor/common/editorCommon;editorOptions.=>): IScrollEvent
#includeAll(vs/editor/common/model/textModelEvents):
#includeAll(vs/editor/common/controller/cursorEvents):
#include(vs/platform/accessibility/common/accessibility): AccessibilitySupport
#includeAll(vs/editor/common/config/editorOptions):
#includeAll(vs/editor/browser/editorBrowser;editorCommon.=>;editorOptions.=>):
#include(vs/editor/common/config/fontInfo): FontInfo, BareFontInfo

View File

@@ -1,7 +1,7 @@
{
"name": "monaco-editor-core",
"private": true,
"version": "0.16.0",
"version": "0.18.0",
"description": "A browser based code editor",
"author": "Microsoft Corporation",
"license": "MIT",

View File

@@ -70,6 +70,7 @@ runtime "${runtime}"`;
}
yarnInstall(`build`); // node modules required for build
yarnInstall('test/automation'); // node modules required for smoketest
yarnInstall('test/smoke'); // node modules required for smoketest
yarnInstallBuildDependencies(); // node modules for watching, specific to host node version, not electron
@@ -78,4 +79,42 @@ const processTreeDts = path.join('node_modules', 'windows-process-tree', 'typing
if (fs.existsSync(processTreeDts)) {
console.log('Removing windows-process-tree.d.ts');
fs.unlinkSync(processTreeDts);
}
}
function getInstalledVersion(packageName, cwd) {
const opts = {};
if (cwd) {
opts.cwd = cwd;
}
const result = cp.spawnSync(yarn, ['list', '--pattern', packageName], opts);
const stdout = result.stdout.toString();
const match = stdout.match(new RegExp(packageName + '@(\\S+)'));
if (!match || !match[1]) {
throw new Error('Unexpected output from yarn list: ' + stdout);
}
return match[1];
}
function assertSameVersionsBetweenFolders(packageName, otherFolder) {
const baseVersion = getInstalledVersion(packageName);
const otherVersion = getInstalledVersion(packageName, otherFolder);
if (baseVersion !== otherVersion) {
throw new Error(`Mismatched versions installed for ${packageName}: root has ${baseVersion}, ./${otherFolder} has ${otherVersion}. These should be the same!`);
}
}
// Check that modules in both the base package.json and remote/ have the same version installed
const requireSameVersionsInRemote = [
'xterm',
'xterm-addon-search',
'xterm-addon-web-links',
'node-pty',
'vscode-ripgrep'
];
requireSameVersionsInRemote.forEach(packageName => {
assertSameVersionsBetweenFolders(packageName, 'remote');
});

View File

@@ -31,4 +31,4 @@ if (!/yarn\.js$|yarnpkg$/.test(process.env['npm_execpath'])) {
if (err) {
console.error('');
process.exit(1);
}
}

View File

@@ -132,7 +132,7 @@ exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'mas
if (packageJsonPathOverride) {
packageJsonPath += packageJsonPathOverride;
}
packageJsonPath += '/package.json';
packageJsonPath += 'package.json';
for (let i = 0; i < cgmanifestRead.registrations.length; i++) {
if (cgmanifestRead.registrations[i].component.git.repositoryUrl.substr(cgmanifestRead.registrations[i].component.git.repositoryUrl.length - repoId.length, repoId.length) === repoId) {
cgmanifestRead.registrations[i].component.git.commitHash = info.commitSha;

View File

@@ -24,9 +24,9 @@
"@types/pump": "^1.0.1",
"@types/request": "^2.47.0",
"@types/rimraf": "^2.0.2",
"@types/terser": "^3.12.0",
"@types/through": "^0.0.29",
"@types/through2": "^2.0.34",
"@types/uglify-es": "^3.0.0",
"@types/underscore": "^1.8.9",
"@types/xml2js": "0.0.33",
"applicationinsights": "1.0.8",
@@ -36,15 +36,20 @@
"github-releases": "^0.4.1",
"gulp-bom": "^1.0.0",
"gulp-sourcemaps": "^1.11.0",
"gulp-uglify": "^3.0.0",
"iconv-lite": "0.4.23",
"mime": "^1.3.4",
"minimist": "^1.2.0",
"request": "^2.85.0",
"rollup": "^1.20.3",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",
"terser": "4.3.1",
"tslint": "^5.9.1",
"service-downloader": "github:anthonydresser/service-downloader#0.1.5",
"typescript": "3.5.2",
"service-downloader": "github:anthonydresser/service-downloader#0.1.7",
"typescript": "3.6.2",
"vsce": "1.48.0",
"vscode-telemetry-extractor": "1.5.3",
"vscode-telemetry-extractor": "^1.5.4",
"xml2js": "^0.4.17"
},
"scripts": {

57
build/testSetup.js Normal file
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.
*--------------------------------------------------------------------------------------------*/
const fs = require('fs').promises;
const path = require('path');
const readConfiguration = (async () => {
const parseConfigString = ((content) => {
try {
const result = JSON.parse(content);
return result;
}
catch (ex) {
console.log('Could NOT parse TEST_RUN_LIST:', content);
}
});
// Attempt to read from an enviornment variable
const testRunlist = process.env['TEST_RUN_LIST'];
if (testRunlist && testRunlist !== '') {
const result = parseConfigString(testRunlist);
if (result) {
console.log('Using the environment test run list:', result);
return result;
}
}
// Attempt to read from a config file
let testRunPath = process.env['TEST_RUN_LIST_FILE'];
if (!testRunPath || testRunPath === '') {
testRunPath = path.resolve(__dirname, '..', 'runlist.json');
}
try {
const contents = await fs.readFile(testRunPath);
return parseConfigString(contents);
}
catch (ex) {
console.log(`error reading file ${testRunPath}:`, ex);
}
});
(async () => {
const keys = process.argv.slice(2);
const configuration = await readConfiguration();
if (!configuration) {
console.log('no configuration was setup');
return;
}
const testList = [];
keys.forEach((key) => {
const arr = configuration[key];
if (arr) {
testList.push(...arr);
}
});
const result = `(${testList.join('|')})`;
console.log(result);
process.env['TEST_GREP'] = result;
})();

67
build/testSetup.ts Normal file
View File

@@ -0,0 +1,67 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
const fs = require('fs').promises;
const path = require('path');
interface IntegrationTestConfig {
[key: string]: string[];
}
const readConfiguration = (async (): Promise<IntegrationTestConfig | void> => {
const parseConfigString = ((content: string): (IntegrationTestConfig | void) => {
try {
const result = JSON.parse(content);
return result as IntegrationTestConfig;
} catch (ex) {
console.log('Could NOT parse TEST_RUN_LIST:', content);
}
});
// Attempt to read from an enviornment variable
const testRunlist = process.env['TEST_RUN_LIST'];
if (testRunlist && testRunlist !== '') {
const result = parseConfigString(testRunlist);
if (result) {
console.log('Using the environment test run list:', result);
return result;
}
}
// Attempt to read from a config file
let testRunPath = process.env['TEST_RUN_LIST_FILE'];
if (!testRunPath || testRunPath === '') {
testRunPath = path.resolve(__dirname, '..', 'runlist.json');
}
try {
const contents = await fs.readFile(testRunPath);
return parseConfigString(contents);
} catch (ex) {
console.log(`error reading file ${testRunPath}:`, ex);
}
});
(async (): Promise<string | void> => {
const keys = process.argv.slice(2);
const configuration = await readConfiguration();
if (!configuration) {
console.log('no configuration was setup');
return;
}
const testList: string[] = [];
keys.forEach((key) => {
const arr = configuration[key];
if (arr) {
testList.push(...arr);
}
});
const result = `(${testList.join('|')})`;
console.log(result);
process.env['TEST_GREP'] = result;
})();

View File

@@ -20,8 +20,8 @@ Compression=lzma
SolidCompression=yes
AppMutex={code:GetAppMutex}
SetupMutex={#AppMutex}setup
WizardImageFile={#RepoDir}\resources\win32\inno-big.bmp
WizardSmallImageFile={#RepoDir}\resources\win32\inno-small.bmp
WizardImageFile="{#RepoDir}\resources\win32\sql-big.bmp"
WizardSmallImageFile="{#RepoDir}\resources\win32\sql-small.bmp"
SetupIconFile={#RepoDir}\resources\win32\code.ico
UninstallDisplayIcon={app}\{#ExeBasename}.exe
ChangesEnvironment=true
@@ -100,12 +100,22 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}Source
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}SourceFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""
Root: HKCU; Subkey: "Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}\bin"; Tasks: addtopath; Check: NeedsAddPath(ExpandConstant('{app}\bin'))
; .sql
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.sql\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.sql\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.sql"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SQL}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\sql.ico"; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
; .ipynb
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ipynb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ipynb\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.ipynb"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ipynb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,IPYNB}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ipynb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ipynb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\ipynb.ico"; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ipynb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
; Environment
#if "user" == InstallTarget
#define EnvironmentRootKey "HKCU"

View File

@@ -68,6 +68,11 @@
dependencies:
"@types/node" "*"
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/events@*":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86"
@@ -192,6 +197,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.13.tgz#ac786d623860adf39a3f51d629480aacd6a6eec7"
integrity sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==
"@types/node@^12.7.5":
version "12.7.8"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.8.tgz#cb1bf6800238898bc2ff6ffa5702c3cadd350708"
integrity sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==
"@types/pump@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/pump/-/pump-1.0.1.tgz#ae8157cefef04d1a4d24c1cc91d403c2f5da5cd0"
@@ -209,6 +219,13 @@
"@types/node" "*"
"@types/tough-cookie" "*"
"@types/resolve@0.0.8":
version "0.0.8"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==
dependencies:
"@types/node" "*"
"@types/rimraf@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.2.tgz#7f0fc3cf0ff0ad2a99bb723ae1764f30acaf8b6e"
@@ -217,6 +234,13 @@
"@types/glob" "*"
"@types/node" "*"
"@types/terser@^3.12.0":
version "3.12.0"
resolved "https://registry.yarnpkg.com/@types/terser/-/terser-3.12.0.tgz#25e020fe9a7a6ae92ce46261f00ced67de6c12ac"
integrity sha512-J0Wy8A7ULEqVJftkWhrXZbH0iBk4tYuTj0gBiiveKaY9deNi6cCsxl0ApJ27ojqwYv51bvEw85lOb8Wt4ng9zA==
dependencies:
terser "*"
"@types/through2@^2.0.34":
version "2.0.34"
resolved "https://registry.yarnpkg.com/@types/through2/-/through2-2.0.34.tgz#9c2a259a238dace2a05a2f8e94b786961bc27ac4"
@@ -236,20 +260,6 @@
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.2.tgz#e0d481d8bb282ad8a8c9e100ceb72c995fb5e709"
integrity sha512-vOVmaruQG5EatOU/jM6yU2uCp3Lz6mK1P5Ztu4iJjfM4SVHU9XYktPUQtKlIXuahqXHdEyUarMrBEwg5Cwu+bA==
"@types/uglify-es@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/uglify-es/-/uglify-es-3.0.0.tgz#2c5e70b43c0e86643ac1c223f61df15fa0b87bc2"
integrity sha512-Oc/c7pGIQL0MVhC6g+VftWiDQethKsT4c3fQKYm6nOprkvkx9s1MLrnJprDTKlZL3ZJulMpCF9Qn7s6u3uCNxQ==
dependencies:
"@types/uglify-js" "*"
"@types/uglify-js@*":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.3.tgz#801a5ca1dc642861f47c46d14b700ed2d610840b"
integrity sha512-MAT0BW2ruO0LhQKjvlipLGCF/Yx0y/cj+tT67tK3QIQDrM2+9R78HgJ54VlrE8AbfjYJJBCQCEPM5ZblPVTuww==
dependencies:
source-map "^0.6.1"
"@types/uglify-js@^2":
version "2.6.32"
resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-2.6.32.tgz#1b60906946fcf6ee4ceafa812d2b86f1358da904"
@@ -307,6 +317,11 @@ acorn@4.X:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
acorn@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c"
integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==
agent-base@4, agent-base@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
@@ -433,6 +448,11 @@ array-differ@^3.0.0:
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
array-each@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8=
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -485,6 +505,13 @@ async-each@^1.0.1:
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.2.tgz#8b8a7ca2a658f927e9f307d6d1a42f4199f0f735"
integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==
async-retry@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0"
integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==
dependencies:
retry "0.12.0"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -679,6 +706,11 @@ buffer-fill@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
buffer@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
@@ -692,6 +724,11 @@ builtin-modules@^1.1.1:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
builtin-modules@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
cache-base@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -862,6 +899,11 @@ commander@^2.12.1, commander@^2.8.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
commander@^2.20.0, commander@~2.20.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
commander@~2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
@@ -1232,6 +1274,11 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
estree-walker@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@@ -1612,6 +1659,22 @@ gulp-sourcemaps@^1.11.0:
through2 "2.X"
vinyl "1.X"
gulp-uglify@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.2.tgz#5f5b2e8337f879ca9dec971feb1b82a5a87850b0"
integrity sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==
dependencies:
array-each "^1.0.1"
extend-shallow "^3.0.2"
gulplog "^1.0.0"
has-gulplog "^0.1.0"
isobject "^3.0.1"
make-error-cause "^1.1.1"
safe-buffer "^5.1.2"
through2 "^2.0.0"
uglify-js "^3.0.5"
vinyl-sourcemaps-apply "^0.2.0"
gulp-util@^3.0.0:
version "3.0.8"
resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
@@ -1978,6 +2041,11 @@ is-glob@^4.0.1:
dependencies:
is-extglob "^2.1.1"
is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
@@ -2026,6 +2094,13 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
is-reference@^1.1.2:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427"
integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==
dependencies:
"@types/estree" "0.0.39"
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
@@ -2306,6 +2381,13 @@ lodash@^4.15.0, lodash@^4.17.10:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
magic-string@^0.25.2:
version "0.25.3"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9"
integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==
dependencies:
sourcemap-codec "^1.4.4"
make-dir@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
@@ -2313,6 +2395,18 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
make-error-cause@^1.1.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d"
integrity sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=
dependencies:
make-error "^1.2.0"
make-error@^1.2.0:
version "1.3.5"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
map-cache@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
@@ -2712,7 +2806,7 @@ path-is-inside@^1.0.1:
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
path-parse@^1.0.5:
path-parse@^1.0.5, path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
@@ -2971,6 +3065,13 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.11.0, resolve@^1.11.1:
version "1.12.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
dependencies:
path-parse "^1.0.6"
resolve@^1.3.2:
version "1.8.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
@@ -2983,6 +3084,11 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
retry@0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
reusify@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
@@ -2995,6 +3101,44 @@ rimraf@^2.2.8, rimraf@^2.6.1:
dependencies:
glob "^7.1.3"
rollup-plugin-commonjs@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb"
integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==
dependencies:
estree-walker "^0.6.1"
is-reference "^1.1.2"
magic-string "^0.25.2"
resolve "^1.11.0"
rollup-pluginutils "^2.8.1"
rollup-plugin-node-resolve@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523"
integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==
dependencies:
"@types/resolve" "0.0.8"
builtin-modules "^3.1.0"
is-module "^1.0.0"
resolve "^1.11.1"
rollup-pluginutils "^2.8.1"
rollup-pluginutils@^2.8.1:
version "2.8.2"
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
dependencies:
estree-walker "^0.6.1"
rollup@^1.20.3:
version "1.21.4"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.21.4.tgz#00a41a30f90095db890301b226cbe2918e4cf54d"
integrity sha512-Pl512XVCmVzgcBz5h/3Li4oTaoDcmpuFZ+kdhS/wLreALz//WuDAMfomD3QEYl84NkDu6Z6wV9twlcREb4qQsw==
dependencies:
"@types/estree" "0.0.39"
"@types/node" "^12.7.5"
acorn "^7.0.0"
run-parallel@^1.1.9:
version "1.1.9"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
@@ -3005,7 +3149,12 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
safe-buffer@^5.1.2:
version "5.2.0"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
@@ -3049,10 +3198,11 @@ semver@^5.1.0, semver@^5.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
"service-downloader@github:anthonydresser/service-downloader#0.1.5":
version "0.1.5"
resolved "https://codeload.github.com/anthonydresser/service-downloader/tar.gz/6ebb0465573cc140e461a22f334260f55ef45546"
"service-downloader@github:anthonydresser/service-downloader#0.1.7":
version "0.1.7"
resolved "https://codeload.github.com/anthonydresser/service-downloader/tar.gz/c08de456c9f1af6258061fdc524275b21c6db667"
dependencies:
async-retry "^1.2.3"
decompress "^4.2.0"
eventemitter2 "^5.0.1"
http-proxy-agent "^2.1.0"
@@ -3150,21 +3300,34 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
source-map-url "^0.4.0"
urix "^0.1.0"
source-map-support@~0.5.12:
version "0.5.13"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
source-map@^0.5.6:
source-map@^0.5.1, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
source-map@^0.6.1, source-map@~0.6.0:
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
sourcemap-codec@^1.4.4:
version "1.4.6"
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9"
integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==
sparkles@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
@@ -3310,6 +3473,24 @@ tar@^4:
safe-buffer "^5.1.2"
yallist "^3.0.2"
terser@*:
version "4.2.1"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.2.1.tgz#1052cfe17576c66e7bc70fcc7119f22b155bdac1"
integrity sha512-cGbc5utAcX4a9+2GGVX4DsenG6v0x3glnDi5hx8816X1McEAwPlPgRtXPJzSBsbpILxZ8MQMT0KvArLuE0HP5A==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
source-map-support "~0.5.12"
terser@4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65"
integrity sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
source-map-support "~0.5.12"
through2@2.X, through2@^2.0.0, through2@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@@ -3462,10 +3643,10 @@ typed-rest-client@^0.9.0:
tunnel "0.0.4"
underscore "1.8.3"
typescript@3.5.2:
version "3.5.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c"
integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==
typescript@3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.2.tgz#105b0f1934119dde543ac8eb71af3a91009efe54"
integrity sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw==
typescript@^3.0.1:
version "3.5.3"
@@ -3482,6 +3663,14 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==
uglify-js@^3.0.5:
version "3.6.0"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
dependencies:
commander "~2.20.0"
source-map "~0.6.1"
unbzip2-stream@^1.0.9:
version "1.3.3"
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a"
@@ -3577,6 +3766,13 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
vinyl-sourcemaps-apply@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705"
integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=
dependencies:
source-map "^0.5.1"
vinyl@1.X:
version "1.2.0"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884"
@@ -3618,19 +3814,19 @@ vsce@1.48.0:
yauzl "^2.3.1"
yazl "^2.2.2"
vscode-ripgrep@^1.5.5:
version "1.5.5"
resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.5.tgz#24c0e9cb356cf889c98e15ecb58f9cf654a1d961"
integrity sha512-OrPrAmcun4+uZAuNcQvE6CCPskh+5AsjANod/Q3zRcJcGNxgoOSGlQN9RPtatkUNmkN8Nn8mZBnS1jMylu/dKg==
vscode-ripgrep@^1.5.6:
version "1.5.7"
resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.7.tgz#acb6b548af488a4bca5d0f1bb5faf761343289ce"
integrity sha512-/Vsz/+k8kTvui0q3O74pif9FK0nKopgFTiGNVvxicZANxtSA8J8gUE9GQ/4dpi7D/2yI/YVORszwVskFbz46hQ==
vscode-telemetry-extractor@1.5.3:
version "1.5.3"
resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.3.tgz#c17f9065a47425edafd23ea161e80c23274e009d"
integrity sha512-feioJ1e1KyMa9rzblnLbSOduo+Ny0l62H3/bSDgfgCSnU/km+tTSYxPBvZHVr7iQfQGC95J61yC/ObqS9EbaQg==
vscode-telemetry-extractor@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.4.tgz#bcb0d17667fa1b77715e3a3bf372ade18f846782"
integrity sha512-MN9LNPo0Rc6cy3sIWTAG97PTWkEKdRnP0VeYoS8vjKSNtG9CAsrUxHgFfYoHm2vNK/ijd0a4NzETyVGO2kT6hw==
dependencies:
command-line-args "^5.1.1"
ts-morph "^3.1.3"
vscode-ripgrep "^1.5.5"
vscode-ripgrep "^1.5.6"
vso-node-api@6.1.2-preview:
version "6.1.2-preview"

View File

@@ -10,682 +10,32 @@
// Reason: The license at https://github.com/aadsm/jschardet/blob/master/LICENSE
// does not include a clear Copyright statement and does not credit authors.
"name": "jschardet",
"licenseDetail": [
"prependLicenseText": [
"Chardet was originally ported from C++ by Mark Pilgrim. It is now maintained",
" by Dan Blanchard and Ian Cordasco, and was formerly maintained by Erik Rose.",
" JSChardet was ported from python to JavaScript by António Afonso ",
" (https://github.com/aadsm/jschardet) and transformed into an npm package by ",
"Markus Ast (https://github.com/brainafk)",
"",
"GNU LESSER GENERAL PUBLIC LICENSE",
"\t\t Version 2.1, February 1999",
"",
" Copyright (C) 1991,",
"1999 Free Software Foundation, Inc.",
" 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA",
" Everyone is permitted to copy and distribute verbatim copies",
" of this license document, but changing it is not allowed.",
"",
"[This is the first released version of the Lesser GPL. It also counts",
" as the successor of the GNU Library Public License, version 2, hence",
" the version number 2.1.",
"]",
"",
"\t\t\t Preamble",
"",
" The licenses for most software are designed to take away your",
"freedom to share and change it. By contrast, the GNU General Public",
"Licenses are intended to guarantee your freedom to share and change",
"free software--to make sure the software is free for all its users.",
"",
" This license, the Lesser General Public License, applies to some",
"specially designated software packages--typically libraries--of the",
"Free Software Foundation and other authors who decide to use it. You",
"can use it too, but we suggest you first think carefully about whether",
"this license or the ordinary General Public License is the better",
"strategy to use in any particular case, based on the explanations below.",
"",
" When we speak of free software, we are referring to freedom of use,",
"not price. Our General Public Licenses are designed to make sure that",
"you have the freedom to distribute copies of free software (and charge",
"for this service if you wish); that you receive source code or can get",
"it if you want it; that you can change the software and use pieces of",
"it in new free programs; and that you are informed that you can do",
"these things.",
"",
" To protect your rights, we need to make restrictions that forbid",
"distributors to deny you these rights or to ask you to surrender these",
"rights. These restrictions translate to certain responsibilities for",
"you if you distribute copies of the library or if you modify it.",
"",
" For example, if you distribute copies of the library, whether gratis",
"or for a fee, you must give the recipients all the rights that we gave",
"you. You must make sure that they, too, receive or can get the source",
"code. If you link other code with the library, you must provide",
"complete object files to the recipients, so that they can relink them",
"with the library after making changes to the library and recompiling",
"it. And you must show them these terms so they know their rights.",
"",
" We protect your rights with a two-step method: (1) we copyright the",
"library, and (2) we offer you this license, which gives you legal",
"permission to copy, distribute and/or modify the library.",
"",
" To protect each distributor, we want to make it very clear that",
"there is no warranty for the free library. Also, if the library is",
"modified by someone else and passed on, the recipients should know",
"that what they have is not the original version, so that the original",
"author's reputation will not be affected by problems that might be",
"introduced by others.",
"",
" Finally, software patents pose a constant threat to the existence of",
"any free program. We wish to make sure that a company cannot",
"effectively restrict the users of a free program by obtaining a",
"restrictive license from a patent holder. Therefore, we insist that",
"any patent license obtained for a version of the library must be",
"consistent with the full freedom of use specified in this license.",
"",
" Most GNU software, including some libraries, is covered by the",
"ordinary GNU General Public License. This license, the GNU Lesser",
"General Public License, applies to certain designated libraries, and",
"is quite different from the ordinary General Public License. We use",
"this license for certain libraries in order to permit linking those",
"libraries into non-free programs.",
"",
" When a program is linked with a library, whether statically or using",
"a shared library, the combination of the two is legally speaking a",
"combined work, a derivative of the original library. The ordinary",
"General Public License therefore permits such linking only if the",
"entire combination fits its criteria of freedom. The Lesser General",
"Public License permits more lax criteria for linking other code with",
"the library.",
"",
" We call this license the \"Lesser\" General Public License because it",
"does Less to protect the user's freedom than the ordinary General",
"Public License. It also provides other free software developers Less",
"of an advantage over competing non-free programs. These disadvantages",
"are the reason we use the ordinary General Public License for many",
"libraries. However, the Lesser license provides advantages in certain",
"special circumstances.",
"",
" For example, on rare occasions, there may be a special need to",
"encourage the widest possible use of a certain library, so that it becomes",
"a de-facto standard. To achieve this, non-free programs must be",
"allowed to use the library. A more frequent case is that a free",
"library does the same job as widely used non-free libraries. In this",
"case, there is little to gain by limiting the free library to free",
"software only, so we use the Lesser General Public License.",
"",
" In other cases, permission to use a particular library in non-free",
"programs enables a greater number of people to use a large body of",
"free software. For example, permission to use the GNU C Library in",
"non-free programs enables many more people to use the whole GNU",
"operating system, as well as its variant, the GNU/Linux operating",
"system.",
"",
" Although the Lesser General Public License is Less protective of the",
"users' freedom, it does ensure that the user of a program that is",
"linked with the Library has the freedom and the wherewithal to run",
"that program using a modified version of the Library.",
"",
" The precise terms and conditions for copying, distribution and",
"modification follow. Pay close attention to the difference between a",
"\"work based on the library\" and a \"work that uses the library\". The",
"former contains code derived from the library, whereas the latter must",
"be combined with the library in order to run.",
"",
"\t\t GNU LESSER GENERAL PUBLIC LICENSE",
" TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION",
"",
" 0. This License Agreement applies to any software library or other",
"program which contains a notice placed by the copyright holder or",
"other authorized party saying it may be distributed under the terms of",
"this Lesser General Public License (also called \"this License\").",
"Each licensee is addressed as \"you\".",
"",
" A \"library\" means a collection of software functions and/or data",
"prepared so as to be conveniently linked with application programs",
"(which use some of those functions and data) to form executables.",
"",
" The \"Library\", below, refers to any such software library or work",
"which has been distributed under these terms. A \"work based on the",
"Library\" means either the Library or any derivative work under",
"copyright law: that is to say, a work containing the Library or a",
"portion of it, either verbatim or with modifications and/or translated",
"straightforwardly into another language. (Hereinafter, translation is",
"included without limitation in the term \"modification\".)",
"",
" \"Source code\" for a work means the preferred form of the work for",
"making modifications to it. For a library, complete source code means",
"all the source code for all modules it contains, plus any associated",
"interface definition files, plus the scripts used to control compilation",
"and installation of the library.",
"",
" Activities other than copying, distribution and modification are not",
"covered by this License; they are outside its scope. The act of",
"running a program using the Library is not restricted, and output from",
"such a program is covered only if its contents constitute a work based",
"on the Library (independent of the use of the Library in a tool for",
"writing it). Whether that is true depends on what the Library does",
"and what the program that uses the Library does.",
"",
" 1. You may copy and distribute verbatim copies of the Library's",
"complete source code as you receive it, in any medium, provided that",
"you conspicuously and appropriately publish on each copy an",
"appropriate copyright notice and disclaimer of warranty; keep intact",
"all the notices that refer to this License and to the absence of any",
"warranty; and distribute a copy of this License along with the",
"Library.",
"",
" You may charge a fee for the physical act of transferring a copy,",
"and you may at your option offer warranty protection in exchange for a",
"fee.",
"",
" 2. You may modify your copy or copies of the Library or any portion",
"of it, thus forming a work based on the Library, and copy and",
"distribute such modifications or work under the terms of Section 1",
"above, provided that you also meet all of these conditions:",
"",
" a) The modified work must itself be a software library.",
"",
" b) You must cause the files modified to carry prominent notices",
" stating that you changed the files and the date of any change.",
"",
" c) You must cause the whole of the work to be licensed at no",
" charge to all third parties under the terms of this License.",
"",
" d) If a facility in the modified Library refers to a function or a",
" table of data to be supplied by an application program that uses",
" the facility, other than as an argument passed when the facility",
" is invoked, then you must make a good faith effort to ensure that,",
" in the event an application does not supply such function or",
" table, the facility still operates, and performs whatever part of",
" its purpose remains meaningful.",
"",
" (For example, a function in a library to compute square roots has",
" a purpose that is entirely well-defined independent of the",
" application. Therefore, Subsection 2d requires that any",
" application-supplied function or table used by this function must",
" be optional: if the application does not supply it, the square",
" root function must still compute square roots.)",
"",
"These requirements apply to the modified work as a whole. If",
"identifiable sections of that work are not derived from the Library,",
"and can be reasonably considered independent and separate works in",
"themselves, then this License, and its terms, do not apply to those",
"sections when you distribute them as separate works. But when you",
"distribute the same sections as part of a whole which is a work based",
"on the Library, the distribution of the whole must be on the terms of",
"this License, whose permissions for other licensees extend to the",
"entire whole, and thus to each and every part regardless of who wrote",
"it.",
"",
"Thus, it is not the intent of this section to claim rights or contest",
"your rights to work written entirely by you; rather, the intent is to",
"exercise the right to control the distribution of derivative or",
"collective works based on the Library.",
"",
"In addition, mere aggregation of another work not based on the Library",
"with the Library (or with a work based on the Library) on a volume of",
"a storage or distribution medium does not bring the other work under",
"the scope of this License.",
"",
" 3. You may opt to apply the terms of the ordinary GNU General Public",
"License instead of this License to a given copy of the Library. To do",
"this, you must alter all the notices that refer to this License, so",
"that they refer to the ordinary GNU General Public License, version 2,",
"instead of to this License. (If a newer version than version 2 of the",
"ordinary GNU General Public License has appeared, then you can specify",
"that version instead if you wish.) Do not make any other change in",
"these notices.",
"",
" Once this change is made in a given copy, it is irreversible for",
"that copy, so the ordinary GNU General Public License applies to all",
"subsequent copies and derivative works made from that copy.",
"",
" This option is useful when you wish to copy part of the code of",
"the Library into a program that is not a library.",
"",
" 4. You may copy and distribute the Library (or a portion or",
"derivative of it, under Section 2) in object code or executable form",
"under the terms of Sections 1 and 2 above provided that you accompany",
"it with the complete corresponding machine-readable source code, which",
"must be distributed under the terms of Sections 1 and 2 above on a",
"medium customarily used for software interchange.",
"",
" If distribution of object code is made by offering access to copy",
"from a designated place, then offering equivalent access to copy the",
"source code from the same place satisfies the requirement to",
"distribute the source code, even though third parties are not",
"compelled to copy the source along with the object code.",
"",
" 5. A program that contains no derivative of any portion of the",
"Library, but is designed to work with the Library by being compiled or",
"linked with it, is called a \"work that uses the Library\". Such a",
"work, in isolation, is not a derivative work of the Library, and",
"therefore falls outside the scope of this License.",
"",
" However, linking a \"work that uses the Library\" with the Library",
"creates an executable that is a derivative of the Library (because it",
"contains portions of the Library), rather than a \"work that uses the",
"library\". The executable is therefore covered by this License.",
"Section 6 states terms for distribution of such executables.",
"",
" When a \"work that uses the Library\" uses material from a header file",
"that is part of the Library, the object code for the work may be a",
"derivative work of the Library even though the source code is not.",
"Whether this is true is especially significant if the work can be",
"linked without the Library, or if the work is itself a library. The",
"threshold for this to be true is not precisely defined by law.",
"",
" If such an object file uses only numerical parameters, data",
"structure layouts and accessors, and small macros and small inline",
"functions (ten lines or less in length), then the use of the object",
"file is unrestricted, regardless of whether it is legally a derivative",
"work. (Executables containing this object code plus portions of the",
"Library will still fall under Section 6.)",
"",
" Otherwise, if the work is a derivative of the Library, you may",
"distribute the object code for the work under the terms of Section 6.",
"Any executables containing that work also fall under Section 6,",
"whether or not they are linked directly with the Library itself.",
"",
" 6. As an exception to the Sections above, you may also combine or",
"link a \"work that uses the Library\" with the Library to produce a",
"work containing portions of the Library, and distribute that work",
"under terms of your choice, provided that the terms permit",
"modification of the work for the customer's own use and reverse",
"engineering for debugging such modifications.",
"",
" You must give prominent notice with each copy of the work that the",
"Library is used in it and that the Library and its use are covered by",
"this License. You must supply a copy of this License. If the work",
"during execution displays copyright notices, you must include the",
"copyright notice for the Library among them, as well as a reference",
"directing the user to the copy of this License. Also, you must do one",
"of these things:",
"",
" a) Accompany the work with the complete corresponding",
" machine-readable source code for the Library including whatever",
" changes were used in the work (which must be distributed under",
" Sections 1 and 2 above); and, if the work is an executable linked",
" with the Library, with the complete machine-readable \"work that",
" uses the Library\", as object code and/or source code, so that the",
" user can modify the Library and then relink to produce a modified",
" executable containing the modified Library. (It is understood",
" that the user who changes the contents of definitions files in the",
" Library will not necessarily be able to recompile the application",
" to use the modified definitions.)",
"",
" b) Use a suitable shared library mechanism for linking with the",
" Library. A suitable mechanism is one that (1) uses at run time a",
" copy of the library already present on the user's computer system,",
" rather than copying library functions into the executable, and (2)",
" will operate properly with a modified version of the library, if",
" the user installs one, as long as the modified version is",
" interface-compatible with the version that the work was made with.",
"",
" c) Accompany the work with a written offer, valid for at",
" least three years, to give the same user the materials",
" specified in Subsection 6a, above, for a charge no more",
" than the cost of performing this distribution.",
"",
" d) If distribution of the work is made by offering access to copy",
" from a designated place, offer equivalent access to copy the above",
" specified materials from the same place.",
"",
" e) Verify that the user has already received a copy of these",
" materials or that you have already sent this user a copy.",
"",
" For an executable, the required form of the \"work that uses the",
"Library\" must include any data and utility programs needed for",
"reproducing the executable from it. However, as a special exception,",
"the materials to be distributed need not include anything that is",
"normally distributed (in either source or binary form) with the major",
"components (compiler, kernel, and so on) of the operating system on",
"which the executable runs, unless that component itself accompanies",
"the executable.",
"",
" It may happen that this requirement contradicts the license",
"restrictions of other proprietary libraries that do not normally",
"accompany the operating system. Such a contradiction means you cannot",
"use both them and the Library together in an executable that you",
"distribute.",
"",
" 7. You may place library facilities that are a work based on the",
"Library side-by-side in a single library together with other library",
"facilities not covered by this License, and distribute such a combined",
"library, provided that the separate distribution of the work based on",
"the Library and of the other library facilities is otherwise",
"permitted, and provided that you do these two things:",
"",
" a) Accompany the combined library with a copy of the same work",
" based on the Library, uncombined with any other library",
" facilities. This must be distributed under the terms of the",
" Sections above.",
"",
" b) Give prominent notice with the combined library of the fact",
" that part of it is a work based on the Library, and explaining",
" where to find the accompanying uncombined form of the same work.",
"",
" 8. You may not copy, modify, sublicense, link with, or distribute",
"the Library except as expressly provided under this License. Any",
"attempt otherwise to copy, modify, sublicense, link with, or",
"distribute the Library is void, and will automatically terminate your",
"rights under this License. However, parties who have received copies,",
"or rights, from you under this License will not have their licenses",
"terminated so long as such parties remain in full compliance.",
"",
" 9. You are not required to accept this License, since you have not",
"signed it. However, nothing else grants you permission to modify or",
"distribute the Library or its derivative works. These actions are",
"prohibited by law if you do not accept this License. Therefore, by",
"modifying or distributing the Library (or any work based on the",
"Library), you indicate your acceptance of this License to do so, and",
"all its terms and conditions for copying, distributing or modifying",
"the Library or works based on it.",
"",
" 10. Each time you redistribute the Library (or any work based on the",
"Library), the recipient automatically receives a license from the",
"original licensor to copy, distribute, link with or modify the Library",
"subject to these terms and conditions. You may not impose any further",
"restrictions on the recipients' exercise of the rights granted herein.",
"You are not responsible for enforcing compliance by third parties with",
"this License.",
"",
" 11. If, as a consequence of a court judgment or allegation of patent",
"infringement or for any other reason (not limited to patent issues),",
"conditions are imposed on you (whether by court order, agreement or",
"otherwise) that contradict the conditions of this License, they do not",
"excuse you from the conditions of this License. If you cannot",
"distribute so as to satisfy simultaneously your obligations under this",
"License and any other pertinent obligations, then as a consequence you",
"may not distribute the Library at all. For example, if a patent",
"license would not permit royalty-free redistribution of the Library by",
"all those who receive copies directly or indirectly through you, then",
"the only way you could satisfy both it and this License would be to",
"refrain entirely from distribution of the Library.",
"",
"If any portion of this section is held invalid or unenforceable under any",
"particular circumstance, the balance of the section is intended to apply,",
"and the section as a whole is intended to apply in other circumstances.",
"",
"It is not the purpose of this section to induce you to infringe any",
"patents or other property right claims or to contest validity of any",
"such claims; this section has the sole purpose of protecting the",
"integrity of the free software distribution system which is",
"implemented by public license practices. Many people have made",
"generous contributions to the wide range of software distributed",
"through that system in reliance on consistent application of that",
"system; it is up to the author/donor to decide if he or she is willing",
"to distribute software through any other system and a licensee cannot",
"impose that choice.",
"",
"This section is intended to make thoroughly clear what is believed to",
"be a consequence of the rest of this License.",
"",
" 12. If the distribution and/or use of the Library is restricted in",
"certain countries either by patents or by copyrighted interfaces, the",
"original copyright holder who places the Library under this License may add",
"an explicit geographical distribution limitation excluding those countries,",
"so that distribution is permitted only in or among countries not thus",
"excluded. In such case, this License incorporates the limitation as if",
"written in the body of this License.",
"",
" 13. The Free Software Foundation may publish revised and/or new",
"versions of the Lesser General Public License from time to time.",
"Such new versions will be similar in spirit to the present version,",
"but may differ in detail to address new problems or concerns.",
"",
"Each version is given a distinguishing version number. If the Library",
"specifies a version number of this License which applies to it and",
"\"any later version\", you have the option of following the terms and",
"conditions either of that version or of any later version published by",
"the Free Software Foundation. If the Library does not specify a",
"license version number, you may choose any version ever published by",
"the Free Software Foundation.",
"",
" 14. If you wish to incorporate parts of the Library into other free",
"programs whose distribution conditions are incompatible with these,",
"write to the author to ask for permission. For software which is",
"copyrighted by the Free Software Foundation, write to the Free",
"Software Foundation; we sometimes make exceptions for this. Our",
"decision will be guided by the two goals of preserving the free status",
"of all derivatives of our free software and of promoting the sharing",
"and reuse of software generally.",
"",
"\t\t\t NO WARRANTY",
"",
" 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO",
"WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.",
"EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR",
"OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY",
"KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE",
"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR",
"PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE",
"LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME",
"THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.",
"",
" 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN",
"WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY",
"AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU",
"FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR",
"CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE",
"LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING",
"RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A",
"FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF",
"SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH",
"DAMAGES.",
"",
"\t\t END OF TERMS AND CONDITIONS",
"",
" How to Apply These Terms to Your New Libraries",
"",
" If you develop a new library, and you want it to be of the greatest",
"possible use to the public, we recommend making it free software that",
"everyone can redistribute and change. You can do so by permitting",
"redistribution under these terms (or, alternatively, under the terms of the",
"ordinary General Public License).",
"",
" To apply these terms, attach the following notices to the library. It is",
"safest to attach them to the start of each source file to most effectively",
"convey the exclusion of warranty; and each file should have at least the",
"\"copyright\" line and a pointer to where the full notice is found.",
"",
" <one line to give the library's name and a brief idea of what it does.>",
" Copyright (C) <year> <name of author>",
"",
" This library is free software; you can redistribute it and/or",
" modify it under the terms of the GNU Lesser General Public",
" License as published by the Free Software Foundation; either",
" version 2.1 of the License, or (at your option) any later version.",
"",
" This library is distributed in the hope that it will be useful,",
" but WITHOUT ANY WARRANTY; without even the implied warranty of",
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU",
" Lesser General Public License for more details.",
"",
" You should have received a copy of the GNU Lesser General Public",
" License along with this library; if not, write to the Free Software",
" Foundation, Inc.,",
"51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA",
"",
"Also add information on how to contact you by electronic and paper mail.",
"",
"You should also get your employer (if you work as a programmer) or your",
"school, if any, to sign a \"copyright disclaimer\" for the library, if",
"necessary. Here is a sample; alter the names:",
"",
" Yoyodyne, Inc., hereby disclaims all copyright interest in the",
" library `Frob' (a library for tweaking knobs) written by James Random Hacker.",
"",
" <signature of Ty Coon>,",
"1 April 1990",
" Ty Coon, President of Vice",
"",
"That's all there is to it!"
"Markus Ast (https://github.com/brainafk)"
]
},
{
// Added here because the module `parse5` has a dependency to it.
// The module `parse5` is shipped via the `extension-editing` built-in extension.
// The module `parse5` does not want to remove it https://github.com/inikulin/parse5/issues/225
"name": "@types/node",
"licenseDetail": [
"This project is licensed under the MIT license.",
"Copyrights are respective of each contributor listed at the beginning of each definition file.",
"",
"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"",
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"",
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
]
},
{
// We override the license that gets discovered at
// https://github.com/Microsoft/TypeScript/blob/master/LICENSE.txt
// because it does not contain a Copyright statement
// Reason: The license at https://github.com/Microsoft/TypeScript/blob/master/LICENSE.txt
// does not include a clear Copyright statement.
"name": "typescript",
"licenseDetail": [
"Copyright (c) Microsoft Corporation. All rights reserved.",
"",
"Apache License",
"",
"Version 2.0, January 2004",
"",
"http://www.apache.org/licenses/",
"",
"TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",
"",
"1. Definitions.",
"",
"\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.",
"",
"\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.",
"",
"\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.",
"",
"\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.",
"",
"\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.",
"",
"\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.",
"",
"\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).",
"",
"\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.",
"",
"\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"",
"",
"\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.",
"",
"2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.",
"",
"3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.",
"",
"4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:",
"",
"You must give any other recipients of the Work or Derivative Works a copy of this License; and",
"",
"You must cause any modified files to carry prominent notices stating that You changed the files; and",
"",
"You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and",
"",
"If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.",
"",
"5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.",
"",
"6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.",
"",
"7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.",
"",
"8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.",
"",
"9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.",
"",
"END OF TERMS AND CONDITIONS"
]
},
{
// This module comes in from https://github.com/Microsoft/vscode-node-debug2/blob/master/package-lock.json
"name": "@types/source-map",
"licenseDetail": [
"This project is licensed under the MIT license.",
"Copyrights are respective of each contributor listed at the beginning of each definition file.",
"",
"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
"",
"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
"",
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
"prependLicenseText": [
"Copyright (c) Microsoft Corporation. All rights reserved."
]
},
{
"name": "tunnel-agent",
"licenseDetail": [
"Copyright (c) tunnel-agent authors",
"",
"Apache License",
"",
"Version 2.0, January 2004",
"",
"http://www.apache.org/licenses/",
"",
"TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",
"",
"1. Definitions.",
"",
"\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.",
"",
"\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.",
"",
"\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.",
"",
"\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.",
"",
"\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.",
"",
"\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.",
"",
"\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).",
"",
"\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.",
"",
"\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"",
"",
"\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.",
"",
"2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.",
"",
"3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.",
"",
"4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:",
"",
"You must give any other recipients of the Work or Derivative Works a copy of this License; and",
"",
"You must cause any modified files to carry prominent notices stating that You changed the files; and",
"",
"You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and",
"",
"If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.",
"",
"5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.",
"",
"6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.",
"",
"7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.",
"",
"8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.",
"",
"9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.",
"",
"END OF TERMS AND CONDITIONS"
"prependLicenseText": [
"Copyright (c) tunnel-agent authors"
]
},
{
// Waiting for https://github.com/segmentio/noop-logger/issues/2
// Reason: Waiting for https://github.com/segmentio/noop-logger/issues/2
"name": "noop-logger",
"licenseDetail": [
"fullLicenseText": [
"This project is licensed under the MIT license.",
"Copyrights are respective of each contributor listed at the beginning of each definition file.",
"",
@@ -697,56 +47,10 @@
]
},
{
"name": "xterm-addon-search",
"licenseDetail": [
"Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)",
"",
"Permission is hereby granted, free of charge, to any person obtaining a copy",
"of this software and associated documentation files (the \"Software\"), to deal",
"in the Software without restriction, including without limitation the rights",
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
"copies of the Software, and to permit persons to whom the Software is",
"furnished to do so, subject to the following conditions:",
"",
"The above copyright notice and this permission notice shall be included in",
"all copies or substantial portions of the Software.",
"",
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
"THE SOFTWARE."
]
},
{
"name": "xterm-addon-web-links",
"licenseDetail": [
"Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)",
"",
"Permission is hereby granted, free of charge, to any person obtaining a copy",
"of this software and associated documentation files (the \"Software\"), to deal",
"in the Software without restriction, including without limitation the rights",
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
"copies of the Software, and to permit persons to whom the Software is",
"furnished to do so, subject to the following conditions:",
"",
"The above copyright notice and this permission notice shall be included in",
"all copies or substantial portions of the Software.",
"",
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
"THE SOFTWARE."
]
},
{
// Reason: The license at https://git.coolaj86.com/coolaj86/atob.js/src/branch/master/LICENSE
// cannot be found by the OSS tool automatically.
"name": "atob",
"licenseDetail": [
"fullLicenseText": [
"The MIT License (MIT)",
"",
"Copyright (c) 2015 AJ ONeal",
@@ -769,5 +73,13 @@
"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE",
"SOFTWARE."
]
},
{
// Reason: The license at https://github.com/microsoft/tslib/blob/master/LICENSE.txt
// does not include a clear Copyright statement.
"name": "tslib",
"prependLicenseText": [
"Copyright (c) Microsoft Corporation. All rights reserved."
]
}
]

View File

@@ -60,12 +60,12 @@
"git": {
"name": "electron",
"repositoryUrl": "https://github.com/electron/electron",
"commitHash": "36ea114ac0616e469e75ae94e6d53af48925e036"
"commitHash": "4e4c7527c63fcf27dffaeb58bde996b8d859c0ed"
}
},
"isOnlyProductionDependency": true,
"license": "MIT",
"version": "4.2.7"
"version": "4.2.10"
},
{
"component": {
@@ -98,11 +98,11 @@
"git": {
"name": "vscode-octicons-font",
"repositoryUrl": "https://github.com/Microsoft/vscode-octicons-font",
"commitHash": "415cd5b42ab699b6b46c0bf011ada0a2ae50bfb4"
"commitHash": "4cbf2bd35cf0084eabd47d322cc58339fd7743cf"
}
},
"license": "MIT",
"version": "1.3.1"
"version": "1.3.2"
},
{
"component": {

View File

@@ -8,5 +8,12 @@
"installDirectory": "ssmsmin/{#platform#}/{#version#}",
"executableFiles": [
"SsmsMin.exe"
]
}
],
"retry": {
"retries": 15,
"factor": 2,
"minTimeout": 1000,
"maxTimeout": 300000,
"randomize": false
}
}

View File

@@ -1,84 +1,86 @@
{
"name": "admin-tool-ext-win",
"displayName": "%adminToolExtWin.displayName%",
"description": "%adminToolExtWin.description%",
"version": "0.0.1",
"publisher": "Microsoft",
"preview": true,
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/extensions/admin-tool-ext-win/license/Azure%20Data%20Studio%20Extension%20-%20Standalone%20(free)%20Use%20Terms.txt",
"icon": "images/sqlserver.png",
"aiKey": "AIF-5574968e-856d-40d2-af67-c89a14e76412",
"engines": {
"vscode": "^1.30.1",
"azdata": ">=1.8.0"
},
"activationEvents": [
"*"
],
"main": "./out/main",
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/azuredatastudio.git"
},
"extensionDependencies": [
"Microsoft.mssql"
],
"contributes": {
"commands": [
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"title": "%adminToolExtWin.propertiesMenuItem%",
"category": "AdminToolExtWin"
},
{
"command": "adminToolExtWin.launchSsmsMinGswDialog",
"title": "%adminToolExtWin.launchGswMenuItem%",
"category": "AdminToolExtWin"
}
],
"menus": {
"commandPalette": [
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"when": "false"
},
{
"command": "adminToolExtWin.launchSsmsMinGswDialog",
"when": "false"
}
],
"objectExplorer/item/context": [
{
"command": "adminToolExtWin.launchSsmsMinGswDialog",
"when": "isWindows && connectionProvider == MSSQL && nodeType && nodeType == Database",
"group": "z-AdminToolExt@1"
},
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"when": "isWindows && connectionProvider == MSSQL && serverInfo && !isCloud && nodeType && nodeType == Server",
"group": "z-AdminToolExt@2"
},
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"when": "isWindows && connectionProvider == MSSQL && serverInfo && nodeType && nodeType =~ /^(Database|Table|Column|Index|Statistic|View|ServerLevelLogin|ServerLevelServerRole|ServerLevelCredential|ServerLevelServerAudit|ServerLevelServerAuditSpecification|StoredProcedure|ScalarValuedFunction|TableValuedFunction|AggregateFunction|Synonym|Assembly|UserDefinedDataType|UserDefinedType|UserDefinedTableType|Sequence|User|DatabaseRole|ApplicationRole|Schema|SecurityPolicy|ServerLevelLinkedServer)$/",
"group": "z-AdminToolExt@2"
}
]
},
"outputChannels": [
"admin-tool-ext-win"
]
},
"dependencies": {
"ads-extension-telemetry": "github:Charles-Gagnon/ads-extension-telemetry#0.1.0",
"vscode-nls": "^3.2.1"
},
"devDependencies": {
"vscode": "1.0.1"
},
"__metadata": {
"id": "41",
"publisherDisplayName": "Microsoft",
"publisherId": "Microsoft"
}
}
"name": "admin-tool-ext-win",
"displayName": "%adminToolExtWin.displayName%",
"description": "%adminToolExtWin.description%",
"version": "0.0.2",
"publisher": "Microsoft",
"preview": true,
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/extensions/admin-tool-ext-win/license/Azure%20Data%20Studio%20Extension%20-%20Standalone%20(free)%20Use%20Terms.txt",
"icon": "images/sqlserver.png",
"aiKey": "AIF-444c3af9-8e69-4462-ab49-4191e6ad1916",
"engines": {
"vscode": "^1.30.1",
"azdata": ">=1.8.0"
},
"activationEvents": [
"*"
],
"main": "./out/main",
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/azuredatastudio.git"
},
"extensionDependencies": [
"Microsoft.mssql"
],
"contributes": {
"commands": [
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"title": "%adminToolExtWin.propertiesMenuItem%",
"category": "AdminToolExtWin"
},
{
"command": "adminToolExtWin.launchSsmsMinGswDialog",
"title": "%adminToolExtWin.launchGswMenuItem%",
"category": "AdminToolExtWin"
}
],
"menus": {
"commandPalette": [
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"when": "false"
},
{
"command": "adminToolExtWin.launchSsmsMinGswDialog",
"when": "false"
}
],
"objectExplorer/item/context": [
{
"command": "adminToolExtWin.launchSsmsMinGswDialog",
"when": "isWindows && connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11",
"group": "z-AdminToolExt@1"
},
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"when": "isWindows && connectionProvider == MSSQL && serverInfo && !isCloud && nodeType && nodeType == Server && mssql:engineedition != 11",
"group": "z-AdminToolExt@2"
},
{
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
"when": "isWindows && connectionProvider == MSSQL && serverInfo && nodeType && mssql:engineedition != 11 && nodeType =~ /^(Database|Table|Column|Index|Statistic|View|ServerLevelLogin|ServerLevelServerRole|ServerLevelCredential|ServerLevelServerAudit|ServerLevelServerAuditSpecification|StoredProcedure|ScalarValuedFunction|TableValuedFunction|AggregateFunction|Synonym|Assembly|UserDefinedDataType|UserDefinedType|UserDefinedTableType|Sequence|User|DatabaseRole|ApplicationRole|Schema|SecurityPolicy|ServerLevelLinkedServer)$/",
"group": "z-AdminToolExt@2"
}
]
},
"outputChannels": [
"admin-tool-ext-win"
]
},
"dependencies": {
"ads-extension-telemetry": "github:Charles-Gagnon/ads-extension-telemetry#0.1.0",
"vscode-nls": "^3.2.1"
},
"devDependencies": {
"vscode": "^1.1.10",
"mocha-junit-reporter": "^1.17.0",
"mocha-multi-reporters": "^1.1.7"
},
"__metadata": {
"id": "41",
"publisherDisplayName": "Microsoft",
"publisherId": "Microsoft"
}
}

View File

@@ -10,8 +10,9 @@ import * as vscode from 'vscode';
import { TelemetryReporter, TelemetryViews } from './telemetry';
import { doubleEscapeSingleQuotes, backEscapeDoubleQuotes, getTelemetryErrorType } from './utils';
import { ChildProcess, exec } from 'child_process';
import { promises as fs } from 'fs';
const localize = nls.loadMessageBundle();
const ssmsMinVer = JSON.parse(JSON.stringify(require('./config.json'))).version;
let exePath: string;
const runningProcesses: Map<number, ChildProcess> = new Map<number, ChildProcess>();
@@ -66,6 +67,8 @@ export interface LaunchSsmsDialogParams {
export async function activate(context: vscode.ExtensionContext): Promise<void> {
// This is for Windows-specific support so do nothing on other platforms
if (process.platform === 'win32') {
const rawConfig = await fs.readFile(path.join(context.extensionPath, 'config.json'));
const ssmsMinVer = JSON.parse(rawConfig.toString()).version;
exePath = path.join(context.extensionPath, 'ssmsmin', 'Windows', ssmsMinVer, 'ssmsmin.exe');
registerCommands(context);
}
@@ -259,4 +262,4 @@ export async function buildUrn(node: azdata.objectexplorer.ObjectExplorerNode):
}
return ['Server'].concat(urnNodes).join('/');
}
}

View File

@@ -6,7 +6,7 @@
const path = require('path');
const testRunner = require('vscode/lib/testrunner');
const suite = 'Database Admin Tool Extensions for Windows';
const suite = 'admin-tool-ext-win Extension Tests';
const options: any = {
ui: 'bdd',
@@ -14,6 +14,24 @@ const options: any = {
timeout: 600000
};
// set relevant mocha options from the environment
if (process.env.ADS_TEST_GREP) {
options.grep = process.env.ADS_TEST_GREP;
console.log(`setting options.grep to: ${options.grep}`);
}
if (process.env.ADS_TEST_INVERT_GREP) {
options.invert = parseInt(process.env.ADS_TEST_INVERT_GREP);
console.log(`setting options.invert to: ${options.invert}`);
}
if (process.env.ADS_TEST_TIMEOUT) {
options.timeout = parseInt(process.env.ADS_TEST_TIMEOUT);
console.log(`setting options.timeout to: ${options.timeout}`);
}
if (process.env.ADS_TEST_RETRIES) {
options.retries = parseInt(process.env.ADS_TEST_RETRIES);
console.log(`setting options.retries to: ${options.retries}`);
}
if (process.env.BUILD_ARTIFACTSTAGINGDIRECTORY) {
options.reporter = 'mocha-multi-reporters';
options.reporterOptions = {
@@ -27,4 +45,4 @@ if (process.env.BUILD_ARTIFACTSTAGINGDIRECTORY) {
testRunner.configure(options);
export = testRunner;
export = testRunner;

File diff suppressed because it is too large Load Diff

View File

@@ -1,62 +1,98 @@
{
"name": "agent",
"displayName": "SQL Server Agent",
"description": "Manage and troubleshoot SQL Server Agent jobs",
"version": "0.41.0",
"publisher": "Microsoft",
"preview": true,
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/LICENSE.txt",
"icon": "images/sqlserver.png",
"aiKey": "AIF-5574968e-856d-40d2-af67-c89a14e76412",
"engines": {
"vscode": "^1.25.0"
},
"activationEvents": [
"*"
],
"main": "./out/main",
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/azuredatastudio.git"
},
"extensionDependencies": [
"Microsoft.mssql"
],
"contributes": {
"outputChannels": [
"sqlagent"
],
"dashboard.tabs": [
{
"id": "data-management-agent",
"description": "Manage and troubleshoot SQL Agent jobs",
"provider": "MSSQL",
"title": "SQL Agent",
"when": "connectionProvider == 'MSSQL' && !mssql:iscloud",
"container": {
"controlhost-container": {
"type": "agent"
}
}
}
]
},
"dependencies": {
"vscode-nls": "^3.2.1"
},
"devDependencies": {
"mocha-junit-reporter": "^1.17.0",
"mocha-multi-reporters": "^1.1.7",
"@types/mocha": "^5.2.5",
"@types/node": "^8.10.25",
"mocha": "^5.2.0",
"should": "^13.2.1",
"typemoq": "^2.1.0",
"vscode": "1.1.5"
},
"__metadata": {
"id": "10",
"publisherDisplayName": "Microsoft",
"publisherId": "Microsoft"
}
"name": "agent",
"displayName": "SQL Server Agent",
"description": "Manage and troubleshoot SQL Server Agent jobs",
"version": "0.44.0",
"publisher": "Microsoft",
"preview": true,
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/master/LICENSE.txt",
"icon": "images/sqlserver.png",
"aiKey": "AIF-444c3af9-8e69-4462-ab49-4191e6ad1916",
"engines": {
"vscode": "^1.25.0"
},
"activationEvents": [
"*"
],
"main": "./out/main",
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/azuredatastudio.git"
},
"extensionDependencies": [
"Microsoft.mssql"
],
"contributes": {
"outputChannels": [
"sqlagent"
],
"dashboard.tabs": [
{
"id": "data-management-agent",
"description": "Manage and troubleshoot SQL Agent jobs",
"provider": "MSSQL",
"title": "SQL Agent",
"when": "connectionProvider == 'MSSQL' && !mssql:iscloud && mssql:engineedition != 11",
"container": {
"controlhost-container": {
"type": "agent"
}
}
}
],
"commands": [
{
"command": "agent.openNotebookDialog",
"title": "Schedule Notebook",
"icon": {
"dark": "resources/dark/open_notebook_inverse.svg",
"light": "resources/light/open_notebook.svg"
}
},
{
"command": "agent.reuploadTemplate",
"title": "Update Template",
"icon": {
"dark": "resources/dark/open_notebook_inverse.svg",
"light": "resources/light/open_notebook.svg"
}
}
],
"menus": {
"notebook/toolbar": [
{
"command": "agent.openNotebookDialog",
"when": "providerId == sql && !agent:trackedTemplate"
},
{
"command": "agent.reuploadTemplate",
"when": "agent:trackedTemplate"
}
],
"explorer/context": [
{
"command": "agent.openNotebookDialog",
"when": "resourceExtname == .ipynb"
}
]
}
},
"dependencies": {
"vscode-nls": "^3.2.1"
},
"devDependencies": {
"mocha-junit-reporter": "^1.17.0",
"mocha-multi-reporters": "^1.1.7",
"@types/mocha": "^5.2.5",
"@types/node": "^10.14.8",
"mocha": "^5.2.0",
"should": "^13.2.1",
"typemoq": "^2.1.0",
"vscode": "^1.1.10"
},
"__metadata": {
"id": "10",
"publisherDisplayName": "Microsoft",
"publisherId": "Microsoft"
}
}

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#fff;}</style></defs><title>notebook_inverse</title><path class="cls-1" d="M15.46,2V15H.46V2h2V1h3a4.19,4.19,0,0,1,1.32.21A3.87,3.87,0,0,1,8,1.84a3.87,3.87,0,0,1,1.18-.63A4.19,4.19,0,0,1,10.46,1h3V2Zm-14,12h6.3a4.43,4.43,0,0,0-.51-.43,3.41,3.41,0,0,0-.54-.31,2.74,2.74,0,0,0-.59-.2A3.2,3.2,0,0,0,5.46,13h-3V3h-1Zm2-2h2a4.18,4.18,0,0,1,1,.13,4,4,0,0,1,1,.39V2.72a3,3,0,0,0-.94-.54A3.15,3.15,0,0,0,5.46,2h-2Zm11-9h-1V13h-3a3.2,3.2,0,0,0-.67.07,2.74,2.74,0,0,0-.59.2,3.41,3.41,0,0,0-.54.31,4.43,4.43,0,0,0-.51.43h6.3Zm-4-1a3.15,3.15,0,0,0-1.06.18,3,3,0,0,0-.94.54v9.8a4,4,0,0,1,1-.39,4.18,4.18,0,0,1,1-.13h2V2Z"/></svg>

After

Width:  |  Height:  |  Size: 734 B

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#0095d7;}</style></defs><title>open_notebook_inverse</title><path class="cls-1" d="M12.55,4.21l-.08-.11h-.56l-.69.06a1.54,1.54,0,0,0-.23.29v8.69H9.18a3.32,3.32,0,0,0-.93.13,3.34,3.34,0,0,0-.87.34V4.76a2.88,2.88,0,0,1,.43-.31A5.58,5.58,0,0,1,8.29,3.3a2.63,2.63,0,0,0-.3.09A3.62,3.62,0,0,0,6.93,4a3.68,3.68,0,0,0-1.07-.57A3.58,3.58,0,0,0,4.67,3.2H2v.9H.15V15.85H13.72V5.48ZM2.86,4.1H4.67a2.61,2.61,0,0,1,1,.17,2.32,2.32,0,0,1,.86.49v8.85a3.27,3.27,0,0,0-.88-.34,3.22,3.22,0,0,0-.93-.13H2.86ZM1,15V5H2v9H4.67a3.94,3.94,0,0,1,.61.06,3.2,3.2,0,0,1,.52.18,4.19,4.19,0,0,1,.49.29,2.28,2.28,0,0,1,.45.39ZM12.8,15H7.11a2.7,2.7,0,0,1,.47-.39A2.83,2.83,0,0,1,8,14.28a3.42,3.42,0,0,1,.54-.18A3.81,3.81,0,0,1,9.18,14h2.73V5h.89Z"/><polygon class="cls-2" points="13.2 3.56 13.2 3.58 13.19 3.57 13.2 3.56"/><path class="cls-2" d="M13.19,3.57h0v0Z"/><polygon class="cls-2" points="13.2 3.56 13.2 3.58 13.19 3.57 13.2 3.56"/><polygon class="cls-2" points="14.21 1.65 14.19 1.65 14.19 1.63 14.21 1.65"/><path class="cls-2" d="M15.91,2.1,14.2,3.81l-.38.38-.62-.61v0l1-1H12.79a3.35,3.35,0,0,0-1.09.26h0a3.94,3.94,0,0,0-.86.52l-.24.21s0,0,0,0a3.3,3.3,0,0,0-.51.67,3.1,3.1,0,0,0-.26.47A3.41,3.41,0,0,0,9.5,6.11H8.6a4.68,4.68,0,0,1,.16-1.19A4.74,4.74,0,0,1,9,4.26a2.21,2.21,0,0,1,.2-.41,4.66,4.66,0,0,1,.36-.51c.1-.13.22-.26.34-.39a4.14,4.14,0,0,1,.66-.53,1.19,1.19,0,0,1,.23-.16,2.79,2.79,0,0,1,.34-.18l.31-.13.42-.14a4.32,4.32,0,0,1,1.19-.16h1.15l-1-1L13.82,0Z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><title>notebook</title><path d="M15.5,2V15H.5V2h2V1h3a4.19,4.19,0,0,1,1.32.21A3.87,3.87,0,0,1,8,1.84a3.87,3.87,0,0,1,1.18-.63A4.19,4.19,0,0,1,10.5,1h3V2ZM1.5,14H7.8a4.43,4.43,0,0,0-.51-.43,3.41,3.41,0,0,0-.54-.31,2.74,2.74,0,0,0-.59-.2A3.2,3.2,0,0,0,5.5,13h-3V3h-1Zm2-2h2a4.18,4.18,0,0,1,1,.13,4,4,0,0,1,1,.39V2.72a3,3,0,0,0-.94-.54A3.15,3.15,0,0,0,5.5,2h-2Zm11-9h-1V13h-3a3.2,3.2,0,0,0-.67.07,2.74,2.74,0,0,0-.59.2,3.41,3.41,0,0,0-.54.31A4.43,4.43,0,0,0,8.2,14h6.3Zm-4-1a3.15,3.15,0,0,0-1.06.18,3,3,0,0,0-.94.54v9.8a4,4,0,0,1,1-.39,4.18,4.18,0,0,1,1-.13h2V2Z"/></svg>

After

Width:  |  Height:  |  Size: 661 B

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#00539c;}</style></defs><title>open_notebook</title><path d="M12.4,4.21l-.08-.11h-.56l-.69.06a1.54,1.54,0,0,0-.23.29v8.69H9a3.32,3.32,0,0,0-.93.13,3.34,3.34,0,0,0-.87.34V4.76a2.88,2.88,0,0,1,.43-.31A5.58,5.58,0,0,1,8.14,3.3a2.63,2.63,0,0,0-.3.09A3.62,3.62,0,0,0,6.78,4a3.68,3.68,0,0,0-1.07-.57A3.58,3.58,0,0,0,4.52,3.2H1.81v.9H0V15.85H13.57V5.48ZM2.71,4.1H4.52a2.61,2.61,0,0,1,1,.17,2.32,2.32,0,0,1,.86.49v8.85a3.27,3.27,0,0,0-.88-.34,3.22,3.22,0,0,0-.93-.13H2.71ZM.9,15V5h.91v9H4.52a3.94,3.94,0,0,1,.61.06,3.2,3.2,0,0,1,.52.18,4.19,4.19,0,0,1,.49.29,2.28,2.28,0,0,1,.45.39Zm11.75,0H7a2.7,2.7,0,0,1,.47-.39,2.83,2.83,0,0,1,.47-.29,3.42,3.42,0,0,1,.54-.18A3.81,3.81,0,0,1,9,14h2.73V5h.89Z"/><polygon class="cls-1" points="13.05 3.56 13.05 3.58 13.04 3.57 13.05 3.56"/><path class="cls-1" d="M13,3.57h0v0Z"/><polygon class="cls-1" points="13.05 3.56 13.05 3.58 13.04 3.57 13.05 3.56"/><polygon class="cls-1" points="14.06 1.65 14.04 1.65 14.04 1.63 14.06 1.65"/><path class="cls-1" d="M15.76,2.1,14,3.81l-.38.38L13,3.58v0l1-1H12.64a3.35,3.35,0,0,0-1.09.26h0a3.94,3.94,0,0,0-.86.52l-.24.21s0,0,0,0a3.3,3.3,0,0,0-.51.67,3.1,3.1,0,0,0-.26.47,3.41,3.41,0,0,0-.27,1.39h-.9a4.68,4.68,0,0,1,.16-1.19,4.74,4.74,0,0,1,.25-.66,2.21,2.21,0,0,1,.2-.41,4.66,4.66,0,0,1,.36-.51c.1-.13.22-.26.34-.39a4.14,4.14,0,0,1,.66-.53,1.19,1.19,0,0,1,.23-.16A2.79,2.79,0,0,1,11,2.08l.31-.13.42-.14a4.32,4.32,0,0,1,1.19-.16h1.15l-1-1L13.67,0Z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -6,6 +6,7 @@
'use strict';
import * as azdata from 'azdata';
import { promises as fs } from 'fs';
export class AgentUtils {
@@ -13,6 +14,12 @@ export class AgentUtils {
private static _connectionService: azdata.ConnectionProvider;
private static _queryProvider: azdata.QueryProvider;
public static async setupProvidersFromConnection(connection?: azdata.connection.Connection) {
this._agentService = azdata.dataprotocol.getProvider<azdata.AgentServicesProvider>(connection.providerName, azdata.DataProviderType.AgentServicesProvider);
this._connectionService = azdata.dataprotocol.getProvider<azdata.ConnectionProvider>(connection.providerName, azdata.DataProviderType.ConnectionProvider);
this._queryProvider = azdata.dataprotocol.getProvider<azdata.QueryProvider>(connection.providerName, azdata.DataProviderType.QueryProvider);
}
public static async getAgentService(): Promise<azdata.AgentServicesProvider> {
if (!AgentUtils._agentService) {
let currentConnection = await azdata.connection.getCurrentConnection();
@@ -41,4 +48,13 @@ export class AgentUtils {
return this._queryProvider;
}
}
}
export async function exists(path: string): Promise<boolean> {
try {
await fs.access(path);
return true;
} catch (e) {
return false;
}
}

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