Compare commits

...

153 Commits

Author SHA1 Message Date
Alan Ren
e56e1d931b increase nps survey probability (#19175) (#19177) 2022-04-21 13:57:15 -07:00
Karl Burtram
4bd07a00c0 Update SQL Tools Service in release/1.36 for OE icon revert (#19173)
* Update SQL Tools Service in release/1.36 for OE icon revert

* Remove 'v'
2022-04-21 13:31:51 -07:00
Karl Burtram
4ef3706cf2 Bump version to 1.36.1 for April hotfix. (#19172) 2022-04-21 12:42:47 -07:00
erpett
0704471e6b Updating readme and change log to reflect major changes in 1.36 (#19138) 2022-04-18 15:57:09 -07:00
Vasu Bhog
f5aebda7de Fix SQL Binding when creating new project (#19118) (#19124)
* Fix SQL Binding when creating new project

* Use sql binding templates

* fix openDialog to use select

Co-authored-by: Vasu Bhog <vabhog@microsoft.com>

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-04-15 14:27:37 -07:00
Lewis Sanchez
9400c56c0b Telemetry for Query Execution Plans (#19039) (#19104)
* Adds telemetry around how the properties window is opened

* Adds telemetry around accessing execution plan top operations

* Adds key for viewing top operations

* Adds telemetry around using the open query button and context menu item

* Adds telemetry around execution plan zoom in, out, to fit, and custom

* Adds telemetry around searching for nodes in execution plans

* Reduces telemetry additional properties to 1.

* Code review changes

* Removes unnecessary export
2022-04-14 16:56:09 -07:00
Vasu Bhog
aeaf0ef473 remove extra error message (#19110) (#19113) 2022-04-14 16:55:52 -07:00
Aasim Khan
fd0a8c0ef4 Updating the cache element and not an unlinked reference to it. (#19057) (#19095) 2022-04-14 13:45:59 -07:00
Aasim Khan
a7361002cb Fixing broken action label logic. (#19086) (#19093)
* Fixing broken action label logic.

* Cleaning up some code
2022-04-14 13:44:51 -07:00
Aasim Khan
af42325121 Fixing parallism icon not showing up (#19085) (#19092) 2022-04-14 13:43:27 -07:00
Cory Rivera
85983140cc Port cell hover fix and new Interactive extension metadata additions to release branch. (#19096)
* Only update hover execution state if cell is not active. (#19073)

* Add .NET Interactive extension info to product.json. (#19069)
2022-04-14 13:09:06 -07:00
Barbara Valdez
58d6b22263 fix cell nav (#19082) (#19091) 2022-04-14 11:27:10 -07:00
Udeesha Gautam
09a74aadd5 fix for sensitive text in output message (#19071) (#19088) 2022-04-14 10:46:16 -07:00
Aasim Khan
26eeb78018 Adding caching to execution plan and refactoring code and some other fixes (#18913) (#19061)
* Making ep code modular for easy swithcing in and out

* Changing to innerText

* Fixing renames

* Fixing var name in one file
2022-04-14 10:20:54 -07:00
Vasu Bhog
9d610d17ba Fix connectionSettingName for create azure function with sql binding (#19008) (#19072)
* fix connectionSettingName for create azure function with sql binding

* add sql binding user enters connection string manually

* address comments + fix test

* final comments
2022-04-13 16:31:28 -07:00
Alan Ren
8bed834226 vbump sts (#19053) (#19059) 2022-04-13 13:58:56 -07:00
Benjin Dubishar
835a644e7d updated svg (#19034) (#19048) 2022-04-13 12:51:37 -07:00
Cory Rivera
f0f83d005b Enable cell cancellation for Interactive notebooks (#19005) (#19045)
* Also added a check to prevent multiple Interactive cells from executing simultaneously.
2022-04-13 11:47:07 -07:00
Kim Santiago
89ee54ab8f update schema compare version to 1.13.1 (#19026) (#19029) 2022-04-12 19:00:09 -07:00
Lewis Sanchez
07ed6abfd5 Updates azdataGraph package version to 0.0.20 (#19009) (#19021) 2022-04-12 18:57:39 -07:00
Aasim Khan
b1b0b9e7af Adding link support to infobox. (#18876) (#19016) 2022-04-12 18:57:20 -07:00
Aasim Khan
691d46a0d8 Adding badge icons to execution plan (#19004) (#19015)
* Adding badge icons to executionplan

* Fixing doc comment

* Fixing doc comments

* Making enum value more readable

* Changing default to undefined.

* Fixing some icon names
2022-04-12 18:57:01 -07:00
Alan Ren
b8d47cc97e bring in fixes for a few table designer issues (#19020) (#19024) 2022-04-12 18:56:39 -07:00
Vasu Bhog
5050111a42 suppress create function prompt (#18962) (#19017) 2022-04-12 12:45:24 -07:00
Kim Santiago
0bd8450cf6 hide convert to sdk-style from project context menu (#19002) (#19014)
* hide convert to sdk-style from project context menu

* bump version since 0.16.0 was released in insiders
2022-04-12 10:35:01 -07:00
csigs
7a41bfc167 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220410153816807. (#18992) 2022-04-11 10:04:23 -07:00
csigs
90176658fd Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220409154211117. (#18990) 2022-04-11 10:04:09 -07:00
Alan Ren
fe1aefdd5f fix table designer issues (#18988)
* fix table designer issues

* commit change on blur

* new sts
2022-04-10 12:09:33 -07:00
Aasim Khan
9fcfe5b23c Adding flag to hide refresh button in dashboards. (#18964) 2022-04-09 17:52:09 -07:00
Cory Rivera
c2cc32a4a0 Add option to use notebook json contents instead of file string when creating a notebook. (#18972) 2022-04-08 16:39:14 -07:00
Alex Ma
828c6760e2 [Loc] update to sql-database-projects (#18983) 2022-04-08 15:38:54 -07:00
Hai Cao
0738c148ca A few table designer improvements && bump STS to .227 (#18982)
* Add unified col for data type deit

* remove seperate type setting cols and rename unified col to 'type'

* remove advanced type from properties window

* add description to col, idx, constraints

* nit

* bump STS to .227
2022-04-08 15:00:56 -07:00
Maddy
4191ef8aa5 Fix active cell update on tabbing (#18614)
* listen on focus_in of toolbar

* update styles on focus_in

* listen for active cell change on notebook componen

* add tabbing order to textcells

* remove duplicate listener

* clean up

* undo

* remove visible check from cellToolbar

* remove duplicate detectChanges on updateActiveCell

* only update active cell if it's already not

* add aria-label for accessibility

* localize the aria label

* refactor

* add cellLabel property to CellModel

* remove updateActiveCell from code component

* regression from merge fix

* set edit mode as true when focusing on cell

* moce check to model

* merge changes correctly

* update edit mode if code cell

* fixes

Co-authored-by: barbaravaldez <bavaldez@microsoft.com>
Co-authored-by: chgagnon <chgagnon@microsoft.com>
2022-04-08 12:31:30 -07:00
Alex Ma
41b639c7d6 [Loc] update to sql-bindings (#18978) 2022-04-08 11:21:26 -07:00
Alan Ren
c04f78981c retrieve the data from display data source (#18973) 2022-04-08 11:13:29 -07:00
Aditya Bist
197d56a29b Fix new table issue (#18974)
* fix new table issue

* fix new table scenario

* simplify logic
2022-04-08 11:10:30 -07:00
Alex Ma
cd7c94976c [Loc] Last update to langpack source files for April release. (#18977)
* [Loc] update xlfs

* [Loc] Last source file updates
2022-04-08 10:52:01 -07:00
Vasu Bhog
ed8d2f9927 Fix for user using command palette (#18948)
* fix for user using command palette command

* rework if a user uses the create azure function via the command

* for now only show in vs code

* move logic to azureFunctionService + address comments

* fix command location

* address comments

* fix validateFunction
2022-04-08 10:28:45 -07:00
csigs
dc14201088 LEGO: check in for main to temporary branch. (#18976) 2022-04-08 10:10:37 -07:00
Alex Ma
562e0fdde7 [Loc] add converttosdkstyleconfirmation message (#18971) 2022-04-07 16:51:49 -07:00
Charles Gagnon
a595fb8fd1 Inline source maps in dev build (#18970)
* Inline source maps in dev build

* Update readme

* correct command

* Use env var

* Update location
2022-04-07 16:39:08 -07:00
Barbara Valdez
683d906138 Create directory when adding a book section from book tree view (#18966)
* create folder when creating a book section

* fix test
2022-04-07 16:19:33 -07:00
Kim Santiago
379b24d78c Add confirmation before converting to SDK-style project (#18893)
* Add confirmation before updating to SDK-style project

* update string

* update string

* update other learn more url
2022-04-07 15:48:05 -07:00
Aasim Khan
d8b3db2ee3 Updating moment package (#18956)
* Updating moment package

* Fixing moment

* Fixing notebook moment package
2022-04-07 14:04:13 -07:00
Vasu Bhog
4e299dc4b2 fix timeout warning when exiting create function (#18947)
* fix timeout warning when exiting create function

* combine timeout errors

* make more explicit
2022-04-07 13:58:57 -07:00
Charles Gagnon
a5cc1ea223 Fix download links (#18969) 2022-04-07 13:37:35 -07:00
Alex Ma
b4195d8984 [Loc] update to langpack source files 4/7/2022 (#18967)
* Added updated xlfs

* update to source files
2022-04-07 12:28:02 -07:00
csigs
f804e5dd48 LEGO: check in for main to temporary branch. (#18965) 2022-04-07 09:39:48 -07:00
Candice Ye
e6773dd842 Change version numbers of arc and azcli (#18957)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-04-06 15:07:09 -07:00
Vasu Bhog
f829218c2c less prompts about langauge and runtime version (#18949) 2022-04-06 12:58:37 -07:00
Vasu Bhog
49b0640fde Update sql-bindings icon (#18946)
* add default icon
2022-04-06 12:57:54 -07:00
Alex Ma
63a700ef3f [Loc] update to langpack source files (#18958)
* update to xlfs

* [Loc] added updates to langpack source files
2022-04-06 12:46:39 -07:00
Cory Rivera
03d2e83250 Treat Jupyter's Python 3 Ipykernel alias as Python 3. (#18943) 2022-04-06 11:27:15 -07:00
Cory Rivera
316798a9b5 Add cell toolbar tests for undoing text styling by clicking button twice. (#18807) 2022-04-06 10:02:51 -07:00
csigs
bc79d62b35 LEGO: check in for main to temporary branch. (#18953) 2022-04-06 09:07:12 -07:00
Alex Ma
c4db69f391 [Loc] small update to arc xlf (#18945) 2022-04-05 17:20:08 -07:00
dependabot[bot]
f4e37d3dce Bump plist from 3.0.4 to 3.0.5 (#18916)
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 17:00:13 -07:00
Karl Burtram
805dda533a Bump distro for electron bump (#18944) 2022-04-05 16:59:44 -07:00
Karl Burtram
463271f0d9 Bump Electron to 13.6.6 (#18940)
* Bump Electron to 13.6.6

* Bump azuredatastudio-sqlite version in smoke tests
2022-04-05 16:44:17 -07:00
Cory Rivera
7c399e84eb Add markdown smoke tests for changing text size and inserting links (#18888)
* Temporarily disabled text size tests due to issues running on Unix.
2022-04-05 15:53:06 -07:00
Candice Ye
92a2233022 Added text to the Arc DC deploy tile that user must have done az login before continuing with the wizard. (#18938)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-04-05 14:22:45 -07:00
Lewis Sanchez
a6000aef67 Resolves undefined tenant error while adding an account. (#18937)
* Selects the first tenant that appears in the drop down list of tenants

* Fixes tenant undefined while adding account error
2022-04-05 13:14:06 -07:00
Alex Ma
c707911800 [Loc] added updated langpack files and xlfs (#18920) 2022-04-05 10:50:49 -07:00
Alex Ma
630cdbc84f [Loc] added table show actions xlf (#18936) 2022-04-05 10:03:41 -07:00
Aasim Khan
4db0814b94 Adding context menu to table component (#18914)
* Adding context menu to table component

* Removing extra whitespace

* Some logic fixes

* Fixing focus logic
2022-04-04 23:47:39 -07:00
Alex Ma
b96fb5aa90 [Loc] added small string for sql-bindings (#18933) 2022-04-04 17:27:16 -07:00
Raymond Truong
a0cf244245 [SQL Migration] List resource groups based on available resources (#18846)
* WIP - implemented logic to show resource groups as derived from list of resources, instead of directly listing all resource groups

* Remove comments

* Remove getResourceGroupByName and craft resource group object manually instead

* Update subscription and location list when tenant is changed

* Define Azure resource types locally instead of modifying azurecore

* Add SQL VM scenario

* Split getAzureResourceGroupDropdownValues into four separate functions

* Refresh only subscription list when tenant is changed

* Create new DMS dialog should show all resource groups

* Remove unnecessary async code
2022-04-04 15:59:40 -07:00
Lewis Sanchez
81e785506c Bumps azdataGraph version to 0.019 (#18922) 2022-04-04 15:16:09 -07:00
Vasu Bhog
69c254aeac Add progress bar for adding sql binding (#18923)
* add progress bar for adding sql binding
2022-04-04 15:13:00 -07:00
Vasu Bhog
2d9004e481 Remove known settings from ConnectionStringSettingName prompt (#18910)
* remove known settings
2022-04-04 13:37:44 -07:00
Charles Gagnon
c53c6d86e2 Update STS to .226 (#18918) 2022-04-04 12:44:05 -07:00
Vasu Bhog
c65c41d704 add guid for session ID (#18912) 2022-04-04 10:43:20 -07:00
Alex Ma
838c27bfa3 [Loc] added updatedtosdkstyleerror (#18917) 2022-04-04 10:15:04 -07:00
csigs
fec1b7821f LEGO: check in for main to temporary branch. (#18908) 2022-04-04 09:51:12 -07:00
dependabot[bot]
adbbf7ae7f Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/admin-tool-ext-win (#18904)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:41:30 -07:00
dependabot[bot]
be62f1864d Bump plist from 3.0.4 to 3.0.5 in /build (#18903)
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: direct:development
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:41:18 -07:00
dependabot[bot]
ca6ad43e8f Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/azurecore (#18902)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:41:04 -07:00
dependabot[bot]
bd6d438c8c Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/arc (#18901)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:40:55 -07:00
dependabot[bot]
7392ce7e31 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/azcli (#18900)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:40:45 -07:00
dependabot[bot]
e82e267159 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/agent (#18899)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:40:35 -07:00
dependabot[bot]
eb25cc810f Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/cms (#18898)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 09:40:25 -07:00
Kim Santiago
d6dab3dd18 Remove build and folder includes when converting to SDK-style project (#18889)
* remove Build and Folder Includes

* add tests

* cleanup

* rollback if there was an error during the conversion
2022-04-01 21:04:18 -04:00
Alan Ren
a795e64bed fix language change issue (#18906) 2022-04-01 17:52:11 -07:00
dependabot[bot]
055f10ff8d Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/dacpac (#18869)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:08:56 -07:00
dependabot[bot]
b9ebdf9eb7 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/data-workspace (#18868)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:08:48 -07:00
dependabot[bot]
3bd033b25d Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/mssql (#18861)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:08:40 -07:00
dependabot[bot]
b7d1e950f3 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/notebook (#18860)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:08:31 -07:00
dependabot[bot]
3f31290e8e Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/import (#18859)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:07:41 -07:00
dependabot[bot]
3b7a5b64af Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/integration-tests (#18857)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:07:32 -07:00
dependabot[bot]
6a0dd0415b Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/machine-learning (#18856)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:07:20 -07:00
dependabot[bot]
45b5f8d136 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/sql-bindings (#18854)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:07:12 -07:00
dependabot[bot]
a29bb210b2 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/resource-deployment (#18853)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-01 10:07:03 -07:00
csigs
3c8943aab2 LEGO: check in for main to temporary branch. (#18897) 2022-04-01 09:42:52 -07:00
Aditya Bist
bab5118996 Add graph icons to OE and TD (#18808)
* add graph icons to OE and TD

* PR comments

* change enum type

* change sub type to icon and make basic as default

* changed icontype to icon

* change default logic location

* change icon name to be more generic

* use right icons
2022-04-01 00:27:59 -07:00
Alex Ma
27f014c70d [Loc] add table filter xlf (#18896) 2022-03-31 22:16:37 -07:00
Aditya Bist
e7773425ee added graph node types from edit and publish results (#18891)
* added graph node types from edit and publish results

* make generic property bag

* review comments

* add comment for function

* edit comment

* change name to telemetry info
2022-03-31 21:50:26 -07:00
Vasu Bhog
0a43ed84e3 Add bindings telemetry (#18851)
* add bindings telemetry

* add exitReasons
2022-03-31 16:29:15 -07:00
Kim Santiago
80db3a492f don't show error notification if no error message in dacpac extension (#18871) 2022-03-31 15:31:48 -07:00
Kim Santiago
b65a6bd741 update DW target platform name in sql projects (#18843)
* update DW target platform name

* remove Microsoft from target platform names

* fix merge conflict
2022-03-31 15:30:30 -07:00
Alan Ren
b6083b6447 handle special values in the table filter (#18872)
* handle special values in the table filter

* pr comments
2022-03-31 11:17:55 -07:00
Kim Santiago
fe0cff07d6 Expose refresh projects tree (#18890)
* refresh project tree after apply schema compare to project

* clarify comment
2022-03-31 11:08:08 -07:00
Charles Gagnon
4166c622f3 Fix DiffEditorComponent types (#18883)
* Fix DiffEditorComponent types

* spacing
2022-03-30 15:24:10 -07:00
Aasim Khan
989ee0b2c7 Updating azdataGraph package to get tooltip improvements (#18877) 2022-03-30 14:28:16 -07:00
dependabot[bot]
cffa7c6b49 Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/sql-database-projects (#18855)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 17:28:51 -07:00
dependabot[bot]
4621d2e1af Bump ansi-regex from 3.0.0 to 3.0.1 in /extensions/schema-compare (#18858)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 17:28:28 -07:00
Alex Ma
c62619c17b [Loc] update to xlfs (#18866) 2022-03-29 15:02:59 -07:00
Chris LaFreniere
af3d307d40 Restart kernel initial implementation (#18835)
* Restart kernel initial implementation

* Update notebook extension TestKernel

* PR comments
2022-03-29 12:56:52 -07:00
Kim Santiago
8537a30996 fix project not getting updated after schema cmopare (#18850) 2022-03-29 11:55:12 -07:00
csigs
b51387bb46 LEGO: check in for main to temporary branch. (#18862) 2022-03-29 11:21:43 -07:00
Kim Santiago
f002a26fe4 Add convert to SDK style project to context menu (#18847)
* differentiate between sdk and legacy style projects in tree

* switch to legacy

* add to context menu

* add function call
2022-03-29 10:15:36 -07:00
Leila Lali
459fab256e Sql Proj: Adding a new sqlproj template for SQL dbs (#18636) 2022-03-29 09:06:56 -07:00
Alex Ma
25b8137a45 [Loc] change to sql-database-project xlf (#18848) 2022-03-28 17:33:45 -07:00
Kim Santiago
2f825f8a97 add initial SDK-style project migration (#18827)
* add initial SDK-style project migration

* addressing comments
2022-03-28 16:29:14 -07:00
Leila Lali
aad20bc338 Chaning the name of server in deploy option if target is Azure (#18828) 2022-03-28 15:07:09 -07:00
Kim Santiago
893015010d remove unused SchemaComparePublishChanges (#18830) 2022-03-28 10:54:53 -07:00
csigs
027bac766e LEGO: check in for main to temporary branch. (#18842) 2022-03-28 09:06:55 -07:00
csigs
9d2e5ff93e LEGO: check in for main to temporary branch. (#18836) 2022-03-28 09:06:45 -07:00
Lewis Sanchez
85b4bf13f9 Initial sets up of new execution plan comparison result endpoint (#18813)
* Initial sets up of new execution plan comparison result endpoint

* Makes query execution plan endpoint URI's more consistent.
2022-03-25 11:47:46 -07:00
Alex Ma
0d3cec074d [Loc] added loading notebook message (#18826) 2022-03-25 10:29:48 -07:00
Cory Rivera
d9501ffc03 Enable loading spinner for notebook editor. (#18810) 2022-03-24 16:31:33 -07:00
Charles Gagnon
f325a2df08 Throw more detailed error when compilation fails (#18783)
* Throw more detailed error when compilation fails

* Add SQL edits
2022-03-24 13:20:18 -07:00
Nemanja Milovančević
5e68ff1dfe Make mssql extension a module (#18804)
* Rebase from main branch

* import from module

* Add mssql module ref

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-03-24 11:09:55 -07:00
dependabot[bot]
ae8784e462 Bump minimist from 1.2.0 to 1.2.6 in /extensions/liveshare (#18814)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-24 09:28:09 -07:00
dependabot[bot]
668f59ca2e Bump minimist from 1.2.5 to 1.2.6 in /test/smoke (#18812)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-24 09:25:21 -07:00
Alan Ren
b50c4fdb49 new service downloader version (#18811) 2022-03-23 21:46:42 -07:00
Raymond Truong
236db4d1b1 [SQL Migration] Show correct recommendation when viewing issues in assessment results (#18801) 2022-03-23 17:18:20 -07:00
Kim Santiago
c39b13a93e cleanup sql database projects package.json (#18794) 2022-03-23 10:45:48 -07:00
Kim Santiago
5a87e552bc move system dbs to bottom of the list in update project from db dialog (#18791) 2022-03-22 18:12:19 -07:00
Cory Rivera
1fa453f8f2 Add smoke tests for text cell toolbar actions. (#18792) 2022-03-22 12:51:56 -07:00
Vasu Bhog
783215c160 code owners for sql-bindings (#18795) 2022-03-22 12:23:38 -07:00
Charles Gagnon
bdf3261612 Disable broken tests (#18793) 2022-03-21 18:16:04 -07:00
Charles Gagnon
08b2d9668e Fix and enable core unit test coverage (#18781)
* Fix and enable core unit test coverage

* switch

* Fix coverage mapping

* don't output marked

* Fix filter check
2022-03-21 15:15:07 -07:00
Kim Santiago
8a670a8baa Add a few more properties for dacpac telemetry (#18782)
* add wizard page and selected operation for dacfx wizard cancel telemetry

* update name

* send version for extract

* pass version directly into function call
2022-03-21 14:27:09 -07:00
csigs
aaef400194 LEGO: check in for main to temporary branch. (#18785)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-03-21 10:15:02 -07:00
csigs
e4a3ec1aac LEGO: check in for main to temporary branch. (#18784) 2022-03-21 09:49:50 -07:00
Vasu Bhog
1a1556ca75 Use SQL input / output template instead (#18768)
* use sql input / output template instead

* workaround for storage wizard that is opened
2022-03-18 17:31:19 -07:00
Cory Rivera
7914fcf101 Fix issues with unknown notebook file types not opening as a default notebook. (#18779) 2022-03-18 16:59:22 -07:00
Maddy
23a69f9b69 Add test for last edit mode (#18734)
* add test for persisting last edit mode

* remove empty line

* address comments

* update comment
2022-03-18 16:13:58 -07:00
Kim Santiago
6263cc2f87 cleanup dacpac extension telemetry (#18778)
* cleanup dacpac extension telemetry

* Add helper function and missing action
2022-03-18 15:53:05 -07:00
Alan Ren
f2d4801634 change the trigger of inputbox commit event (#18776) 2022-03-18 13:16:43 -07:00
Charles Gagnon
301c6f24fe Remove tslint from extensions (#18775) 2022-03-18 11:19:30 -07:00
Charles Gagnon
fc0721450d Cleanup sql bindings test utils (#18773) 2022-03-18 11:18:59 -07:00
Charles Gagnon
a6d442bb3b Consolidate extension typings files (#18765)
* Consolidate extension typings files

* fix
2022-03-18 09:24:22 -07:00
Alex Ma
b07266e8c2 [Loc] update to arc and sql XLFS (#18769) 2022-03-18 00:28:30 -07:00
Candice Ye
a786e63445 Arc bug fix: ADS Create DC wizard should prompt for Log Analytics workspace ID and access token similar to portal (#18742)
* Added monitor log-analytics workspace list to az api

* Made resource group and subscription optional for logs analytics workspace list

* Added dynamic fields for workspace names, id, primary key, based on value of auto-logs checkbox

* Hooked up the newly created source provider for log analytics workspaces. Dropdown now populates all workspace names.

* Added workspaceUtils.ts for a valueprovider. Now workspace name maps to id automatically.

* Replaced promise.all with promise.resolve

* Added workspace id and primary key as env variables in the notebook

* Removed extra space in package.json

* Made getOptions more concise and put azApi definition in function.

* Changed notebook to handle new Azure CLI command with param --clustername
2022-03-17 20:57:16 -07:00
Alan Ren
d6abcb892d handle validation error (#18766) 2022-03-17 19:43:02 -07:00
Kim Santiago
3071a7b710 Add more telemetry for sql database projects (#18751)
* add more telemetry for sql database projects

* add publishToContainer events

* send target platform when publishing

* add duration for createProjectFromDb and updateProjectFromDb
2022-03-17 16:44:10 -07:00
Aasim Khan
6c51b934f9 Fixing clickable state of infobox not setting properly when initializing it. (#18763)
* Fixing clickable state of infobox not set when initializing it.

* Removing unnecessary calls to a method
2022-03-17 14:11:15 -07:00
Alan Ren
9f2940e8f8 add severity support for issues (#18761)
* add severity support for issues

* vbump STS

* pr comments
2022-03-17 14:09:02 -07:00
Rachel Kim
aeb4e87c1f sql migration extension version bump 0.1.14 (#18665) 2022-03-17 14:01:49 -07:00
Alex Ma
85e1e01177 [Loc] update to sql-database-projects (#18764) 2022-03-17 13:03:13 -07:00
Vasu Bhog
d063355b1a improve sql bindings extension (#18757) 2022-03-17 11:37:37 -07:00
Vasu Bhog
80007a72cc Remove sql-bindings logic from sql-database-projects (#18754)
* remove sql-bindings logic from sql-database-projects
2022-03-17 11:36:28 -07:00
533 changed files with 36445 additions and 26311 deletions

1
.github/CODEOWNERS vendored
View File

@@ -11,6 +11,7 @@
/extensions/query-history/ @Charles-Gagnon
/extensions/resource-deployment/ @Charles-Gagnon
/extensions/schema-compare/ @kisantia
/extensions/sql-bindings/ @vasubhog @Charles-Gagnon @lucyzhang929 @chlafreniere @MaddyDev
/extensions/sql-database-projects/ @Benjin @kisantia
/extensions/mssql/config.json @Charles-Gagnon @alanrenmsft @kburtram

View File

@@ -131,12 +131,15 @@ jobs:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
run: yarn --frozen-lockfile --network-timeout 180000
# Don't inline source maps so that we generate code coverage for ts files
- name: Compile and Download
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
env:
SQL_NO_INLINE_SOURCEMAP: 1
- name: Run Unit Tests (Electron)
id: electron-unit-tests
run: DISPLAY=:10 ./scripts/test.sh --runGlob "**/sql/**/*.test.js" # {{SQL CARBON EDIT}} Run only our tests with coverage. Disable for now since it's currently broken --coverage
run: DISPLAY=:10 ./scripts/test.sh --runGlob "**/sql/**/*.test.js" --coverage
- name: Run Extension Unit Tests (Electron)
id: electron-extension-unit-tests

View File

@@ -1,3 +1,3 @@
disturl "https://electronjs.org/headers"
target "13.5.0"
target "13.6.6"
runtime "electron"

View File

@@ -1,11 +1,14 @@
# Change Log
## Version 1.35.1
* Release date: March 17, 2022
## Version 1.36.0
* Release date: April 20, 2022
* Release status: General Availability
## Hotfix release
- Fix for [Excel number format #18615](https://github.com/microsoft/azuredatastudio/issues/18615)
- Fix for [Geometry Data Type Returned as Unknown Charset in Results Grid #18630](https://github.com/microsoft/azuredatastudio/issues/18630)
## What's new in this version
- General Availability of the Azure SQL Migration Extension for ADS
- Support for .NET Interactive Notebooks Extension
- New Table Designer Features including support for System Versioned, Graph and Memory Optomized Tables
- Query Plan Viewer Updates includign warning and parallelism icons, the option to disable tooltips and support for opening .sqlplan files
- Improvements in SQL Projects and Schema Compare
| Platform |
| --------------------------------------- |
@@ -17,13 +20,20 @@
| [Linux RPM][linux-rpm] |
| [Linux DEB][linux-deb] |
[win-user]: https://go.microsoft.com/fwlink/?linkid=2187459
[win-system]: https://go.microsoft.com/fwlink/?linkid=2187520
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2187460
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2187461
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2187462
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2187521
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2187522
[win-user]: https://go.microsoft.com/fwlink/?linkid=2193235
[win-system]: https://go.microsoft.com/fwlink/?linkid=2193326
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2193236
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2192971
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2193237
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2193238
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2193327
## Version 1.35.1
* Release date: March 17, 2022
* Release status: General Availability
## Hotfix release
- Fix for [Excel number format #18615](https://github.com/microsoft/azuredatastudio/issues/18615)
- Fix for [Geometry Data Type Returned as Unknown Charset in Results Grid #18630](https://github.com/microsoft/azuredatastudio/issues/18630)
## Version 1.35.0
* Release date: February 24, 2022

View File

@@ -131,10 +131,10 @@ Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the [Source EULA](LICENSE.txt).
[win-user]: https://go.microsoft.com/fwlink/?linkid=2187459
[win-system]: https://go.microsoft.com/fwlink/?linkid=2187520
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2187460
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2187461
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2187522
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2187521
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2187462
[win-user]: https://go.microsoft.com/fwlink/?linkid=2193235
[win-system]: https://go.microsoft.com/fwlink/?linkid=2193326
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2193236
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2192971
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2193237
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2193238
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2193327

View File

@@ -106,7 +106,7 @@ steps:
- script: |
set -e
./scripts/test.sh --build --tfs "Unit Tests" # Disable code coverage since it's currently broken --coverage
./scripts/test.sh --build --tfs "Unit Tests" --coverage
displayName: Run unit tests
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))

View File

@@ -119,7 +119,7 @@ steps:
- script: |
set -e
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests" # Disable code coverage since it's currently broken --coverage
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests" --coverage
displayName: Run unit tests (Electron)
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))

View File

@@ -37,7 +37,7 @@ function createCompile(src, build, emitError) {
const sourcemaps = require('gulp-sourcemaps');
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) });
if (!build) {
if (!build && !process.env['SQL_NO_INLINE_SOURCEMAP']) {
overrideOptions.inlineSourceMap = true;
}
const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));

View File

@@ -44,7 +44,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
const overrideOptions = { ...getTypeScriptCompilerOptions(src), inlineSources: Boolean(build) };
if (!build) {
if (!build && !process.env['SQL_NO_INLINE_SOURCEMAP']) {
overrideOptions.inlineSourceMap = true;
}
@@ -87,7 +87,6 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
return function () {
if (os.totalmem() < 4_000_000_000) {
throw new Error('compilation requires 4GB of RAM');
}

View File

@@ -60,7 +60,7 @@
"mime": "^1.4.1",
"mkdirp": "^1.0.4",
"p-limit": "^3.1.0",
"plist": "^3.0.4",
"plist": "^3.0.5",
"rollup": "^1.20.3",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",

View File

@@ -2038,10 +2038,10 @@ pify@^3.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
plist@^3.0.1, plist@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.4.tgz#a62df837e3aed2bb3b735899d510c4f186019cbe"
integrity sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==
plist@^3.0.1, plist@^3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987"
integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==
dependencies:
base64-js "^1.5.1"
xmlbuilder "^9.0.7"

View File

@@ -108,7 +108,7 @@
},
"dependencies": {
"@microsoft/ads-extension-telemetry": "^1.1.3",
"@microsoft/ads-service-downloader": "0.2.3",
"@microsoft/ads-service-downloader": "0.2.4",
"vscode-nls": "^4.1.2"
},
"devDependencies": {

View File

@@ -189,16 +189,16 @@
dependencies:
vscode-extension-telemetry "^0.1.6"
"@microsoft/ads-service-downloader@0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.3.tgz#5987c1fc291d2019915e434263ccfe2223d27d5c"
integrity sha512-c8vvBeV0pdLUzATjoj0PlGTH3UwN3tsnT3gA6Uo+H3ZaOfkULhDrv1hG+2jJ8kA7oq+HfTHWEIR6tSnaFk2G/w==
"@microsoft/ads-service-downloader@0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.4.tgz#905a11eb2da19673629852d9764fb9fb94ad81bd"
integrity sha512-3J0YjH29a5pP+5Yu0HF7itRBZpNOgUN34Gh/p0Py/TQr7qUzZSXwOM+fWD1nCea+q9t8mfHr0yuy0aeDX+33vQ==
dependencies:
async-retry "^1.2.3"
eventemitter2 "^5.0.1"
http-proxy-agent "^2.1.0"
https-proxy-agent "^2.2.3"
mkdirp "^0.5.1"
mkdirp "1.0.4"
tar "^6.1.11"
tmp "^0.0.33"
yauzl "^2.10.0"
@@ -236,9 +236,9 @@ agent-base@4, agent-base@^4.3.0:
es6-promisify "^5.0.0"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"
@@ -739,18 +739,18 @@ mkdirp@0.5.1:
dependencies:
minimist "0.0.8"
mkdirp@^0.5.1, mkdirp@~0.5.1:
mkdirp@1.0.4, mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@~0.5.1:
version "0.5.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512"
integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mocha-junit-reporter@^1.17.0:
version "1.23.1"
resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.1.tgz#ba11519c0b967f404e4123dd69bc4ba022ab0f12"

View File

@@ -208,9 +208,9 @@
integrity sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -185,21 +185,24 @@
"print (f'Creating Azure Arc Data Controller: {arc_data_controller_name} using configuration {arc_cluster_context}')\n",
"os.environ[\"AZDATA_USERNAME\"] = arc_admin_username\n",
"os.environ[\"AZDATA_PASSWORD\"] = arc_admin_password\n",
"os.environ[\"LOG_WORKSPACE_ID\"] = log_analytics_workspace_id\n",
"os.environ[\"LOG_SHARED_KEY\"] = log_analytics_primary_key\n",
"\n",
"# If connection mode is indirect\n",
"namespace = f' --k8s-namespace {arc_data_controller_namespace}' if is_indirect else ''\n",
"use_k8s = ' --use-k8s' if is_indirect else ''\n",
"\n",
"# If connection mode is direct\n",
"custom_location = f' --custom-location {arc_data_controller_custom_location}' if not is_indirect else ''\n",
"\n",
"cluster_name = f' --cluster-name {arc_cluster_context}' if not is_indirect else ''\n",
"auto_upload_metrics_value = 'true' if arc_data_controller_auto_upload_metrics == 'true' else 'false'\n",
"auto_upload_logs_value = 'true' if arc_data_controller_auto_upload_logs == 'true' else 'false'\n",
"\n",
"auto_upload_metrics = f' --auto-upload-metrics {auto_upload_metrics_value}' if not is_indirect else ''\n",
"auto_upload_logs = f' --auto-upload-logs {auto_upload_logs_value}' if not is_indirect else ''\n",
"\n",
"if os.name == 'nt':\n",
" print(f'If you don\\'t see output produced by az, you can run the following command in a terminal window to check the deployment status:\\n\\t {os.environ[\"AZDATA_NB_VAR_KUBECTL\"]} get pods -n {arc_data_controller_namespace}')\n",
"run_command(f'az arcdata dc create --connectivity-mode {arc_data_controller_connectivity_mode} --name {arc_data_controller_name}{namespace} --subscription {arc_subscription} --resource-group {arc_resource_group} --location {arc_data_controller_location} --storage-class {arc_data_controller_storage_class} --profile-name {arc_profile} --infrastructure {arc_infrastructure}{custom_location}{auto_upload_metrics}{auto_upload_logs}{use_k8s}')\n",
"run_command(f'az arcdata dc create --connectivity-mode {arc_data_controller_connectivity_mode} --name {arc_data_controller_name}{namespace} --subscription {arc_subscription} --resource-group {arc_resource_group} --location {arc_data_controller_location} --storage-class {arc_data_controller_storage_class} --profile-name {arc_profile} --infrastructure {arc_infrastructure}{custom_location}{cluster_name}{auto_upload_metrics}{auto_upload_logs}{use_k8s}')\n",
"print(f'Azure Arc Data Controller: {arc_data_controller_name} created.') "
]
},

View File

@@ -2,7 +2,7 @@
"name": "arc",
"displayName": "%arc.displayName%",
"description": "%arc.description%",
"version": "1.0.0",
"version": "1.1.0",
"publisher": "Microsoft",
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
"icon": "images/extension.png",
@@ -360,6 +360,49 @@
"target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_CONNECTIVITY_MODE",
"value": "Direct"
}
},
{
"type": "options",
"label": "%arc.data.controller.log.analytics.workspace.names%",
"variableName": "AZDATA_NB_VAR_LOG_ANALYTICS_WORKSPACE_NAMES",
"required": true,
"options": {
"source": {
"providerId": "arc.logAnalyticsWorkspaceNames"
},
"optionsType": "dropdown"
},
"enabled": {
"target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_AUTO_UPLOAD_LOGS",
"value": "true"
}
},
{
"type": "text",
"label": "%arc.data.controller.log.analytics.workspace.id%",
"required": true,
"isEvaluated": true,
"variableName": "AZDATA_NB_VAR_LOG_ANALYTICS_WORKSPACE_ID",
"valueProvider": {
"providerId": "workspace-name-to-id",
"triggerFields": [
"AZDATA_NB_VAR_LOG_ANALYTICS_WORKSPACE_NAMES"
]
},
"enabled": {
"target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_AUTO_UPLOAD_LOGS",
"value": "true"
}
},
{
"type": "text",
"label": "%arc.data.controller.log.analytics.primary.key%",
"required": true,
"variableName": "AZDATA_NB_VAR_LOG_ANALYTICS_PRIMARY_KEY",
"enabled": {
"target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_AUTO_UPLOAD_LOGS",
"value": "true"
}
}
]
},
@@ -1390,6 +1433,9 @@
"resourceDeploymentOptionsSources": [
{
"id": "arc.controllers"
},
{
"id": "arc.logAnalyticsWorkspaceNames"
}
]
},

View File

@@ -14,7 +14,7 @@
"arc.openDashboard": "Manage",
"resource.type.azure.arc.display.name": "Azure Arc data controller",
"resource.type.azure.arc.description": "Creates an Azure Arc data controller",
"resource.type.azure.arc.description": "Creates an Azure Arc data controller. Ensure that you have run az login before starting this wizard.",
"arc.data.controller.new.wizard.title": "Create Azure Arc data controller",
"arc.data.controller.cluster.environment.title": "What is your target existing Kubernetes cluster environment?",
"arc.data.controller.select.cluster.title": "Select from existing Kubernetes clusters",
@@ -43,6 +43,9 @@
"arc.data.controller.auto.upload.metrics.description": "Enable the automatic upload of metrics. Direct mode only.",
"arc.data.controller.auto.upload.logs": "Auto-upload Logs",
"arc.data.controller.auto.upload.logs.description": "Enable the automatic upload of logs. Direct mode only.",
"arc.data.controller.log.analytics.workspace.names": "Log Analytics workspace",
"arc.data.controller.log.analytics.workspace.id": "Log Analytics workspace ID",
"arc.data.controller.log.analytics.primary.key": "Log Analytics primary key",
"arc.data.controller.metrics.and.logs.dashboard.credentials.title": "Metrics and Logs Dashboard Credentials",
"arc.data.controller.metrics.and.logs.dashboard.credentials.username": "Username",

View File

@@ -0,0 +1,28 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { InputValueType } from 'resource-deployment';
import * as azExt from 'az-ext';
import * as vscode from 'vscode';
import { errorListingLogAnalyticsWorkspaces } from '../localizedConstants';
export const licenseTypeVarName = 'AZDATA_NB_VAR_LOG_ANALYTICS_WORKSPACE_NAMES';
// Gets the Log Analytics workspace id from the workspace name.
export async function getWorkspaceIdFromName(triggerFields: { [key: string]: InputValueType }): Promise<string | undefined> {
try {
const _azApi = <azExt.IExtension>vscode.extensions.getExtension(azExt.extension.name)?.exports;
const workspaces = await _azApi.az.monitor.logAnalytics.workspace.list();
const targetWorkspace = workspaces.stdout.find(workspace => workspace.name === triggerFields[licenseTypeVarName]);
if (targetWorkspace) {
return targetWorkspace.customerId;
} else {
return undefined;
}
} catch (e) {
vscode.window.showErrorMessage(errorListingLogAnalyticsWorkspaces(e));
throw e;
}
}

View File

@@ -15,6 +15,8 @@ import { AzureArcTreeDataProvider } from './ui/tree/azureArcTreeDataProvider';
import { ControllerTreeNode } from './ui/tree/controllerTreeNode';
import { TreeNode } from './ui/tree/treeNode';
import * as pricing from './common/pricingUtils';
import * as workspace from './common/workspaceUtils';
import { LogAnalyticsWorkspaceOptionsSourceProvider } from './providers/logAnalyticsWorkspaceOptionsSourceProvider';
export async function activate(context: vscode.ExtensionContext): Promise<arc.IExtension> {
IconPathHelper.setExtensionContext(context);
@@ -61,6 +63,15 @@ export async function activate(context: vscode.ExtensionContext): Promise<arc.IE
// register option sources
const rdApi = <rd.IExtension>vscode.extensions.getExtension(rd.extension.name)?.exports;
context.subscriptions.push(rdApi.registerOptionsSourceProvider(new ArcControllersOptionsSourceProvider(treeDataProvider)));
context.subscriptions.push(rdApi.registerOptionsSourceProvider(new LogAnalyticsWorkspaceOptionsSourceProvider()));
// Register valueprovider for getting the Log Analytics workspace id from the workspace name.
context.subscriptions.push(rdApi.registerValueProvider({
id: 'workspace-name-to-id',
getValue: async (triggerFields: { [key: string]: rd.InputValueType }) => {
return workspace.getWorkspaceIdFromName(triggerFields);
}
}));
// Register valueprovider for getting the calculated cost per VCore.
context.subscriptions.push(rdApi.registerValueProvider({

View File

@@ -334,3 +334,4 @@ export const userCancelledError = localize('arc.userCancelledError', "User cance
export const clusterContextConfigNoLongerValid = (configFile: string, clusterContext: string, error: any) => localize('clusterContextConfigNoLongerValid', "The cluster context information specified by config file: {0} and cluster context: {1} is no longer valid. Error is:\n\t{2}\n Do you want to update this information?", configFile, clusterContext, getErrorMessage(error));
export const invalidConfigPath = localize('arc.invalidConfigPath', "Invalid config path");
export const loadingClusterContextsError = (error: any): string => localize('arc.loadingClusterContextsError', "Error loading cluster contexts. {0}", getErrorMessage(error));
export function errorListingLogAnalyticsWorkspaces(error: any): string { return localize('arc.errorListingLogAnalyticsWorkspaces', "Error listing Log Analytics workspaces {0}", getErrorMessage(error, true)); }

View File

@@ -0,0 +1,31 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as azExt from 'az-ext';
import * as rd from 'resource-deployment';
import * as vscode from 'vscode';
import { errorListingLogAnalyticsWorkspaces } from '../localizedConstants';
/**
* Class that provides options sources for Log Analytics workspace names
*/
export class LogAnalyticsWorkspaceOptionsSourceProvider implements rd.IOptionsSourceProvider {
readonly id = 'arc.logAnalyticsWorkspaceNames';
private readonly _azApi: azExt.IExtension;
constructor() {
this._azApi = <azExt.IExtension>vscode.extensions.getExtension(azExt.extension.name)?.exports;
}
public async getOptions(): Promise<string[]> {
try {
const workspacesListResult = await this._azApi.az.monitor.logAnalytics.workspace.list();
return workspacesListResult.stdout.map(workspace => workspace.name);
} catch (err) {
vscode.window.showErrorMessage(errorListingLogAnalyticsWorkspaces(err));
throw err;
}
}
}

View File

@@ -283,9 +283,9 @@ agent-base@4, agent-base@^4.3.0:
es6-promisify "^5.0.0"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -2,7 +2,7 @@
"name": "azcli",
"displayName": "%azcli.arc.displayName%",
"description": "%azcli.arc.description%",
"version": "1.0.0",
"version": "1.1.0",
"publisher": "Microsoft",
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
"icon": "images/extension.png",

View File

@@ -154,6 +154,17 @@ export function getAzApi(localAzDiscovered: Promise<IAzTool | undefined>, azTool
}
}
},
monitor: {
logAnalytics: {
workspace: {
list: async (resourceGroup?: string, subscription?: string, additionalEnvVars?: azExt.AdditionalEnvVars) => {
await localAzDiscovered;
validateAz(azToolService.localAz);
return azToolService.localAz!.monitor.logAnalytics.workspace.list(resourceGroup, subscription, additionalEnvVars);
}
}
}
},
getPath: async () => {
await localAzDiscovered;
throwIfNoAz(azToolService.localAz);

View File

@@ -209,6 +209,19 @@ export class AzTool implements azExt.IAzApi {
}
};
public monitor = {
logAnalytics: {
workspace: {
list: (resourceGroup?: string, subscription?: string, additionalEnvVars?: azExt.AdditionalEnvVars): Promise<azExt.AzOutput<azExt.LogAnalyticsWorkspaceListResult[]>> => {
const argsArray = ['monitor', 'log-analytics', 'workspace', 'list'];
if (resourceGroup) { argsArray.push('--resource-group', resourceGroup); }
if (subscription) { argsArray.push('--subscription', subscription); }
return this.executeCommand<azExt.LogAnalyticsWorkspaceListResult[]>(argsArray, additionalEnvVars);
}
}
}
};
/**
* Gets the output of running '--version' command on the az tool.

View File

@@ -187,6 +187,45 @@ declare module 'az-ext' {
state: string //Completed
}
export interface LogAnalyticsWorkspaceListResult {
createdDate: string, // "2020-02-25T16:59:38Z"
customerId: string, // "7e136a79-c0b6-4878-86bf-7bf7a6a7e6f6",
eTag: string, // null,
etag: string, // "\"00006df1-0000-0700-0000-61ee552f0000\"",
features: {
clusterResourceId: string, // null,
disableLocalAuth: boolean, // null,
enableDataExport: boolean, // null,
enableLogAccessUsingOnlyResourcePermissions: boolean, //true,
immediatePurgeDataOn30Days: boolean, // null,
legacy: number, // 0,
searchVersion: number // 1
},
forceCmkForQuery: boolean, // null,
id: string, // "/subscriptions/a5082b19-8a6e-4bc5-8fdd-8ef39dfebc39/resourcegroups/bugbash/providers/microsoft.operationalinsights/workspaces/bugbash-logs",
location: string, // "westus",
modifiedDate: string, // "2022-02-21T09:18:22.3906451Z",
name: string, // "bugbash-logs",
privateLinkScopedResources: string, // null,
provisioningState: string, // "Succeeded",
publicNetworkAccessForIngestion: string, // "Enabled",
publicNetworkAccessForQuery: string, // "Enabled",
resourceGroup: string, // "bugbash",
retentionInDays: number, // 30,
sku: {
capacityReservationLevel: number, // null,
lastSkuUpdate: string, // "2020-02-25T16:59:38Z",
name: string, // "pergb2018"
},
tags: string[], //null,
type: string, //"Microsoft.OperationalInsights/workspaces",
workspaceCapping: {
dailyQuotaGb: number, //-1.0,
dataIngestionStatus: string, // "RespectQuota",
quotaNextResetTime: string, // "2022-02-21T19:00:00Z"
}
}
export interface PostgresServerShowResult {
apiVersion: string, // "arcdata.microsoft.com/v1alpha1"
kind: string, // "postgresql"
@@ -362,6 +401,17 @@ declare module 'az-ext' {
): Promise<AzOutput<SqlMiDbRestoreResult>>
}
},
monitor: {
logAnalytics: {
workspace: {
list(
resourceGroup?: string, // test-rg
subscription?: string, // 122c121a-095a-4f5d-22e4-cc6b238490a3
additionalEnvVars?: AdditionalEnvVars
): Promise<AzOutput<LogAnalyticsWorkspaceListResult[]>>
}
}
},
getPath(): Promise<string>,
/**
* The semVersion corresponding to this installation of the Azure CLI. version() method should have been run

View File

@@ -307,9 +307,9 @@ ajv@^6.5.5:
uri-js "^4.2.2"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -469,9 +469,9 @@ abort-controller@^3.0.0:
event-target-shim "^5.0.0"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -212,7 +212,7 @@
"dataprotocol-client": "github:Microsoft/sqlops-dataprotocolclient#1.2.2",
"figures": "^2.0.0",
"find-remove": "1.2.1",
"@microsoft/ads-service-downloader": "0.2.3",
"@microsoft/ads-service-downloader": "0.2.4",
"vscode-extension-telemetry": "0.4.2",
"vscode-languageclient": "5.2.1",
"vscode-nls": "^4.0.0"

View File

@@ -2,16 +2,16 @@
# yarn lockfile v1
"@microsoft/ads-service-downloader@0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.3.tgz#5987c1fc291d2019915e434263ccfe2223d27d5c"
integrity sha512-c8vvBeV0pdLUzATjoj0PlGTH3UwN3tsnT3gA6Uo+H3ZaOfkULhDrv1hG+2jJ8kA7oq+HfTHWEIR6tSnaFk2G/w==
"@microsoft/ads-service-downloader@0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.4.tgz#905a11eb2da19673629852d9764fb9fb94ad81bd"
integrity sha512-3J0YjH29a5pP+5Yu0HF7itRBZpNOgUN34Gh/p0Py/TQr7qUzZSXwOM+fWD1nCea+q9t8mfHr0yuy0aeDX+33vQ==
dependencies:
async-retry "^1.2.3"
eventemitter2 "^5.0.1"
http-proxy-agent "^2.1.0"
https-proxy-agent "^2.2.3"
mkdirp "^0.5.1"
mkdirp "1.0.4"
tar "^6.1.11"
tmp "^0.0.33"
yauzl "^2.10.0"
@@ -187,11 +187,6 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minipass@^3.0.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
@@ -207,14 +202,7 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.3:
mkdirp@1.0.4, mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==

View File

@@ -6,7 +6,7 @@
import * as nls from 'vscode-nls';
import * as vscode from 'vscode';
import * as azdata from 'azdata';
import * as mssql from '../../mssql';
import * as mssql from 'mssql';
import * as Utils from './cmsResource/utils';
import { ICmsResourceNodeInfo } from './cmsResource/tree/baseTreeNodes';

View File

@@ -6,4 +6,5 @@
/// <reference path='../../../../src/vs/vscode.d.ts'/>
/// <reference path='../../../../src/sql/azdata.d.ts'/>
/// <reference path='../../../../src/sql/azdata.proposed.d.ts'/>
/// <reference types='@types/node'/>
/// <reference path='../../../mssql/src/mssql.d.ts'/>
/// <reference types='@types/node'/>

View File

@@ -208,9 +208,9 @@
integrity sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -14,10 +14,14 @@ let packageInfo = Utils.getPackageInfo(packageJson);
export const TelemetryReporter = new AdsTelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey);
export enum TelemetryViews {
DataTierApplicationWizard = 'DataTierApplicationWizard',
DeployDacpac = 'DeployDacpac',
DeployPlanPage = 'DeployPlanPage',
ExportBacpac = 'ExportBacpac',
ExtractDacpac = 'ExtractDacpac',
ImportBacpac = 'ImportBacpac'
DataTierApplicationWizard = 'DataTierApplicationWizard'
}
export enum TelemetryAction {
DeployDacpac = 'DeployDacpacOperation',
GenerateScript = 'GenerateDeployScriptOperation',
GenerateDeployPlan = 'GenerateDeployPlan',
ExtractDacpac = 'ExtractDacpacOperation',
ExportBacpac = 'ExportBacpacOperation',
ImportBacpac = 'ImportBacpacOperation'
}

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as azdata from 'azdata';
import * as mssql from '../../../mssql/src/mssql';
import * as mssql from 'mssql';
export const deployOperationId = 'deploy dacpac';
export const extractOperationId = 'extract dacpac';

View File

@@ -6,4 +6,5 @@
/// <reference path='../../../../src/vs/vscode.d.ts'/>
/// <reference path='../../../../src/sql/azdata.d.ts'/>
/// <reference path='../../../../src/sql/azdata.proposed.d.ts'/>
/// <reference path='../../../mssql/src/mssql.d.ts'/>
/// <reference types='@types/node'/>

View File

@@ -6,7 +6,7 @@
import * as vscode from 'vscode';
import * as azdata from 'azdata';
import * as loc from '../localizedConstants';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as utils from '../utils';
import { SelectOperationPage } from './pages/selectOperationpage';
import { DeployConfigPage } from './pages/deployConfigPage';
@@ -17,10 +17,9 @@ import { ExtractConfigPage } from './pages/extractConfigPage';
import { ImportConfigPage } from './pages/importConfigPage';
import { DacFxDataModel } from './api/models';
import { BasePage } from './api/basePage';
import { TelemetryReporter, TelemetryViews } from '../telemetry';
import { TelemetryAction, TelemetryReporter, TelemetryViews } from '../telemetry';
import { TelemetryEventMeasures, TelemetryEventProperties } from '@microsoft/ads-extension-telemetry';
const msSqlProvider = 'MSSQL';
class Page {
wizardPage: azdata.window.WizardPage;
dacFxPage: BasePage;
@@ -280,8 +279,8 @@ export class DataTierApplicationWizard {
}
}
if (!result || !result.success) {
vscode.window.showErrorMessage(this.getOperationErrorMessage(this.selectedOperation, result?.errorMessage));
if (!result?.success && result.errorMessage) {
vscode.window.showErrorMessage(this.getOperationErrorMessage(this.selectedOperation, result.errorMessage));
}
return result;
@@ -308,160 +307,130 @@ export class DataTierApplicationWizard {
private cancelDataTierApplicationWizard(): void {
TelemetryReporter.createActionEvent(TelemetryViews.DataTierApplicationWizard, 'WizardCanceled')
.withAdditionalProperties({
isPotentialDataLoss: this.model.potentialDataLoss?.toString()
isPotentialDataLoss: this.model.potentialDataLoss?.toString(),
page: this.wizard.currentPage.toString(),
selectedOperation: this.selectedOperation.toString()
}).send();
}
public async deploy(): Promise<mssql.DacFxResult> {
const deployStartTime = new Date().getTime();
let service: mssql.IDacFxService;
let ownerUri: string;
let result: mssql.DacFxResult;
let additionalProps: TelemetryEventProperties = {};
let additionalMeasurements: TelemetryEventMeasures = {};
try {
service = await this.getService(msSqlProvider);
ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
result = await service.deployDacpac(this.model.filePath, this.model.database, this.model.upgradeExisting, ownerUri, azdata.TaskExecutionMode.execute);
} catch (e) {
additionalProps.exceptionOccurred = 'true';
}
// If result is null which means exception occured, will be adding additional props to the Telemetry
if (!result) {
additionalProps = { ...additionalProps, ...this.getDacServiceArgsAsProps(service, this.model.database, this.model.filePath, ownerUri) };
}
additionalProps.deploymentStatus = result?.success.toString();
const service = await this.getService();
const ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
const deployStartTime = new Date().getTime();
const result = await service.deployDacpac(this.model.filePath, this.model.database, this.model.upgradeExisting, ownerUri, azdata.TaskExecutionMode.execute);
additionalMeasurements.totalDurationMs = (new Date().getTime() - deployStartTime);
additionalMeasurements.deployDacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
additionalProps.upgradeExistingDatabase = this.model.upgradeExisting.toString();
additionalProps.potentialDataLoss = this.model.potentialDataLoss.toString();
additionalMeasurements.deployDacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
additionalMeasurements.totalDurationMs = (new Date().getTime() - deployStartTime);
this.sendDacFxOperationTelemetryEvent(result, TelemetryAction.DeployDacpac, additionalProps, additionalMeasurements);
// Deploy Dacpac: 'Deploy button' clicked in deploy summary page, Reporting the event selection to the telemetry
this.sendDacServiceTelemetryEvent(TelemetryViews.DeployDacpac, 'DeployDacpacOperation', additionalProps, additionalMeasurements);
return result;
}
private async extract(): Promise<mssql.DacFxResult> {
const extractStartTime = new Date().getTime();
let service: mssql.IDacFxService;
let ownerUri: string;
let result: mssql.DacFxResult;
let additionalProps: TelemetryEventProperties = {};
let additionalMeasurements: TelemetryEventMeasures = {};
try {
service = await this.getService(msSqlProvider);
ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
result = await service.extractDacpac(this.model.database, this.model.filePath, this.model.database, this.model.version, ownerUri, azdata.TaskExecutionMode.execute);
} catch (e) {
additionalProps.exceptionOccurred = 'true';
}
// If result is null which means exception occured, will be adding additional props to the Telemetry
if (!result) {
additionalProps = { ...additionalProps, ...this.getDacServiceArgsAsProps(service, this.model.database, this.model.filePath, ownerUri) };
}
additionalProps.extractStatus = result?.success.toString();
additionalMeasurements.extractedDacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
const service = await this.getService();
const ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
const extractStartTime = new Date().getTime();
const result = await service.extractDacpac(this.model.database, this.model.filePath, this.model.database, this.model.version, ownerUri, azdata.TaskExecutionMode.execute);
additionalMeasurements.totalDurationMs = (new Date().getTime() - extractStartTime);
// Extract Dacpac: 'Extract button' clicked in extract summary page, Reporting the event selection to the telemetry
this.sendDacServiceTelemetryEvent(TelemetryViews.ExtractDacpac, 'ExtractDacpacOperation', additionalProps, additionalMeasurements);
additionalMeasurements.extractedDacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
this.sendDacFxOperationTelemetryEvent(result, TelemetryAction.ExtractDacpac, { version: this.model.version }, additionalMeasurements);
return result;
}
private async export(): Promise<mssql.DacFxResult> {
const exportStartTime = new Date().getTime();
let service: mssql.IDacFxService;
let ownerUri: string;
let result: mssql.DacFxResult;
let additionalProps: TelemetryEventProperties = {};
let additionalMeasurements: TelemetryEventMeasures = {};
try {
service = await this.getService(msSqlProvider);
ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
result = await service.exportBacpac(this.model.database, this.model.filePath, ownerUri, azdata.TaskExecutionMode.execute);
} catch (e) {
additionalProps.exceptionOccurred = 'true';
}
// If result is null which means exception occured, will be adding additional props to the Telemetry
if (!result) {
additionalProps = { ...additionalProps, ...this.getDacServiceArgsAsProps(service, this.model.database, this.model.filePath, ownerUri) };
}
additionalProps.exportStatus = result?.success.toString();
additionalMeasurements.exportedBacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
const service = await this.getService();
const ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
const exportStartTime = new Date().getTime();
const result = await service.exportBacpac(this.model.database, this.model.filePath, ownerUri, azdata.TaskExecutionMode.execute);
additionalMeasurements.totalDurationMs = (new Date().getTime() - exportStartTime);
// Export Bacpac: 'Export button' clicked in Export summary page, Reporting the event selection to the telemetry
this.sendDacServiceTelemetryEvent(TelemetryViews.ExportBacpac, 'ExportBacpacOperation', additionalProps, additionalMeasurements);
additionalMeasurements.exportedBacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
this.sendDacFxOperationTelemetryEvent(result, TelemetryAction.ExportBacpac, undefined, additionalMeasurements);
return result;
}
private async import(): Promise<mssql.DacFxResult> {
const importStartTime = new Date().getTime();
let service: mssql.IDacFxService;
let ownerUri: string;
let result: mssql.DacFxResult;
let additionalProps: TelemetryEventProperties = {};
let additionalMeasurements: TelemetryEventMeasures = {};
try {
service = await this.getService(msSqlProvider);
ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
result = await service.importBacpac(this.model.filePath, this.model.database, ownerUri, azdata.TaskExecutionMode.execute);
} catch (e) {
additionalProps.exceptionOccurred = 'true';
}
// If result is null which means exception occured, will be adding additional props to the Telemetry
if (!result) {
additionalProps = { ...additionalProps, ...this.getDacServiceArgsAsProps(service, this.model.database, this.model.filePath, ownerUri) };
}
additionalProps.importStatus = result?.success.toString();
additionalMeasurements.importedBacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
const service = await this.getService();
const ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
const importStartTime = new Date().getTime();
const result = await service.importBacpac(this.model.filePath, this.model.database, ownerUri, azdata.TaskExecutionMode.execute);
additionalMeasurements.totalDurationMs = (new Date().getTime() - importStartTime);
// Import Bacpac: 'Import button' clicked in Import summary page, Reporting the event selection to the telemetry
this.sendDacServiceTelemetryEvent(TelemetryViews.ImportBacpac, 'ImportBacpacOperation', additionalProps, additionalMeasurements);
additionalMeasurements.importedBacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
this.sendDacFxOperationTelemetryEvent(result, TelemetryAction.ImportBacpac, undefined, additionalMeasurements);
return result;
}
public async generateDeployScript(): Promise<mssql.DacFxResult> {
const genScriptStartTime = new Date().getTime();
let service: mssql.IDacFxService;
let ownerUri: string;
let result: mssql.DacFxResult;
let additionalProps: TelemetryEventProperties = {};
let additionalMeasurements: TelemetryEventMeasures = {};
try {
this.wizard.message = {
text: loc.generatingScriptMessage,
level: azdata.window.MessageLevel.Information,
description: ''
};
this.wizard.message = {
text: loc.generatingScriptMessage,
level: azdata.window.MessageLevel.Information
};
service = await this.getService(msSqlProvider);
ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
result = await service.generateDeployScript(this.model.filePath, this.model.database, ownerUri, azdata.TaskExecutionMode.script);
} catch (e) {
additionalProps.exceptionOccurred = 'true';
}
const service = await this.getService();
const ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
if (!result || !result.success) {
vscode.window.showErrorMessage(loc.generateDeployErrorMessage(result?.errorMessage));
}
const genScriptStartTime = new Date().getTime();
const result = await service.generateDeployScript(this.model.filePath, this.model.database, ownerUri, azdata.TaskExecutionMode.script);
// If result is null which means exception occured, will be adding additional props to the Telemetry
if (!result) {
additionalProps = { ...additionalProps, ...this.getDacServiceArgsAsProps(service, this.model.database, this.model.filePath, ownerUri) };
}
additionalProps.isScriptGenerated = result?.success.toString();
additionalProps.potentialDataLoss = this.model.potentialDataLoss.toString();
additionalMeasurements.deployDacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
additionalMeasurements.totalDurationMs = (new Date().getTime() - genScriptStartTime);
// Deploy Dacpac 'generate script' button clicked in DeployPlanPage, Reporting the event selection to the telemetry with fail/sucess status
this.sendDacServiceTelemetryEvent(TelemetryViews.DeployDacpac, 'GenerateDeployScriptOperation', additionalProps, additionalMeasurements);
additionalMeasurements.deployDacpacFileSizeBytes = await utils.tryGetFileSize(this.model.filePath);
additionalProps.potentialDataLoss = this.model.potentialDataLoss.toString();
this.sendDacFxOperationTelemetryEvent(result, TelemetryAction.GenerateScript, undefined, additionalMeasurements);
if (!result?.success && result.errorMessage) {
vscode.window.showErrorMessage(loc.generateDeployErrorMessage(result.errorMessage));
}
return result;
}
public async generateDeployPlan(): Promise<string> {
let additionalMeasurements: TelemetryEventMeasures = {};
const service = await this.getService();
const ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
const deployPlanStartTime = new Date().getTime();
const result = await service.generateDeployPlan(this.model.filePath, this.model.database, ownerUri, azdata.TaskExecutionMode.execute);
additionalMeasurements.totalDurationMs = (new Date().getTime() - deployPlanStartTime);
this.sendDacFxOperationTelemetryEvent(result, TelemetryAction.GenerateDeployPlan, undefined, additionalMeasurements);
if (!result?.success && result.errorMessage) {
vscode.window.showErrorMessage(loc.deployPlanErrorMessage(result.errorMessage));
}
return result.report;
}
public getPage(idx: number): Page {
let page: Page;
@@ -501,56 +470,24 @@ export class DataTierApplicationWizard {
|| (this.selectedOperation === Operation.deploy) && idx === DeployOperationPath.summary;
}
public async generateDeployPlan(): Promise<string> {
const deployPlanStartTime = new Date().getTime();
let service: mssql.IDacFxService;
let ownerUri: string;
let result: mssql.GenerateDeployPlanResult;
let additionalProps: TelemetryEventProperties = {};
let additionalMeasurements: TelemetryEventMeasures = {};
try {
service = await this.getService(msSqlProvider);
ownerUri = await azdata.connection.getUriForConnection(this.model.server.connectionId);
result = await service.generateDeployPlan(this.model.filePath, this.model.database, ownerUri, azdata.TaskExecutionMode.execute);
} catch (e) {
additionalProps.exceptionOccurred = 'true';
}
if (!result || !result.success) {
vscode.window.showErrorMessage(loc.deployPlanErrorMessage(result?.errorMessage));
}
// If result is null which means exception occured, will be adding additional props to the Telemetry
if (!result) {
additionalProps = { ...additionalProps, ...this.getDacServiceArgsAsProps(service, this.model.database, this.model.filePath, ownerUri) };
}
additionalProps.isPlanGenerated = result?.success.toString();
additionalMeasurements.totalDurationMs = (new Date().getTime() - deployPlanStartTime);
// send Generate deploy plan error/succes telemetry event
this.sendDacServiceTelemetryEvent(TelemetryViews.DeployPlanPage, 'GenerateDeployPlanOperation', additionalProps, additionalMeasurements);
return result.report;
}
private async getService(providerName: string): Promise<mssql.IDacFxService> {
private async getService(): Promise<mssql.IDacFxService> {
if (!this.dacfxService) {
this.dacfxService = (vscode.extensions.getExtension(mssql.extension.name).exports as mssql.IExtension).dacFx;
}
return this.dacfxService;
}
public getDacServiceArgsAsProps(service: mssql.IDacFxService, database: string, filePath: string, ownerUri: string): { [k: string]: string } {
return {
isServiceExist: (!!service).toString(),
isDatabaseExists: (!!database).toString(),
isFilePathExist: (!!filePath).toString(),
isOwnerUriExist: (!!ownerUri).toString()
};
}
private sendDacServiceTelemetryEvent(telemetryView: string, telemetryAction: string, additionalProps: TelemetryEventProperties, additionalMeasurements: TelemetryEventMeasures): void {
TelemetryReporter.createActionEvent(telemetryView, telemetryAction)
.withAdditionalProperties(additionalProps)
.withAdditionalMeasurements(additionalMeasurements)
.send();
private sendDacFxOperationTelemetryEvent(result: azdata.ResultStatus, telemetryAction: string, additionalProps: TelemetryEventProperties, additionalMeasurements: TelemetryEventMeasures): void {
if (result?.success) {
TelemetryReporter.createActionEvent(TelemetryViews.DataTierApplicationWizard, telemetryAction)
.withAdditionalProperties(additionalProps)
.withAdditionalMeasurements(additionalMeasurements)
.send();
} else {
TelemetryReporter.createErrorEvent(TelemetryViews.DataTierApplicationWizard, telemetryAction)
.withAdditionalProperties(additionalProps)
.withAdditionalMeasurements(additionalMeasurements)
.send();
}
}
}

View File

@@ -263,9 +263,9 @@
integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA==
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -133,12 +133,12 @@
"view/item/context": [
{
"command": "projects.manageProject",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable",
"when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable",
"group": "0_projectsFirst@1"
},
{
"command": "projects.removeProject",
"when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project",
"when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/",
"group": "9_dbProjectsLast@9"
}
]

View File

@@ -35,7 +35,7 @@ export const DefaultInputWidth = '400px';
export const DefaultButtonWidth = '80px';
// New Project Dialog
export const NewProjectDialogTitle = localize('dataworkspace.NewProjectDialogTitle', "Create new project");
export const NewProjectDialogTitle = localize('dataworkspace.NewProjectDialogTitle', "Create new database project");
export const TypeTitle = localize('dataworkspace.Type', "Type");
export const ProjectNameTitle = localize('dataworkspace.projectNameTitle', "Name");
export const ProjectNamePlaceholder = localize('dataworkspace.projectNamePlaceholder', "Enter project name");
@@ -45,7 +45,7 @@ export const ProjectLocationPlaceholder = localize('dataworkspace.projectLocatio
export const ProjectParentDirectoryNotExistError = (location: string): string => { return localize('dataworkspace.projectParentDirectoryNotExistError', "The selected project location '{0}' does not exist or is not a directory.", location); };
export const ProjectDirectoryAlreadyExistError = (projectName: string, location: string): string => { return localize('dataworkspace.projectDirectoryAlreadyExistError', "There is already a directory named '{0}' in the selected location: '{1}'.", projectName, location); };
export const ProjectDirectoryAlreadyExistErrorShort = (projectName: string) => { return localize('dataworkspace.projectDirectoryAlreadyExistErrorShort', "Directory '{0}' already exists in the selected location, please choose another", projectName); };
export const SelectProjectType = localize('dataworkspace.selectProjectType', "Select Project Type");
export const SelectProjectType = localize('dataworkspace.selectProjectType', "Select Database Project Type");
export const SelectProjectLocation = localize('dataworkspace.selectProjectLocation', "Select Project Location");
export const NameCannotBeEmpty = localize('dataworkspace.nameCannotBeEmpty', "Name cannot be empty");
export const TargetPlatform = localize('dataworkspace.targetPlatform', "Target Platform");

View File

@@ -25,6 +25,10 @@ export class DataWorkspaceExtension implements IExtension {
void vscode.commands.executeCommand('dataworkspace.views.main.focus');
}
refreshProjectsTree(): void {
this.workspaceService.refreshProjectsTree();
}
get defaultProjectSaveLocation(): vscode.Uri | undefined {
return defaultProjectSaveLocation();
}

View File

@@ -33,6 +33,11 @@ declare module 'dataworkspace' {
*/
showProjectsView(): void;
/**
* Fires event to refresh the project tree. The tree is not guaranteed to be refreshed after this call returns
*/
refreshProjectsTree(): void;
/**
* Returns the default location to save projects
*/

View File

@@ -168,6 +168,13 @@ export class WorkspaceService implements IWorkspaceService {
}
}
/**
* Fire event to refresh projects tree
*/
public refreshProjectsTree(): void {
this._onDidWorkspaceProjectsChange.fire();
}
/**
* Returns an array of all the supported projects in the folder
* @param folder folder to look look for projects

View File

@@ -279,9 +279,9 @@
integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA==
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -79,7 +79,7 @@
"dependencies": {
"dataprotocol-client": "github:Microsoft/sqlops-dataprotocolclient#0.3.0",
"htmlparser2": "^3.10.1",
"@microsoft/ads-service-downloader": "0.2.3",
"@microsoft/ads-service-downloader": "0.2.4",
"vscode-extension-telemetry": "0.4.2",
"vscode-nls": "^3.2.1"
},

View File

@@ -182,16 +182,16 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
"@microsoft/ads-service-downloader@0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.3.tgz#5987c1fc291d2019915e434263ccfe2223d27d5c"
integrity sha512-c8vvBeV0pdLUzATjoj0PlGTH3UwN3tsnT3gA6Uo+H3ZaOfkULhDrv1hG+2jJ8kA7oq+HfTHWEIR6tSnaFk2G/w==
"@microsoft/ads-service-downloader@0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.4.tgz#905a11eb2da19673629852d9764fb9fb94ad81bd"
integrity sha512-3J0YjH29a5pP+5Yu0HF7itRBZpNOgUN34Gh/p0Py/TQr7qUzZSXwOM+fWD1nCea+q9t8mfHr0yuy0aeDX+33vQ==
dependencies:
async-retry "^1.2.3"
eventemitter2 "^5.0.1"
http-proxy-agent "^2.1.0"
https-proxy-agent "^2.2.3"
mkdirp "^0.5.1"
mkdirp "1.0.4"
tar "^6.1.11"
tmp "^0.0.33"
yauzl "^2.10.0"
@@ -284,9 +284,9 @@ agent-base@^4.3.0:
es6-promisify "^5.0.0"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"
@@ -788,13 +788,18 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp@0.5.1, mkdirp@^0.5.1:
mkdirp@0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
dependencies:
minimist "0.0.8"
mkdirp@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea"

View File

@@ -6,7 +6,7 @@
import 'mocha';
import * as vscode from 'vscode';
import * as azdata from 'azdata';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as utils from './utils';
import * as uuid from './uuid';
import assert = require('assert');

View File

@@ -9,7 +9,7 @@ import * as utils from './utils';
import * as path from 'path';
import * as fs from 'fs';
import * as os from 'os';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as vscode from 'vscode';
import { getStandaloneServer } from './testConfig';
import * as assert from 'assert';

View File

@@ -7,7 +7,7 @@ import 'mocha';
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import * as utils from './utils';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as os from 'os';
import * as fs from 'fs';
import * as path from 'path';

View File

@@ -5,5 +5,6 @@
/// <reference path='../../../../src/sql/azdata.d.ts'/>
/// <reference path='../../../../src/sql/azdata.proposed.d.ts'/>
/// <reference path='../../../../src/sql/azdata.test.d.ts'/>
/// <reference path='../../../mssql/src/mssql.d.ts'/>
/// <reference path='../../../../src/vs/vscode.d.ts'/>
/// <reference types='@types/node'/>

View File

@@ -262,9 +262,9 @@ ajv@^6.5.5:
uri-js "^4.2.2"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"
@@ -953,9 +953,9 @@ mocha@^5.2.0:
supports-color "5.4.0"
moment@^2.21.0, moment@^2.22.2:
version "2.24.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
version "2.29.2"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4"
integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==
ms-rest-azure@^2.5.5:
version "2.6.0"

View File

@@ -430,7 +430,7 @@
"dataprotocol-client": "github:Microsoft/sqlops-dataprotocolclient#1.2.2",
"figures": "^2.0.0",
"find-remove": "1.2.1",
"@microsoft/ads-service-downloader": "0.2.3",
"@microsoft/ads-service-downloader": "0.2.4",
"vscode-extension-telemetry": "0.4.2",
"vscode-languageclient": "5.2.1",
"vscode-nls": "^4.0.0"

View File

@@ -2,16 +2,16 @@
# yarn lockfile v1
"@microsoft/ads-service-downloader@0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.3.tgz#5987c1fc291d2019915e434263ccfe2223d27d5c"
integrity sha512-c8vvBeV0pdLUzATjoj0PlGTH3UwN3tsnT3gA6Uo+H3ZaOfkULhDrv1hG+2jJ8kA7oq+HfTHWEIR6tSnaFk2G/w==
"@microsoft/ads-service-downloader@0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.4.tgz#905a11eb2da19673629852d9764fb9fb94ad81bd"
integrity sha512-3J0YjH29a5pP+5Yu0HF7itRBZpNOgUN34Gh/p0Py/TQr7qUzZSXwOM+fWD1nCea+q9t8mfHr0yuy0aeDX+33vQ==
dependencies:
async-retry "^1.2.3"
eventemitter2 "^5.0.1"
http-proxy-agent "^2.1.0"
https-proxy-agent "^2.2.3"
mkdirp "^0.5.1"
mkdirp "1.0.4"
tar "^6.1.11"
tmp "^0.0.33"
yauzl "^2.10.0"
@@ -262,11 +262,6 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minipass@^3.0.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
@@ -282,14 +277,7 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.3:
mkdirp@1.0.4, mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==

View File

@@ -23,7 +23,6 @@
"devDependencies": {
"@types/node": "^12.11.7",
"ts-loader": "^5.3.3",
"tslint": "^5.12.1",
"typescript": "^3.3.1"
},
"dependencies": {

View File

@@ -35,13 +35,11 @@ export class HostSessionManager {
const queryProvider = new QueryProvider(true);
queryProvider.initialize(true, sharedService);
/* tslint:disable:no-unused-expression */
new StatusProvider(
isHost,
vslsApi,
connectionProvider,
sharedService);
/* tslint:enable:no-unused-expression */
});
}
}

View File

@@ -16,10 +16,8 @@ export async function activate(context: vscode.ExtensionContext) {
return;
}
/* tslint:disable:no-unused-expression */
new HostSessionManager(context, vslsApi);
new GuestSessionManager(context, vslsApi);
/* tslint:enable:no-unused-expression */
}
export function deactivate(): void {

View File

@@ -2,22 +2,6 @@
# yarn lockfile v1
"@babel/code-frame@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
dependencies:
"@babel/highlight" "^7.0.0"
"@babel/highlight@^7.0.0":
version "7.5.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
dependencies:
chalk "^2.0.0"
esutils "^2.0.2"
js-tokens "^4.0.0"
"@types/node@^12.11.7":
version "12.12.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.7.tgz#01e4ea724d9e3bd50d90c11fd5980ba317d8fa11"
@@ -30,13 +14,6 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -67,11 +44,6 @@ atob@^2.1.1:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base@^0.11.1:
version "0.11.2"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@@ -90,14 +62,6 @@ big.js@^5.2.2:
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@^2.3.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
@@ -114,11 +78,6 @@ braces@^2.3.1:
split-string "^3.0.2"
to-regex "^3.0.1"
builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
cache-base@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -134,7 +93,7 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
chalk@^2.0.0, chalk@^2.3.0:
chalk@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -173,21 +132,11 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
commander@^2.12.1:
version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
@@ -238,11 +187,6 @@ define-property@^2.0.2:
is-descriptor "^1.0.2"
isobject "^3.0.1"
diff@^3.2.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
@@ -269,16 +213,6 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
expand-brackets@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
@@ -343,28 +277,11 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
glob@^7.1.1:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
graceful-fs@^4.1.2:
version "4.2.0"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
@@ -406,15 +323,7 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@~2.0.3:
inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -518,19 +427,6 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
json5@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
@@ -610,22 +506,10 @@ micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.2"
minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
mixin-deep@^1.2.0:
version "1.3.2"
@@ -635,13 +519,6 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
dependencies:
minimist "0.0.8"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -687,28 +564,11 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
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==
posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
@@ -760,13 +620,6 @@ 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.3.2:
version "1.11.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
dependencies:
path-parse "^1.0.6"
ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
@@ -784,7 +637,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
semver@^5.0.1, semver@^5.3.0:
semver@^5.0.1:
version "5.7.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
@@ -857,11 +710,6 @@ split-string@^3.0.1, split-string@^3.0.2:
dependencies:
extend-shallow "^3.0.0"
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -925,37 +773,6 @@ ts-loader@^5.3.3:
micromatch "^3.1.4"
semver "^5.0.1"
tslib@^1.8.0, tslib@^1.8.1:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
tslint@^5.12.1:
version "5.18.0"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.18.0.tgz#f61a6ddcf372344ac5e41708095bbf043a147ac6"
integrity sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==
dependencies:
"@babel/code-frame" "^7.0.0"
builtin-modules "^1.1.1"
chalk "^2.3.0"
commander "^2.12.1"
diff "^3.2.0"
glob "^7.1.1"
js-yaml "^3.13.1"
minimatch "^3.0.4"
mkdirp "^0.5.1"
resolve "^1.3.2"
semver "^5.3.0"
tslib "^1.8.0"
tsutils "^2.29.0"
tsutils@^2.29.0:
version "2.29.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
dependencies:
tslib "^1.8.1"
typescript@^3.3.1:
version "3.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
@@ -1023,8 +840,3 @@ vsls@^0.3.1291:
version "0.3.1291"
resolved "https://registry.yarnpkg.com/vsls/-/vsls-0.3.1291.tgz#55928c363b24d39a5d03d8e946ba85d7dcec3e38"
integrity sha512-8yJPN9p7k+XYyczOVtQmpun4K1CRDsw/hdnIzT/c40r5bIkpptfsBlHmmLemoIV+CAHvrTLdWKEf5OtRvdcn9A==
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as azdata from 'azdata';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import { ApiWrapper } from '../common/apiWrapper';
/**

View File

@@ -8,7 +8,7 @@ import 'mocha';
import * as TypeMoq from 'typemoq';
import { createContext } from './utils';
import { LanguageController } from '../../../views/externalLanguages/languageController';
import * as mssql from '../../../../../mssql';
import * as mssql from 'mssql';
describe('External Languages Controller', () => {
it('Should open dialog for manage languages successfully ', async function (): Promise<void> {
@@ -21,7 +21,7 @@ describe('External Languages Controller', () => {
it('Should list languages successfully ', async function (): Promise<void> {
let testContext = createContext();
let languages: mssql.ExternalLanguage[] = [{
let languages: mssql.ExternalLanguage[] = [{
name: '',
contents: [{
extensionFileName: '',
@@ -30,7 +30,7 @@ describe('External Languages Controller', () => {
}]
}];
testContext.dialogModel.setup( x=> x.getLanguageList()).returns(() => Promise.resolve(languages));
testContext.dialogModel.setup(x => x.getLanguageList()).returns(() => Promise.resolve(languages));
let controller = new LanguageController(testContext.apiWrapper.object, '', testContext.dialogModel.object);
let dialog = await controller.manageLanguages();
let actual = await dialog.listLanguages();
@@ -48,7 +48,7 @@ describe('External Languages Controller', () => {
}]
};
testContext.dialogModel.setup( x=> x.updateLanguage(language)).returns(() => Promise.resolve());
testContext.dialogModel.setup(x => x.updateLanguage(language)).returns(() => Promise.resolve());
let controller = new LanguageController(testContext.apiWrapper.object, '', testContext.dialogModel.object);
let dialog = await controller.manageLanguages();
await dialog.updateLanguage({
@@ -70,7 +70,7 @@ describe('External Languages Controller', () => {
}]
};
testContext.dialogModel.setup( x=> x.deleteLanguage(language.name)).returns(() => Promise.resolve());
testContext.dialogModel.setup(x => x.deleteLanguage(language.name)).returns(() => Promise.resolve());
let controller = new LanguageController(testContext.apiWrapper.object, '', testContext.dialogModel.object);
let dialog = await controller.manageLanguages();
await dialog.deleteLanguage({

View File

@@ -6,13 +6,13 @@
import * as should from 'should';
import 'mocha';
import { createContext } from './utils';
import * as mssql from '../../../../../mssql';
import * as mssql from 'mssql';
import { LanguageService } from '../../../externalLanguage/languageService';
describe('External Languages Dialog Model', () => {
it('Should list languages successfully ', async function (): Promise<void> {
let testContext = createContext();
let languages: mssql.ExternalLanguage[] = [{
let languages: mssql.ExternalLanguage[] = [{
name: '',
contents: [{
extensionFileName: '',
@@ -20,7 +20,7 @@ describe('External Languages Dialog Model', () => {
pathToExtension: '',
}]
}];
testContext.languageExtensionService.listLanguages = () => {return Promise.resolve(languages);};
testContext.languageExtensionService.listLanguages = () => { return Promise.resolve(languages); };
let model = new LanguageService(testContext.apiWrapper.object, testContext.languageExtensionService);
await model.load();
let actual = await model.getLanguageList();
@@ -29,7 +29,7 @@ describe('External Languages Dialog Model', () => {
it('Should update language successfully ', async function (): Promise<void> {
let testContext = createContext();
let language: mssql.ExternalLanguage = {
let language: mssql.ExternalLanguage = {
name: '',
contents: [{
extensionFileName: '',
@@ -45,7 +45,7 @@ describe('External Languages Dialog Model', () => {
it('Should delete language successfully ', async function (): Promise<void> {
let testContext = createContext();
let language: mssql.ExternalLanguage = {
let language: mssql.ExternalLanguage = {
name: '',
contents: [{
extensionFileName: '',

View File

@@ -8,7 +8,7 @@ import * as vscode from 'vscode';
import * as TypeMoq from 'typemoq';
import { ApiWrapper } from '../../../common/apiWrapper';
import { LanguageViewBase } from '../../../views/externalLanguages/languageViewBase';
import * as mssql from '../../../../../mssql';
import * as mssql from 'mssql';
import { LanguageService } from '../../../externalLanguage/languageService';
import { createViewContext } from '../utils';

View File

@@ -8,4 +8,5 @@
/// <reference path='../../../../src/sql/azdata.proposed.d.ts'/>
/// <reference path='../../../azurecore/src/azurecore.d.ts'/>
/// <reference path='../../../azurecore/src/azureResource/azure-resource.d.ts'/>
/// <reference path='../../../mssql/src/mssql.d.ts'/>
/// <reference types='@types/node'/>

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as azdata from 'azdata';
import * as mssql from '../../../../mssql';
import * as mssql from 'mssql';
import { LanguageViewBase } from './languageViewBase';
import * as constants from '../../common/constants';
import { ApiWrapper } from '../../common/apiWrapper';

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as mssql from '../../../../mssql';
import * as mssql from 'mssql';
import { ApiWrapper } from '../../common/apiWrapper';
import { LanguageService } from '../../externalLanguage/languageService';
import { LanguagesDialog } from './languagesDialog';

View File

@@ -7,7 +7,7 @@ import * as azdata from 'azdata';
import * as vscode from 'vscode';
import * as constants from '../../common/constants';
import { ApiWrapper } from '../../common/apiWrapper';
import * as mssql from '../../../../mssql';
import * as mssql from 'mssql';
import * as path from 'path';
export interface LanguageUpdateModel {

View File

@@ -5,7 +5,7 @@
import * as azdata from 'azdata';
import * as constants from '../../common/constants';
import * as mssql from '../../../../mssql';
import * as mssql from 'mssql';
import { LanguageViewBase } from './languageViewBase';
import { ApiWrapper } from '../../common/apiWrapper';

View File

@@ -298,9 +298,9 @@ ajv@^6.5.5:
uri-js "^4.2.2"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -1,6 +1,6 @@
{
"downloadUrl": "https://github.com/Microsoft/sqltoolsservice/releases/download/v{#version#}/microsoft.sqltools.servicelayer-{#fileName#}",
"version": "3.0.0-release.214",
"version": "3.0.0-release.238",
"downloadFileNames": {
"Windows_86": "win-x86-net6.0.zip",
"Windows_64": "win-x64-net6.0.zip",

View File

@@ -1314,7 +1314,7 @@
"find-remove": "1.2.1",
"request": "^2.88.0",
"request-light": "^0.3.0",
"@microsoft/ads-service-downloader": "0.2.3",
"@microsoft/ads-service-downloader": "0.2.4",
"stream-meter": "^1.0.4",
"through2": "^3.0.1",
"tough-cookie": "^3.0.1",

View File

@@ -9,7 +9,7 @@ import * as contracts from '../contracts';
import { AppContext } from '../appContext';
import { ConnectParams, ClientCapabilities } from 'dataprotocol-client/lib/protocol';
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
import { ListRegisteredServersResult, ICmsService } from '../mssql';
import { ListRegisteredServersResult, ICmsService } from 'mssql';
import * as Utils from '../utils';
export class CmsService implements ICmsService {

View File

@@ -65,10 +65,6 @@ export enum MssqlClusterItemsSubType {
Spark = ':spark:'
}
export enum TableType {
Basic = 'basic'
}
// SPARK JOB SUBMISSION //////////////////////////////////////////////////////////
export const mssqlClusterNewNotebookTask = 'mssqlCluster.task.newNotebook';
export const mssqlClusterOpenNotebookTask = 'mssqlCluster.task.openNotebook';

View File

@@ -7,7 +7,7 @@ import { NotificationType, RequestType } from 'vscode-languageclient';
import { ITelemetryEventProperties, ITelemetryEventMeasures } from './telemetry';
import * as azdata from 'azdata';
import { ConnectParams } from 'dataprotocol-client/lib/protocol';
import * as mssql from './mssql';
import * as mssql from 'mssql';
// ------------------------------- < Telemetry Sent Event > ------------------------------------
@@ -679,10 +679,6 @@ export namespace SchemaCompareGenerateScriptRequest {
export const type = new RequestType<SchemaCompareGenerateScriptParams, azdata.ResultStatus, void, void>('schemaCompare/generateScript');
}
export namespace SchemaComparePublishChangesRequest {
export const type = new RequestType<SchemaComparePublishDatabaseChangesParams, azdata.ResultStatus, void, void>('schemaCompare/publish');
}
export namespace SchemaComparePublishDatabaseChangesRequest {
export const type = new RequestType<SchemaComparePublishDatabaseChangesParams, azdata.ResultStatus, void, void>('schemaCompare/publishDatabase');
}
@@ -1123,7 +1119,16 @@ export interface GetExecutionPlanParams {
}
export namespace GetExecutionPlanRequest {
export const type = new RequestType<GetExecutionPlanParams, azdata.executionPlan.GetExecutionPlanResult, void, void>('queryexecutionplan/getexecutionplan');
export const type = new RequestType<GetExecutionPlanParams, azdata.executionPlan.GetExecutionPlanResult, void, void>('queryExecutionPlan/getExecutionPlan');
}
export interface ExecutionPlanComparisonParams {
firstExecutionPlanGraphInfo: azdata.executionPlan.ExecutionPlanGraphInfo;
secondExecutionPlanGraphInfo: azdata.executionPlan.ExecutionPlanGraphInfo;
}
export namespace ExecutionPlanComparisonRequest {
export const type = new RequestType<ExecutionPlanComparisonParams, azdata.executionPlan.ExecutionPlanComparisonResult, void, void>('queryExecutionPlan/compareExecutionPlanGraph');
}
// ------------------------------- < Execution Plan > ------------------------------------

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as mssql from '../mssql';
import * as mssql from 'mssql';
import { AppContext } from '../appContext';
import { ISqlOpsFeature, SqlOpsDataClient } from 'dataprotocol-client';
import { ClientCapabilities } from 'vscode-languageclient';

View File

@@ -1221,10 +1221,25 @@ export class ExecutionPlanServiceFeature extends SqlOpsFeature<undefined> {
);
};
const compareExecutionPlanGraph = (firstPlanFile: azdata.executionPlan.ExecutionPlanGraphInfo, secondPlanFile: azdata.executionPlan.ExecutionPlanGraphInfo): Thenable<azdata.executionPlan.ExecutionPlanComparisonResult> => {
const params: contracts.ExecutionPlanComparisonParams = {
firstExecutionPlanGraphInfo: firstPlanFile,
secondExecutionPlanGraphInfo: secondPlanFile
};
return client.sendRequest(contracts.ExecutionPlanComparisonRequest.type, params).then(
r => r,
e => {
client.logFailedRequest(contracts.ExecutionPlanComparisonRequest.type, e);
return Promise.reject(e);
}
);
};
return azdata.dataprotocol.registerExecutionPlanProvider({
providerId: client.providerId,
getExecutionPlan
getExecutionPlan,
compareExecutionPlanGraph
});
}
}

View File

@@ -6,7 +6,7 @@
import { AppContext } from '../appContext';
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
import * as constants from '../constants';
import * as mssql from '../mssql';
import * as mssql from 'mssql';
import * as Utils from '../utils';
import { ClientCapabilities } from 'vscode-languageclient';
import * as contracts from '../contracts';

View File

@@ -15,7 +15,7 @@ import { AppContext } from './appContext';
import { UploadFilesCommand, MkDirCommand, SaveFileCommand, PreviewFileCommand, CopyPathCommand, DeleteFilesCommand, ManageAccessCommand } from './objectExplorerNodeProvider/hdfsCommands';
import { IPrompter } from './prompts/question';
import CodeAdapter from './prompts/adapter';
import { IExtension } from './mssql';
import { IExtension } from 'mssql';
import { OpenSparkJobSubmissionDialogCommand, OpenSparkJobSubmissionDialogFromFileCommand, OpenSparkJobSubmissionDialogTask } from './sparkFeature/dialog/dialogCommands';
import { OpenSparkYarnHistoryTask } from './sparkFeature/historyTask';
import { MssqlObjectExplorerNodeProvider, mssqlOutputChannel } from './objectExplorerNodeProvider/objectExplorerNodeProvider';

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { AppContext } from './appContext';
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService, ISqlAssessmentService, ISqlMigrationService } from './mssql';
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService, ISqlAssessmentService, ISqlMigrationService } from 'mssql';
import * as constants from './constants';
import { MssqlObjectExplorerNodeProvider } from './objectExplorerNodeProvider/objectExplorerNodeProvider';
import * as azdata from 'azdata';

View File

@@ -6,7 +6,7 @@
import { AppContext } from '../appContext';
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
import * as constants from '../constants';
import * as mssql from '../mssql';
import * as mssql from 'mssql';
import * as Utils from '../utils';
import { ClientCapabilities } from 'vscode-languageclient';
import * as azdata from 'azdata';
@@ -54,15 +54,6 @@ export class SchemaCompareService implements mssql.ISchemaCompareService {
);
}
public schemaComparePublishChanges(operationId: string, targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> {
const params: contracts.SchemaComparePublishDatabaseChangesParams = { operationId: operationId, targetServerName: targetServerName, targetDatabaseName: targetDatabaseName, taskExecutionMode: taskExecutionMode };
return this.client.sendRequest(contracts.SchemaComparePublishChangesRequest.type, params).then(undefined,
e => {
this.client.logFailedRequest(contracts.SchemaComparePublishChangesRequest.type, e); return Promise.resolve(undefined);
}
);
}
public schemaComparePublishDatabaseChanges(operationId: string, targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> {
const params: contracts.SchemaComparePublishDatabaseChangesParams = { operationId: operationId, targetServerName: targetServerName, targetDatabaseName: targetDatabaseName, taskExecutionMode: taskExecutionMode };
return this.client.sendRequest(contracts.SchemaComparePublishDatabaseChangesRequest.type, params).then(

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as mssql from '../mssql';
import * as mssql from 'mssql';
import { AppContext } from '../appContext';
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
import { ClientCapabilities } from 'vscode-languageclient';

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as mssql from '../mssql';
import * as mssql from 'mssql';
import { AppContext } from '../appContext';
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
import { ClientCapabilities } from 'vscode-languageclient';

View File

@@ -6,21 +6,23 @@
import { AppContext } from '../appContext';
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import { sqlProviderName, TableType } from '../constants';
import { sqlProviderName } from '../constants';
import { generateUuid } from 'vscode-languageclient/lib/utils/uuid';
import { ITelemetryEventProperties, Telemetry } from '../telemetry';
export function registerTableDesignerCommands(appContext: AppContext) {
appContext.extensionContext.subscriptions.push(vscode.commands.registerCommand('mssql.newTable', async (context: azdata.ObjectExplorerContext) => {
const connectionString = await azdata.connection.getConnectionString(context.connectionProfile.id, true);
const telemetryInfo = await getTelemetryInfo(context, TableType.Basic);
const tableIcon = context.nodeInfo.nodeSubType as azdata.designers.TableIcon;
const telemetryInfo = await getTelemetryInfo(context, tableIcon);
await azdata.designers.openTableDesigner(sqlProviderName, {
server: context.connectionProfile.serverName,
database: context.connectionProfile.databaseName,
isNewTable: true,
id: generateUuid(),
connectionString: connectionString,
accessToken: context.connectionProfile.options.azureAccountToken
accessToken: context.connectionProfile.options.azureAccountToken,
tableIcon: tableIcon
}, telemetryInfo);
}));
@@ -30,7 +32,8 @@ export function registerTableDesignerCommands(appContext: AppContext) {
const schema = context.nodeInfo.metadata.schema;
const name = context.nodeInfo.metadata.name;
const connectionString = await azdata.connection.getConnectionString(context.connectionProfile.id, true);
const telemetryInfo = await getTelemetryInfo(context, TableType.Basic);
const tableIcon = context.nodeInfo.nodeSubType as azdata.designers.TableIcon;
const telemetryInfo = await getTelemetryInfo(context, tableIcon);
await azdata.designers.openTableDesigner(sqlProviderName, {
server: server,
database: database,
@@ -39,7 +42,8 @@ export function registerTableDesignerCommands(appContext: AppContext) {
schema: schema,
id: `${sqlProviderName}|${server}|${database}|${schema}|${name}`,
connectionString: connectionString,
accessToken: context.connectionProfile.options.azureAccountToken
accessToken: context.connectionProfile.options.azureAccountToken,
tableIcon: tableIcon
}, telemetryInfo);
}));
}

View File

@@ -189,16 +189,16 @@
dependencies:
nan "^2.14.0"
"@microsoft/ads-service-downloader@0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.3.tgz#5987c1fc291d2019915e434263ccfe2223d27d5c"
integrity sha512-c8vvBeV0pdLUzATjoj0PlGTH3UwN3tsnT3gA6Uo+H3ZaOfkULhDrv1hG+2jJ8kA7oq+HfTHWEIR6tSnaFk2G/w==
"@microsoft/ads-service-downloader@0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@microsoft/ads-service-downloader/-/ads-service-downloader-0.2.4.tgz#905a11eb2da19673629852d9764fb9fb94ad81bd"
integrity sha512-3J0YjH29a5pP+5Yu0HF7itRBZpNOgUN34Gh/p0Py/TQr7qUzZSXwOM+fWD1nCea+q9t8mfHr0yuy0aeDX+33vQ==
dependencies:
async-retry "^1.2.3"
eventemitter2 "^5.0.1"
http-proxy-agent "^2.1.0"
https-proxy-agent "^2.2.3"
mkdirp "^0.5.1"
mkdirp "1.0.4"
tar "^6.1.11"
tmp "^0.0.33"
yauzl "^2.10.0"
@@ -295,9 +295,9 @@ ansi-colors@3.2.3:
integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-regex@^4.1.0:
version "4.1.0"
@@ -1259,18 +1259,18 @@ mkdirp@0.5.3:
dependencies:
minimist "^1.2.5"
mkdirp@^0.5.1, mkdirp@~0.5.1:
mkdirp@1.0.4, mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@~0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mocha-junit-reporter@^1.17.0:
version "1.23.3"
resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.3.tgz#941e219dd759ed732f8641e165918aa8b167c981"

View File

@@ -787,7 +787,8 @@
"@microsoft/vscodetestcover": "^1.2.0"
},
"resolutions": {
"url-parse": "^1.5.8"
"url-parse": "^1.5.8",
"moment": "^2.29.2"
},
"enableProposedApi": true
}

View File

@@ -460,7 +460,6 @@ export class BookTocManager implements IBookTocManager {
public async addNewTocEntry(pathDetails: TocEntryPathHandler, bookItem: BookTreeItem, isSection?: boolean): Promise<void> {
let findSection: JupyterBookSection | undefined = undefined;
await fs.writeFile(pathDetails.filePath, '');
if (bookItem.contextValue === BookTreeItemType.section) {
findSection = { file: bookItem.book.page.file, title: bookItem.book.page.title };
}
@@ -470,8 +469,10 @@ export class BookTocManager implements IBookTocManager {
};
if (isSection) {
await fs.mkdir(path.dirname(pathDetails.filePath));
fileEntryInToc.sections = [];
}
await fs.writeFile(pathDetails.filePath, '');
if (bookItem.book.version === BookVersion.v1) {
fileEntryInToc = convertTo(BookVersion.v1, fileEntryInToc);

View File

@@ -99,7 +99,8 @@ export class AddTocEntryDialog {
public async createFile(fileName: string, titleName: string): Promise<boolean> {
try {
const dirPath = this._bookItem.contextValue === BookTreeItemType.savedBook ? this._bookItem.rootContentPath : path.dirname(this._bookItem.book.contentPath);
const filePath = path.posix.join(dirPath, fileName).concat(this._extension);
// For sections, we pass the name of the section in the path to create a directory with the same name
const filePath = this._isSection ? path.posix.join(dirPath, titleName, fileName).concat(this._extension) : path.posix.join(dirPath, fileName).concat(this._extension);
await this.validatePath(dirPath, fileName.concat(this._extension));
const pathDetails = new TocEntryPathHandler(filePath, this._bookItem.rootContentPath, titleName);
await this._tocManager.addNewTocEntry(pathDetails, this._bookItem, this._isSection);

View File

@@ -109,6 +109,10 @@ export class JupyterKernel implements nb.IKernel {
interrupt(): Promise<void> {
return this.kernelImpl.interrupt();
}
restart(): Promise<void> {
return this.kernelImpl.restart();
}
}
export class JupyterFuture implements nb.IFuture {

View File

@@ -576,8 +576,7 @@ describe('BookTocManagerTests', function () {
bookTocManager = new BookTocManager(sourceBookModel);
const fileBasename = `addSectionTest-${generateGuid()}`;
const sectionTitle = 'Section Test';
const testFilePath = path.join(run.sectionA.contentFolder, 'sectionA', fileBasename).concat(FileExtension.Markdown);
await fs.writeFile(testFilePath, '');
const testFilePath = path.join(run.sectionA.contentFolder, 'sectionA', sectionTitle,fileBasename).concat(FileExtension.Markdown);
const pathDetails = new TocEntryPathHandler(testFilePath, run.sourceBook.root, sectionTitle);
await bookTocManager.addNewTocEntry(pathDetails, sectionA, true);
let toc: JupyterBookSection[] = yaml.safeLoad((await fs.promises.readFile(run.sourceBook.tocPath)).toString());

View File

@@ -308,6 +308,9 @@ export class TestKernel implements azdata.nb.IKernel {
interrupt(): Thenable<void> {
throw new Error('Method not implemented.');
}
restart(): Thenable<void> {
throw new Error('Method not implemented.');
}
}
//#endregion

View File

@@ -487,9 +487,9 @@ ajv@~5.1.6:
json-stable-stringify "^1.0.1"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"
@@ -1381,10 +1381,10 @@ mocha@^5.2.0:
mkdirp "0.5.1"
supports-color "5.4.0"
moment@~2.21.0:
version "2.21.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a"
integrity sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==
moment@^2.29.2, moment@~2.21.0:
version "2.29.2"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4"
integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==
ms@2.0.0:
version "2.0.0"

View File

@@ -292,9 +292,9 @@ agent-base@4, agent-base@^4.3.0:
es6-promisify "^5.0.0"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
version "3.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-styles@^3.2.1:
version "3.2.1"

View File

@@ -2,7 +2,7 @@
"name": "schema-compare",
"displayName": "%displayName%",
"description": "%description%",
"version": "1.13.0",
"version": "1.13.1",
"publisher": "Microsoft",
"preview": false,
"engines": {

View File

@@ -7,7 +7,7 @@ import * as azdata from 'azdata';
import * as vscode from 'vscode';
import * as path from 'path';
import * as sqldbproj from 'sqldbproj';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as loc from '../localizedConstants';
import { SchemaCompareMainWindow } from '../schemaCompareMainWindow';
import { TelemetryReporter, TelemetryViews } from '../telemetry';

View File

@@ -5,7 +5,7 @@
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as loc from '../localizedConstants';
import { SchemaCompareMainWindow } from '../schemaCompareMainWindow';
import { isNullOrUndefined } from 'util';

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import * as mssql from '../../mssql/src/mssql';
import * as mssql from 'mssql';
import { SchemaCompareMainWindow } from './schemaCompareMainWindow';
export async function activate(extensionContext: vscode.ExtensionContext): Promise<void> {

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as loc from '../localizedConstants';
import * as mssql from '../../../mssql/src/mssql';
import * as mssql from 'mssql';
import { isNullOrUndefined } from 'util';
export class SchemaCompareOptionsModel {

View File

@@ -8,7 +8,7 @@ import * as vscode from 'vscode';
import * as os from 'os';
import * as path from 'path';
import * as sqldbproj from 'sqldbproj';
import * as mssql from '../../mssql';
import * as mssql from 'mssql';
import * as loc from './localizedConstants';
import { SchemaCompareOptionsDialog } from './dialogs/schemaCompareOptionsDialog';
import { TelemetryReporter, TelemetryViews } from './telemetry';
@@ -898,7 +898,7 @@ export class SchemaCompareMainWindow {
throw new Error(`Unsupported SchemaCompareEndpointType: ${getSchemaCompareEndpointString(this.targetEndpointInfo.endpointType)}`);
}
if (!result || !result.success || result.errorMessage !== '') {
if (!result || !result.success || result.errorMessage) {
TelemetryReporter.createErrorEvent(TelemetryViews.SchemaCompareMainWindow, 'SchemaCompareApplyFailed', undefined, getTelemetryErrorType(result?.errorMessage))
.withAdditionalProperties({
'operationId': this.comparisonResult.operationId,
@@ -914,6 +914,7 @@ export class SchemaCompareMainWindow {
} else if (this.targetEndpointInfo.endpointType === mssql.SchemaCompareEndpointType.Project) {
const workspaceApi = getDataWorkspaceExtensionApi();
workspaceApi.showProjectsView();
workspaceApi.refreshProjectsTree();
void vscode.window.showInformationMessage(loc.applySuccess);
}

View File

@@ -4,8 +4,8 @@
*--------------------------------------------------------------------------------------------*/
import * as should from 'should';
import * as mssql from '../../../../mssql/src/mssql';
import {SchemaCompareOptionsModel} from '../../models/schemaCompareOptionsModel';
import * as mssql from 'mssql';
import { SchemaCompareOptionsModel } from '../../models/schemaCompareOptionsModel';
describe('Schema Compare Options Model', () => {
it('Should create model and set options successfully', function (): void {
@@ -39,7 +39,7 @@ describe('Schema Compare Options Model', () => {
});
});
const defaultOptions: mssql.DeploymentOptions = {
const defaultOptions: mssql.DeploymentOptions = {
ignoreTableOptions: false,
ignoreSemicolonBetweenStatements: false,
ignoreRouteLifetime: false,

View File

@@ -5,7 +5,7 @@
import * as should from 'should';
import * as vscode from 'vscode';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as TypeMoq from 'typemoq';
import * as loc from '../localizedConstants';
import 'mocha';
@@ -67,7 +67,7 @@ describe('SchemaCompareMainWindow.start @DacFx@', function (): void {
let sc = new SchemaCompareTestService();
let result = new SchemaCompareMainWindowTest(sc, mockExtensionContext.object, null);
await result.start({connectionProfile: mockIConnectionProfile});
await result.start({ connectionProfile: mockIConnectionProfile });
should.notEqual(result.sourceEndpointInfo, undefined);
should.equal(result.sourceEndpointInfo.endpointType, mssql.SchemaCompareEndpointType.Database);
@@ -502,7 +502,8 @@ describe('SchemaCompareMainWindow.execute @DacFx@', function (): void {
selectSourceButtonState: true,
selectTargetButtonState: true,
generateScriptButtonState: true,
applyButtonState: true} );
applyButtonState: true
});
});
});

View File

@@ -5,7 +5,7 @@
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import * as mssql from '../../../mssql';
import * as mssql from 'mssql';
import * as should from 'should';
import { SchemaCompareMainWindow } from '../schemaCompareMainWindow';

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