Compare commits

..

343 Commits

Author SHA1 Message Date
Cheena Malhotra
9fdb2161d4 Update STS version to port SqlClient library update (#20406) 2022-08-18 11:53:03 -07:00
Barbara Valdez
b2ca229e60 Fix unpin notebook (#20393) (#20397)
* convert uri to vscode uri
2022-08-18 08:59:08 -07:00
Vasu Bhog
60037222a0 Ensure SQL Nuget package reference is always updating to latest (#20390) (#20400)
* seperate nuget package references to always update to latest

* nit

* nit comments
2022-08-17 20:43:59 -07:00
Hai Cao
106bb5ecdf update STS in release to port table designer fix (#20394) 2022-08-17 15:26:51 -07:00
Karl Burtram
1bcbb93301 Replace Job Step retry placeholders with values (#20376) (#20388) 2022-08-17 13:21:40 -07:00
Kim Santiago
4fd2d9e76b update STS to 4.2.1.3 (#20386) 2022-08-17 10:59:06 -07:00
Alan Ren
b66031bf16 vbump sts (#20375) 2022-08-16 16:38:39 -07:00
Raymond Truong
e001cb1da3 Vbump sqltoolsservice in mssql config (#20372) 2022-08-16 16:17:12 -07:00
Vasu Bhog
d70c9f2fa7 Add output channel for SQL Bindings extension (#20336) (#20350)
* add output channel for SQL Bindings extension

* add output channel to open once added
2022-08-16 12:18:40 -07:00
Alex Ma
ebdb1783cc [Loc] last minute update to localized XLFs and i18n files (#20342) 2022-08-15 09:26:25 -07:00
Alex Hsu
e0e6b33610 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220814154448821. (#20341) 2022-08-15 08:53:14 -07:00
Sakshi Sharma
cd1618798e Save db project information when saved in scmp file (#20335)
* Save db project information when saved in scmp file

* Address comments
2022-08-15 08:23:32 -07:00
Alex Ma
ef02a8afae json and xlf update for 8-13-2022 (#20340) 2022-08-13 18:05:56 -07:00
Alex Hsu
8f12e001eb Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220813153636632. (#20339) 2022-08-13 17:45:44 -07:00
Alan Ren
e6af8ef531 vbump sts (#20338) 2022-08-12 20:01:18 -07:00
Alex Ma
e017675a1c [Loc] addition of heading text (#20337) 2022-08-12 16:59:10 -07:00
Chris LaFreniere
6c596d8495 Skip failing smoke tests (#20331) 2022-08-12 15:18:27 -07:00
Barbara Valdez
2119c96c88 Update pin/unpin icon after pinning notebook (#20273) 2022-08-12 14:59:07 -07:00
Kim Santiago
4971f1bd1a update STS to 4.2.0.15 (#20329) 2022-08-12 14:35:56 -07:00
Sai Avishkar Sreerama
7e99ea8618 Adding a loader spinner before the options load (#20314)
* Adding a loader spinner before the options load

* removing the local var and using const

* Reducing delay between button click and loader visibility,
2022-08-12 16:30:20 -05:00
Cory Rivera
ff05a4e25d Use a "Text Size" label for heading dropdown. (#20319) 2022-08-12 14:17:40 -07:00
Alex Ma
e1952b8d12 Langpack source file update for August (#20328)
* [Loc] Update to August langpack XLF files

* [Loc] Update for langpack source files

* xlf update 8-12-2022

* added update to json files
2022-08-12 12:31:44 -07:00
Alex Hsu
57234a52fd Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220812154545836. (#20326) 2022-08-12 09:40:21 -07:00
Alan Ren
c663493690 properly handle copy request (#20320) 2022-08-11 21:22:19 -07:00
Alex Ma
a3acae4777 [Loc] update to sql and sql-migration xlfs (#20318) 2022-08-11 16:28:22 -07:00
Kim Santiago
f6d2af58af Add image tag matching target platform for publish to docker (#20296)
* add the image tag for the sql server version

* add preview text and test

* cleanup
2022-08-11 14:58:09 -07:00
Alex Hsu
b531958402 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220811153733711. (#20311) 2022-08-11 12:41:53 -07:00
Aasim Khan
a7a337f063 Adding properties grid enhancements in execution plan (#20208)
* init push

* Fixing properties in plan comparison

* Add long Text Cell viewer

* Disabling auto edit by default

* Removing text editor
2022-08-11 11:22:12 -07:00
Alan Ren
9ec68087ac allow database name to be empty (#20221)
* allow database to be empty

* test changes

* fix import

* fix test cases

* comment
2022-08-11 10:26:55 -07:00
Sai Avishkar Sreerama
0e05c32f15 Fix for table component checkbox selection focus the previous active … (#20301)
* Fix for table component checkbox selection focus the previous active row instead of newly checked row

* comment updated
2022-08-11 11:47:00 -05:00
Candice Ye
4d91a32bed SQL MIAA list now accounts for new text output from Azure CLI (#20305)
* SQL MIAA list now accounts for new text output in line 1

* Version bump

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-10 22:46:55 -07:00
AkshayMata
f73cf78001 Add aria labels (#20265)
Co-authored-by: Akshay Mata <akma@microsoft.com>
2022-08-10 19:58:33 -07:00
Alex Ma
5f928a5218 [Loc] added sql query execution lines (#20303) 2022-08-10 16:53:03 -07:00
Alan Ren
a39d73da24 install another version is not supported (#20300) 2022-08-10 15:36:59 -07:00
Alan Ren
b6cf5b2af0 set the default value to false (#20302) 2022-08-10 15:32:24 -07:00
Cory Rivera
315295710d Temporarily disable cell toolbar smoke tests (#20299) 2022-08-10 14:43:41 -07:00
Barbara Valdez
db8bd021be update relative path to katex css (#20293) 2022-08-10 13:17:48 -07:00
Candice Ye
bb8c02a01b Reverted placeholder value reversal (#20294)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-10 13:08:03 -07:00
Jordan Hays
315e49b2ed update database ledger icon to correct width (#20288) 2022-08-10 12:07:22 -07:00
Kim Santiago
c27c5334ba update container eula link (#20279) 2022-08-10 11:59:42 -07:00
Alex Hsu
f48fa4785d Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220810153751933. (#20291) 2022-08-10 09:25:40 -07:00
Alan Ren
2d14665208 announce query execution events (#20285) 2022-08-09 20:23:17 -07:00
Alex Ma
0550d58579 [Loc] small change to sql color value (#20287) 2022-08-09 16:29:55 -07:00
Candice Ye
7a6168d9e6 Fixes to SQL MIAA Compute + Storage page (#20272)
* Max for syncsecondary. Fix syncsecondary update.

* Update the value not the placeholder for SQL MIAA

* Disable save toolbar icon after save/update complete

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-08 18:24:09 -07:00
Alan Ren
973c1c2437 show server group color name (#20271) 2022-08-08 17:06:13 -07:00
Kim Santiago
57ef5721a3 vbump schema compare and sql database projects (#20268) 2022-08-08 16:07:21 -07:00
Alex Ma
4e8af635c6 [Loc] first update to xlfs for 8-8-2022 (#20270) 2022-08-08 14:52:48 -07:00
Candice Ye
7564aee5b6 Bumped azure cli and arc ext to 1.5.0 in package.json (#20263)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-08 13:20:41 -07:00
Candice Ye
ad4a16ca82 Config profile is now Kubernetes configuration template in Arc DC Create Wizard (#20261)
* Re-enabled config for direct mode

* Changed name and placement

* Shortened description

* Remove pg and sql as categories for DC

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-08 13:20:05 -07:00
Sai Avishkar Sreerama
54d4098f85 Include Object Types logic refactored and options fetching from DacFx (#20031)
* Include Object Types logic refactored and options fetching from DacFx

* Removed localized object types constants

* Prop name updated and references and tests updated

* updated comments

* STS vBump

* updating the test file to pass the PR Validations
2022-08-08 12:12:59 -05:00
Sai Avishkar Sreerama
2b5d2f0a0b Exclude Object Types Coming from DacFx and tests all working as expected (#20015)
* Include Objects Coming from DacFx and tests all working as expected

* Exclude Object types functionality is working as expected and Unit tests

* more refactor updates

* Updated comments and prop name

* Addressing the coments and code updates accordingly

* Updating according to the comments

* STS vbump

* These changes should be deleted with SC changes, not here

* format fixed
2022-08-08 12:04:24 -05:00
Sai Avishkar Sreerama
66115d8f80 options loading from profile if has profile loaded (#19791)
* options loading from profile if has profile loaded

* Removing profile file unwanted changes

* updating profiles options comment

* STS vBump

* revert STS version from this PR
2022-08-08 11:19:55 -05:00
Vasu Bhog
4ebe4c4547 [SQL-bindings] remove watcher for files (#20250)
* remove watcher for files

* nit
2022-08-05 16:18:03 -07:00
Alan Ren
9dee889808 fix the zoom reset issue (#20254) 2022-08-05 13:48:39 -07:00
Alex Hsu
3381d59cea Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220805153740212. (#20253) 2022-08-05 09:55:45 -07:00
Candice Ye
c56a8b3d8b Separate SQL MIAA from SQL Instance tile (#20244)
* Made SQL MIAA a new tile from New Deployment

* Remove MIAA from SQL tile. Fix helptext for MIAA tile.

* Switched positions of sql miaa and pg tiles. Made New Instance have miaa instead of sql tile.

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-04 10:32:31 -07:00
Alex Hsu
8a43f14b41 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220804154127610. (#20248) 2022-08-04 10:21:40 -07:00
Aasim Khan
d139559d98 Adding arialive to text (#20242) 2022-08-03 20:25:17 -07:00
Candice Ye
baf52a55ff Bump version for bugbash (#20231)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-03 14:06:34 -07:00
Alex Ma
2f746d0b39 Mac OS product build vm image bump (#20232) 2022-08-03 13:56:56 -07:00
Aasim Khan
1cbe11ad38 Adding ariaLive to assessment in progress (#20237) 2022-08-03 13:46:39 -07:00
Alan Ren
4096037167 fix query results view issue (#20234) 2022-08-03 10:45:33 -07:00
Alan Ren
f72dbccc52 no-op is the object is disposed (#20236) 2022-08-03 10:45:11 -07:00
Cory Rivera
453f8e5525 Set cell preview mode when toggling edit mode. (#20220)
* Also fix leftover settings changes in markdown smoke test.
2022-08-03 09:36:24 -07:00
Alan Ren
4d1be1e288 fix menu item not showing up for non-English languages (#20224)
* new object type property

* vbump sts

* fix azure tree

* mark as optional

* Fix test errors
2022-08-02 13:39:20 -07:00
Candice Ye
5d23627165 Converting all SQL MIAA commands to use K8s API commands (#20203)
* refresh does not differentiate direct vs indirect

* For direct mode MIAA commands, always use --use-k8s

* Changed comment language to use ARM instead of direct and K8S API instead of indirect

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-08-02 11:12:25 -07:00
Alex Ma
8f5b3ef81d [Loc] update to sql xlf (#20227) 2022-08-02 10:02:49 -07:00
Cory Rivera
c37149ccfb Type out query text one letter at a time in autocompletion test. (#20222) 2022-08-01 16:59:28 -07:00
Alex Hsu
74c715f16f Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220801153846057. (#20218) 2022-08-01 11:39:32 -07:00
Alex Hsu
efc7789fe4 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220731153825655. (#20216)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-08-01 10:46:24 -07:00
Alex Hsu
5e7bc2a05b Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220730154003990. (#20215) 2022-08-01 10:41:44 -07:00
Alan Ren
6be1420220 do not run query in multi-selection mode (#20213)
* do not run query in multi-selection mode

* fix test

* fix more tests
2022-07-30 14:29:32 -07:00
Charles Gagnon
6704bc552a vBump query history (#20214) 2022-07-29 19:36:03 -07:00
Alan Ren
67ecd6d3d9 fix the grid goes blank issue (#20209) 2022-07-29 18:12:02 -07:00
Alex Ma
afe1b4392f [Loc] addition to query-history (#20211) 2022-07-29 16:44:19 -07:00
Charles Gagnon
866fa76a65 Add double click action support for query history (#20204)
* Add double click action support for query history

* localize descriptions
2022-07-29 13:14:26 -07:00
Alex Hsu
395bc3f149 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220729153613975. (#20205) 2022-07-29 10:27:38 -07:00
Lewis Sanchez
bf6c503c07 Bumps azdataGraph version to 0.0.38 (#20201) 2022-07-28 17:26:40 -07:00
Alex Ma
ab9e67be30 [Loc] update to arc and sql xlfs (#20200) 2022-07-28 15:15:18 -07:00
erpett
055a0d6c67 fixing indent (#20198) 2022-07-28 14:21:50 -07:00
Lewis Sanchez
9fc251259c Adds Ability to Search for Nodes in Compared Execution Plans (#20168)
* Adds find node button to comparison plans.

* Can search multiple nodes (improve widget UI and initialization)

* Adjusts how second plan is added to the node search widget

* Adds styling to the find node action bar

* Removes unused code

* Minor clean up

* Cleans up CSS redundancy

* Adjusts property names according to access specifiers

* Corrects find node behavior to match SSMS

* Dependency injects instantiation service

* Adds additional property to telemetry event.

* Adds undefined to getter return signatures for plans

* Adds checks around active execution plan properties

* Code review change

* Code review changes
2022-07-28 14:14:32 -07:00
erpett
489f5f359f updating changelog with additional changes (#20197) 2022-07-28 13:52:38 -07:00
Candice Ye
28d5382dc3 Added check for .toLowerCase and added upgrade message for clarity. (#20187)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-28 13:52:26 -07:00
Alan Ren
d3073a33fe vbump sts (#20196) 2022-07-28 13:29:25 -07:00
Charles Gagnon
6b1ef0e2ad Store query history items as data, not tree node (#20195) 2022-07-28 11:13:18 -07:00
Charles Gagnon
06bb31b944 Fix query history container icon (#20194) 2022-07-28 09:58:38 -07:00
Charles Gagnon
466b80fb21 Lint fixes from DefinitelyTyped (#20185) 2022-07-28 08:12:43 -07:00
Alan Ren
bb4b00a25a fix recent closed (#20188) 2022-07-27 18:44:08 -07:00
Vasu Bhog
514b0315cc SQL Bindings add telemetry points (#20125)
* add telemetry points

* address comments
2022-07-27 16:38:37 -07:00
erpett
4411a1f319 updating changelog for 1.38 (#20182) 2022-07-27 11:48:52 -07:00
Candice Ye
bd98f67113 connection to connectivity, .lower on notebook (#20177)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-26 17:37:14 -07:00
Alex Ma
fea7f5156f [Loc] added strings to sql.xlf (#20178) 2022-07-26 16:54:17 -07:00
Candice Ye
79ba314953 Prompt for arcdata install upon extension activation (fix) (#20167)
* Made prompt when no arcdata upon startup

* Changed to NoAzureCLIArcExtError

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-26 16:45:30 -07:00
Aasim Khan
518bb33a2f Adding plan tree to execution plan (#20158)
* Adding plan tree

* Fixing localization keys

* Removed whitespace
2022-07-26 14:30:46 -07:00
Alex Ma
441b551c0a [Loc] SQL migration xlf update (#20172) 2022-07-26 10:21:34 -07:00
Alex Hsu
861215c611 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220726153652100. (#20170) 2022-07-26 09:52:55 -07:00
brian-harris
59f96ef2e3 remove unneccessary webpack import (#20166) 2022-07-25 22:08:43 -07:00
Candice Ye
00bacee1da Bump to 1.4.2 for bugbash (#20164)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-25 16:51:27 -07:00
Alan Ren
ddefdac6cc vbump sts (#20159) 2022-07-25 15:53:36 -07:00
Alan Ren
816cd5a997 fix the dropdown menu width logic (#20165)
* fix the dropdown menu width logic

* comment
2022-07-25 15:53:05 -07:00
Alex Hsu
4ea210e794 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220725153813588. (#20162) 2022-07-25 13:41:28 -07:00
Alex Hsu
7da69c82e5 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220724153818370. (#20161) 2022-07-25 13:41:15 -07:00
brian-harris
78b7c3cfd4 Add new tabbed dashboard, monitoring with breadcrumb navigation (#19995)
* SQL DB monitoring and  Dashboard refactor

* Merge remote-tracking branch 'origin/main' into dev/brih/feature/sql-migration-dashboard-tabs

* update filter text and optimize page load

* update migration column order, names and statusbox

* add column table sorting

* add new migration and pipeline status values, etc

* address review feedback
2022-07-25 10:06:17 -07:00
Alex Ma
db39571394 [Loc] change to resource deployment (#20154) 2022-07-22 17:11:43 -07:00
Alan Ren
2f1fbe5473 vbump STS (#20150) 2022-07-22 13:48:42 -07:00
Alan Ren
33ade09608 support sql server 2022 (#20152) 2022-07-22 13:48:34 -07:00
Cory Rivera
c2be6447b5 Prevent cell's edit mode from being incorrectly cleared when a text component is initialized. (#20120) 2022-07-22 10:22:56 -07:00
Alex Hsu
7176629e44 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220722154031353. (#20149) 2022-07-22 09:31:29 -07:00
Jordan Hays
3ebad4e2b7 fix icon path for ledger history table to be recognized as the correct node type (#20144) 2022-07-21 22:20:54 -07:00
Lewis Sanchez
43e7e35df5 Update azdataGraph version to 0.0.37 (#20140)
* Updates azdataGraph version to 0.0.37

* Enables collapse/expand node with highlight resize
2022-07-21 16:15:54 -07:00
Jordan Hays
7b08ecc4cc Dev/nofield/add ledger icons (#20136)
* ledger object icons
2022-07-21 16:02:53 -07:00
Charles Gagnon
1367f29a8a Fix null ref in contributed tree views (#20138) 2022-07-21 12:26:22 -07:00
Kim Santiago
dc7522c661 Revert "Fix sql projects not using OutputPath in sqlproj for publishing (#19987)" (#20127)
This reverts commit 70f0e7264b.
2022-07-21 08:11:23 -07:00
Alan Ren
5334343856 update instructions (#20129) 2022-07-20 16:23:44 -07:00
Charles Gagnon
1ebf9dcc6a Update extension integration test guide (#20126)
* Update extension integration test guide

* cleanup
2022-07-20 15:40:39 -07:00
Kim Santiago
3196e99bd6 fix diff editor colors not getting reversed after vscode merge (#20118) 2022-07-20 14:00:01 -07:00
Maddy
7dd36ae7b4 fix: image disappear issue (#20039)
* check if base64 value is from image tag

* add test

* check image regex

* add comment

* update comment
2022-07-20 13:58:49 -07:00
Candice Ye
239e7af4e6 Changed connetivity mode to have object defaultvalue. Changed connection to connectivity mode. (#20089)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-20 13:04:46 -07:00
Charles Gagnon
ada1588bb7 Fix BDC tree getting stuck loading (#20116) 2022-07-20 12:50:11 -07:00
dependabot[bot]
2d9720962a Bump terser from 4.8.0 to 4.8.1 (#20102)
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 10:26:19 -07:00
Alex Hsu
6d8c66f535 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220720153955946. (#20108) 2022-07-20 09:25:16 -07:00
Alex Ma
96c52ad883 [Loc] changes made on 7-19-2022 (#20104) 2022-07-20 03:03:52 -07:00
Candice Ye
6c59779137 Updated CategoryValue defaultValue docs (#20101) 2022-07-19 21:04:52 -07:00
Candice Ye
5e88338423 Reverted changes to Radio buttons default value (#20100)
* Reverted resourcedeploy changes

* Replaced the !

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 21:04:39 -07:00
Alan Ren
3d2f729586 support build pipeline that only produces extension vsix files (#20099)
* support only build extensions

* use ne

* copy extensions to drop
2022-07-19 18:58:29 -07:00
Charles Gagnon
ac80703b75 Add size to aria labels on BDC deployments (#20098)
* Add size to aria labels on BDC deployments

* One more
2022-07-19 16:30:58 -07:00
Karl Burtram
23034cd1bd Fix restore dialog null references (#20096)
* Fix restore dialog null references

* Make database field optional like other properties in viewmodel class
2022-07-19 15:42:34 -07:00
Alan Ren
bd36467b99 new dashboard icon (#20087) 2022-07-19 15:00:26 -07:00
Candice Ye
db3dda8519 Got rid of need for casting (#20088)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 14:12:03 -07:00
Charles Gagnon
709d15a392 vBump query history (#20080)
* vBump query history

* 0.3.0
2022-07-19 11:23:15 -07:00
Charles Gagnon
d31e33835c [RC1] vBump query history extension (#20081) 2022-07-19 11:07:56 -07:00
Candice Ye
f321b447f2 Various fixes in Arc extension (#20072)
* location description added

* Made Service Tier dynamically enabled

* Added generalpurpose checks for sql miaa deploy notebook

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 10:29:32 -07:00
Candice Ye
89dbcb6638 Fixed default value for radio options builder if using resourceType displayName (#20070)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-19 10:29:19 -07:00
Karl Burtram
102f3794f2 Revert "Bring back tar vBump (#20016)" (#20074)
This reverts commit 540c931210.
2022-07-19 10:19:19 -07:00
Alex Hsu
697cf93c65 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220719154044132. (#20076) 2022-07-19 10:13:29 -07:00
Alan Ren
18921fc764 vbump STS (#20073) 2022-07-19 09:53:04 -07:00
Vasu Bhog
9e8b80f12f delete progress notification not needed (#20060) 2022-07-19 09:43:55 -07:00
Candice Ye
bfbb78827f Changed default values for high availability and service tier to accommodate rd fix (#20071)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-18 17:40:40 -07:00
Kim Santiago
d418d7c01b Add collapse project tree setting (#20064)
* Add sql projects setting to start with all project trees collapsed

* cleanup

* update string

* update string again
2022-07-18 17:04:39 -07:00
Candice Ye
77e7a90c20 Make connection mode a displayname (#20068)
* dropdown not supporting dynamic enablement

* paused for weekend

* Make connection mode display with capitalization but value lowercase

* Undo changes in modelviewutils

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-18 17:02:31 -07:00
Alex Ma
fae9ccb531 [Loc] arc xlf update (#20069) 2022-07-18 15:21:54 -07:00
Alex Ma
dbd3a271c4 small fix for arc package nls comma (#20066) 2022-07-18 12:32:28 -07:00
erpett
296cf8015a Version Bumping now that the release branch is forked (#20065) 2022-07-18 12:08:39 -07:00
Candice Ye
97288c421e Added help text for data controller (#20057)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-18 12:03:58 -07:00
Alex Hsu
884da2e577 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220718155101019. (#20062) 2022-07-18 09:43:09 -07:00
Alex Ma
98f9cd9ede [Loc] update to langpack base files for vscode-merge 1.62 (#20059) 2022-07-15 16:18:02 -07:00
Alex Ma
693b92c825 [Loc] update to arc xlf (#20058) 2022-07-15 15:40:31 -07:00
Aasim Khan
67637a41f5 Making better ep highlights (#20055) 2022-07-15 15:31:01 -07:00
Candice Ye
023ee57e98 Replace checkbox for SQL MIAA create with terms of use text. (#20048)
* Remove arc agreements for sql miaa

* Add terms of use agreement to page 1 of sql miaa create wizard

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-15 13:45:08 -07:00
Candice Ye
adcb7b6aa7 If no 'agreements' item, do not generate 'Accept terms of use' title in wizards (#20047)
* If no agreements item, then do not generate an Accept Terms of Use title. Remove sql miaa agreement.

* Added back the arc-specific change

* Added back nls

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-15 13:45:03 -07:00
Vasu Bhog
9c85baa824 fix sql bindings package.json when menu command (#20056) 2022-07-15 13:35:50 -07:00
Alan Ren
7cd1a80891 enable the setting by default (#20054) 2022-07-15 13:08:31 -07:00
dependabot[bot]
5059535e1a Bump copy-props from 2.0.4 to 2.0.5 in /samples/extensionSamples (#19839)
Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/gulpjs/copy-props/releases)
- [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/copy-props/compare/2.0.4...2.0.5)

---
updated-dependencies:
- dependency-name: copy-props
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-15 11:52:06 -07:00
Charles Gagnon
575319c8fe Only run smoke tests in Smoke PR validation (#20051)
* Only run smoke tests in Smoke PR validation

* undo

* Add extension suggestion

* wrong branch =)
2022-07-15 11:49:15 -07:00
Charles Gagnon
e40459de2a Fix git integration test failure (#20050) 2022-07-15 11:19:47 -07:00
Charles Gagnon
7e872b90cb Add yaml schemas resolution for ado pipelines (#20053)
* Add yaml schemas resolution for ado pipelines

* Add suggestion
2022-07-15 11:19:29 -07:00
Charles Gagnon
ba1f4db745 Make createEditorInput async (#20038) 2022-07-14 19:39:52 -07:00
Candice Ye
ada87478a7 Auto-update arcdata extension and update SQL MIAA create (#20045)
* Auto update arcdata

* Create SQL MIAA uses --use-k8s and --namespace now

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-14 18:55:50 -07:00
Alan Ren
d91a0c3fe4 change icon for dashboard (#20046) 2022-07-14 17:34:59 -07:00
Cory Rivera
e58aa90ac0 Set dotnet_interactive cell metadata when converting cell into JSON. (#20044) 2022-07-14 16:47:14 -07:00
Sai Avishkar Sreerama
d76d483623 Disabling options button for the release (#20040)
* Disabling options button for the release

* Updated comment
2022-07-14 17:36:16 -05:00
Charles Gagnon
8a6c8536f5 Fix insight widgets not displaying (#20037) 2022-07-14 14:10:41 -07:00
Kim Santiago
5d07bece03 update azdata dependency for schema-compare and sql-database-projects (#20035) 2022-07-14 12:58:01 -07:00
Candice Ye
84df25400a Bump to 1.4.1 for hotfix (#20030)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-14 11:02:11 -07:00
Sai Avishkar Sreerama
425c9729ad Toggle reset button on option change (#19975)
* Toggle reset button on option change

* Reset functionliaty is revised and added edge case consideration
2022-07-13 22:51:51 -05:00
Lewis Sanchez
e5b0e0255c Updates azdataGraph version to 0.0.33 (#20028) 2022-07-13 18:59:22 -07:00
Candice Ye
5888d3abd1 Fixed customloc parsing for diff capitalization. Temp disabled retention days for direct (#20029)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-13 18:24:34 -07:00
Charles Gagnon
58bf8a100b Fix code coverage not mapping correctly (#20026) 2022-07-13 17:05:41 -07:00
Kim Santiago
70f0e7264b Fix sql projects not using OutputPath in sqlproj for publishing (#19987)
* fix sql projects not using output path in sqlproj for publish

* add tests

* Addressing comments
2022-07-13 16:58:37 -07:00
Hai Cao
7aa7a9c70b [Table Designer] Fix table cell editor key capturing (#20021) 2022-07-13 13:00:41 -07:00
Alex Hsu
dbea740ac3 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220713153854779. (#20024) 2022-07-13 09:51:08 -07:00
Lewis Sanchez
8f93fd9d09 Updates Actual Execution Plan button icon (#20018) 2022-07-12 17:14:49 -07:00
Charles Gagnon
540c931210 Bring back tar vBump (#20016)
* Bring back tar vBump

* undo gulp-untar update
2022-07-12 16:38:53 -07:00
Alex Ma
5e802f1406 [Loc] update to loc 7-12-2022 (#20020) 2022-07-12 16:38:36 -07:00
Aasim Khan
59889252f1 updating sts to get latest top operations changes (#20005) 2022-07-12 15:55:11 -07:00
Aasim Khan
b15f3bd986 Fixing port request actions (#19966) 2022-07-12 15:54:56 -07:00
Charles Gagnon
050cb16619 Fix error when installing extensions from gallery (#20012)
* Fix error when installing extensions from gallery

* update
2022-07-12 10:36:08 -07:00
Charles Gagnon
7ba0bf9070 Remove unnecessary space in type value (#20011) 2022-07-12 10:13:32 -07:00
Chris LaFreniere
78b5e52bf7 re-enable notebook outputprocessor tests (#20000) 2022-07-12 10:11:35 -07:00
Alex Hsu
7922c38e28 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220712153817085. (#20009) 2022-07-12 09:41:23 -07:00
Karl Burtram
e75beacb6d Fix button links on welcome page (#20006)
* Fix button links on welcome page

* Fix spelling typo
2022-07-12 08:13:29 -07:00
Karl Burtram
6eda44f828 Fix errors in 'build' script directory (#20004)
* Update build scripts

* Update build files

* fix build errors
2022-07-11 23:23:24 -07:00
Aasim Khan
980a233aad Sorting top by cost initially (#19998) 2022-07-11 21:34:38 -07:00
Lewis Sanchez
e25a9574a7 Bump azdataGraph version to 0.0.32 (#19954)
* Update azdataGraph version to 0.0.31

* Adds icons

* Bumps azdataGraph version to 0.0.32

* Removes whitespace

* Uses icon that better adapts to color theme changes.

* Disables collapse for execution plans in plan comparison editor view
2022-07-11 21:26:34 -07:00
Aasim Khan
53a0388858 Deleting old query plan code (#19996) 2022-07-11 19:14:47 -07:00
Alex Ma
29d0acf180 [Loc] update to xlfs 7-11-2022 (#20001) 2022-07-11 18:30:30 -07:00
Hai Cao
d6c114c32a Fix connection sorting by name in OE (#19991)
* use localeCompare & sort by title instead of name

* fix tests
2022-07-11 15:35:08 -07:00
Kim Santiago
5d30c5eb88 Add SQL Server 2022 as a target platform option for sql projects (#19990)
* add 160 option for sql db projects

* add comment
2022-07-11 15:25:18 -07:00
Karl Burtram
b6d789a845 Feat/reenable integration (#19994)
* Reenable integration tests

* Update integration test scripts
2022-07-11 15:07:13 -07:00
Karl Burtram
26455e9113 Merge vscode source through 1.62 release (#19981)
* Build breaks 1

* Build breaks

* Build breaks

* Build breaks

* More build breaks

* Build breaks (#2512)

* Runtime breaks

* Build breaks

* Fix dialog location break

* Update typescript

* Fix ASAR break issue

* Unit test breaks

* Update distro

* Fix breaks in ADO builds (#2513)

* Bump to node 16

* Fix hygiene errors

* Bump distro

* Remove reference to node type

* Delete vscode specific extension

* Bump to node 16 in CI yaml

* Skip integration tests in CI builds (while fixing)

* yarn.lock update

* Bump moment dependency in remote yarn

* Fix drop-down chevron style

* Bump to node 16

* Remove playwrite from ci.yaml

* Skip building build scripts in hygine check
2022-07-11 14:09:32 -07:00
Candice Ye
fa0fcef303 Bumped to version 1.4.0 (#19989)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-11 13:36:07 -07:00
Alex Hsu
8ed40639a1 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220710153542470. (#19980)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-07-11 13:27:02 -07:00
Lucy Zhang
b8435a67df Add telemetry for Python on Jupyter server startup (#19970)
* add telemetry for python on jupyter server startup

* remove extra lines
2022-07-11 12:20:22 -07:00
Alex Hsu
2265144909 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220709154720300. (#19978) 2022-07-11 09:49:08 -07:00
Aasim Khan
5d17ed6760 Updating gulp-atom-electron to update braces (#19947) 2022-07-11 09:01:44 -07:00
Aasim Khan
059b70c6a4 Fixing macos test results publishing warnings (#19968)
* Fixing macos task

* Renaming job step
2022-07-08 18:43:33 -07:00
Alex Ma
ae5c867820 [Loc] updates to schema-compare and sql-database-projects xlfs (#19973) 2022-07-08 16:55:30 -07:00
Aasim Khan
61c38b8f83 updating ajv (#19950) 2022-07-08 16:10:34 -07:00
Alan Ren
4ef5a7f487 fix parentheses (#19971) 2022-07-08 14:54:06 -07:00
Candice Ye
7b5a4e00e5 DC Create - if direct mode, do not prompt for cluster context (#19956)
* Made kube config and context dependent on direct mode

* Make config profile a dropdown

* Re enabled config profile

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-08 13:04:20 -07:00
Cory Rivera
6b535b7945 Dispose underlying text model when disposing notebook editor model (#19955) 2022-07-08 11:23:50 -07:00
Alex Hsu
0efa4c84da Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220708153704690. (#19967) 2022-07-08 10:30:36 -07:00
Sai Avishkar Sreerama
985f9b03c5 OptionsDialog and buttons CSS styling updates (#19792)
* OptionsDialog and buttons CSS styling updates

* final css changes for sql db options tab

* modified options button into itmes list

* updated tab name

* Added removed line git blame
2022-07-08 09:50:00 -05:00
Sai Avishkar Sreerama
eec944ff7d OptionsMapTable changes for SC deployment options (#19808)
* OptionsMapTable changes for SC deployment options

* OptionsMapTable updates from STS

* SC comments addressing

* converted OptionsMapTable into custom type and updates references

* BooleanOptionsMap changes all updates

* Deployment options tab refactoing

* Prop name updated to booleanOptionsDictionary and references

* Updated lookup map by merging nameprop map

* updated comments

* SC options table updates based on SQLDB comments

* Addressing the comments except the reset logic
2022-07-08 09:41:11 -05:00
Sai Avishkar Sreerama
89816c9ff3 OptionsMapTable logic to replace the deployment hardcoded values final (#19789)
* OptionsMapTable logic to replace the deployment hardcoded values final

* Test modifiaction

* OptionsMApTable updates with STS and review commetns

* comments added and option string moved to constants file

* Reverting the options button css related change and will put in other PR

* converted optionsMapTable to custom type and references.

* Options prop changes and model updates

* Reset btn event method name fixed

* removed local booleanOptionDict var and using the existing one

* updated code with removed local vars

* Update to booleanOptionsDictionary name

* merged two variable to one

* Refactoring code and updating variables

* separated lookup and data array and refactor

* missing visibility

* reset logic revised and no other edgecases found

* variable names updated to meaningful

* vbump here to test the checks, sending new vbump PR separately
2022-07-08 09:40:06 -05:00
Sai Avishkar Sreerama
84a15ea91d STS version bump (#19953)
* STS version bump

* fix for vbump check pass
2022-07-08 09:19:59 -05:00
Alex Ma
f8e92e11f1 [Loc] changes to arc and sql xlfs (#19957) 2022-07-07 17:02:03 -07:00
Kim Santiago
be006466ca cleanup dacpac and schema compare to use createConnectionProfile() from ads-test (#19942)
* cleanup dacpac and schema compare to use createConnectionProfile() from ads-test

* typo

* reuse mockConnectionInfo
2022-07-07 16:25:00 -07:00
Leila Lali
d09d028bbb Validate was not called for the last page cuasing import for invalid models (#19766) 2022-07-07 13:44:56 -07:00
Lewis Sanchez
5fbea7a39c Property view labels update when execution plan orientation changes (#19924)
* Updates properties view title when the orientation changes

* Property orientation labels change when the plan orientation changes.

* Renames top and bottom containers to secondary and primary

* Minor clean up

* Removes unnecessary class members

* Promotes constants to module level

* Moves function to module level

* Renames value1 and value2 to primary and secondary

* Replaces orientation string literal type with enum

* Resolves undefined orientation bug

* Removes unused orientation getter

* Updates property table columns only

* Uses orientation enum in editor view and properties view

* Clean up
2022-07-07 13:26:08 -07:00
Aasim Khan
9cfa1436d9 Adding top operations to execution plans (#19902)
* Adding top operations to execution plans

* Adding title to links

* Fixing pr comments

* Hiding top operations icon in execution plan editor

* Reducing outline width, adding separator and removing placeholder text

* Registering TopOperationsTabView
2022-07-07 12:50:52 -07:00
Candice Ye
738ea546af Added label description for RWX storage class (#19934)
* Added label description for RWX storage class

* Added link and description above backups

* Made field have no default value by making it plain textfield

* Made label width wider to accomodate long labels

* Better spacing for RWX. Fixed info bubble overlap

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-07 11:32:10 -07:00
Aasim Khan
19b9290dfa Updating sts (#19943) 2022-07-07 09:37:22 -07:00
Alex Ma
35115c7ef1 [Loc] update to sql-assessment 7/6/2022 (#19941) 2022-07-06 17:05:05 -07:00
Aasim Khan
b8b3c65588 Updating azure-storage in build (#19936) 2022-07-06 16:09:53 -07:00
dependabot[bot]
3dda8feba3 Bump moment from 2.29.2 to 2.29.4 (#19931)
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 14:35:41 -07:00
dependabot[bot]
fe0f1b7f3f Bump moment from 2.29.2 to 2.29.4 in /remote (#19930)
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 14:35:28 -07:00
dependabot[bot]
8e6d81c4d5 Bump moment from 2.29.2 to 2.29.4 in /extensions/notebook (#19929)
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 14:35:19 -07:00
Vladimir Chernov
f79d54793e Updated htmlReportGenerator to work with 4 levels severity model (#19928)
Co-authored-by: Vladimir Chernov <v-chvlad@microsoft.com>
2022-07-06 14:34:07 -07:00
Charles Gagnon
069536b469 Update sql-assessment (#19937) 2022-07-06 14:21:04 -07:00
Alex Ma
cfab83bade [Loc] sql-bindings xlf update (#19932) 2022-07-06 13:53:47 -07:00
dependabot[bot]
5049bf8173 Bump path-parse from 1.0.6 to 1.0.7 in /extensions/azcli (#19835)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-06 13:44:22 -07:00
Vasu Bhog
163ca5ec64 SQL Bindings - Adds Views support for Create Azure Function with SQL Binding (#19894)
* add views logic

* add views tests

* address PR and Figma comments

* add ObjectType Enum to be used as a parameter

* add comment
2022-07-06 10:31:00 -07:00
Lucy Zhang
2e2fcbe5fc Add telemetry for WYSIWYG (#19908)
* add telemetry for wysiwyg

* add view mode

* add back WYSIWYGKeyboardAction

* nit extra line

* update action property to transformAction
2022-07-06 09:39:02 -07:00
Charles Gagnon
1c4269b2ac Add doc section for azdata-test (#19926) 2022-07-06 09:34:30 -07:00
Charles Gagnon
577c09e1f1 Add query-history tests (#19923) 2022-07-05 18:18:40 -07:00
Charles Gagnon
5d241c1907 Fix deploy service test (#19920) 2022-07-05 12:29:40 -07:00
Candice Ye
744a009bac Version bump for preview (#19919)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-07-05 12:14:30 -07:00
Kim Santiago
029ea06790 Add aria-label option for flexContainer for add db reference dialog to use (#19911) 2022-07-05 10:59:30 -07:00
Alex Hsu
83813e3bea Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220701153819776. (#19904)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-07-05 09:58:08 -07:00
Alex Hsu
c378c023ce Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220703153622854. (#19914) 2022-07-05 09:47:08 -07:00
Charles Gagnon
8954b17c07 Fix container cleanup message disappearing - causing apparent hang (#19910)
* Fix container cleanup message causing apparent hang

* remove comment
2022-07-05 08:27:45 -07:00
Alan Ren
416e607f32 resend previous PR with test fixes (#19912)
* Revert "Revert "use reliable way to detect createtable statements (#19897)" (#19906)"

This reverts commit c211fb981c.

* fix tests

* fix test cases
2022-07-02 11:25:09 -07:00
Charles Gagnon
60026a39f9 Add getDockerImageSpec and cleanDockerObjects to API (#19900)
* Add getDockerImageSpec and cleanDockerObjects to API

* docs
2022-07-01 12:57:40 -07:00
Alan Ren
c211fb981c Revert "use reliable way to detect createtable statements (#19897)" (#19906)
This reverts commit 9a22c429a9.
2022-07-01 11:47:21 -07:00
Lucy Zhang
4ec2d78269 Add Notebook telemetry events (#19848)
* add telemetry events

* remove error message in telemetry
2022-07-01 09:14:29 -07:00
Candice Ye
179f9e8270 Add default for pitr (#19901)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-06-30 19:06:26 -07:00
Alan Ren
9a22c429a9 use reliable way to detect createtable statements (#19897)
* use reliable way to detect createtable statements

* PR comments

* comments
2022-06-30 18:23:12 -07:00
Candice Ye
7eed81c560 Fixed syncsecondary and readable secondary notebook params (#19899)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-06-30 16:31:39 -07:00
Charles Gagnon
dc006be73e Make publish to docker settings properties required (#19898)
* Make publish to docker settings properties required

* move
2022-06-30 16:21:53 -07:00
Candice Ye
9fbd3b3864 Fixed customlocation parsing (#19893)
Co-authored-by: Candice Ye <canye@microsoft.com>
2022-06-30 11:07:13 -07:00
csigs
650af12fc8 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220630153922942. (#19896) 2022-06-30 09:27:12 -07:00
Alex Ma
331ae94ebf [Loc] update to several extensions xlfs (#19892) 2022-06-29 17:02:04 -07:00
Cory Rivera
6c6e46ae2d Disable install button while a python package is being installed from the Manage Packages dialog. (#19856)
* Also added same behavior for uninstall button.
2022-06-29 16:05:08 -07:00
Barbara Valdez
74f01c429a Add more tests to cell image attachments (#19851)
* add more tests to cell image attachments

* remove cell attachment image name with spaces test
2022-06-29 14:13:54 -07:00
Charles Gagnon
bb20ea0e92 QueryEvent range -> batchRanges (#19890)
* Switch query events to just send ranges instead of full query text

* undo azdata changes

* fix type

* comment + remove unneeded ?

* range -> batchRanges

* undo
2022-06-29 11:28:09 -07:00
Charles Gagnon
f3b40059fc Add warning docs to registerOn... provider API functions (#19889) 2022-06-29 11:27:53 -07:00
Candice Ye
0bf7446af8 DC Create Bug Fix: Cluster Name (#19859)
* Changed namespace to have empty default value. Added cluster name as a field for direct mode. Updated summary page and notebook as necessary.

* Made storage class = default if storage class is undefined

* Moved cluster name before custom location

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-06-29 10:23:49 -07:00
Cory Rivera
24fc6dce9f Add uninstall step to manage packages smoke test to clean up installed packages. (#19854) 2022-06-29 10:23:29 -07:00
Lewis Sanchez
96d29bcbc1 Actual Execution Plan No Longer Executes Queries (#19840)
* Ctrl/Cmd + m, no longer executes queries.

* Adjusts command label

* Code review changes

* Uses category parameter to categorize actual plan command

* Actual execution plan command label matches estimated plan command label

* Revert "Actual execution plan command label matches estimated plan command label"

This reverts commit 15f301dfc64341d631ca5e9b1314d8cf739b2088.

* Centralizes localized category string (#19857)

* Actual Plan action uses centralized category
2022-06-28 18:31:41 -07:00
Alex Ma
a0c9a1fd3c [Loc] update to sql xlf for 6/28/2022 (#19858) 2022-06-28 17:14:47 -07:00
Lewis Sanchez
811aa18862 Centralizes localized category string (#19857) 2022-06-28 16:58:09 -07:00
Lewis Sanchez
b01642aec1 Adds "Execution Plan" prefix to Execution Plan commands (#19842)
* Prefixes execution plan commands, so they are easier to find

* Provides category argument to categorize commands.
2022-06-28 11:42:25 -07:00
Charles Gagnon
ebb1dcdfba Update telemetry endpoints (#19841)
* Update telemetry endpoints

* Bump sql-assessment package
2022-06-28 09:16:29 -07:00
dependabot[bot]
42ad364eea Bump copy-props from 2.0.4 to 2.0.5 in /samples/sqlservices (#19837)
Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/gulpjs/copy-props/releases)
- [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/copy-props/compare/2.0.4...2.0.5)

---
updated-dependencies:
- dependency-name: copy-props
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 18:02:39 -07:00
dependabot[bot]
c9c61a8d4a Bump got from 11.8.1 to 11.8.5 in /build (#19801)
Bumps [got](https://github.com/sindresorhus/got) from 11.8.1 to 11.8.5.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v11.8.1...v11.8.5)

---
updated-dependencies:
- dependency-name: got
  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-06-27 18:02:25 -07:00
dependabot[bot]
d0d486cf43 Bump shell-quote from 1.7.2 to 1.7.3 in /test/smoke (#19797)
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 18:02:09 -07:00
Charles Gagnon
87f8f2fd90 Additional SQL Proj cleanup (#19836) 2022-06-27 17:29:49 -07:00
Alex Ma
5dea50efa3 [Loc] update to sql-bindings xlf (#19838) 2022-06-27 16:33:36 -07:00
Charles Gagnon
5b95a47ca6 Add launchPublishToDockerContainerQuickpick to extension API (#19834)
* Initial

* remove namespace

* minor fixes
2022-06-27 15:29:43 -07:00
dependabot[bot]
5cda676016 Bump shell-quote from 1.7.2 to 1.7.3 (#19802)
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-27 16:42:55 -04:00
Vasu Bhog
d5da934572 [SQL Bindings] Skip prompt to select setting from connection settings if there is none (#19798)
* add no setting option

* add tests

* reformat tests
2022-06-27 12:31:46 -07:00
csigs
fae67b4485 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220625160237757. (#19827) 2022-06-27 10:22:06 -07:00
Charles Gagnon
157b017bf8 Revert query-history version back to 0.2.0 (#19825)
Didn't notice that this had already been bumped from what was listed in the gallery (0.1.0 currently). So reverting back to 0.2.0 until after the next version is released.
2022-06-24 15:48:03 -07:00
Charles Gagnon
ed5a64f80f Switch query events to just send ranges instead of full query text (#19823)
* Switch query events to just send ranges instead of full query text

* undo azdata changes

* fix type

* comment + remove unneeded ?
2022-06-24 15:43:40 -07:00
Charles Gagnon
34f32e6564 Cleanup azdata api docs (#19824) 2022-06-24 11:30:41 -07:00
csigs
7c50925c33 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220624153912923. (#19822) 2022-06-24 09:49:18 -07:00
Chris LaFreniere
4f2a430c77 Fix Uncalled Function (#19819) 2022-06-23 17:14:39 -07:00
Chris LaFreniere
1b1117f07d Attempt to Fix Unstable Notebooks Tests (#19806)
* Add check if currentBook exists

* adding checks for currentBook
2022-06-23 17:14:15 -07:00
csigs
f7958f0a25 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220623153900323. (#19813) 2022-06-23 14:44:59 -07:00
Kim Santiago
ec57115383 Add telemetry for what users have in publish profile (#19805)
* add telemetry for what users have in publish profile

* simplify check

* add falsy checks
2022-06-23 13:43:08 -07:00
Lewis Sanchez
0e09435285 Removes vscode download for smoke tests (#19795)
* Commenting out for now, but will delete in next commit

* Adds SQL carbon edit markers

* Uses multiline comments

* Formats file

* Code review changes

* Edit comment moved to same line

* Add ts-ignore directive to unused method
2022-06-23 12:19:49 -07:00
Rachel Kim
d787418c9c sql migration vbump 1.0.4 (#19814) 2022-06-23 11:27:16 -07:00
Cory Rivera
c9cfb94a22 Add python configuration step to each python smoke test so they can be run independently. (#19807) 2022-06-23 11:01:05 -07:00
Lucy Zhang
23feac100a Add telemetry for notebook toolbar actions (#19750)
* add telemetry for notebook toolbar actions

* fix tests

* remove events with no metadata + connection info

* add optional connectioninfo param

* fix param
2022-06-23 05:57:17 -07:00
Alex Ma
871ac80647 [Loc] Alex update to xlfs (#19804) 2022-06-22 17:01:28 -07:00
Alan Ren
3afe842a75 check state before saving (#19803) 2022-06-22 16:58:19 -07:00
Lewis Sanchez
800f2cebb5 Updates actual plan text to enable/disable instead of include/exclude (#19796)
* Updates actual plan text to enable/disable instead of include/exclude

* Makes actual plan button text static and readonly
2022-06-22 14:59:13 -07:00
Kim Santiago
a3cad2378c Add telemetry for schema compare and sql database projects options dialogs (#19799)
* add more telemetry for schema compare and sql projects options dialogs

* cleanup

* change to sendActionEvent
2022-06-22 13:31:28 -07:00
Charles Gagnon
c24305f9d8 Move query history into extension (#19794)
* initial

* more

* Remove connectionId

* cleanup

* cleanup

* Remove core contributions, add to panel by default

* Add enabled state

* Update config

* cleanup

* Move

* Remove newlines

* update README
2022-06-22 12:37:32 -07:00
Alex Ma
8ce19dca8c update to sql.xlf (#19793) 2022-06-21 16:25:13 -07:00
Karl Burtram
b8529c52a7 win32 setup: disable app dir inheritance (#19787) 2022-06-21 13:19:24 -07:00
Aasim Khan
15a611d4a4 Fixing tabbing logic for tab headers (#19770)
* Fixing tabbing logic for tab headers

* Renaming stuff
Making null checks concise
Adding comments

* Renaming css class and interfaces from active to selected

* Renaming styling classes and objects

* Changing tabbing logic to match w3 behavior

* Fixing focus logic in tab

* Adding helper comment

* Code cleanup
2022-06-21 13:13:10 -07:00
Alan Ren
f2c4e23f99 vbump STS (#19786) 2022-06-21 12:34:49 -07:00
Kim Santiago
fb56908165 disable publish profile input box (#19784) 2022-06-21 10:38:56 -07:00
Aasim Khan
8079cf8a2d Adding arialive to flex and div container (#19757)
* Adding arialive to flex and div container

* Fixing compilation issues

* Moving ariaLive to container properties

* fixes

Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
2022-06-21 09:45:45 -07:00
Alan Ren
6440ae84d9 designer table improvements (#19785)
* designer table improvements

* remove async
2022-06-20 21:33:06 -07:00
Vasu Bhog
c5093dbb5a Add Azure Function Service Error/Cancel tests (#19758)
* cleanup tests

* exit/error scenario tests

* remove + from manuallyEnterObjectName

* address comments

* add resolve for writeFile
2022-06-20 15:48:38 -07:00
Kim Santiago
0aadd317fa Fix data workspace vscode telemetry (#19768)
* fix data workspace vscode extension telemetry extension name

* remove unused fullName
2022-06-20 14:11:15 -07:00
Charles Gagnon
f7286b8e81 Add queryInfo to query events (#19777)
* Add queryInfo to query events

* docs
2022-06-20 11:01:39 -07:00
csigs
9c9b6343f8 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220619153425200. (#19773)
Co-authored-by: Alex Ma <alma1@microsoft.com>
2022-06-20 10:21:31 -07:00
csigs
517afbadcf Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220618153711700. (#19772) 2022-06-20 10:18:44 -07:00
Barbara Valdez
7b16a78176 add tests for anchor links (#19659) 2022-06-20 09:29:33 -07:00
Leila Lali
632c0ba0e8 Updated language grammar file using latest vscode-mssql (#19769) 2022-06-20 08:38:41 -07:00
Leila Lali
ba6a2f18a7 Updated sql.tmLanguage.json used by syntax coloring from vscode repo (#19767)
* Updated the file used by syntax coloring from vscode repo
2022-06-17 16:29:37 -07:00
dependabot[bot]
d18c7bfc0d Bump jpeg-js from 0.4.3 to 0.4.4 (#19762)
Bumps [jpeg-js](https://github.com/eugeneware/jpeg-js) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/eugeneware/jpeg-js/releases)
- [Commits](https://github.com/eugeneware/jpeg-js/compare/v0.4.3...v0.4.4)

---
updated-dependencies:
- dependency-name: jpeg-js
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-17 14:55:51 -07:00
Alex Ma
f98c3cdaeb [Loc] update to arc.xlf (#19760) 2022-06-16 17:23:36 -07:00
Alan Ren
2b48d49a15 add title for column header cell (#19759) 2022-06-16 17:01:21 -07:00
Candice Ye
5acdca2b70 Add readable secondaries and sync secondary to commit to SQL MIAA create (#19740)
* Added syncSecondaryToCommit to SQL update and create, as well as notebook, wizard, and compute+storage interfaces

* Added readable secondaries and syncSecondaryToCommit to cost and SQL MI create

* Added readable secondaries to notebook

* removed resource-deployment changes

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-06-16 15:04:03 -07:00
Candice Ye
adafdd489f Fixed dynamic enablement (#19742)
* Fixed dynamic enablement

* Set to false or original logic in constructor

* Changed boolean to also undefined

* Moved comment to constructor

Co-authored-by: Candice Ye <canye@microsoft.com>
2022-06-16 15:03:51 -07:00
Aasim Khan
d4509a6528 Removing truncation from tab header components to make it match the portal look (#19746)
* Fixing truncated tab headers

* Localizing changes to horizontal tab headers

* Remove max - width

* Reverting older changes
2022-06-16 14:07:45 -07:00
Alan Ren
31dea2f5ee port vscode changes (#19754)
* add aria-description support for selectbox

* type check
2022-06-16 13:24:35 -07:00
Alan Ren
e24f316ab7 fix selected state of select boxes (#19743)
* fix the selected state

* add comments

* validate parameters
2022-06-15 20:41:07 -07:00
Aasim Khan
b980fe1106 Hiding description tooltip on escape key. (#19741)
* Hiding text tooltip on escape

* Fixing hover event
2022-06-15 18:23:18 -07:00
Alan Ren
40532d9cac add message as aria-description (#19739) 2022-06-15 17:05:57 -07:00
Alan Ren
c75e95599f add aria description (#19734)
* add aria description

* type check
2022-06-15 14:46:49 -07:00
Kim Santiago
1bf99b0802 vbump data developer extensions after release (#19736) 2022-06-15 14:46:41 -07:00
erpett
53300e5e0d updating changelog for 1.37 (#19738)
* updating changelog for 1.37

* adjusting as per Comment
2022-06-15 14:14:25 -07:00
Alan Ren
89f6de309f fix tab header width (#19733) 2022-06-15 11:59:25 -07:00
Vasu Bhog
4d320c56f0 cleanup tests (#19732) 2022-06-15 11:08:49 -07:00
Alan Ren
909c56ffe3 fix the tab list scroll issue (#19731) 2022-06-15 10:15:14 -07:00
Vasu Bhog
6ab09d9b1b Add SQL Bindings Tests / Vbump (#19717)
* add further testing

* vbump version

* add successfully test

* address comments
2022-06-14 14:47:36 -07:00
Alan Ren
ba82444229 additional data property to error object and use it for table designer scenarios (#19713)
* add data property to error object

* vbump sts
2022-06-13 16:18:27 -07:00
csigs
037daf8528 Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220612153447929. (#19716) 2022-06-13 10:24:31 -07:00
csigs
4df80599ea Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220611154022072. (#19714) 2022-06-13 10:24:19 -07:00
Cory Rivera
7696157084 Refresh cell toolbar when changing cell type. (#19704) 2022-06-10 17:15:50 -07:00
Alex Ma
c28c31931a [Loc] update to sql xlf (#19708) 2022-06-09 17:48:25 -07:00
Aasim Khan
489259d364 Fixing graph root padding and truncating long queries in execution plan (#19703)
* Fixing graph root padding
Truncating queries to one line

* Updating remote package
2022-06-09 17:05:35 -07:00
Lewis Sanchez
20d2256709 Adds toggle button to switch between estimated and actual execution plans (#19629)
* Creates toggle button to switch between estimate and actual query plans

* Renames ID for the toggleActualExecutionPlanModeAction class

* Renames button back to explain

* Creating actual execution plans resembles SSMS

* Adds CTRL/CMD + L shortcut to display estimated execution plans

* Alphabetically organizes telemetry actions

* Adds telemetry when the setting for actual execution plan toggle is used

* Resolves build errors

* Fixes broken unit tests.

* Code review changes

* Removes unnecessary null-coalescing operator.

* Creates placeholder icons for actual execution plans enabled

* Code review changes

* Shortens label names

* Telemetry moved to toggle button

* Telemetry review changes

* Clarifies misleading label
2022-06-09 16:07:12 -07:00
Aasim Khan
b1d8e43569 Changing plan comparison properties table logic and icons (#19700)
* Changing plan comparison logic and icons

* Removing empty class ref
2022-06-09 14:15:35 -07:00
Cory Rivera
a265224701 Show an error in cell output when trying to load an unsupported output type. (#19693) 2022-06-09 12:32:42 -07:00
Alex Ma
fc7a27171d Fix for editData tab switch back when adding new row. (#19634)
* added filter for AsyncDataProvider Filter crash

* fixed cell switch back for editdata

* Added new setData check

* disable selecting of all columns when new row is being added

* Changed comment

* removed try catch check due to Aasim's PR

* added previous dataset to handlechange

* added feedback changes

* added fix for infinite loop

* changes made as suggested by Alan

* following Charles' feedback

* removed onGridRendered as its pointless jumping
2022-06-09 10:51:03 -07:00
csigs
1570b97e2f Juno: check in to lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20220609154331010. (#19695) 2022-06-09 10:06:17 -07:00
Alan Ren
496ceecb01 vbump STS (#19688) 2022-06-08 17:15:29 -07:00
Alex Ma
369cef527c [Loc] removed one string for sql-migration (#19692) 2022-06-08 16:53:01 -07:00
erpett
3db43cbfef Version Bumping since we have forked the current release as per disccusion with Alan (#19691) 2022-06-08 16:50:31 -07:00
Leila Lali
22c315ea62 Fixing the telemetry property docker image name (#19685) 2022-06-08 16:06:00 -07:00
Lucy Zhang
e2535c85c5 fix notebook provider (#19678) 2022-06-08 15:04:50 -07:00
Charles Gagnon
2911de58c2 Generate combined HTML coverage report (#19663) 2022-06-08 09:10:13 -07:00
Raymond Truong
f07b4bf668 [SQL Migration] Remove faulty SQL VM state validation (#19623)
* Remove VM state validation

* Remove string too

* Remove a few more references
2022-06-07 17:17:44 -07:00
Kim Santiago
487b3450bb fix table designer error when sql project has folders (#19667)
* fix table designer error when sql project has folders

* filter on .sql file extension

* compare lowercase

* add back EntryType.File filter
2022-06-07 15:59:36 -07:00
Kim Santiago
d95fe113e4 Fix sql database projects vscode telemetry (#19645)
* fix the wrong extension name getting sent for sql database projects vscode extension

* bump version

* remove print statements

* clean up comment
2022-06-07 10:30:55 -07:00
Barbara Valdez
a73eb0386b Extend sql bindings api (#19651) 2022-06-07 10:12:41 -07:00
Cory Rivera
7007e18314 Add new cells after the current one when adding a cell from the notebook toolbar. (#19649) 2022-06-07 10:12:15 -07:00
Vasu Bhog
8c223f503e Fix SQL Bindings VSCode telemetry issues (#19648)
* fix package json telemetry issues

* add vs code dependency back
2022-06-07 00:19:00 -07:00
Alex Ma
8cb6d48da2 [Loc] update to xlfs for 6-6-2022 (#19650) 2022-06-06 17:12:30 -07:00
Sai Avishkar Sreerama
e08a87d035 SQL DB Project Extension - Providing publish deploy options (#17993)
* initilaizing the sqlproj display options work

* added more code to the options dialog, need default option values

* Except REset Button, all works and need to refactor and test

* DisplayOptions for SQL DB Proj completed, refactor needed

* Tests for display options

* refactor code and removed unnecessary await calls

* Description values getting from STS API and code refactor

* DacpacExtesnion test model error fix

* updates related to STS model updates

* Dac Deployement options model updates according to STS changes

* Undoing file updates and moving as separate PR

* Undoing vscode whitespace changes which were added accidentally

* Options display name coming from API

* Updated model with dac deploy options display names coming from the STS API

* errors fixed after merge to main

* separating model related changes after merge, separate PR exists

* wrong Comment for the test case removed

* code refactor updates

* Hyperlink changes to secondary button and style updates

* refactoring code and comments

* importing type only instead of whole azdata and comment updates

* projectcontroller test fix

* removed duplicate file updates from other PR

* code refactor according to comments

* Added dispose to the onclick handler

* Added test case

* parameter change results error and fixed

* Addressing all comments with updates

* Unused variable removed and missed with previous commit

* Updated the ppublish button and width

* Adjusted the database dropdown and options margins to make all input align in same line

* Updated the database width and moved stylings to uiconstants file
2022-06-06 16:53:53 -05:00
Aasim Khan
0b89272739 Removing filter from set Data (#19640) 2022-06-06 13:44:42 -07:00
Charles Gagnon
2b27ecf245 Update typing for GetAzureFunction request (#19607) 2022-06-06 13:00:23 -07:00
Charles Gagnon
f22c9a02ab Update xmldom to 0.8.2 (#19625)
* Update xmldom to 0.8.2

* Fix test

* Comments
2022-06-06 12:59:09 -07:00
Vasu Bhog
bbfd6617f9 vbump SQL Bindings for June Release (#19639) 2022-06-06 12:26:08 -07:00
dependabot[bot]
9ce5071300 Bump extend from 3.0.1 to 3.0.2 (#19616)
Bumps [extend](https://github.com/justmoon/node-extend) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/justmoon/node-extend/releases)
- [Changelog](https://github.com/justmoon/node-extend/blob/main/CHANGELOG.md)
- [Commits](https://github.com/justmoon/node-extend/compare/v3.0.1...v3.0.2)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 11:52:08 -07:00
Alex Ma
5fbf2b69bf Update to localization source files and xlfs for June release (#19603) 2022-06-06 10:56:58 -07:00
2615 changed files with 123468 additions and 84083 deletions

View File

@@ -1,11 +1,11 @@
#!/bin/bash
#!/usr/bin/env bash
# This file establishes a basline for the reposuitory before any steps in the "prepare.sh"
# This file establishes a basline for the repository before any steps in the "prepare.sh"
# are run. Its just a find command that filters out a few things we don't need to watch.
set -e
SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
SOURCE_FOLDER="${1:-"."}"
cd "${SOURCE_FOLDER}"

View File

@@ -1,12 +1,12 @@
#!/bin/bash
# This file simply wraps the dockeer build command used to build the image with the
# cached result of the commands from "prepare.sh" and pushes it to the specified
# container image registry.
# This file simply wraps the docker build command to build an image that includes
# a cache.tar file with the result of "prepare.sh" inside of it. See cache.Dockerfile
# for the steps that are actually taken to do this.
set -e
SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
CONTAINER_IMAGE_REPOSITORY="$1"
BRANCH="${2:-"main"}"

View File

@@ -1,12 +1,11 @@
#!/bin/bash
#!/usr/bin/env bash
# This file is used to archive off a copy of any differences in the source tree into another location
# in the image. Once the codespace is up, this will be restored into its proper location (which is
# quick and happens parallel to other startup activities)
# in the image. Once the codespace / container is up, this will be restored into its proper location.
set -e
SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
SOURCE_FOLDER="${1:-"."}"
CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"

View File

@@ -1,7 +1,8 @@
# This dockerfile is used to build up from a base image to create an image with cached results of running "prepare.sh".
# This dockerfile is used to build up from a base image to create an image a cache.tar file containing the results of running "prepare.sh".
# Other image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev
# This first stage generates cache.tar
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev as cache
ARG USERNAME=node
COPY --chown=${USERNAME}:${USERNAME} . /repo-source-tmp/
RUN mkdir /usr/local/etc/devcontainer-cache \
@@ -10,5 +11,12 @@ RUN mkdir /usr/local/etc/devcontainer-cache \
cd /repo-source-tmp \
&& .devcontainer/cache/before-cache.sh \
&& .devcontainer/prepare.sh \
&& .devcontainer/cache/cache-diff.sh" \
&& rm -rf /repo-source-tmp
&& .devcontainer/cache/cache-diff.sh"
# This second stage starts fresh and just copies in cache.tar from the previous stage. The related
# devcontainer.json file is then setup to have postCreateCommand fire restore-diff.sh to expand it.
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev as dev-container
ARG USERNAME=node
ARG CACHE_FOLDER="/usr/local/etc/devcontainer-cache"
RUN mkdir -p "${CACHE_FOLDER}" && chown "${USERNAME}:${USERNAME}" "${CACHE_FOLDER}"
COPY --from=cache ${CACHE_FOLDER}/cache.tar ${CACHE_FOLDER}/

View File

@@ -1,9 +1,8 @@
#!/bin/bash
#!/usr/bin/env bash
# This file restores the results of the "prepare.sh" into their proper locations
# once the container has been created. It runs as a postCreateCommand which
# in GitHub Codespaces occurs parallel to other startup activities and does not
# really add to the overal startup time given how quick the operation ends up being.
# This file expands the cache.tar file in the image that contains the results of "prepare.sh"
# on top of the source tree. It runs as a postCreateCommand which runs after the container/codespace
# is already up where you would typically run a command like "yarn install".
set -e

View File

@@ -1,10 +1,9 @@
#!/bin/bash
#!/usr/bin/env bash
# This file contains the steps that should be run when creating the intermediary image that contains
# contents for that should be in the image by default. It will be used to build up from the base image
# to create an image that speeds up first time use of the dev container by "caching" the results
# of these commands. Developers can still run these commands without an issue once the container is
# up, but only differences will be processed which also speeds up the first time these operations occur.
# This file contains the steps that should be run when building a "cache" image with contents that should be
# layered directly **on top of the source tree** once a dev container is created. This avoids having to run long
# running commands like "yarn install" from the ground up. Developers (and should) still run these commands
# after the actual dev container is created, but only differences will be processed.
yarn install
yarn electron

View File

@@ -3,7 +3,7 @@
**/vs/css.build.js
**/vs/css.js
**/vs/loader.js
**/insane/**
**/dompurify/**
**/marked/**
**/semver/**
**/test/**/*.js
@@ -21,5 +21,5 @@
/test/automation/out
# These files are not linted by `yarn eslint`, so we exclude them from being linted in the editor.
# This ensures that if we add new rules and they pass CI, the are also no errors in the editor.
# This ensures that if we add new rules and they pass CI, there are also no errors in the editor.
/resources/web/code-web.js

49
.eslintrc.json Normal file → Executable file
View File

@@ -20,6 +20,7 @@
"no-duplicate-case": "warn",
"no-duplicate-imports": "warn",
"no-eval": "warn",
"no-async-promise-executor": "off",
"no-extra-semi": "warn",
"no-new-wrappers": "warn",
"no-redeclare": "off",
@@ -134,7 +135,7 @@
"restrictions": [
"vs/nls",
"**/{vs,sql}/base/{common,node}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -176,7 +177,7 @@
"vs/nls",
"**/{vs,sql}/base/{common,node}/**",
"**/{vs,sql}/base/parts/*/{common,node}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -195,7 +196,7 @@
"vs/css!./**/*",
"**/{vs,sql}/base/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -204,7 +205,7 @@
"vs/nls",
"**/{vs,sql}/base/{common,node,electron-main}/**",
"**/{vs,sql}/base/parts/*/{common,node,electron-main}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -254,7 +255,7 @@
"**/{vs,sql}/base/{common,node}/**",
"**/{vs,sql}/base/parts/*/{common,node}/**",
"**/{vs,sql}/platform/*/{common,node}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -276,7 +277,7 @@
"**/{vs,sql}/base/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/platform/*/{common,browser,node,electron-sandbox,electron-browser}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -287,7 +288,7 @@
"**/{vs,sql}/base/{common,node,electron-main}/**",
"**/{vs,sql}/base/parts/*/{common,node,electron-main}/**",
"**/{vs,sql}/platform/*/{common,node,electron-main}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -524,7 +525,7 @@
"**/{vs,sql}/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/workbench/services/*/{common,browser,node,electron-sandbox,electron-browser}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -539,7 +540,7 @@
"vs/workbench/contrib/files/browser/editors/fileEditorInput",
"**/{vs,sql}/workbench/services/**",
"**/{vs,sql}/workbench/test/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -615,7 +616,7 @@
"**/{vs,sql}/workbench/{common,node}/**",
"**/{vs,sql}/workbench/api/{common,node}/**",
"**/{vs,sql}/workbench/services/**/{common,node}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -646,7 +647,7 @@
"**/{vs,sql}/workbench/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser,node,electron-sandbox,electron-browser}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -785,7 +786,7 @@
"**/{vs,sql}/workbench/api/{common,node}/**",
"**/{vs,sql}/workbench/services/**/{common,node}/**",
"**/{vs,sql}/workbench/contrib/**/{common,node}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -818,7 +819,7 @@
"**/{vs,sql}/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/workbench/services/**/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/workbench/contrib/**/{common,browser,node,electron-sandbox,electron-browser}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -841,7 +842,7 @@
"**/{vs,sql}/base/parts/**/{common,node}/**",
"**/{vs,sql}/platform/**/{common,node}/**",
"**/{vs,sql}/code/**/{common,node}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -853,7 +854,7 @@
"**/{vs,sql}/base/parts/**/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/platform/**/{common,browser,node,electron-sandbox,electron-browser}/**",
"**/{vs,sql}/code/**/{common,browser,node,electron-sandbox,electron-browser}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -864,7 +865,7 @@
"**/{vs,sql}/base/parts/**/{common,node,electron-main}/**",
"**/{vs,sql}/platform/**/{common,node,electron-main}/**",
"**/{vs,sql}/code/**/{common,node,electron-main}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -876,7 +877,7 @@
"**/{vs,sql}/platform/**/{common,node}/**",
"**/{vs,sql}/workbench/**/{common,node}/**",
"**/{vs,sql}/server/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -947,28 +948,28 @@
"target": "**/test/smoke/**",
"restrictions": [
"**/test/smoke/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
"target": "**/test/automation/**",
"restrictions": [
"**/test/automation/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
"target": "**/test/integration/**",
"restrictions": [
"**/test/integration/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
"target": "**/test/monaco/**",
"restrictions": [
"**/test/monaco/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
@@ -988,7 +989,7 @@
"target": "**/{node,electron-browser,electron-main}/**/*.test.ts",
"restrictions": [
"**/{vs,sql}/**",
"@vscode/*", "*", // node modules
"@vscode/*", "@parcel/*", "*", // node modules
"@angular/*" // {{SQL CARBON EDIT}}
]
},
@@ -996,14 +997,14 @@
"target": "**/{node,electron-browser,electron-main}/**/test/**",
"restrictions": [
"**/{vs,sql}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{
"target": "**/test/{node,electron-browser,electron-main}/**",
"restrictions": [
"**/{vs,sql}/**",
"@vscode/*", "*" // node modules
"@vscode/*", "@parcel/*", "*" // node modules
]
},
{

2
.gitattributes vendored
View File

@@ -8,4 +8,4 @@ ThirdPartyNotices.txt eol=crlf
*.ps1 eol=lf
*.sh eol=lf
*.rtf -text
*.json linguist-language=jsonc
**/*.json linguist-language=jsonc

3
.github/port-labeler.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
# Add 'repo' label to any root file changes
Port Request:
- '**/*'

View File

@@ -6,7 +6,6 @@
"donjayamanne",
"jilljac",
"IanMatthewHuff",
"tanhakabir",
"dynamicwebpaige"
]
}

View File

@@ -23,7 +23,7 @@ jobs:
- uses: actions/setup-node@v2
with:
node-version: 14
node-version: 16
- uses: actions/setup-python@v2
with:
@@ -101,7 +101,7 @@ jobs:
- uses: actions/setup-node@v2
with:
node-version: 14
node-version: 16
# {{SQL CARBON EDIT}} Skip caching for now
# - name: Compute node modules cache key
# id: nodeModulesCacheKey
@@ -133,7 +133,7 @@ jobs:
# 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
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" # {{SQL CARBON EDIT}} Remove unused options playwright-install download-builtin-extensions
env:
SQL_NO_INLINE_SOURCEMAP: 1
@@ -173,7 +173,7 @@ jobs:
- uses: actions/setup-node@v2
with:
node-version: 14
node-version: 16
# {{SQL CARBON EDIT}} Skip caching for now
# - name: Compute node modules cache key
@@ -205,7 +205,7 @@ jobs:
run: yarn --frozen-lockfile --network-timeout 180000
- name: Compile and Download
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions
run: yarn npm-run-all --max_old_space_size=4095 -lp compile "electron x64" # {{SQL CARBON EDIT}} Remove unused options playwright-install download-builtin-extensions
# This is required for keytar unittests, otherwise we hit
# https://github.com/atom/node-keytar/issues/76
@@ -235,7 +235,7 @@ jobs:
- uses: actions/setup-node@v2
with:
node-version: 14
node-version: 16
- name: Compute node modules cache key
id: nodeModulesCacheKey

3
.gitignore vendored
View File

@@ -7,8 +7,6 @@ node_modules/
extensions/**/dist/
/out*/
/extensions/**/out/
src/vs/server
resources/server
build/node_modules
coverage/
test_data/
@@ -18,3 +16,4 @@ yarn-error.log
vscode.lsif
vscode.db
/.profile-oss
*.orig

View File

@@ -3,6 +3,7 @@
// for the documentation about the extensions.json format
"recommendations": [
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig"
"EditorConfig.EditorConfig",
"redhat.vscode-yaml"
]
}

View File

@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"August 2021\""
"value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"October 2021\""
},
{
"kind": 1,
@@ -27,6 +27,6 @@
{
"kind": 2,
"language": "github-issues",
"value": "$repo $milestone is:open label:api-proposal "
"value": "$repo $milestone is:open label:api-proposal sort:created-asc"
}
]

View File

@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub\n\n$MILESTONE=milestone:\"July 2021\""
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-unpkg\n\n$MILESTONE=milestone:\"October 2021\""
},
{
"kind": 1,
@@ -24,6 +24,26 @@
"language": "github-issues",
"value": "$REPOS $MILESTONE is:pr is:open"
},
{
"kind": 1,
"language": "markdown",
"value": "## Unverified Older Insiders-Released Issues"
},
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS -$MILESTONE is:issue is:closed label:bug label:insiders-released -label:verified -label:*duplicate -label:*as-designed -label:z-author-verified -label:on-testplan"
},
{
"kind": 1,
"language": "markdown",
"value": "## Unverified Older Insiders-Released Feature Requests"
},
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS -$MILESTONE is:issue is:closed label:feature-request label:insiders-released -label:on-testplan -label:verified -label:*duplicate"
},
{
"kind": 1,
"language": "markdown",
@@ -57,7 +77,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE is:issue is:open label:testplan-item"
"value": "$REPOS is:issue is:open label:testplan-item"
},
{
"kind": 1,
@@ -67,7 +87,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE is:issue is:closed label:feature-request label:verification-needed -label:verified"
"value": "$REPOS $MILESTONE is:issue is:closed label:verification-needed -label:verified"
},
{
"kind": 1,

View File

@@ -2,769 +2,666 @@
{
"kind": 1,
"language": "markdown",
"value": "## Config",
"editable": true
"value": "## Config"
},
{
"kind": 2,
"language": "github-issues",
"value": "$since=2020-10-01",
"editable": true
"value": "$since=2021-10-01"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode\n\nQuery exceeds the maximum result. Run the query manually: `is:issue is:open closed:>2020-10-01`",
"editable": true
"value": "# vscode\n\nQuery exceeds the maximum result. Run the query manually: `is:issue is:open closed:>2021-10-01`"
},
{
"kind": 2,
"language": "github-issues",
"value": "//repo:microsoft/vscode is:issue closed:>$since",
"editable": true
"value": "//repo:microsoft/vscode is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "//repo:microsoft/vscode is:issue created:>$since",
"editable": true
"value": "//repo:microsoft/vscode is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-remote-release",
"editable": true
"value": "# vscode-remote-release"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-remote-release is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-remote-release is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-remote-release is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-remote-release is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-editor",
"editable": true
"value": "# monaco-editor"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-editor is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-editor is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-editor is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-editor is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-docs",
"editable": true
"value": "# vscode-docs"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-docs is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-docs is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-docs is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-docs is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-js-debug",
"editable": true
"value": "# vscode-js-debug"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-js-debug is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-js-debug is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-js-debug is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-js-debug is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# language-server-protocol",
"editable": true
"value": "# language-server-protocol"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/language-server-protocol is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/language-server-protocol is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/language-server-protocol is:issue created:>$since",
"editable": true
"value": "repo:microsoft/language-server-protocol is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-eslint",
"editable": true
"value": "# vscode-eslint"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-eslint is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-eslint is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-eslint is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-eslint is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-css-languageservice",
"editable": true
"value": "# vscode-css-languageservice"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-css-languageservice is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-css-languageservice is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-css-languageservice is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-css-languageservice is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-test",
"editable": true
"value": "# vscode-test"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-test is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-test is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-test is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-test is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-pull-request-github",
"editable": true
"value": "# vscode-pull-request-github"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-pull-request-github is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-pull-request-github is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-test is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-test is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-chrome-debug (deprecated)",
"editable": true
"value": "# vscode-chrome-debug-core"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-chrome-debug is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-chrome-debug-core is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-chrome-debug is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-chrome-debug-core is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-chrome-debug-core",
"editable": true
"value": "# vscode-debugadapter-node"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-chrome-debug-core is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-debugadapter-node is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-chrome-debug-core is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-debugadapter-node is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-debugadapter-node",
"editable": true
"value": "# vscode-emmet-helper"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-debugadapter-node is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-emmet-helper is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-debugadapter-node is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-emmet-helper is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-emmet-helper",
"editable": true
"value": "# vscode-extension-vscode\n\nDeprecated"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-emmet-helper is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-extension-vscode is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-emmet-helper is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-extension-vscode is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-extension-vscode\n\nDeprecated",
"editable": true
"value": "# vscode-extension-samples"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-extension-vscode is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-extension-samples is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-extension-vscode is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-extension-samples is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-extension-samples",
"editable": true
"value": "# vscode-filewatcher-windows"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-extension-samples is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-filewatcher-windows is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-extension-samples is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-filewatcher-windows is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-filewatcher-windows",
"editable": true
"value": "# vscode-generator-code"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-filewatcher-windows is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-generator-code is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-filewatcher-windows is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-generator-code is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-generator-code",
"editable": true
"value": "# vscode-html-languageservice"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-generator-code is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-html-languageservice is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-generator-code is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-html-languageservice is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-html-languageservice",
"editable": true
"value": "# vscode-json-languageservice"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-html-languageservice is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-json-languageservice is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-html-languageservice is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-json-languageservice is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-jshint",
"editable": true
"value": "# vscode-languageserver-node"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-jshint is:issue closed:>$since",
"editable": true
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-jshint is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-languageserver-node is:issue closed:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-json-languageservice",
"editable": true
"value": ""
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-json-languageservice is:issue closed:>$since",
"editable": true
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-json-languageservice is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-languageserver-node is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-languageserver-node",
"editable": true
"value": "# vscode-loader"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-languageserver-node is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-loader is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-languageserver-node is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-loader is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-loader",
"editable": true
"value": "# vscode-mono-debug"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-loader is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-mono-debug is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-loader is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-mono-debug is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-mono-debug",
"editable": true
"value": "# vscode-node-debug"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-mono-debug is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-node-debug is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-mono-debug is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-node-debug is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-node-debug",
"editable": true
"value": "# vscode-node-debug2"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-node-debug is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-node-debug2 is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-node-debug is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-node-debug2 is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-node-debug2",
"editable": true
"value": "# vscode-recipes"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-node-debug2 is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-recipes is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-node-debug2 is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-recipes is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-recipes",
"editable": true
"value": "# vscode-textmate"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-recipes is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-textmate is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-recipes is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-textmate is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-textmate",
"editable": true
"value": "# vscode-themes"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-textmate is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-themes is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-textmate is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-themes is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-themes",
"editable": true
"value": "# vscode-vsce"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-themes is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-vsce is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-themes is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-vsce is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-vsce",
"editable": true
"value": "# vscode-website"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-vsce is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-website is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-vsce is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-website is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-website",
"editable": true
"value": "# vscode-windows-process-tree"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-website is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-windows-process-tree is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-website is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-windows-process-tree is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-windows-process-tree",
"editable": true
"value": "# debug-adapter-protocol"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-windows-process-tree is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/debug-adapter-protocol is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-windows-process-tree is:issue created:>$since",
"editable": true
"value": "repo:microsoft/debug-adapter-protocol is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# debug-adapter-protocol",
"editable": true
"value": "# inno-updater"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/debug-adapter-protocol is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/inno-updater is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/debug-adapter-protocol is:issue created:>$since",
"editable": true
"value": "repo:microsoft/inno-updater is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# inno-updater",
"editable": true
"value": "# monaco-languages"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/inno-updater is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-languages is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/inno-updater is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-languages is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# language-server-protocol-inspector",
"editable": true
"value": "# monaco-typescript"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/language-server-protocol-inspector is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-typescript is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/language-server-protocol-inspector is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-typescript is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-languages",
"editable": true
"value": "# monaco-css"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-languages is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-css is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-languages is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-css is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-typescript",
"editable": true
"value": "# monaco-json"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-typescript is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-json is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-typescript is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-json is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-css",
"editable": true
"value": "# monaco-html"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-css is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-html is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-css is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-html is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-json",
"editable": true
"value": "# monaco-editor-webpack-plugin"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-json is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/monaco-editor-webpack-plugin is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-json is:issue created:>$since",
"editable": true
"value": "repo:microsoft/monaco-editor-webpack-plugin is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-html",
"editable": true
"value": "# node-jsonc-parser"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-html is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/node-jsonc-parser is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-html is:issue created:>$since",
"editable": true
"value": "repo:microsoft/node-jsonc-parser is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# monaco-editor-webpack-plugin",
"editable": true
"value": "# vscode-jupyter"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-editor-webpack-plugin is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-jupyter is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/monaco-editor-webpack-plugin is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-jupyter is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# node-jsonc-parser",
"editable": true
"value": "# vscode-python"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/node-jsonc-parser is:issue closed:>$since",
"editable": true
"value": "repo:microsoft/vscode-python is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/node-jsonc-parser is:issue created:>$since",
"editable": true
"value": "repo:microsoft/vscode-python is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-livepreview"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-livepreview is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-livepreview is:issue created:>$since"
},
{
"kind": 1,
"language": "markdown",
"value": ""
},
{
"kind": 1,
"language": "markdown",
"value": "# vscode-test"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-test is:issue closed:>$since"
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode-test is:issue created:>$since"
}
]

View File

@@ -1,30 +0,0 @@
[
{
"kind": 1,
"language": "markdown",
"value": "### Categorizing Issues\n\nEach issue must have a type label. Most type labels are grey, some are yellow. Bugs are grey with a touch of red.",
"editable": true,
"outputs": []
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:\"needs more info\" -label:bug -label:feature-request -label:under-discussion -label:debt -label:*question -label:upstream -label:electron -label:engineering -label:plan-item ",
"editable": true,
"outputs": []
},
{
"kind": 1,
"language": "markdown",
"value": "### Feature Areas\n\nEach issue should be assigned to a feature area",
"editable": true,
"outputs": []
},
{
"kind": 2,
"language": "github-issues",
"value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:L10N -label:VIM -label:api -label:api-finalization -label:api-proposal -label:authentication -label:breadcrumbs -label:callhierarchy -label:code-lens -label:color-palette -label:comments -label:config -label:context-keys -label:css-less-scss -label:custom-editors -label:debug -label:debug-console -label:dialogs -label:diff-editor -label:dropdown -label:editor -label:editor-RTL -label:editor-autoclosing -label:editor-autoindent -label:editor-bracket-matching -label:editor-clipboard -label:editor-code-actions -label:editor-color-picker -label:editor-columnselect -label:editor-commands -label:editor-comments -label:editor-contrib -label:editor-core -label:editor-drag-and-drop -label:editor-error-widget -label:editor-find -label:editor-folding -label:editor-highlight -label:editor-hover -label:editor-indent-detection -label:editor-indent-guides -label:editor-input -label:editor-input-IME -label:editor-insets -label:editor-minimap -label:editor-multicursor -label:editor-parameter-hints -label:editor-render-whitespace -label:editor-rendering -label:editor-scrollbar -label:editor-symbols -label:editor-synced-region -label:editor-textbuffer -label:editor-theming -label:editor-wordnav -label:editor-wrapping -label:emmet -label:error-list -label:explorer-custom -label:extension-host -label:extension-recommendations -label:extensions -label:extensions-development -label:file-decorations -label:file-encoding -label:file-explorer -label:file-glob -label:file-guess-encoding -label:file-io -label:file-watcher -label:font-rendering -label:formatting -label:git -label:github -label:gpu -label:grammar -label:grid-view -label:html -label:i18n -label:icon-brand -label:icons-product -label:install-update -label:integrated-terminal -label:integrated-terminal-conpty -label:integrated-terminal-links -label:integrated-terminal-rendering -label:integrated-terminal-winpty -label:intellisense-config -label:ipc -label:issue-bot -label:issue-reporter -label:javascript -label:json -label:keybindings -label:keybindings-editor -label:keyboard-layout -label:label-provider -label:languages-basic -label:languages-diagnostics -label:languages-guessing -label:layout -label:lcd-text-rendering -label:list -label:log -label:markdown -label:marketplace -label:menus -label:merge-conflict -label:notebook -label:outline -label:output -label:perf -label:perf-bloat -label:perf-startup -label:php -label:portable-mode -label:proxy -label:quick-pick -label:references-viewlet -label:release-notes -label:remote -label:remote-explorer -label:rename -label:sandbox -label:scm -label:screencast-mode -label:search -label:search-api -label:search-editor -label:search-replace -label:semantic-tokens -label:settings-editor -label:settings-sync -label:settings-sync-server -label:shared-process -label:simple-file-dialog -label:smart-select -label:snap -label:snippets -label:splitview -label:suggest -label:sync-error-handling -label:tasks -label:telemetry -label:themes -label:timeline -label:timeline-git -label:titlebar -label:tokenization -label:touch/pointer -label:trackpad/scroll -label:tree -label:typescript -label:undo-redo -label:uri -label:ux -label:variable-resolving -label:vscode-build -label:vscode-website -label:web -label:webview -label:workbench-actions -label:workbench-cli -label:workbench-diagnostics -label:workbench-dnd -label:workbench-editor-grid -label:workbench-editors -label:workbench-electron -label:workbench-feedback -label:workbench-history -label:workbench-hot-exit -label:workbench-hover -label:workbench-launch -label:workbench-link -label:workbench-multiroot -label:workbench-notifications -label:workbench-os-integration -label:workbench-rapid-render -label:workbench-run-as-admin -label:workbench-state -label:workbench-status -label:workbench-tabs -label:workbench-touchbar -label:workbench-views -label:workbench-welcome -label:workbench-window -label:workbench-zen -label:workspace-edit -label:workspace-symbols -label:zoom",
"editable": true,
"outputs": []
}
]

View File

@@ -2,49 +2,41 @@
{
"kind": 1,
"language": "markdown",
"value": "## tl;dr: Triage Inbox\n\nAll inbox issues but not those that need more information. These issues need to be triaged, e.g assigned to a user or ask for more information",
"editable": true
"value": "## tl;dr: Triage Inbox\n\nAll inbox issues but not those that need more information. These issues need to be triaged, e.g assigned to a user or ask for more information"
},
{
"kind": 2,
"language": "github-issues",
"value": "$inbox -label:\"needs more info\"",
"editable": true
"value": "$inbox -label:\"needs more info\" sort:created-asc"
},
{
"kind": 1,
"language": "markdown",
"value": "##### `Config`: defines the inbox query",
"editable": true
"value": "##### `Config`: defines the inbox query"
},
{
"kind": 2,
"language": "github-issues",
"value": "$inbox=repo:microsoft/vscode is:open no:assignee -label:feature-request -label:testplan-item -label:plan-item ",
"editable": true
"value": "$inbox=repo:microsoft/vscode is:open no:assignee -label:feature-request -label:testplan-item -label:plan-item "
},
{
"kind": 1,
"language": "markdown",
"value": "## Inbox tracking and Issue triage",
"editable": true
"value": "## Inbox tracking and Issue triage"
},
{
"kind": 1,
"language": "markdown",
"value": "New issues or pull requests submitted by the community are initially triaged by an [automatic classification bot](https://github.com/microsoft/vscode-github-triage-actions/tree/master/classifier-deep). Issues that the bot does not correctly triage are then triaged by a team member. The team rotates the inbox tracker on a weekly basis.\n\nA [mirror](https://github.com/JacksonKearl/testissues/issues) of the VS Code issue stream is available with details about how the bot classifies issues, including feature-area classifications and confidence ratings. Per-category confidence thresholds and feature-area ownership data is maintained in [.github/classifier.json](https://github.com/microsoft/vscode/blob/main/.github/classifier.json). \n\n💡 The bot is being run through a GitHub action that runs every 30 minutes. Give the bot the opportunity to classify an issue before doing it manually.\n\n### Inbox Tracking\n\nThe inbox tracker is responsible for the [global inbox](https://github.com/microsoft/vscode/issues?utf8=%E2%9C%93&q=is%3Aopen+no%3Aassignee+-label%3Afeature-request+-label%3Atestplan-item+-label%3Aplan-item) containing all **open issues and pull requests** that\n- are neither **feature requests** nor **test plan items** nor **plan items** and\n- have **no owner assignment**.\n\nThe **inbox tracker** may perform any step described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) but its main responsibility is to route issues to the actual feature area owner.\n\nFeature area owners track the **feature area inbox** containing all **open issues and pull requests** that\n- are personally assigned to them and are not assigned to any milestone\n- are labeled with their feature area label and are not assigned to any milestone.\nThis secondary triage may involve any of the steps described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) and results in a fully triaged or closed issue.\n\nThe [github triage extension](https://github.com/microsoft/vscode-github-triage-extension) can be used to assist with triaging — it provides a \"Command Palette\"-style list of triaging actions like assignment, labeling, and triggers for various bot actions.",
"editable": true
"value": "New issues or pull requests submitted by the community are initially triaged by an [automatic classification bot](https://github.com/microsoft/vscode-github-triage-actions/tree/master/classifier-deep). Issues that the bot does not correctly triage are then triaged by a team member. The team rotates the inbox tracker on a weekly basis.\n\nA [mirror](https://github.com/JacksonKearl/testissues/issues) of the VS Code issue stream is available with details about how the bot classifies issues, including feature-area classifications and confidence ratings. Per-category confidence thresholds and feature-area ownership data is maintained in [.github/classifier.json](https://github.com/microsoft/vscode/blob/main/.github/classifier.json). \n\n💡 The bot is being run through a GitHub action that runs every 30 minutes. Give the bot the opportunity to classify an issue before doing it manually.\n\n### Inbox Tracking\n\nThe inbox tracker is responsible for the [global inbox](https://github.com/microsoft/vscode/issues?utf8=%E2%9C%93&q=is%3Aopen+no%3Aassignee+-label%3Afeature-request+-label%3Atestplan-item+-label%3Aplan-item) containing all **open issues and pull requests** that\n- are neither **feature requests** nor **test plan items** nor **plan items** and\n- have **no owner assignment**.\n\nThe **inbox tracker** may perform any step described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) but its main responsibility is to route issues to the actual feature area owner.\n\nFeature area owners track the **feature area inbox** containing all **open issues and pull requests** that\n- are personally assigned to them and are not assigned to any milestone\n- are labeled with their feature area label and are not assigned to any milestone.\nThis secondary triage may involve any of the steps described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) and results in a fully triaged or closed issue.\n\nThe [github triage extension](https://github.com/microsoft/vscode-github-triage-extension) can be used to assist with triaging — it provides a \"Command Palette\"-style list of triaging actions like assignment, labeling, and triggers for various bot actions."
},
{
"kind": 1,
"language": "markdown",
"value": "## All Inbox Items\n\nAll issues that have no assignee and that have neither **feature requests** nor **test plan items** nor **plan items**.",
"editable": true
"value": "## All Inbox Items\n\nAll issues that have no assignee and that have neither **feature requests** nor **test plan items** nor **plan items**."
},
{
"kind": 2,
"language": "github-issues",
"value": "$inbox",
"editable": true
"value": "$inbox"
}
]

View File

@@ -7,7 +7,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub repo:microsoft/vscode-emmet-helper\n\n$MILESTONE=milestone:\"July 2021\"\n\n$MINE=assignee:@me"
"value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-remotehub repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-livepreview repo:microsoft/vscode-python repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal\n\n$MILESTONE=milestone:\"October 2021\"\n\n$MINE=assignee:@me"
},
{
"kind": 1,
@@ -52,7 +52,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE is:issue is:open author:@me label:testplan-item"
"value": "$REPOS is:issue is:open author:@me label:testplan-item"
},
{
"kind": 1,
@@ -77,7 +77,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE $MINE is:issue is:open label:testplan-item"
"value": "$REPOS $MINE is:issue is:open label:testplan-item"
},
{
"kind": 1,
@@ -147,7 +147,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found"
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed author:@me sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:needs-triage -label:verification-found"
},
{
"kind": 1,
@@ -157,7 +157,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:bamurtaugh -author:bpasero -author:btholt -author:chrisdias -author:chrmarti -author:Chuxel -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:eamodio -author:egamma -author:fiveisprime -author:gregvanl -author:isidorn -author:ItalyPaleAle -author:JacksonKearl -author:joaomoreno -author:jrieken -author:kieferrm -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:ornellaalt -author:orta -author:rebornix -author:RMacfarlane -author:roblourens -author:rzhao271 -author:sana-ajani -author:sandy081 -author:sbatten -author:stevencl -author:Tyriar -author:weinand -author:TylerLeonhardt -author:lramos15 -author:hediet"
"value": "$REPOS $MILESTONE -$MINE is:issue is:closed sort:updated-asc label:bug -label:verified -label:z-author-verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -author:aeschli -author:alexdima -author:alexr00 -author:AmandaSilver -author:bamurtaugh -author:bpasero -author:btholt -author:chrisdias -author:chrmarti -author:Chuxel -author:claudiaregio -author:connor4312 -author:dbaeumer -author:deepak1556 -author:devinvalenciano -author:digitarald -author:DonJayamanne -author:dynamicwebpaige -author:eamodio -author:egamma -author:fiveisprime -author:greazer -author:gregvanl -author:hediet -author:IanMatthewHuff -author:isidorn -author:ItalyPaleAle -author:JacksonKearl -author:joaomoreno -author:joyceerhl -author:jrieken -author:karrtikr-author:kieferrm -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:ornellaalt -author:orta -author:rchiodo -author:rebornix -author:RMacfarlane -author:roblourens -author:rzhao271 -author:sana-ajani -author:sandy081 -author:sbatten -author:stevencl -author:TylerLeonhardt -author:Tyriar -author:weinand "
},
{
"kind": 1,

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@
{
"kind": 2,
"language": "github-issues",
"value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-jupyter repo:microsoft/vscode-python\r\n$milestone=milestone:\"July 2021\""
"value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-dev repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-jupyter repo:microsoft/vscode-python\n$milestone=milestone:\"August 2021\""
},
{
"kind": 1,

10
.vscode/settings.json vendored
View File

@@ -8,8 +8,7 @@
"**/.DS_Store": true,
"build/**/*.js": {
"when": "$(basename).ts"
},
"src/vs/server": false
}
},
"files.associations": {
"cglicenses.json": "jsonc"
@@ -27,8 +26,7 @@
"test/automation/out/**": true,
"test/integration/browser/out/**": true,
"src/vs/base/test/node/uri.test.data.txt": true,
"src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts": true,
"src/vs/server": false
"src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts": true
},
"lcov.path": [
"./.build/coverage/lcov.info",
@@ -81,6 +79,8 @@
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"typescript.tsc.autoDetect": "off",
"notebook.experimental.useMarkdownRenderer": true,
"testing.autoRun.mode": "rerun",
"yaml.schemas": {
"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json": "build/azure-pipelines/**/*.yml"
},
}

View File

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

View File

@@ -1,10 +1,33 @@
# Change Log
## Version 1.36.1
* Release date: April 22, 2022
## Version 1.38.0
* Release date: July 27, 2022
* Release status: General Availability
## What's new in this version
- April Hotfix addressing these issues https://github.com/microsoft/azuredatastudio/milestone/88?closed=1.
## What's new in 1.38.0
* New Features:
* VS Code merges to 1.62 - This release includes updates to VS Code from the three previous VS Code releases. Read [their release notes](https://code.visualstudio.com/updates/v1_62) to learn more.
* Table Designer - New column added to Table Designer for easier access to additional actions specific to individual rows.
* Query Plan Viewer - The Top Operations pane view now includes clickable links to operations in each of its rows to show the runtime statistics which can be used to evaluate estimated and actual rows when analyzing a plan.
* Query Plan Viewer - Improved UI on selected operation node in the Execution Plan.
* Query Plan Viewer - The keyboard command **CTRL + M** no longer executes queries. It now just enables or disables the actual execution plan creation when a query is executed.
* Query Plan Viewer - Plan labels are now updated in the Properties window when plans are compared and the orientation is toggled from horizontal to vertical, and back.
* Query Plan Viewer - Updates were made to the Command Palette. All execution plan commands are prefixed with "Execution Plan", so that they are easier to find and use.
* Query Plan Viewer - A collapse/expand functionality is now available at the operator level to allow users to hide or display sections of the plan during analysis.
* Query History - The Query History extension was refactored to be fully implemented in an extension. This makes the history view behave like all other extension views and also allows for searching and filtering in the view by selecting the view and typing in your search text.
* Bug Fixes:
* Table Designer - Error found in edit data tab when switching back to previously selected column when adding a new row. To fix this, editing the table is now disabled while new rows are being added and only reenabled afterwards.
* Query Editor - Fixed coloring issues for new T-SQL functions in the Query Editor.
* Query Plan Viewer - Fixed bug that caused custom zoom level spinner to allow values outside valid range.
* Dashboard - Fixed issue that caused incorrect displaying of insight widgets on the dashboard.
* Notebooks - Fixed issue where keyboard shortcuts and toolbar buttons were not working when first creating a Split View markdown cell.
* Notebooks - Fixed issue where cell languages were not being set correctly when opening an ADS .NET Interactive notebook in VS Code.
* Notebooks - Fixed issue where notebook was being opened as empty when exporting a SQL query as a notebook.
* Notebooks - Disables install and uninstall buttons in Manage Packages dialog while a package is being installed or uninstalled.
* Notebooks - Fixed issue where cell toolbar buttons were not refreshing when converting cell type.
* Notebooks - Fixed issue where notebook was not opening if a cell contains an unsupported output type.
* Schema Compare - Fixed issue where views and stored procedures were not correctly recognized by schema compare after applying changes.
| Platform |
| --------------------------------------- |
@@ -16,14 +39,37 @@
| [Linux RPM][linux-rpm] |
| [Linux DEB][linux-deb] |
[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
[win-user]: https://go.microsoft.com/fwlink/?linkid=2198663
[win-system]: https://go.microsoft.com/fwlink/?linkid=2198878
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2198664
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2198762
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2198879
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2198880
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2198763
## Version 1.37.0
* Release date: June 15, 2022
* Release status: General Availability
## What's new in this version
* New Features:
* Backup & Restore - Backup & Restore to URL is now available in preview for Azure SQL Managed Instances.
* Table Designer - Added API to support computed column capabilities on Table Designer.
* Table Designer - Can now specify where to add new columns and columns can now be re-arranged by mouse dragging.
* Table Designer - Table Designer is now supported by SQL Projects to add or modify database schema without need to be connected to a server instance.
* Query Plan Viewer - Smart plan comparison is now available. Can now compare execution plans and view detailed differences between plans in the Properties Table.
* Query Plan Viewer - Added toggle button to switch between estimated and actual execution plans.
* Query Plan Viewer - Query Plan now comes with improved precision to operator costs for larger plans.
* MongoDB Extension for Azure Cosmos DB (Preview) - This extension introduces support for access to Mongo resources for Cosmos DB.
* Bug Fixes:
* Table Designer - Fixed issue that caused app to not prompt user to save before closing.
* Table Designer - Fixed issue that returned empty data set upon attempting to edit the first cell of a new row.
* Table Designer - Improved resize to fit experience when zooming in on user interface as well as tab behavior issues.
* Query Plan Viewer - Fixed bug that caused custom zoom level spinner to allow values outside valid range.
* Schema Compare - Fixed issue with indexes not being added correctly when updating project from database.
* Notebooks - Fixed inconsistencies with notebook cell behavior and toolbars.
* Notebooks - Fixed issues with keyboard navigation.
## Version 1.36.2
* Release date: May 20, 2022
* Release status: General Availability

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=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
[win-user]: https://go.microsoft.com/fwlink/?linkid=2198663
[win-system]: https://go.microsoft.com/fwlink/?linkid=2198878
[win-zip]: https://go.microsoft.com/fwlink/?linkid=2198664
[osx-zip]: https://go.microsoft.com/fwlink/?linkid=2198762
[linux-zip]: https://go.microsoft.com/fwlink/?linkid=2198879
[linux-rpm]: https://go.microsoft.com/fwlink/?linkid=2198880
[linux-deb]: https://go.microsoft.com/fwlink/?linkid=2198763

View File

@@ -110,6 +110,18 @@ nsfw/src/**
nsfw/includes/**
!nsfw/build/Release/*.node
vscode-nsfw/binding.gyp
vscode-nsfw/build/**
vscode-nsfw/src/**
vscode-nsfw/includes/**
!vscode-nsfw/build/Release/*.node
@parcel/watcher/binding.gyp
@parcel/watcher/build/**
@parcel/watcher/prebuilds/**
@parcel/watcher/src/**
!@parcel/watcher/build/Release/*.node
vsda/build/**
vsda/ci/**
vsda/src/**

View File

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

2
build/actions/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
node_modules
*.js.map

6
build/actions/api/api.js Normal file
View File

@@ -0,0 +1,6 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });

96
build/actions/api/api.ts Normal file
View File

@@ -0,0 +1,96 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export interface GitHub {
query(query: Query): AsyncIterableIterator<GitHubIssue[]>
hasWriteAccess(user: User): Promise<boolean>
repoHasLabel(label: string): Promise<boolean>
createLabel(label: string, color: string, description: string): Promise<void>
deleteLabel(label: string): Promise<void>
readConfig(path: string): Promise<any>
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>
releaseContainsCommit(release: string, commit: string): Promise<boolean>
}
export interface GitHubIssue extends GitHub {
getIssue(): Promise<Issue>
postComment(body: string): Promise<void>
deleteComment(id: number): Promise<void>
getComments(last?: boolean): AsyncIterableIterator<Comment[]>
closeIssue(): Promise<void>
lockIssue(): Promise<void>
setMilestone(milestoneId: number): Promise<void>
addLabel(label: string): Promise<void>
removeLabel(label: string): Promise<void>
addAssignee(assignee: string): Promise<void>
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>
}
type SortVar =
| 'comments'
| 'reactions'
| 'reactions-+1'
| 'reactions--1'
| 'reactions-smile'
| 'reactions-thinking_face'
| 'reactions-heart'
| 'reactions-tada'
| 'interactions'
| 'created'
| 'updated'
type SortOrder = 'asc' | 'desc'
export type Reactions = {
'+1': number
'-1': number
laugh: number
hooray: number
confused: number
heart: number
rocket: number
eyes: number
}
export interface User {
name: string
isGitHubApp?: boolean
}
export interface Comment {
author: User
body: string
id: number
timestamp: number
}
export interface Issue {
author: User
body: string
title: string
labels: string[]
open: boolean
locked: boolean
number: number
numComments: number
reactions: Reactions
milestoneId: number | null
assignee?: string
createdAt: number
updatedAt: number
closedAt?: number
}
export interface Query {
q: string
sort?: SortVar
order?: SortOrder
}

View File

@@ -0,0 +1,293 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@actions/core");
const github_1 = require("@actions/github");
const child_process_1 = require("child_process");
const utils_1 = require("../utils/utils");
class OctoKit {
constructor(token, params, options = { readonly: false }) {
this.token = token;
this.params = params;
this.options = options;
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
this.mockLabels = new Set();
this.writeAccessCache = {};
this.octokit = new github_1.GitHub(token);
}
async *query(query) {
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
console.log(`Querying for ${q}:`);
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
...query,
q,
per_page: 100,
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
});
let pageNum = 0;
const timeout = async () => {
if (pageNum < 2) {
/* pass */
}
else if (pageNum < 4) {
await new Promise((resolve) => setTimeout(resolve, 3000));
}
else {
await new Promise((resolve) => setTimeout(resolve, 30000));
}
};
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
await timeout();
await utils_1.logRateLimit(this.token);
const page = pageResponse.data;
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
yield page.map((issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue)));
}
}
async createIssue(owner, repo, title, body) {
core_1.debug(`Creating issue \`${title}\` on ${owner}/${repo}`);
if (!this.options.readonly)
await this.octokit.issues.create({ owner, repo, title, body });
}
octokitIssueToIssue(issue) {
var _a, _b, _c, _d, _e, _f;
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
number: issue.number,
title: issue.title,
labels: issue.labels.map((label) => label.name),
open: issue.state === 'open',
locked: issue.locked,
numComments: issue.comments,
reactions: issue.reactions,
assignee: (_b = (_a = issue.assignee) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : (_d = (_c = issue.assignees) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.login,
milestoneId: (_f = (_e = issue.milestone) === null || _e === void 0 ? void 0 : _e.number) !== null && _f !== void 0 ? _f : null,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date(issue.closed_at) : undefined,
};
}
async hasWriteAccess(user) {
if (user.name in this.writeAccessCache) {
core_1.debug('Got permissions from cache for ' + user);
return this.writeAccessCache[user.name];
}
core_1.debug('Fetching permissions for ' + user);
const permissions = (await this.octokit.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})).data.permission;
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write');
}
async repoHasLabel(name) {
try {
await this.octokit.issues.getLabel({ ...this.params, name });
return true;
}
catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name);
}
throw err;
}
}
async createLabel(name, color, description) {
core_1.debug('Creating label ' + name);
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name });
else
this.mockLabels.add(name);
}
async deleteLabel(name) {
core_1.debug('Deleting label ' + name);
try {
if (!this.options.readonly)
await this.octokit.issues.deleteLabel({ ...this.params, name });
}
catch (err) {
if (err.status === 404) {
return;
}
throw err;
}
}
async readConfig(path) {
core_1.debug('Reading config at ' + path);
const repoPath = `.github/${path}.json`;
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data;
if ('type' in data && data.type === 'file') {
if (data.encoding === 'base64' && data.content) {
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
}
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`);
}
throw Error('Found directory at config path when expecting file' + JSON.stringify(data));
}
async releaseContainsCommit(release, commit) {
if (utils_1.getInput('commitReleasedDebuggingOverride')) {
return true;
}
return new Promise((resolve, reject) => child_process_1.exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => !err || err.code === 1 ? resolve(!err) : reject(err)));
}
}
exports.OctoKit = OctoKit;
class OctoKitIssue extends OctoKit {
constructor(token, params, issueData, options = { readonly: false }) {
super(token, params, options);
this.params = params;
this.issueData = issueData;
}
async addAssignee(assignee) {
core_1.debug('Adding assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
});
}
}
async closeIssue() {
core_1.debug('Closing issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
});
}
async lockIssue() {
core_1.debug('Locking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number });
}
async getIssue() {
if (isIssue(this.issueData)) {
core_1.debug('Got issue data from query result ' + this.issueData.number);
return this.issueData;
}
console.log('Fetching issue ' + this.issueData.number);
const issue = (await this.octokit.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})).data;
return (this.issueData = this.octokitIssueToIssue(issue));
}
async postComment(body) {
core_1.debug(`Posting comment ${body} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
});
}
async deleteComment(id) {
core_1.debug(`Deleting comment ${id} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.deleteComment({
owner: this.params.owner,
repo: this.params.repo,
comment_id: id,
});
}
async setMilestone(milestoneId) {
core_1.debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
});
}
async *getComments(last) {
core_1.debug('Fetching comments for ' + this.issueData.number);
const response = this.octokit.paginate.iterator(this.octokit.issues.listComments.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
}));
for await (const page of response) {
yield page.data.map((comment) => ({
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
body: comment.body,
id: comment.id,
timestamp: +new Date(comment.created_at),
}));
}
}
async addLabel(name) {
core_1.debug(`Adding label ${name} to ${this.issueData.number}`);
if (!(await this.repoHasLabel(name))) {
throw Error(`Action could not execute becuase label ${name} is not defined.`);
}
if (!this.options.readonly)
await this.octokit.issues.addLabels({
...this.params,
issue_number: this.issueData.number,
labels: [name],
});
}
async removeLabel(name) {
core_1.debug(`Removing label ${name} from ${this.issueData.number}`);
try {
if (!this.options.readonly)
await this.octokit.issues.removeLabel({
...this.params,
issue_number: this.issueData.number,
name,
});
}
catch (err) {
if (err.status === 404) {
console.log(`Label ${name} not found on issue`);
return;
}
throw err;
}
}
async getClosingInfo() {
var _a;
if ((await this.getIssue()).open) {
return;
}
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
});
let closingCommit;
for await (const event of this.octokit.paginate.iterator(options)) {
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if (timelineEvent.event === 'closed') {
closingCommit = {
hash: (_a = timelineEvent.commit_id) !== null && _a !== void 0 ? _a : undefined,
timestamp: +new Date(timelineEvent.created_at),
};
}
}
}
console.log(`Got ${closingCommit} as closing commit of ${this.issueData.number}`);
return closingCommit;
}
}
exports.OctoKitIssue = OctoKitIssue;
function isIssue(object) {
const isIssue = 'author' in object &&
'body' in object &&
'title' in object &&
'labels' in object &&
'open' in object &&
'locked' in object &&
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object;
return isIssue;
}

View File

@@ -0,0 +1,336 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { debug } from '@actions/core'
import { GitHub as GitHubAPI } from '@actions/github'
import { Octokit } from '@octokit/rest'
import { exec } from 'child_process'
import { getInput, logRateLimit } from '../utils/utils'
import { Comment, GitHub, GitHubIssue, Issue, Query, User } from './api'
export class OctoKit implements GitHub {
protected octokit: GitHubAPI
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
protected mockLabels: Set<string> = new Set()
constructor(
private token: string,
protected params: { repo: string; owner: string },
protected options: { readonly: boolean } = { readonly: false },
) {
this.octokit = new GitHubAPI(token)
}
async *query(query: Query): AsyncIterableIterator<GitHubIssue[]> {
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`
console.log(`Querying for ${q}:`)
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
...query,
q,
per_page: 100,
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
})
let pageNum = 0
const timeout = async () => {
if (pageNum < 2) {
/* pass */
} else if (pageNum < 4) {
await new Promise((resolve) => setTimeout(resolve, 3000))
} else {
await new Promise((resolve) => setTimeout(resolve, 30000))
}
}
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
await timeout()
await logRateLimit(this.token)
const page: Array<Octokit.SearchIssuesAndPullRequestsResponseItemsItem> = pageResponse.data
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`)
yield page.map(
(issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue)),
)
}
}
async createIssue(owner: string, repo: string, title: string, body: string): Promise<void> {
debug(`Creating issue \`${title}\` on ${owner}/${repo}`)
if (!this.options.readonly) await this.octokit.issues.create({ owner, repo, title, body })
}
protected octokitIssueToIssue(
issue: Octokit.IssuesGetResponse | Octokit.SearchIssuesAndPullRequestsResponseItemsItem,
): Issue {
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
number: issue.number,
title: issue.title,
labels: (issue.labels as Octokit.IssuesGetLabelResponse[]).map((label) => label.name),
open: issue.state === 'open',
locked: (issue as any).locked,
numComments: issue.comments,
reactions: (issue as any).reactions,
assignee: issue.assignee?.login ?? (issue as any).assignees?.[0]?.login,
milestoneId: issue.milestone?.number ?? null,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date((issue.closed_at as unknown) as string) : undefined,
}
}
private writeAccessCache: Record<string, boolean> = {}
async hasWriteAccess(user: User): Promise<boolean> {
if (user.name in this.writeAccessCache) {
debug('Got permissions from cache for ' + user)
return this.writeAccessCache[user.name]
}
debug('Fetching permissions for ' + user)
const permissions = (
await this.octokit.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})
).data.permission
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write')
}
async repoHasLabel(name: string): Promise<boolean> {
try {
await this.octokit.issues.getLabel({ ...this.params, name })
return true
} catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name)
}
throw err
}
}
async createLabel(name: string, color: string, description: string): Promise<void> {
debug('Creating label ' + name)
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name })
else this.mockLabels.add(name)
}
async deleteLabel(name: string): Promise<void> {
debug('Deleting label ' + name)
try {
if (!this.options.readonly) await this.octokit.issues.deleteLabel({ ...this.params, name })
} catch (err) {
if (err.status === 404) {
return
}
throw err
}
}
async readConfig(path: string): Promise<any> {
debug('Reading config at ' + path)
const repoPath = `.github/${path}.json`
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data
if ('type' in data && data.type === 'file') {
if (data.encoding === 'base64' && data.content) {
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'))
}
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`)
}
throw Error('Found directory at config path when expecting file' + JSON.stringify(data))
}
async releaseContainsCommit(release: string, commit: string): Promise<boolean> {
if (getInput('commitReleasedDebuggingOverride')) {
return true
}
return new Promise((resolve, reject) =>
exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) =>
!err || err.code === 1 ? resolve(!err) : reject(err),
),
)
}
}
export class OctoKitIssue extends OctoKit implements GitHubIssue {
constructor(
token: string,
protected params: { repo: string; owner: string },
private issueData: { number: number } | Issue,
options: { readonly: boolean } = { readonly: false },
) {
super(token, params, options)
}
async addAssignee(assignee: string): Promise<void> {
debug('Adding assignee ' + assignee + ' to ' + this.issueData.number)
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
})
}
}
async closeIssue(): Promise<void> {
debug('Closing issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
})
}
async lockIssue(): Promise<void> {
debug('Locking issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number })
}
async getIssue(): Promise<Issue> {
if (isIssue(this.issueData)) {
debug('Got issue data from query result ' + this.issueData.number)
return this.issueData
}
console.log('Fetching issue ' + this.issueData.number)
const issue = (
await this.octokit.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})
).data
return (this.issueData = this.octokitIssueToIssue(issue))
}
async postComment(body: string): Promise<void> {
debug(`Posting comment ${body} on ${this.issueData.number}`)
if (!this.options.readonly)
await this.octokit.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
})
}
async deleteComment(id: number): Promise<void> {
debug(`Deleting comment ${id} on ${this.issueData.number}`)
if (!this.options.readonly)
await this.octokit.issues.deleteComment({
owner: this.params.owner,
repo: this.params.repo,
comment_id: id,
})
}
async setMilestone(milestoneId: number) {
debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
})
}
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
debug('Fetching comments for ' + this.issueData.number)
const response = this.octokit.paginate.iterator(
this.octokit.issues.listComments.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
}),
)
for await (const page of response) {
yield (page.data as Octokit.IssuesListCommentsResponseItem[]).map((comment) => ({
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
body: comment.body,
id: comment.id,
timestamp: +new Date(comment.created_at),
}))
}
}
async addLabel(name: string): Promise<void> {
debug(`Adding label ${name} to ${this.issueData.number}`)
if (!(await this.repoHasLabel(name))) {
throw Error(`Action could not execute becuase label ${name} is not defined.`)
}
if (!this.options.readonly)
await this.octokit.issues.addLabels({
...this.params,
issue_number: this.issueData.number,
labels: [name],
})
}
async removeLabel(name: string): Promise<void> {
debug(`Removing label ${name} from ${this.issueData.number}`)
try {
if (!this.options.readonly)
await this.octokit.issues.removeLabel({
...this.params,
issue_number: this.issueData.number,
name,
})
} catch (err) {
if (err.status === 404) {
console.log(`Label ${name} not found on issue`)
return
}
throw err
}
}
async getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
if ((await this.getIssue()).open) {
return
}
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
})
let closingCommit: { hash: string | undefined; timestamp: number } | undefined
for await (const event of this.octokit.paginate.iterator(options)) {
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
for (const timelineEvent of timelineEvents) {
if (timelineEvent.event === 'closed') {
closingCommit = {
hash: timelineEvent.commit_id ?? undefined,
timestamp: +new Date(timelineEvent.created_at),
}
}
}
}
console.log(`Got ${closingCommit} as closing commit of ${this.issueData.number}`)
return closingCommit
}
}
function isIssue(object: any): object is Issue {
const isIssue =
'author' in object &&
'body' in object &&
'title' in object &&
'labels' in object &&
'open' in object &&
'locked' in object &&
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object
return isIssue
}

View File

@@ -0,0 +1,123 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
class Testbed {
constructor(config) {
var _a, _b, _c, _d, _e;
this.config = {
globalLabels: (_a = config === null || config === void 0 ? void 0 : config.globalLabels) !== null && _a !== void 0 ? _a : [],
configs: (_b = config === null || config === void 0 ? void 0 : config.configs) !== null && _b !== void 0 ? _b : {},
writers: (_c = config === null || config === void 0 ? void 0 : config.writers) !== null && _c !== void 0 ? _c : [],
releasedCommits: (_d = config === null || config === void 0 ? void 0 : config.releasedCommits) !== null && _d !== void 0 ? _d : [],
queryRunner: (_e = config === null || config === void 0 ? void 0 : config.queryRunner) !== null && _e !== void 0 ? _e : async function* () {
yield [];
},
};
}
async *query(query) {
for await (const page of this.config.queryRunner(query)) {
yield page.map((issue) => issue instanceof TestbedIssue ? issue : new TestbedIssue(this.config, issue));
}
}
async createIssue(_owner, _repo, _title, _body) {
// pass...
}
async readConfig(path) {
return JSON.parse(JSON.stringify(this.config.configs[path]));
}
async hasWriteAccess(user) {
return this.config.writers.includes(user.name);
}
async repoHasLabel(label) {
return this.config.globalLabels.includes(label);
}
async createLabel(label, _color, _description) {
this.config.globalLabels.push(label);
}
async deleteLabel(labelToDelete) {
this.config.globalLabels = this.config.globalLabels.filter((label) => label !== labelToDelete);
}
async releaseContainsCommit(_release, commit) {
return this.config.releasedCommits.includes(commit);
}
}
exports.Testbed = Testbed;
class TestbedIssue extends Testbed {
constructor(globalConfig, issueConfig) {
var _a, _b, _c;
super(globalConfig);
issueConfig = issueConfig !== null && issueConfig !== void 0 ? issueConfig : {};
issueConfig.comments = (_a = issueConfig === null || issueConfig === void 0 ? void 0 : issueConfig.comments) !== null && _a !== void 0 ? _a : [];
issueConfig.labels = (_b = issueConfig === null || issueConfig === void 0 ? void 0 : issueConfig.labels) !== null && _b !== void 0 ? _b : [];
issueConfig.issue = {
author: { name: 'JacksonKearl' },
body: 'issue body',
locked: false,
numComments: ((_c = issueConfig === null || issueConfig === void 0 ? void 0 : issueConfig.comments) === null || _c === void 0 ? void 0 : _c.length) || 0,
number: 1,
open: true,
title: 'issue title',
assignee: undefined,
reactions: {
'+1': 0,
'-1': 0,
confused: 0,
eyes: 0,
heart: 0,
hooray: 0,
laugh: 0,
rocket: 0,
},
closedAt: undefined,
createdAt: +new Date(),
updatedAt: +new Date(),
...issueConfig.issue,
};
this.issueConfig = issueConfig;
}
async addAssignee(assignee) {
this.issueConfig.issue.assignee = assignee;
}
async setMilestone(milestoneId) {
this.issueConfig.issue.milestoneId = milestoneId;
}
async getIssue() {
const labels = [...this.issueConfig.labels];
return { ...this.issueConfig.issue, labels };
}
async postComment(body, author) {
this.issueConfig.comments.push({
author: { name: author !== null && author !== void 0 ? author : 'bot' },
body,
id: Math.random(),
timestamp: +new Date(),
});
}
async deleteComment(id) {
this.issueConfig.comments = this.issueConfig.comments.filter((comment) => comment.id !== id);
}
async *getComments(last) {
yield last
? [this.issueConfig.comments[this.issueConfig.comments.length - 1]]
: this.issueConfig.comments;
}
async addLabel(label) {
this.issueConfig.labels.push(label);
}
async removeLabel(labelToDelete) {
this.issueConfig.labels = this.issueConfig.labels.filter((label) => label !== labelToDelete);
}
async closeIssue() {
this.issueConfig.issue.open = false;
}
async lockIssue() {
this.issueConfig.issue.locked = true;
}
async getClosingInfo() {
return this.issueConfig.closingCommit;
}
}
exports.TestbedIssue = TestbedIssue;

View File

@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Comment, GitHub, GitHubIssue, Issue, Query, User } from './api'
type TestbedConfig = {
globalLabels: string[]
configs: Record<string, any>
writers: string[]
releasedCommits: string[]
queryRunner: (query: Query) => AsyncIterableIterator<(TestbedIssueConstructorArgs | TestbedIssue)[]>
}
export type TestbedConstructorArgs = Partial<TestbedConfig>
export class Testbed implements GitHub {
public config: TestbedConfig
constructor(config?: TestbedConstructorArgs) {
this.config = {
globalLabels: config?.globalLabels ?? [],
configs: config?.configs ?? {},
writers: config?.writers ?? [],
releasedCommits: config?.releasedCommits ?? [],
queryRunner:
config?.queryRunner ??
async function* () {
yield []
},
}
}
async *query(query: Query): AsyncIterableIterator<GitHubIssue[]> {
for await (const page of this.config.queryRunner(query)) {
yield page.map((issue) =>
issue instanceof TestbedIssue ? issue : new TestbedIssue(this.config, issue),
)
}
}
async createIssue(_owner: string, _repo: string, _title: string, _body: string): Promise<void> {
// pass...
}
async readConfig(path: string): Promise<any> {
return JSON.parse(JSON.stringify(this.config.configs[path]))
}
async hasWriteAccess(user: User): Promise<boolean> {
return this.config.writers.includes(user.name)
}
async repoHasLabel(label: string): Promise<boolean> {
return this.config.globalLabels.includes(label)
}
async createLabel(label: string, _color: string, _description: string): Promise<void> {
this.config.globalLabels.push(label)
}
async deleteLabel(labelToDelete: string): Promise<void> {
this.config.globalLabels = this.config.globalLabels.filter((label) => label !== labelToDelete)
}
async releaseContainsCommit(_release: string, commit: string): Promise<boolean> {
return this.config.releasedCommits.includes(commit)
}
}
type TestbedIssueConfig = {
issue: Omit<Issue, 'labels'>
comments: Comment[]
labels: string[]
closingCommit: { hash: string | undefined; timestamp: number } | undefined
}
export type TestbedIssueConstructorArgs = Partial<Omit<TestbedIssueConfig, 'issue'>> & {
issue?: Partial<Omit<Issue, 'labels'>>
}
export class TestbedIssue extends Testbed implements GitHubIssue {
public issueConfig: TestbedIssueConfig
constructor(globalConfig?: TestbedConstructorArgs, issueConfig?: TestbedIssueConstructorArgs) {
super(globalConfig)
issueConfig = issueConfig ?? {}
issueConfig.comments = issueConfig?.comments ?? []
issueConfig.labels = issueConfig?.labels ?? []
issueConfig.issue = {
author: { name: 'JacksonKearl' },
body: 'issue body',
locked: false,
numComments: issueConfig?.comments?.length || 0,
number: 1,
open: true,
title: 'issue title',
assignee: undefined,
reactions: {
'+1': 0,
'-1': 0,
confused: 0,
eyes: 0,
heart: 0,
hooray: 0,
laugh: 0,
rocket: 0,
},
closedAt: undefined,
createdAt: +new Date(),
updatedAt: +new Date(),
...issueConfig.issue,
}
this.issueConfig = issueConfig as TestbedIssueConfig
}
async addAssignee(assignee: string): Promise<void> {
this.issueConfig.issue.assignee = assignee
}
async setMilestone(milestoneId: number): Promise<void> {
this.issueConfig.issue.milestoneId = milestoneId
}
async getIssue(): Promise<Issue> {
const labels = [...this.issueConfig.labels]
return { ...this.issueConfig.issue, labels }
}
async postComment(body: string, author?: string): Promise<void> {
this.issueConfig.comments.push({
author: { name: author ?? 'bot' },
body,
id: Math.random(),
timestamp: +new Date(),
})
}
async deleteComment(id: number): Promise<void> {
this.issueConfig.comments = this.issueConfig.comments.filter((comment) => comment.id !== id)
}
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
yield last
? [this.issueConfig.comments[this.issueConfig.comments.length - 1]]
: this.issueConfig.comments
}
async addLabel(label: string): Promise<void> {
this.issueConfig.labels.push(label)
}
async removeLabel(labelToDelete: string): Promise<void> {
this.issueConfig.labels = this.issueConfig.labels.filter((label) => label !== labelToDelete)
}
async closeIssue(): Promise<void> {
this.issueConfig.issue.open = false
}
async lockIssue(): Promise<void> {
this.issueConfig.issue.locked = true
}
async getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
return this.issueConfig.closingCommit
}
}

View File

@@ -0,0 +1,12 @@
name: 'PR Labeler'
description: 'Automatically add a Label to a PR'
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
label:
description: Github label to add to the PR
required: true
runs:
using: 'node12'
main: 'index.js'

View File

@@ -0,0 +1,22 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const core = require("@actions/core");
const github_1 = require("@actions/github");
const octokit_1 = require("../api/octokit");
const utils_1 = require("../utils/utils");
const token = utils_1.getRequiredInput('token');
const label = utils_1.getRequiredInput('label');
async function main() {
const pr = new octokit_1.OctoKitIssue(token, github_1.context.repo, { number: github_1.context.issue.number });
pr.addLabel(label);
}
main()
.then(() => utils_1.logRateLimit(token))
.catch(async (error) => {
core.setFailed(error.message);
await utils_1.logErrorToIssue(error.message, true, token);
});

View File

@@ -0,0 +1,26 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as core from '@actions/core'
import { context } from '@actions/github'
import { OctoKitIssue } from '../api/octokit'
import { getRequiredInput, logErrorToIssue, logRateLimit } from '../utils/utils'
const token = getRequiredInput('token');
const label = getRequiredInput('label');
async function main() {
const pr = new OctoKitIssue(token, context.repo, { number: context.issue.number });
pr.addLabel(label);
}
main()
.then(() => logRateLimit(token))
.catch(async (error) => {
core.setFailed(error.message)
await logErrorToIssue(error.message, true, token)
})

View File

@@ -0,0 +1,24 @@
{
"name": "github-actions",
"version": "1.0.0",
"description": "GitHub Actions",
"scripts": {
"test": "mocha -r ts-node/register **/*.test.ts",
"build": "tsc -p ./tsconfig.json",
"lint": "eslint -c .eslintrc --fix --ext .ts .",
"watch-typecheck": "tsc --watch"
},
"repository": {
"type": "git",
"url": "git+https://github.com/microsoft/azuredatastudio.git"
},
"keywords": [],
"author": "",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/github": "^2.1.1",
"axios": "^0.21.4",
"ts-node": "^8.6.2",
"typescript": "^3.8.3"
}
}

View File

@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es2019",
"strict": true,
"module": "commonjs",
"moduleResolution": "node",
"removeComments": false,
"resolveJsonModule": true,
"lib": [
"es2020"
],
},
"include": [
"./**/*.ts"
],
"exclude": [
"node_modules"
]
}

View File

@@ -0,0 +1,72 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const core = require("@actions/core");
const github_1 = require("@actions/github");
const axios_1 = require("axios");
const octokit_1 = require("../api/octokit");
exports.getInput = (name) => core.getInput(name) || undefined;
exports.getRequiredInput = (name) => core.getInput(name, { required: true });
exports.normalizeIssue = (issue) => {
const { body, title } = issue;
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body);
const isFeatureRequest = body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body);
const cleanse = (str) => str
.toLowerCase()
.replace(/<!--.*?-->/gu, '')
.replace(/.* version: .*/gu, '')
.replace(/issue type: .*/gu, '')
.replace(/<details>(.|\s)*?<\/details>/gu, '')
.replace(/vs ?code/gu, '')
.replace(/we have written.*please paste./gu, '')
.replace(/steps to reproduce:/gu, '')
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/```(.|\s)*?```/gu, '')
.replace(/!?\[.*?\]\(.*?\)/gu, '')
.replace(/\s+/gu, ' ');
return {
body: cleanse(body),
title: cleanse(title),
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
};
};
exports.loadLatestRelease = async (quality) => (await axios_1.default.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data;
exports.daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
exports.daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
exports.logRateLimit = async (token) => {
const usageData = (await new github_1.GitHub(token).rateLimit.get()).data.resources;
['core', 'graphql', 'search'].forEach(async (category) => {
const usage = 1 - usageData[category].remaining / usageData[category].limit;
const message = `Usage at ${usage} for ${category}`;
if (usage > 0) {
console.log(message);
}
if (usage > 0.5) {
await exports.logErrorToIssue(message, false, token);
}
});
};
exports.logErrorToIssue = async (message, ping, token) => {
// Attempt to wait out abuse detection timeout if present
await new Promise((resolve) => setTimeout(resolve, 10000));
const dest = github_1.context.repo.repo === 'vscode-internalbacklog'
? { repo: 'vscode-internalbacklog', issue: 974 }
: { repo: 'vscode', issue: 93814 };
return new octokit_1.OctoKitIssue(token, { owner: 'Microsoft', repo: dest.repo }, { number: dest.issue })
.postComment(`
Workflow: ${github_1.context.workflow}
Error: ${message}
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${github_1.context.issue.number}
Repo: ${github_1.context.repo.owner}/${github_1.context.repo.repo}
<!-- Context:
${JSON.stringify(github_1.context, null, 2).replace(/<!--/gu, '<@--').replace(/-->/gu, '--@>')}
-->
`);
};

View File

@@ -0,0 +1,95 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as core from '@actions/core'
import { context, GitHub } from '@actions/github'
import axios from 'axios'
import { OctoKitIssue } from '../api/octokit'
import { Issue } from '../api/api'
export const getInput = (name: string) => core.getInput(name) || undefined
export const getRequiredInput = (name: string) => core.getInput(name, { required: true })
export const normalizeIssue = (
issue: Issue,
): { body: string; title: string; issueType: 'bug' | 'feature_request' | 'unknown' } => {
const { body, title } = issue
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body)
const isFeatureRequest =
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body)
const cleanse = (str: string) =>
str
.toLowerCase()
.replace(/<!--.*?-->/gu, '')
.replace(/.* version: .*/gu, '')
.replace(/issue type: .*/gu, '')
.replace(/<details>(.|\s)*?<\/details>/gu, '')
.replace(/vs ?code/gu, '')
.replace(/we have written.*please paste./gu, '')
.replace(/steps to reproduce:/gu, '')
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/```(.|\s)*?```/gu, '')
.replace(/!?\[.*?\]\(.*?\)/gu, '')
.replace(/\s+/gu, ' ')
return {
body: cleanse(body),
title: cleanse(title),
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
}
}
export interface Release {
productVersion: string
timestamp: number
version: string
}
export const loadLatestRelease = async (quality: 'stable' | 'insider'): Promise<Release | undefined> =>
(await axios.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data
export const daysAgoToTimestamp = (days: number): number => +new Date(Date.now() - days * 24 * 60 * 60 * 1000)
export const daysAgoToHumanReadbleDate = (days: number) =>
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '')
export const logRateLimit = async (token: string) => {
const usageData = (await new GitHub(token).rateLimit.get()).data.resources
;(['core', 'graphql', 'search'] as const).forEach(async (category) => {
const usage = 1 - usageData[category].remaining / usageData[category].limit
const message = `Usage at ${usage} for ${category}`
if (usage > 0) {
console.log(message)
}
if (usage > 0.5) {
await logErrorToIssue(message, false, token)
}
})
}
export const logErrorToIssue = async (message: string, ping: boolean, token: string): Promise<void> => {
// Attempt to wait out abuse detection timeout if present
await new Promise((resolve) => setTimeout(resolve, 10000))
const dest =
context.repo.repo === 'vscode-internalbacklog'
? { repo: 'vscode-internalbacklog', issue: 974 }
: { repo: 'vscode', issue: 93814 }
return new OctoKitIssue(token, { owner: 'Microsoft', repo: dest.repo }, { number: dest.issue })
.postComment(`
Workflow: ${context.workflow}
Error: ${message}
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue.number}
Repo: ${context.repo.owner}/${context.repo.repo}
<!-- Context:
${JSON.stringify(context, null, 2).replace(/<!--/gu, '<@--').replace(/-->/gu, '--@>')}
-->
`)
}

421
build/actions/yarn.lock Normal file
View File

@@ -0,0 +1,421 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@actions/core@^1.2.6":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09"
integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==
"@actions/github@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@actions/github/-/github-2.1.1.tgz#bcabedff598196d953f58ba750d5e75549a75142"
integrity sha512-kAgTGUx7yf5KQCndVeHSwCNZuDBvPyxm5xKTswW2lofugeuC1AZX73nUUVDNaysnM9aKFMHv9YCdVJbg7syEyA==
dependencies:
"@actions/http-client" "^1.0.3"
"@octokit/graphql" "^4.3.1"
"@octokit/rest" "^16.43.1"
"@actions/http-client@^1.0.3":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.8.tgz#8bd76e8eca89dc8bcf619aa128eba85f7a39af45"
integrity sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==
dependencies:
tunnel "0.0.6"
"@octokit/auth-token@^2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f"
integrity sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==
dependencies:
"@octokit/types" "^2.0.0"
"@octokit/endpoint@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7"
integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A==
dependencies:
"@octokit/types" "^2.11.1"
is-plain-object "^3.0.0"
universal-user-agent "^5.0.0"
"@octokit/graphql@^4.3.1":
version "4.3.1"
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.3.1.tgz#9ee840e04ed2906c7d6763807632de84cdecf418"
integrity sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==
dependencies:
"@octokit/request" "^5.3.0"
"@octokit/types" "^2.0.0"
universal-user-agent "^4.0.0"
"@octokit/plugin-paginate-rest@^1.1.1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc"
integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==
dependencies:
"@octokit/types" "^2.0.1"
"@octokit/plugin-request-log@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e"
integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==
"@octokit/plugin-rest-endpoint-methods@2.4.0":
version "2.4.0"
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e"
integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==
dependencies:
"@octokit/types" "^2.0.1"
deprecation "^2.3.1"
"@octokit/request-error@^1.0.2":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801"
integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==
dependencies:
"@octokit/types" "^2.0.0"
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request-error@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.0.tgz#94ca7293373654400fbb2995f377f9473e00834b"
integrity sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw==
dependencies:
"@octokit/types" "^2.0.0"
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request@^5.2.0", "@octokit/request@^5.3.0":
version "5.4.2"
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee"
integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw==
dependencies:
"@octokit/endpoint" "^6.0.1"
"@octokit/request-error" "^2.0.0"
"@octokit/types" "^2.11.1"
deprecation "^2.0.0"
is-plain-object "^3.0.0"
node-fetch "^2.3.0"
once "^1.4.0"
universal-user-agent "^5.0.0"
"@octokit/rest@^16.43.1":
version "16.43.1"
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b"
integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==
dependencies:
"@octokit/auth-token" "^2.4.0"
"@octokit/plugin-paginate-rest" "^1.1.1"
"@octokit/plugin-request-log" "^1.0.0"
"@octokit/plugin-rest-endpoint-methods" "2.4.0"
"@octokit/request" "^5.2.0"
"@octokit/request-error" "^1.0.2"
atob-lite "^2.0.0"
before-after-hook "^2.0.0"
btoa-lite "^1.0.0"
deprecation "^2.0.0"
lodash.get "^4.4.2"
lodash.set "^4.3.2"
lodash.uniq "^4.5.0"
octokit-pagination-methods "^1.1.0"
once "^1.4.0"
universal-user-agent "^4.0.0"
"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1":
version "2.12.1"
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.12.1.tgz#4a26b4a85ec121043d3b0745b5798f9d8fd968ca"
integrity sha512-LRLR1tjbcCfAmUElvTmMvLEzstpx6Xt/aQVTg2xvd+kHA2Ekp1eWl5t+gU7bcwjXHYEAzh4hH4WH+kS3vh+wRw==
dependencies:
"@types/node" ">= 8"
"@types/node@>= 8":
version "13.13.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54"
integrity sha512-LB2R1Oyhpg8gu4SON/mfforE525+Hi/M1ineICEDftqNVTyFg1aRIeGuTvXAoWHc4nbrFncWtJgMmoyRvuGh7A==
arg@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
atob-lite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696"
integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=
axios@^0.21.4:
version "0.21.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
dependencies:
follow-redirects "^1.14.0"
before-after-hook@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635"
integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==
btoa-lite@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc=
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
deprecation@^2.0.0, deprecation@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
dependencies:
cross-spawn "^6.0.0"
get-stream "^4.0.0"
is-stream "^1.1.0"
npm-run-path "^2.0.0"
p-finally "^1.0.0"
signal-exit "^3.0.0"
strip-eof "^1.0.0"
follow-redirects@^1.14.0:
version "1.14.8"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
is-plain-object@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928"
integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==
dependencies:
isobject "^4.0.0"
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
isobject@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0"
integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==
lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
lodash.set@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
macos-release@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f"
integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-fetch@^2.3.0:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
npm-run-path@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
dependencies:
path-key "^2.0.0"
octokit-pagination-methods@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==
once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
os-name@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
dependencies:
macos-release "^2.2.0"
windows-release "^3.1.0"
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
semver@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
dependencies:
shebang-regex "^1.0.0"
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
signal-exit@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
source-map-support@^0.5.17:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
ts-node@^8.6.2:
version "8.9.0"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.0.tgz#d7bf7272dcbecd3a2aa18bd0b96c7d2f270c15d4"
integrity sha512-rwkXfOs9zmoHrV8xE++dmNd6ZIS+nmHHCxcV53ekGJrxFLMbp+pizpPS07ARvhwneCIECPppOwbZHvw9sQtU4w==
dependencies:
arg "^4.1.0"
diff "^4.0.1"
make-error "^1.1.1"
source-map-support "^0.5.17"
yn "3.1.1"
tunnel@0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
typescript@^3.8.3:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
universal-user-agent@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557"
integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==
dependencies:
os-name "^3.1.0"
universal-user-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9"
integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==
dependencies:
os-name "^3.1.0"
which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
windows-release@^3.1.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0"
integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==
dependencies:
execa "^1.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==

View File

@@ -13,8 +13,17 @@ const shasum = crypto.createHash('sha1');
shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
// Add `yarn.lock` files
// Add `package.json` and `yarn.lock` files
for (let dir of dirs) {
const packageJsonPath = path.join(ROOT, dir, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
const relevantPackageJsonSections = {
dependencies: packageJson.dependencies,
devDependencies: packageJson.devDependencies,
optionalDependencies: packageJson.optionalDependencies,
resolutions: packageJson.resolutions
};
shasum.update(JSON.stringify(relevantPackageJsonSections));
const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
shasum.update(fs.readFileSync(yarnLockPath));
}

View File

@@ -18,8 +18,18 @@ shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));
shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
// Add `yarn.lock` files
// Add `package.json` and `yarn.lock` files
for (let dir of dirs) {
const packageJsonPath = path.join(ROOT, dir, 'package.json');
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());
const relevantPackageJsonSections = {
dependencies: packageJson.dependencies,
devDependencies: packageJson.devDependencies,
optionalDependencies: packageJson.optionalDependencies,
resolutions: packageJson.resolutions
};
shasum.update(JSON.stringify(relevantPackageJsonSections));
const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
shasum.update(fs.readFileSync(yarnLockPath));
}

View File

@@ -30,20 +30,29 @@ function getPlatform(product, os, arch, type) {
case 'user-setup':
return `${asset}-user`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'server':
if (arch === 'arm64') {
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
return arch === 'ia32' ? 'server-win32' : `server-win32-${arch}`;
case 'web':
if (arch === 'arm64') {
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
return arch === 'ia32' ? 'server-win32-web' : `server-win32-${arch}-web`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'alpine':
switch (product) {
case 'server':
return `server-alpine-${arch}`;
case 'web':
return `server-alpine-${arch}-web`;
default:
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'linux':
switch (type) {
@@ -58,14 +67,14 @@ function getPlatform(product, os, arch, type) {
case 'web':
return arch === 'standalone' ? 'web-standalone' : `server-linux-${arch}-web`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'deb-package':
return `linux-deb-${arch}`;
case 'rpm-package':
return `linux-rpm-${arch}`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'darwin':
switch (product) {
@@ -78,14 +87,14 @@ function getPlatform(product, os, arch, type) {
return 'server-darwin';
case 'web':
if (arch !== 'x64') {
throw `What should the platform be?: ${product} ${os} ${arch} ${type}`;
throw new Error(`What should the platform be?: ${product} ${os} ${arch} ${type}`);
}
return 'server-darwin-web';
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
}
// Contains all of the logic for mapping types to our actual types in CosmosDB

View File

@@ -45,20 +45,29 @@ function getPlatform(product: string, os: string, arch: string, type: string): s
case 'user-setup':
return `${asset}-user`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'server':
if (arch === 'arm64') {
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
return arch === 'ia32' ? 'server-win32' : `server-win32-${arch}`;
case 'web':
if (arch === 'arm64') {
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
return arch === 'ia32' ? 'server-win32-web' : `server-win32-${arch}-web`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'alpine':
switch (product) {
case 'server':
return `server-alpine-${arch}`;
case 'web':
return `server-alpine-${arch}-web`;
default:
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'linux':
switch (type) {
@@ -73,14 +82,14 @@ function getPlatform(product: string, os: string, arch: string, type: string): s
case 'web':
return arch === 'standalone' ? 'web-standalone' : `server-linux-${arch}-web`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'deb-package':
return `linux-deb-${arch}`;
case 'rpm-package':
return `linux-rpm-${arch}`;
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
case 'darwin':
switch (product) {
@@ -93,14 +102,14 @@ function getPlatform(product: string, os: string, arch: string, type: string): s
return 'server-darwin';
case 'web':
if (arch !== 'x64') {
throw `What should the platform be?: ${product} ${os} ${arch} ${type}`;
throw new Error(`What should the platform be?: ${product} ${os} ${arch} ${type}`);
}
return 'server-darwin-web';
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
default:
throw `Unrecognized: ${product} ${os} ${arch} ${type}`;
throw new Error(`Unrecognized: ${product} ${os} ${arch} ${type}`);
}
}

View File

@@ -5,7 +5,7 @@
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const retry_1 = require("./retry");
const { installDefaultBrowsersForNpmInstall } = require('playwright-core/lib/utils/registry');
const { installDefaultBrowsersForNpmInstall } = require('playwright/lib/utils/registry');
async function install() {
await (0, retry_1.retry)(() => installDefaultBrowsersForNpmInstall());
}

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { retry } from './retry';
const { installDefaultBrowsersForNpmInstall } = require('playwright-core/lib/utils/registry');
const { installDefaultBrowsersForNpmInstall } = require('playwright/lib/utils/registry');
async function install() {
await retry(() => installDefaultBrowsersForNpmInstall());

View File

@@ -69,9 +69,17 @@ function main([esrpCliPath, type, cert, username, password, folderPath, pattern]
'-r', 'true',
'-e', keyFile,
];
cp.spawnSync('dotnet', args, { stdio: 'inherit' });
try {
cp.execFileSync('dotnet', args, { stdio: 'inherit' });
}
catch (err) {
console.error('ESRP failed');
console.error(err);
process.exit(1);
}
}
exports.main = main;
if (require.main === module) {
main(process.argv.slice(2));
process.exit(0);
}

View File

@@ -76,9 +76,16 @@ export function main([esrpCliPath, type, cert, username, password, folderPath, p
'-e', keyFile,
];
cp.spawnSync('dotnet', args, { stdio: 'inherit' });
try {
cp.execFileSync('dotnet', args, { stdio: 'inherit' });
} catch (err) {
console.error('ESRP failed');
console.error(err);
process.exit(1);
}
}
if (require.main === module) {
main(process.argv.slice(2));
process.exit(0);
}

View File

@@ -84,7 +84,6 @@ steps:
set -e
export npm_config_arch=$(VSCODE_ARCH)
export npm_config_node_gyp=$(which node-gyp)
export npm_config_build_from_source=true
export SDKROOT=/Applications/Xcode_12.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk
for i in {1..3}; do # try 3 times, for Terrapin
@@ -224,7 +223,7 @@ steps:
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --screenshots .build/logs/smoke-tests
yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
displayName: Run smoke tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
@@ -234,7 +233,7 @@ steps:
APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH)
APP_NAME="`ls $APP_ROOT | head -n 1`"
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-darwin" \
yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --remote --screenshots .build/logs/smoke-tests
yarn smoketest-no-compile --build "$APP_ROOT/$APP_NAME" --remote --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
displayName: Run smoke tests (Remote)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))

View File

@@ -17,7 +17,7 @@ steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
@@ -137,7 +137,7 @@ steps:
yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots" --log "$(build.artifactstagingdirectory)/logs/darwin/smoke.log" --extensionsDir "$(build.sourcesdirectory)/extensions"
displayName: Run smoke tests (Electron) (Continue on Error)
continueOnError: true
condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), ne(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
condition: and(succeeded(), and(or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')), ne(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
- script: |
set -e
@@ -145,7 +145,7 @@ steps:
APP_NAME="`ls $APP_ROOT | head -n 1`"
yarn smoketest --build "$APP_ROOT/$APP_NAME" --screenshots "$(build.artifactstagingdirectory)/smokeshots" --log "$(build.artifactstagingdirectory)/logs/darwin/smoke.log" --extensionsDir "$(build.sourcesdirectory)/extensions"
displayName: Run smoke tests (Electron) (Fail on Error)
condition: and(succeeded(), and(eq(variables['RUN_TESTS'], 'true'), eq(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
condition: and(succeeded(), and(or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')), eq(variables['SMOKE_FAIL_ON_ERROR'], 'true')))
# - script: |
# set -e
@@ -213,12 +213,12 @@ steps:
condition: always()
- task: PublishTestResults@2
displayName: 'Publish Test Results test-results.xml'
displayName: 'Publish Test Results'
inputs:
testResultsFiles: 'test-results.xml'
searchFolder: '$(Build.SourcesDirectory)'
testResultsFiles: "*-results.xml"
searchFolder: "$(Build.ArtifactStagingDirectory)/test-results"
continueOnError: true
condition: and(succeededOrFailed(), eq(variables['RUN_TESTS'], 'true'))
condition: and(succeededOrFailed(), or(eq(variables['RUN_TESTS'], 'true'), eq(variables['RUN_SMOKE_TESTS'], 'true')))
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage from $(Build.SourcesDirectory)/.build/coverage/cobertura-coverage.xml'

View File

@@ -11,7 +11,7 @@ pr:
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: AzureKeyVault@1
displayName: "Azure Key Vault: Get Secrets"

View File

@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:

View File

@@ -10,7 +10,7 @@ steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:

View File

@@ -31,7 +31,7 @@ steps:
azureSubscriptionEndpoint: "vscode-builds-subscription"
azureContainerRegistry: vscodehub.azurecr.io
command: "Run an image"
imageName: "vscode-linux-build-agent:alpine"
imageName: "vscode-linux-build-agent:alpine-$(VSCODE_ARCH)"
containerCommand: uname
- script: |
@@ -106,15 +106,31 @@ steps:
node build/azure-pipelines/mixin
displayName: Mix in quality
- script: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
displayName: 'Register Docker QEMU'
condition: eq(variables['VSCODE_ARCH'], 'arm64')
- script: |
set -e
docker run -e VSCODE_QUALITY -v $(pwd):/root/vscode -v ~/.netrc:/root/.netrc vscodehub.azurecr.io/vscode-linux-build-agent:alpine /root/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh
docker run -e VSCODE_QUALITY -v $(pwd):/root/vscode -v ~/.netrc:/root/.netrc vscodehub.azurecr.io/vscode-linux-build-agent:alpine-$(VSCODE_ARCH) /root/vscode/build/azure-pipelines/linux/alpine/install-dependencies.sh
displayName: Prebuild
- script: |
set -e
yarn gulp vscode-reh-linux-alpine-min-ci
yarn gulp vscode-reh-web-linux-alpine-min-ci
case $VSCODE_ARCH in
x64)
reh='vscode-reh-linux-alpine-min-ci'
rehweb='vscode-reh-web-linux-alpine-min-ci'
;;
arm64)
reh='vscode-reh-alpine-arm64-min-ci'
rehweb='vscode-reh-web-alpine-arm64-min-ci'
;;
esac
yarn gulp $reh
yarn gulp $rehweb
displayName: Build
- script: |
@@ -122,7 +138,14 @@ steps:
REPO="$(pwd)"
ROOT="$REPO/.."
PLATFORM_LINUX="linux-alpine"
case $VSCODE_ARCH in
x64)
PLATFORM_LINUX='linux-alpine'
;;
arm64)
PLATFORM_LINUX='alpine-arm64'
;;
esac
# Publish Remote Extension Host
LEGACY_SERVER_BUILD_NAME="vscode-reh-$PLATFORM_LINUX"
@@ -144,12 +167,23 @@ steps:
displayName: Prepare for publish
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- publish: $(Agent.BuildDirectory)/vscode-server-alpine-$(VSCODE_ARCH).tar.gz
artifact: vscode_server_alpine_$(VSCODE_ARCH)_archive-unsigned
displayName: Publish server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'x64'))
- publish: $(Agent.BuildDirectory)/vscode-server-alpine-$(VSCODE_ARCH)-web.tar.gz
artifact: vscode_web_alpine_$(VSCODE_ARCH)_archive-unsigned
displayName: Publish web server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), ne(variables['VSCODE_ARCH'], 'x64'))
# Legacy x64 artifact name
- publish: $(Agent.BuildDirectory)/vscode-server-linux-alpine.tar.gz
artifact: vscode_server_linux_alpine_archive-unsigned
displayName: Publish server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
displayName: Publish x64 server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), eq(variables['VSCODE_ARCH'], 'x64'))
- publish: $(Agent.BuildDirectory)/vscode-server-linux-alpine-web.tar.gz
artifact: vscode_web_linux_alpine_archive-unsigned
displayName: Publish web server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
displayName: Publish x64 web server archive
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'), eq(variables['VSCODE_ARCH'], 'x64'))

View File

@@ -76,7 +76,6 @@ steps:
- script: |
set -e
export npm_config_arch=$(NPM_ARCH)
export npm_config_build_from_source=true
if [ -z "$CC" ] || [ -z "$CXX" ]; then
# Download clang based on chromium revision used by vscode
@@ -91,7 +90,7 @@ steps:
# Set compiler toolchain
export CC=$PWD/.build/CR_Clang/bin/clang
export CXX=$PWD/.build/CR_Clang/bin/clang++
export CXXFLAGS="-nostdinc++ -D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export CXXFLAGS="-nostdinc++ -D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -D__NO_INLINE__ -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export LDFLAGS="-stdlib=libc++ -fuse-ld=lld -flto=thin -fsplit-lto-unit -L$PWD/.build/libcxx-objects -lc++abi"
fi
@@ -212,7 +211,7 @@ steps:
- script: |
set -e
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
yarn smoketest-no-compile --build "$APP_PATH" --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader" --screenshots .build/logs/smoke-tests
yarn smoketest-no-compile --build "$APP_PATH" --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader" --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
displayName: Run smoke tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
@@ -221,7 +220,7 @@ steps:
set -e
APP_PATH=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
yarn smoketest-no-compile --build "$APP_PATH" --remote --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader" --screenshots .build/logs/smoke-tests
yarn smoketest-no-compile --build "$APP_PATH" --remote --electronArgs="--disable-dev-shm-usage --use-gl=swiftshader" --screenshots $(Build.SourcesDirectory)/.build/logs/smoke-tests
timeoutInMinutes: 5
displayName: Run smoke tests (Remote)
condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))

View File

@@ -4,7 +4,7 @@ parameters:
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
@@ -121,7 +121,7 @@ steps:
set -e
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests" --coverage
displayName: Run unit tests (Electron)
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSIONS_ONLY'], 'true'))
- script: |
# Figure out the full absolute path of the product we just built
@@ -134,7 +134,7 @@ steps:
VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/azuredatastudio-reh-linux-x64" \
DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'))
condition: and(succeeded(), eq(variables['RUN_TESTS'], 'true'), ne(variables['EXTENSIONS_ONLY'], 'true'))
- script: |
# Figure out the full absolute path of the product we just built
@@ -178,11 +178,13 @@ steps:
set -e
yarn gulp vscode-linux-x64-build-deb
displayName: Build Deb
condition: and(succeeded(), ne(variables['EXTENSIONS_ONLY'], 'true'))
- script: |
set -e
yarn gulp vscode-linux-x64-build-rpm
displayName: Build Rpm
condition: and(succeeded(), ne(variables['EXTENSIONS_ONLY'], 'true'))
- task: UseDotNet@2
displayName: 'Install .NET Core sdk for signing'

View File

@@ -6,6 +6,7 @@ schedules:
branches:
include:
- main
- joao/web
parameters:
- name: VSCODE_QUALITY
@@ -45,7 +46,11 @@ parameters:
type: boolean
default: true
- name: VSCODE_BUILD_LINUX_ALPINE
displayName: "🎯 Alpine Linux"
displayName: "🎯 Alpine Linux x64"
type: boolean
default: true
- name: VSCODE_BUILD_LINUX_ALPINE_ARM64
displayName: "🎯 Alpine Linux arm64"
type: boolean
default: true
- name: VSCODE_BUILD_MACOS
@@ -91,7 +96,7 @@ variables:
- name: VSCODE_BUILD_STAGE_WINDOWS
value: ${{ or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_32BIT, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true)) }}
- name: VSCODE_BUILD_STAGE_LINUX
value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_WEB, true)) }}
value: ${{ or(eq(parameters.VSCODE_BUILD_LINUX, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true), eq(parameters.VSCODE_BUILD_WEB, true)) }}
- name: VSCODE_BUILD_STAGE_MACOS
value: ${{ or(eq(parameters.VSCODE_BUILD_MACOS, true), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}
- name: VSCODE_CIBUILD
@@ -248,6 +253,15 @@ stages:
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE, true)) }}:
- job: LinuxAlpine
variables:
VSCODE_ARCH: x64
steps:
- template: linux/product-build-alpine.yml
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true)) }}:
- job: LinuxAlpineArm64
variables:
VSCODE_ARCH: arm64
steps:
- template: linux/product-build-alpine.yml

View File

@@ -58,7 +58,7 @@ stages:
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,ESRP-SSL-AADAuth,vscode-storage-key,builds-docdb-key-readwrite"
SecretsFilter: "github-distro-mixin-password"
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -94,7 +94,6 @@ stages:
addProjectDirToScanningExclusionList: true
env:
npm_config_arch: "$(NPM_ARCH)"
npm_config_build_from_source: true
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
displayName: CodeQL
@@ -106,7 +105,6 @@ stages:
retry { exec { yarn --frozen-lockfile } }
env:
npm_config_arch: "$(NPM_ARCH)"
npm_config_build_from_source: true
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
GITHUB_TOKEN: "$(github-distro-mixin-password)"
CHILD_CONCURRENCY: 1
@@ -155,7 +153,7 @@ stages:
inputs:
azureSubscription: "vscode-builds-subscription"
KeyVaultName: vscode
SecretsFilter: "github-distro-mixin-password,ESRP-SSL-AADAuth,vscode-storage-key,builds-docdb-key-readwrite"
SecretsFilter: "github-distro-mixin-password"
- script: |
set -e
@@ -190,7 +188,6 @@ stages:
- script: |
set -e
export npm_config_arch=$(NPM_ARCH)
export npm_config_build_from_source=true
if [ -z "$CC" ] || [ -z "$CXX" ]; then
# Download clang based on chromium revision used by vscode

View File

@@ -20,7 +20,7 @@ jobs:
- job: macOS
condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS'], 'true'), ne(variables['VSCODE_QUALITY'], 'saw'))
pool:
vmImage: 'macOS-10.15'
vmImage: 'macos-latest'
dependsOn:
- Compile
steps:
@@ -30,7 +30,7 @@ jobs:
- job: macOS_Signing
condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS'], 'true'), eq(variables['signed'], true), ne(variables['VSCODE_QUALITY'], 'saw'))
pool:
vmImage: 'macOS-10.15'
vmImage: 'macos-latest'
dependsOn:
- macOS
steps:

View File

@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:

View File

@@ -0,0 +1,88 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const es = require("event-stream");
const vfs = require("vinyl-fs");
const util = require("../lib/util");
const merge = require("gulp-merge-json");
const gzip = require("gulp-gzip");
const azure = require('gulp-azure-storage');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
function main() {
return es.merge(vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }), vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }), vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
.pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
edit: (parsedJson, file) => {
let key;
if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson };
}
// Handle extensions and follow the same structure as the Core nls file.
switch (file.basename) {
case 'package.nls.json':
// put package.nls.json content in Core NlsMetadata format
// language packs use the key "package" to specify that
// translations are for the package.json file
parsedJson = {
messages: {
package: Object.values(parsedJson)
},
keys: {
package: Object.keys(parsedJson)
},
bundles: {
main: ['package']
}
};
break;
case 'nls.metadata.header.json':
parsedJson = { header: parsedJson };
break;
case 'nls.metadata.json':
// put nls.metadata.json content in Core NlsMetadata format
const modules = Object.keys(parsedJson);
const json = {
keys: {},
messages: {},
bundles: {
main: []
}
};
for (const module of modules) {
json.messages[module] = parsedJson[module].messages;
json.keys[module] = parsedJson[module].keys;
json.bundles.main.push(module);
}
parsedJson = json;
break;
}
key = 'vscode.' + file.relative.split('/')[0];
return { [key]: parsedJson };
},
}))
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
key: process.env.AZURE_STORAGE_ACCESS_KEY,
container: 'nlsmetadata',
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
}));
}
main();

View File

@@ -0,0 +1,107 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as path from 'path';
import * as es from 'event-stream';
import * as Vinyl from 'vinyl';
import * as vfs from 'vinyl-fs';
import * as util from '../lib/util';
import * as merge from 'gulp-merge-json';
import * as gzip from 'gulp-gzip';
const azure = require('gulp-azure-storage');
const root = path.dirname(path.dirname(__dirname));
const commit = util.getVersion(root);
interface NlsMetadata {
keys: { [module: string]: string },
messages: { [module: string]: string },
bundles: { [bundle: string]: string[] },
}
function main() {
return es.merge(
vfs.src('out-vscode-web-min/nls.metadata.json', { base: 'out-vscode-web-min' }),
vfs.src('.build/extensions/**/nls.metadata.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/nls.metadata.header.json', { base: '.build/extensions' }),
vfs.src('.build/extensions/**/package.nls.json', { base: '.build/extensions' }))
.pipe(merge({
fileName: 'combined.nls.metadata.json',
jsonSpace: '',
edit: (parsedJson, file) => {
let key;
if (file.base === 'out-vscode-web-min') {
return { vscode: parsedJson };
}
// Handle extensions and follow the same structure as the Core nls file.
switch (file.basename) {
case 'package.nls.json':
// put package.nls.json content in Core NlsMetadata format
// language packs use the key "package" to specify that
// translations are for the package.json file
parsedJson = {
messages: {
package: Object.values(parsedJson)
},
keys: {
package: Object.keys(parsedJson)
},
bundles: {
main: ['package']
}
};
break;
case 'nls.metadata.header.json':
parsedJson = { header: parsedJson };
break;
case 'nls.metadata.json':
// put nls.metadata.json content in Core NlsMetadata format
const modules = Object.keys(parsedJson);
const json: NlsMetadata = {
keys: {},
messages: {},
bundles: {
main: []
}
};
for (const module of modules) {
json.messages[module] = parsedJson[module].messages;
json.keys[module] = parsedJson[module].keys;
json.bundles.main.push(module);
}
parsedJson = json;
break;
}
key = 'vscode.' + file.relative.split('/')[0];
return { [key]: parsedJson };
},
}))
.pipe(gzip({ append: false }))
.pipe(vfs.dest('./nlsMetadata'))
.pipe(es.through(function (data: Vinyl) {
console.log(`Uploading ${data.path}`);
// trigger artifact upload
console.log(`##vso[artifact.upload containerfolder=nlsmetadata;artifactname=combined.nls.metadata.json]${data.path}`);
this.emit('data', data);
}))
.pipe(azure.upload({
account: process.env.AZURE_STORAGE_ACCOUNT,
key: process.env.AZURE_STORAGE_ACCESS_KEY,
container: 'nlsmetadata',
prefix: commit + '/',
contentSettings: {
contentEncoding: 'gzip',
cacheControl: 'max-age=31536000, public'
}
}));
}
main();

View File

@@ -119,6 +119,13 @@ steps:
node build/azure-pipelines/upload-sourcemaps out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.api.js.map
displayName: Upload sourcemaps (Web)
- script: |
set -e
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
node build/azure-pipelines/upload-nlsmetadata
displayName: Upload NLS Metadata
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- script: |
set -e
REPO="$(pwd)"

View File

@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:

View File

@@ -79,7 +79,6 @@ steps:
. build/azure-pipelines/win32/retry.ps1
$ErrorActionPreference = "Stop"
$env:npm_config_arch="$(VSCODE_ARCH)"
$env:npm_config_build_from_source="true"
$env:CHILD_CONCURRENCY="1"
retry { exec { yarn --frozen-lockfile } }
env:
@@ -104,6 +103,14 @@ steps:
exec { node build/azure-pipelines/mixin }
displayName: Mix in quality
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn npm-run-all -lp "electron $(VSCODE_ARCH)" }
displayName: Download Electron
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
@@ -116,7 +123,6 @@ steps:
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-code-helper" }
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
displayName: Prepare Package
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
@@ -135,8 +141,8 @@ steps:
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn npm-run-all -lp "electron $(VSCODE_ARCH)" "playwright-install" }
displayName: Download Electron and Playwright
exec { yarn npm-run-all -lp "playwright-install" }
displayName: Download Playwright
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
@@ -200,20 +206,20 @@ steps:
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --build "$AppRoot" --screenshots .build\logs\smoke-tests }
exec { yarn smoketest-no-compile --build "$AppRoot" --screenshots $(Build.SourcesDirectory)\.build\logs\smoke-tests }
displayName: Run smoke tests (Electron)
timeoutInMinutes: 5
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
# - powershell: |
# . build/azure-pipelines/win32/exec.ps1
# $ErrorActionPreference = "Stop"
# $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
# $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"
# exec { yarn smoketest-no-compile --build "$AppRoot" --remote }
# displayName: Run smoke tests (Remote)
# timeoutInMinutes: 5
# condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
$AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
$env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"
exec { yarn smoketest-no-compile --build "$AppRoot" --remote }
displayName: Run smoke tests (Remote)
timeoutInMinutes: 5
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'), ne(variables['VSCODE_ARCH'], 'arm64'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
@@ -249,7 +255,7 @@ steps:
- task: UseDotNet@2
inputs:
version: 2.x
version: 3.x
condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
- task: EsrpClientTool@1

View File

@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:
@@ -103,7 +103,6 @@ steps:
$ErrorActionPreference = "Stop"
exec { yarn gulp "package-rebuild-extensions" }
exec { yarn gulp "vscode-win32-x64-min-ci" }
exec { yarn gulp "vscode-win32-x64-code-helper" }
exec { yarn gulp "vscode-win32-x64-inno-updater" }
displayName: Build
env:

View File

@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
versionSpec: "14.x"
versionSpec: "16.x"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
inputs:

View File

@@ -41,7 +41,7 @@ module.exports.indentationFilter = [
'!src/vs/css.js',
'!src/vs/css.build.js',
'!src/vs/loader.js',
'!src/vs/base/common/insane/insane.js',
'!src/vs/base/browser/dompurify/*',
'!src/vs/base/common/marked/marked.js',
'!src/vs/base/common/semver/semver.js',
'!src/vs/base/node/terminateProcess.sh',
@@ -209,7 +209,7 @@ module.exports.jsHygieneFilter = [
'!src/vs/nls.js',
'!src/vs/css.build.js',
'!src/vs/nls.build.js',
'!src/**/insane.js',
'!src/**/dompurify.js',
'!src/**/marked.js',
'!src/**/semver.js',
'!**/test/**',

View File

@@ -191,7 +191,7 @@ const compileEditorESMTask = task.define('compile-editor-esm', () => {
}
}
console.log(`Open in VS Code the folder at '${destPath}' and you can alayze the compilation error`);
console.log(`Open in VS Code the folder at '${destPath}' and you can analyze the compilation error`);
throw new Error('Standalone Editor compilation failed. If this is the build machine, simply launch `yarn run gulp editor-distro` on your machine to further analyze the compilation problem.');
});
}
@@ -231,7 +231,10 @@ function toExternalDTS(contents) {
if (line.indexOf('declare let MonacoEnvironment') === 0) {
lines[i] = `declare global {\n let MonacoEnvironment: Environment | undefined;\n}`;
// lines[i] = line.replace('declare namespace monaco.', 'export namespace ');
}
if (line.indexOf('\tMonacoEnvironment?') === 0) {
lines[i] = ` MonacoEnvironment?: Environment | undefined;`;
}
}
return lines.join('\n').replace(/\n\n\n+/g, '\n\n');

View File

@@ -14,6 +14,10 @@ function checkPackageJSON(actualPath) {
const rootPackageJSON = require('../package.json');
const checkIncluded = (set1, set2) => {
for (let depName in set1) {
if (depName === 'typescript') {
continue;
}
const depVersion = set1[depName];
const rootDepVersion = set2[depName];
if (!rootDepVersion) {

View File

@@ -38,14 +38,17 @@ const REMOTE_FOLDER = path.join(REPO_ROOT, 'remote');
// Targets
const BUILD_TARGETS = [
{ platform: 'win32', arch: 'ia32', pkgTarget: 'node8-win-x86' },
{ platform: 'win32', arch: 'x64', pkgTarget: 'node8-win-x64' },
{ platform: 'darwin', arch: null, pkgTarget: 'node8-macos-x64' },
{ platform: 'linux', arch: 'ia32', pkgTarget: 'node8-linux-x86' },
{ platform: 'linux', arch: 'x64', pkgTarget: 'node8-linux-x64' },
{ platform: 'linux', arch: 'armhf', pkgTarget: 'node8-linux-armv7' },
{ platform: 'linux', arch: 'arm64', pkgTarget: 'node8-linux-arm64' },
{ platform: 'linux', arch: 'alpine', pkgTarget: 'node8-linux-alpine' },
{ platform: 'win32', arch: 'ia32' },
{ platform: 'win32', arch: 'x64' },
{ platform: 'darwin', arch: null },
{ platform: 'linux', arch: 'ia32' },
{ platform: 'linux', arch: 'x64' },
{ platform: 'linux', arch: 'armhf' },
{ platform: 'linux', arch: 'arm64' },
{ platform: 'alpine', arch: 'arm64' },
// legacy: we use to ship only one alpine so it was put in the arch, but now we ship
// multiple alpine images and moved to a better model (alpine as the platform)
{ platform: 'linux', arch: 'alpine' },
];
const serverResources = [
@@ -108,10 +111,6 @@ const serverEntryPoints = [
name: 'vs/server/remoteExtensionHostProcess',
exclude: ['vs/css', 'vs/nls']
},
{
name: 'vs/platform/files/node/watcher/unix/watcherApp',
exclude: ['vs/css', 'vs/nls']
},
{
name: 'vs/platform/files/node/watcher/nsfw/watcherApp',
exclude: ['vs/css', 'vs/nls']
@@ -186,8 +185,9 @@ function nodejs(platform, arch) {
.pipe(rename('node.exe'));
}
if (arch === 'alpine') {
const contents = cp.execSync(`docker run --rm node:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 100 * 1024 * 1024, encoding: 'buffer' });
if (arch === 'alpine' || platform === 'alpine') {
const imageName = arch === 'arm64' ? 'arm64v8/node' : 'node';
const contents = cp.execSync(`docker run --rm ${imageName}:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 100 * 1024 * 1024, encoding: 'buffer' });
return es.readArray([new File({ path: 'node', contents, stat: { mode: parseInt('755', 8) } })]);
}
@@ -508,32 +508,198 @@ function packagePkgTask(platform, arch, pkgTarget) {
});
});
function mixinServer(watch) {
const packageJSONPath = path.join(path.dirname(__dirname), 'package.json');
function exec(cmdLine) {
console.log(cmdLine);
cp.execSync(cmdLine, { stdio: 'inherit' });
}
function checkout() {
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString());
exec('git fetch distro');
exec(`git checkout ${packageJSON['distro']} -- src/vs/server resources/server`);
exec('git reset HEAD src/vs/server resources/server');
}
checkout();
if (watch) {
console.log('Enter watch mode (observing package.json)');
const watcher = fs.watch(packageJSONPath);
watcher.addListener('change', () => {
try {
checkout();
} catch (e) {
console.log(e);
function packageTask(type, platform, arch, sourceFolderName, destinationFolderName) {
const destination = path.join(BUILD_ROOT, destinationFolderName);
return () => {
const json = require('gulp-json-editor');
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }))
.pipe(util.setExecutableBit(['**/*.sh']))
.pipe(filter(['**', '!**/*.js.map']));
const workspaceExtensionPoints = ['debuggers', 'jsonValidation'];
const isUIExtension = (manifest) => {
switch (manifest.extensionKind) {
case 'ui': return true;
case 'workspace': return false;
default: {
if (manifest.main) {
return false;
}
if (manifest.contributes && Object.keys(manifest.contributes).some(key => workspaceExtensionPoints.indexOf(key) !== -1)) {
return false;
}
// Default is UI Extension
return true;
}
}
});
}
return Promise.resolve();
};
const localWorkspaceExtensions = glob.sync('extensions/*/package.json')
.filter((extensionPath) => {
if (type === 'reh-web') {
return true; // web: ship all extensions for now
}
const manifest = JSON.parse(fs.readFileSync(path.join(REPO_ROOT, extensionPath)).toString());
return !isUIExtension(manifest);
}).map((extensionPath) => path.basename(path.dirname(extensionPath)))
.filter(name => name !== 'vscode-api-tests' && name !== 'vscode-test-resolver'); // Do not ship the test extensions
const marketplaceExtensions = JSON.parse(fs.readFileSync(path.join(REPO_ROOT, 'product.json'), 'utf8')).builtInExtensions
.filter(entry => !entry.platforms || new Set(entry.platforms).has(platform))
.filter(entry => !entry.clientOnly)
.map(entry => entry.name);
const extensionPaths = [...localWorkspaceExtensions, ...marketplaceExtensions]
.map(name => `.build/extensions/${name}/**`);
const extensions = gulp.src(extensionPaths, { base: '.build', dot: true });
const extensionsCommonDependencies = gulp.src('.build/extensions/node_modules/**', { base: '.build', dot: true });
const sources = es.merge(src, extensions, extensionsCommonDependencies)
.pipe(filter(['**', '!**/*.js.map'], { dot: true }));
let version = packageJson.version;
const quality = product.quality;
if (quality && quality !== 'stable') {
version += '-' + quality;
}
const name = product.nameShort;
const packageJsonStream = gulp.src(['remote/package.json'], { base: 'remote' })
.pipe(json({ name, version }));
const date = new Date().toISOString();
const productJsonStream = gulp.src(['product.json'], { base: '.' })
.pipe(json({ commit, date }));
const license = gulp.src(['remote/LICENSE'], { base: 'remote', allowEmpty: true });
const jsFilter = util.filter(data => !data.isDirectory() && /\.js$/.test(data.path));
const productionDependencies = getProductionDependencies(REMOTE_FOLDER);
const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]));
const deps = gulp.src(dependenciesSrc, { base: 'remote', dot: true })
// filter out unnecessary files, no source maps in server build
.pipe(filter(['**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.js.map']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore')))
.pipe(jsFilter)
.pipe(util.stripSourceMappingURL())
.pipe(jsFilter.restore);
const nodePath = `.build/node/v${nodeVersion}/${platform}-${platform === 'darwin' ? 'x64' : arch}`;
const node = gulp.src(`${nodePath}/**`, { base: nodePath, dot: true });
let web = [];
if (type === 'reh-web') {
web = [
'resources/server/favicon.ico',
'resources/server/code-192.png',
'resources/server/code-512.png',
'resources/server/manifest.json'
].map(resource => gulp.src(resource, { base: '.' }).pipe(rename(resource)));
}
let all = es.merge(
packageJsonStream,
productJsonStream,
license,
sources,
deps,
node,
...web
);
let result = all
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions());
if (platform === 'win32') {
result = es.merge(result,
gulp.src('resources/server/bin/code.cmd', { base: '.' })
.pipe(replace('@@VERSION@@', version))
.pipe(replace('@@COMMIT@@', commit))
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename(`bin/${product.applicationName}.cmd`)),
gulp.src('resources/server/bin/helpers/browser.cmd', { base: '.' })
.pipe(replace('@@VERSION@@', version))
.pipe(replace('@@COMMIT@@', commit))
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename(`bin/helpers/browser.cmd`)),
gulp.src('resources/server/bin/server.cmd', { base: '.' })
.pipe(rename(`server.cmd`))
);
} else if (platform === 'linux' || platform === 'alpine' || platform === 'darwin') {
result = es.merge(result,
gulp.src('resources/server/bin/code.sh', { base: '.' })
.pipe(replace('@@VERSION@@', version))
.pipe(replace('@@COMMIT@@', commit))
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename(`bin/${product.applicationName}`))
.pipe(util.setExecutableBit()),
gulp.src('resources/server/bin/helpers/browser.sh', { base: '.' })
.pipe(replace('@@VERSION@@', version))
.pipe(replace('@@COMMIT@@', commit))
.pipe(replace('@@APPNAME@@', product.applicationName))
.pipe(rename(`bin/helpers/browser.sh`))
.pipe(util.setExecutableBit()),
gulp.src('resources/server/bin/server.sh', { base: '.' })
.pipe(rename(`server.sh`))
.pipe(util.setExecutableBit())
);
}
return result.pipe(vfs.dest(destination));
};
}
gulp.task(task.define('mixin-server', () => mixinServer(false)));
gulp.task(task.define('mixin-server-watch', () => mixinServer(true)));
['reh', 'reh-web'].forEach(type => {
const optimizeTask = task.define(`optimize-vscode-${type}`, task.series(
util.rimraf(`out-vscode-${type}`),
common.optimizeTask({
src: 'out-build',
entryPoints: _.flatten(type === 'reh' ? serverEntryPoints : serverWithWebEntryPoints),
otherSources: [],
resources: type === 'reh' ? serverResources : serverWithWebResources,
loaderConfig: common.loaderConfig(),
out: `out-vscode-${type}`,
inlineAmdImages: true,
bundleInfo: undefined,
fileContentMapper: createVSCodeWebFileContentMapper('.build/extensions')
})
));
const minifyTask = task.define(`minify-vscode-${type}`, task.series(
optimizeTask,
util.rimraf(`out-vscode-${type}-min`),
common.minifyTask(`out-vscode-${type}`, `https://ticino.blob.core.windows.net/sourcemaps/${commit}/core`)
));
gulp.task(minifyTask);
BUILD_TARGETS.forEach(buildTarget => {
const dashed = (str) => (str ? `-${str}` : ``);
const platform = buildTarget.platform;
const arch = buildTarget.arch;
['', 'min'].forEach(minified => {
const sourceFolderName = `out-vscode-${type}${dashed(minified)}`;
const destinationFolderName = `vscode-${type}${dashed(platform)}${dashed(arch)}`;
const serverTaskCI = task.define(`vscode-${type}${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series(
gulp.task(`node-${platform}-${platform === 'darwin' ? 'x64' : arch}`),
util.rimraf(path.join(BUILD_ROOT, destinationFolderName)),
packageTask(type, platform, arch, sourceFolderName, destinationFolderName)
));
gulp.task(serverTaskCI);
const serverTask = task.define(`vscode-${type}${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(
compileBuildTask,
compileExtensionsBuildTask,
minified ? minifyTask : optimizeTask,
serverTaskCI
));
gulp.task(serverTask);
});
});
});

View File

@@ -39,6 +39,8 @@ const vscodeEntryPoints = _.flatten([
buildfile.workerExtensionHost,
buildfile.workerNotebook,
buildfile.workerLanguageDetection,
buildfile.workerSharedProcess,
buildfile.workerLocalFileSearch,
buildfile.workbenchDesktop,
buildfile.code
]);

View File

@@ -6,11 +6,212 @@
'use strict';
const gulp = require('gulp');
const path = require('path');
const es = require('event-stream');
const util = require('./lib/util');
const task = require('./lib/task');
const common = require('./lib/optimize');
const product = require('../product.json');
const rename = require('gulp-rename');
const filter = require('gulp-filter');
const _ = require('underscore');
const { getProductionDependencies } = require('./lib/dependencies');
const vfs = require('vinyl-fs');
const fs = require('fs');
const packageJson = require('../package.json');
const { compileBuildTask } = require('./gulpfile.compile');
const extensions = require('./lib/extensions');
const noop = () => { return Promise.resolve(); };
const REPO_ROOT = path.dirname(__dirname);
const BUILD_ROOT = path.dirname(REPO_ROOT);
const WEB_FOLDER = path.join(REPO_ROOT, 'remote', 'web');
gulp.task('minify-vscode-web', noop);
gulp.task('vscode-web', noop);
gulp.task('vscode-web-min', noop);
gulp.task('vscode-web-ci', noop);
gulp.task('vscode-web-min-ci', noop);
const commit = util.getVersion(REPO_ROOT);
const quality = product.quality;
const version = (quality && quality !== 'stable') ? `${packageJson.version}-${quality}` : packageJson.version;
const vscodeWebResourceIncludes = [
// Workbench
'out-build/vs/{base,platform,editor,workbench}/**/*.{svg,png,jpg}',
'out-build/vs/code/browser/workbench/*.html',
'out-build/vs/base/browser/ui/codicons/codicon/**/*.ttf',
'out-build/vs/**/markdown.css',
// Webview
'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
'out-build/vs/workbench/contrib/webview/browser/pre/*.html',
// Extension Worker
'out-build/vs/workbench/services/extensions/worker/httpsWebWorkerExtensionHostIframe.html',
'out-build/vs/workbench/services/extensions/worker/httpWebWorkerExtensionHostIframe.html',
// Web node paths (needed for integration tests)
'out-build/vs/webPackagePaths.js',
];
exports.vscodeWebResourceIncludes = vscodeWebResourceIncludes;
const vscodeWebResources = [
// Includes
...vscodeWebResourceIncludes,
// Excludes
'!out-build/vs/**/{node,electron-browser,electron-main}/**',
'!out-build/vs/editor/standalone/**',
'!out-build/vs/workbench/**/*-tb.png',
'!**/test/**'
];
const buildfile = require('../src/buildfile');
const vscodeWebEntryPoints = _.flatten([
buildfile.entrypoint('vs/workbench/workbench.web.api'),
buildfile.base,
buildfile.workerExtensionHost,
buildfile.workerNotebook,
buildfile.workerLanguageDetection,
buildfile.workerLocalFileSearch,
buildfile.keyboardMaps,
buildfile.workbenchWeb
]);
exports.vscodeWebEntryPoints = vscodeWebEntryPoints;
const buildDate = new Date().toISOString();
/**
* @param extensionsRoot {string} The location where extension will be read from
*/
const createVSCodeWebFileContentMapper = (extensionsRoot) => {
/**
* @param content {string} The contens of the file
* @param path {string} The absolute file path, always using `/`, even on Windows
*/
const result = (content, path) => {
// (1) Patch product configuration
if (path.endsWith('vs/platform/product/common/product.js')) {
const productConfiguration = JSON.stringify({
...product,
extensionAllowedProposedApi: [...product.extensionAllowedProposedApi],
version,
commit,
date: buildDate
});
return content.replace('/*BUILD->INSERT_PRODUCT_CONFIGURATION*/', productConfiguration.substr(1, productConfiguration.length - 2) /* without { and }*/);
}
// (2) Patch builtin extensions
if (path.endsWith('vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.js')) {
// Do not inline `vscode-web-playground` even if it has been packed!
const builtinExtensions = JSON.stringify(extensions.scanBuiltinExtensions(extensionsRoot, ['vscode-web-playground']));
return content.replace('/*BUILD->INSERT_BUILTIN_EXTENSIONS*/', builtinExtensions.substr(1, builtinExtensions.length - 2) /* without [ and ]*/);
}
return content;
};
return result;
};
exports.createVSCodeWebFileContentMapper = createVSCodeWebFileContentMapper;
const optimizeVSCodeWebTask = task.define('optimize-vscode-web', task.series(
util.rimraf('out-vscode-web'),
common.optimizeTask({
src: 'out-build',
entryPoints: _.flatten(vscodeWebEntryPoints),
otherSources: [],
resources: vscodeWebResources,
loaderConfig: common.loaderConfig(),
externalLoaderInfo: util.createExternalLoaderConfig(product.webEndpointUrl, commit, quality),
out: 'out-vscode-web',
inlineAmdImages: true,
bundleInfo: undefined,
fileContentMapper: createVSCodeWebFileContentMapper('.build/web/extensions')
})
));
const minifyVSCodeWebTask = task.define('minify-vscode-web', task.series(
optimizeVSCodeWebTask,
util.rimraf('out-vscode-web-min'),
common.minifyTask('out-vscode-web', `https://ticino.blob.core.windows.net/sourcemaps/${commit}/core`)
));
gulp.task(minifyVSCodeWebTask);
function packageTask(sourceFolderName, destinationFolderName) {
const destination = path.join(BUILD_ROOT, destinationFolderName);
return () => {
const json = require('gulp-json-editor');
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }));
const extensions = gulp.src('.build/web/extensions/**', { base: '.build/web', dot: true });
const sources = es.merge(src, extensions)
.pipe(filter(['**', '!**/*.js.map'], { dot: true }));
const name = product.nameShort;
const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' })
.pipe(json({ name, version }));
const license = gulp.src(['remote/LICENSE'], { base: 'remote', allowEmpty: true });
const productionDependencies = getProductionDependencies(WEB_FOLDER);
const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]));
const deps = gulp.src(dependenciesSrc, { base: 'remote/web', dot: true })
.pipe(filter(['**', '!**/package-lock.json']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.webignore')));
const favicon = gulp.src('resources/server/favicon.ico', { base: 'resources/server' });
const manifest = gulp.src('resources/server/manifest.json', { base: 'resources/server' });
const pwaicons = es.merge(
gulp.src('resources/server/code-192.png', { base: 'resources/server' }),
gulp.src('resources/server/code-512.png', { base: 'resources/server' })
);
let all = es.merge(
packageJsonStream,
license,
sources,
deps,
favicon,
manifest,
pwaicons
);
let result = all
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions());
return result.pipe(vfs.dest(destination));
};
}
const compileWebExtensionsBuildTask = task.define('compile-web-extensions-build', task.series(
task.define('clean-web-extensions-build', util.rimraf('.build/web/extensions')),
task.define('bundle-web-extensions-build', () => extensions.packageLocalExtensionsStream(true).pipe(gulp.dest('.build/web'))),
task.define('bundle-marketplace-web-extensions-build', () => extensions.packageMarketplaceExtensionsStream(true).pipe(gulp.dest('.build/web'))),
task.define('bundle-web-extension-media-build', () => extensions.buildExtensionMedia(false, '.build/web/extensions')),
));
gulp.task(compileWebExtensionsBuildTask);
const dashed = (str) => (str ? `-${str}` : ``);
['', 'min'].forEach(minified => {
const sourceFolderName = `out-vscode-web${dashed(minified)}`;
const destinationFolderName = `vscode-web`;
const vscodeWebTaskCI = task.define(`vscode-web${dashed(minified)}-ci`, task.series(
compileWebExtensionsBuildTask,
minified ? minifyVSCodeWebTask : optimizeVSCodeWebTask,
util.rimraf(path.join(BUILD_ROOT, destinationFolderName)),
packageTask(sourceFolderName, destinationFolderName)
));
gulp.task(vscodeWebTaskCI);
const vscodeWebTask = task.define(`vscode-web${dashed(minified)}`, task.series(
compileBuildTask,
vscodeWebTaskCI
));
gulp.task(vscodeWebTask);
});

View File

@@ -156,9 +156,3 @@ function updateIcon(executablePath) {
gulp.task(task.define('vscode-win32-ia32-inno-updater', task.series(copyInnoUpdater('ia32'), updateIcon(path.join(buildPath('ia32'), 'tools', 'inno_updater.exe')))));
gulp.task(task.define('vscode-win32-x64-inno-updater', task.series(copyInnoUpdater('x64'), updateIcon(path.join(buildPath('x64'), 'tools', 'inno_updater.exe')))));
gulp.task(task.define('vscode-win32-arm64-inno-updater', task.series(copyInnoUpdater('arm64'), updateIcon(path.join(buildPath('arm64'), 'tools', 'inno_updater.exe')))));
// CodeHelper.exe icon
gulp.task(task.define('vscode-win32-ia32-code-helper', task.series(updateIcon(path.join(buildPath('ia32'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
gulp.task(task.define('vscode-win32-x64-code-helper', task.series(updateIcon(path.join(buildPath('x64'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
gulp.task(task.define('vscode-win32-arm64-code-helper', task.series(updateIcon(path.join(buildPath('arm64'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));

View File

@@ -7,7 +7,7 @@
import * as path from 'path';
import * as es from 'event-stream';
const pickle = require('chromium-pickle-js');
const pickle = require('chromium-pickle-js');
const Filesystem = <typeof AsarFilesystem>require('asar/lib/filesystem');
import * as VinylFile from 'vinyl';
import * as minimatch from 'minimatch';

View File

@@ -37,6 +37,8 @@ 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) });
// {{SQL CARBON EDIT}} Add override for not inlining the sourcemap during build so we can get code coverage - it
// currently expects a *.map.js file to exist next to the source file for proper source mapping
if (!build && !process.env['SQL_NO_INLINE_SOURCEMAP']) {
overrideOptions.inlineSourceMap = true;
}

View File

@@ -44,6 +44,8 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
const overrideOptions = { ...getTypeScriptCompilerOptions(src), inlineSources: Boolean(build) };
// {{SQL CARBON EDIT}} Add override for not inlining the sourcemap during build so we can get code coverage - it
// currently expects a *.map.js file to exist next to the source file for proper source mapping
if (!build && !process.env['SQL_NO_INLINE_SOURCEMAP']) {
overrideOptions.inlineSourceMap = true;
} else if (!build) {
@@ -55,6 +57,7 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
console.warn('********************************************************************************************');
}
const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));
function pipeline(token?: util.ICancellationToken) {
@@ -94,6 +97,7 @@ 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

@@ -12,15 +12,13 @@ module.exports = new class ApiLiteralOrTypes {
}
create(context) {
return {
['TSTypeAnnotation TSUnionType TSLiteralType']: (node) => {
var _a;
if (((_a = node.literal) === null || _a === void 0 ? void 0 : _a.type) === 'TSNullKeyword') {
return;
['TSTypeAnnotation TSUnionType']: (node) => {
if (node.types.every(value => value.type === 'TSLiteralType')) {
context.report({
node: node,
messageId: 'useEnum'
});
}
context.report({
node: node,
messageId: 'useEnum'
});
}
};
}

View File

@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/experimental-utils';
export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
@@ -14,14 +15,13 @@ export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSTypeAnnotation TSUnionType TSLiteralType']: (node: any) => {
if (node.literal?.type === 'TSNullKeyword') {
return;
['TSTypeAnnotation TSUnionType']: (node: any) => {
if ((<TSESTree.TSUnionType>node).types.every(value => value.type === 'TSLiteralType')) {
context.report({
node: node,
messageId: 'useEnum'
});
}
context.report({
node: node,
messageId: 'useEnum'
});
}
};
}

View File

@@ -102,6 +102,10 @@
"name": "vs/workbench/contrib/interactive",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/languageStatus",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/contrib/keybindings",
"project": "vscode-workbench"

View File

@@ -49,7 +49,8 @@ const CORE_TYPES = [
'decode',
'self',
'trimLeft',
'trimRight'
'trimRight',
'queueMicrotask'
];
// Types that are defined in a common layer but are known to be only
// available in native environments should not be allowed in browser

View File

@@ -50,7 +50,8 @@ const CORE_TYPES = [
'decode',
'self',
'trimLeft',
'trimRight'
'trimRight',
'queueMicrotask'
];
// Types that are defined in a common layer but are known to be only

View File

@@ -149,26 +149,6 @@ function getMassagedTopLevelDeclarationText(ts, sourceFile, declaration, importN
}
});
}
else if (declaration.kind === ts.SyntaxKind.VariableStatement) {
const jsDoc = result.substr(0, declaration.getLeadingTriviaWidth(sourceFile));
if (jsDoc.indexOf('@monacodtsreplace') >= 0) {
const jsDocLines = jsDoc.split(/\r\n|\r|\n/);
let directives = [];
for (const jsDocLine of jsDocLines) {
const m = jsDocLine.match(/^\s*\* \/([^/]+)\/([^/]+)\/$/);
if (m) {
directives.push([new RegExp(m[1], 'g'), m[2]]);
}
}
// remove the jsdoc
result = result.substr(jsDoc.length);
if (directives.length > 0) {
// apply replace directives
const replacer = createReplacerFromDirectives(directives);
result = replacer(result);
}
}
}
result = result.replace(/export default /g, 'export ');
result = result.replace(/export declare /g, 'export ');
result = result.replace(/declare /g, '');
@@ -579,6 +559,13 @@ class TypeScriptLanguageServiceHost {
this._files = files;
this._compilerOptions = compilerOptions;
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile() {
return undefined;
}
fileExists() {
return false;
}
// --- language service host ---------------
getCompilationSettings() {
return this._compilerOptions;

View File

@@ -178,25 +178,6 @@ function getMassagedTopLevelDeclarationText(ts: typeof import('typescript'), sou
// life..
}
});
} else if (declaration.kind === ts.SyntaxKind.VariableStatement) {
const jsDoc = result.substr(0, declaration.getLeadingTriviaWidth(sourceFile));
if (jsDoc.indexOf('@monacodtsreplace') >= 0) {
const jsDocLines = jsDoc.split(/\r\n|\r|\n/);
let directives: [RegExp, string][] = [];
for (const jsDocLine of jsDocLines) {
const m = jsDocLine.match(/^\s*\* \/([^/]+)\/([^/]+)\/$/);
if (m) {
directives.push([new RegExp(m[1], 'g'), m[2]]);
}
}
// remove the jsdoc
result = result.substr(jsDoc.length);
if (directives.length > 0) {
// apply replace directives
const replacer = createReplacerFromDirectives(directives);
result = replacer(result);
}
}
}
result = result.replace(/export default /g, 'export ');
result = result.replace(/export declare /g, 'export ');
@@ -703,6 +684,14 @@ class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
this._compilerOptions = compilerOptions;
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile(): string | undefined {
return undefined;
}
fileExists(): boolean {
return false;
}
// --- language service host ---------------
getCompilationSettings(): ts.CompilerOptions {

View File

@@ -107,6 +107,13 @@ var _nls;
this.file = ts.ScriptSnapshot.fromString(contents);
this.lib = ts.ScriptSnapshot.fromString('');
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile() {
return undefined;
}
fileExists() {
return false;
}
}
function isCallExpressionWithinTextSpanCollectStep(ts, textSpan, node) {
if (!ts.textSpanContainsTextSpan({ start: node.pos, length: node.end - node.pos }, textSpan)) {

View File

@@ -155,6 +155,14 @@ module _nls {
this.lib = ts.ScriptSnapshot.fromString('');
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile(): string | undefined {
return undefined;
}
fileExists(): boolean {
return false;
}
getCompilationSettings = () => this.options;
getScriptFileNames = () => [this.filename];
getScriptVersion = () => '1';

View File

@@ -37,7 +37,7 @@ function loaderConfig() {
}
exports.loaderConfig = loaderConfig;
const IS_OUR_COPYRIGHT_REGEXP = /Copyright \(C\) Microsoft Corporation/i;
function loader(src, bundledFileHeader, bundleLoader) {
function loader(src, bundledFileHeader, bundleLoader, externalLoaderInfo) {
let sources = [
`${src}/vs/loader.js`
];
@@ -63,6 +63,15 @@ function loader(src, bundledFileHeader, bundleLoader) {
else {
this.emit('data', data);
}
}, function () {
if (externalLoaderInfo !== undefined) {
this.emit('data', new VinylFile({
path: 'fake2',
base: '.',
contents: Buffer.from(`require.config(${JSON.stringify(externalLoaderInfo, undefined, 2)});`)
}));
}
this.emit('end');
}))
.pipe(concat('vs/loader.js')));
}
@@ -148,7 +157,7 @@ function optimizeTask(opts) {
}
es.readArray(bundleInfoArray).pipe(bundleInfoStream);
});
const result = es.merge(loader(src, bundledFileHeader, bundleLoader), bundlesStream, resourcesStream, bundleInfoStream);
const result = es.merge(loader(src, bundledFileHeader, bundleLoader, opts.externalLoaderInfo), bundlesStream, resourcesStream, bundleInfoStream);
return result
.pipe(sourcemaps.write('./', {
sourceRoot: undefined,

View File

@@ -43,7 +43,7 @@ export function loaderConfig() {
const IS_OUR_COPYRIGHT_REGEXP = /Copyright \(C\) Microsoft Corporation/i;
function loader(src: string, bundledFileHeader: string, bundleLoader: boolean): NodeJS.ReadWriteStream {
function loader(src: string, bundledFileHeader: string, bundleLoader: boolean, externalLoaderInfo?: any): NodeJS.ReadWriteStream {
let sources = [
`${src}/vs/loader.js`
];
@@ -70,6 +70,15 @@ function loader(src: string, bundledFileHeader: string, bundleLoader: boolean):
} else {
this.emit('data', data);
}
}, function () {
if (externalLoaderInfo !== undefined) {
this.emit('data', new VinylFile({
path: 'fake2',
base: '.',
contents: Buffer.from(`require.config(${JSON.stringify(externalLoaderInfo, undefined, 2)});`)
}));
}
this.emit('end');
}))
.pipe(concat('vs/loader.js'))
);
@@ -135,6 +144,10 @@ export interface IOptimizeTaskOpts {
*/
resources: string[];
loaderConfig: any;
/**
* Additional info we append to the end of the loader
*/
externalLoaderInfo?: any;
/**
* (true by default - append css and nls to loader)
*/
@@ -213,7 +226,7 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
});
const result = es.merge(
loader(src, bundledFileHeader, bundleLoader),
loader(src, bundledFileHeader, bundleLoader, opts.externalLoaderInfo),
bundlesStream,
resourcesStream,
bundleInfoStream

View File

@@ -108,7 +108,7 @@ function submitAllStats(productJson, commit) {
.setAutoCollectDependencies(false)
.setAutoDependencyCorrelation(false)
.start();
appInsights.defaultClient.config.endpointUrl = 'https://vortex.data.microsoft.com/collect/v1';
appInsights.defaultClient.config.endpointUrl = 'https://mobile.events.data.microsoft.com/collect/v1';
/* __GDPR__
"monacoworkbench/packagemetrics" : {
"commit" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },

View File

@@ -116,7 +116,7 @@ export function submitAllStats(productJson: any, commit: string): Promise<boolea
.setAutoDependencyCorrelation(false)
.start();
appInsights.defaultClient.config.endpointUrl = 'https://vortex.data.microsoft.com/collect/v1';
appInsights.defaultClient.config.endpointUrl = 'https://mobile.events.data.microsoft.com/collect/v1';
/* __GDPR__
"monacoworkbench/packagemetrics" : {

View File

@@ -167,6 +167,13 @@ class TypeScriptLanguageServiceHost {
this._files = files;
this._compilerOptions = compilerOptions;
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile() {
return undefined;
}
fileExists() {
return false;
}
// --- language service host ---------------
getCompilationSettings() {
return this._compilerOptions;

View File

@@ -245,6 +245,14 @@ class TypeScriptLanguageServiceHost implements ts.LanguageServiceHost {
this._compilerOptions = compilerOptions;
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile(): string | undefined {
return undefined;
}
fileExists(): boolean {
return false;
}
// --- language service host ---------------
getCompilationSettings(): ts.CompilerOptions {

View File

@@ -47,6 +47,29 @@ declare module "vinyl" {
* Used for relative pathing. Typically where a glob starts.
*/
public base: string;
/**
* Gets and sets the basename of `file.path`.
*
* Throws when `file.path` is not set.
*
* Example:
*
* ```js
* var file = new File({
* cwd: '/',
* base: '/test/',
* path: '/test/file.js'
* });
*
* console.log(file.basename); // file.js
*
* file.basename = 'file.txt';
*
* console.log(file.basename); // file.txt
* console.log(file.path); // /test/file.txt
* ```
*/
basename: string;
/**
* Full path to the file.
*/
@@ -105,7 +128,7 @@ declare module "vinyl" {
* This is required as per:
* https://github.com/microsoft/TypeScript/issues/5073
*/
namespace File {}
namespace File { }
export = File;

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildWebNodePaths = exports.acquireWebNodePaths = exports.getElectronVersion = exports.streamToPromise = exports.versionStringToNumber = exports.filter = exports.rebase = exports.getVersion = exports.ensureDir = exports.rreddir = exports.rimraf = exports.rewriteSourceMappingURL = exports.stripSourceMappingURL = exports.loadSourcemaps = exports.cleanNodeModules = exports.skipDirectories = exports.toFileUri = exports.setExecutableBit = exports.fixWin32DirectoryPermissions = exports.incremental = void 0;
exports.buildWebNodePaths = exports.createExternalLoaderConfig = exports.acquireWebNodePaths = exports.getElectronVersion = exports.streamToPromise = exports.versionStringToNumber = exports.filter = exports.rebase = exports.getVersion = exports.ensureDir = exports.rreddir = exports.rimraf = exports.rewriteSourceMappingURL = exports.stripSourceMappingURL = exports.loadSourcemaps = exports.cleanNodeModules = exports.skipDirectories = exports.toFileUri = exports.setExecutableBit = exports.fixWin32DirectoryPermissions = exports.incremental = void 0;
const es = require("event-stream");
const debounce = require("debounce");
const _filter = require("gulp-filter");
@@ -301,6 +301,23 @@ function acquireWebNodePaths() {
return nodePaths;
}
exports.acquireWebNodePaths = acquireWebNodePaths;
function createExternalLoaderConfig(webEndpoint, commit, quality) {
if (!webEndpoint || !commit || !quality) {
return undefined;
}
webEndpoint = webEndpoint + `/${quality}/${commit}`;
let nodePaths = acquireWebNodePaths();
Object.keys(nodePaths).map(function (key, _) {
nodePaths[key] = `${webEndpoint}/node_modules/${key}/${nodePaths[key]}`;
});
const externalLoaderConfig = {
baseUrl: `${webEndpoint}/out`,
recordStats: true,
paths: nodePaths
};
return externalLoaderConfig;
}
exports.createExternalLoaderConfig = createExternalLoaderConfig;
function buildWebNodePaths(outDir) {
const result = () => new Promise((resolve, _) => {
const root = path.join(__dirname, '..', '..');

View File

@@ -345,7 +345,7 @@ export function acquireWebNodePaths() {
const root = path.join(__dirname, '..', '..');
const webPackageJSON = path.join(root, '/remote/web', 'package.json');
const webPackages = JSON.parse(fs.readFileSync(webPackageJSON, 'utf8')).dependencies;
const nodePaths: { [key: string]: string } = {};
const nodePaths: { [key: string]: string } = { };
for (const key of Object.keys(webPackages)) {
const packageJSON = path.join(root, 'node_modules', key, 'package.json');
const packageData = JSON.parse(fs.readFileSync(packageJSON, 'utf8'));
@@ -366,6 +366,23 @@ export function acquireWebNodePaths() {
return nodePaths;
}
export function createExternalLoaderConfig(webEndpoint?: string, commit?: string, quality?: string) {
if (!webEndpoint || !commit || !quality) {
return undefined;
}
webEndpoint = webEndpoint + `/${quality}/${commit}`;
let nodePaths = acquireWebNodePaths();
Object.keys(nodePaths).map(function (key, _) {
nodePaths[key] = `${webEndpoint}/node_modules/${key}/${nodePaths[key]}`;
});
const externalLoaderConfig = {
baseUrl: `${webEndpoint}/out`,
recordStats: true,
paths: nodePaths
};
return externalLoaderConfig;
}
export function buildWebNodePaths(outDir: string) {
const result = () => new Promise<void>((resolve, _) => {
const root = path.join(__dirname, '..', '..');

View File

@@ -35,39 +35,12 @@ END OF nodejs path library NOTICES AND INFORMATION
%% string_scorer version 0.1.20 (https://github.com/joshaven/string_score)
=========================================
This software is released under the MIT license:
Copyright (c) Joshaven Potter
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
=========================================
END OF string_scorer NOTICES AND INFORMATION
%% chjj-marked NOTICES AND INFORMATION BEGIN HERE
%% markedjs NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)
Copyright (c) 2011-2014, Christopher Jeffrey (https://github.com/chjj/)
Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -87,4 +60,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
=========================================
END OF chjj-marked NOTICES AND INFORMATION
END OF markedjs NOTICES AND INFORMATION

View File

@@ -578,6 +578,13 @@ class TypeScriptLanguageServiceHost {
this._files = files;
this._compilerOptions = compilerOptions;
}
// {{SQL CARBON EDIT}} - provide missing methods
readFile() {
return undefined;
}
fileExists() {
return false;
}
// --- language service host ---------------
getCompilationSettings() {
return this._compilerOptions;

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