mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-04 11:01:38 -05:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78a42e1d11 | ||
|
|
d2e758c0d7 | ||
|
|
6f5ad3a8a3 | ||
|
|
3e446980df | ||
|
|
053636af9c | ||
|
|
e3b166846d | ||
|
|
fcba0d1558 | ||
|
|
35e3a42017 | ||
|
|
401d4b2211 | ||
|
|
be3e7e3dc1 | ||
|
|
1e12e61243 | ||
|
|
f3b12dd5ac | ||
|
|
73bb5501bd |
9
.gitignore
vendored
9
.gitignore
vendored
@@ -18,14 +18,7 @@ out-vscode-min/
|
|||||||
out-vscode-reh/
|
out-vscode-reh/
|
||||||
out-vscode-reh-min/
|
out-vscode-reh-min/
|
||||||
out-vscode-reh-pkg/
|
out-vscode-reh-pkg/
|
||||||
out-vscode-reh-web/
|
**/node_modules
|
||||||
out-vscode-reh-web-min/
|
|
||||||
out-vscode-reh-web-pkg/
|
|
||||||
out-vscode-web/
|
|
||||||
out-vscode-web-min/
|
|
||||||
src/vs/server
|
|
||||||
resources/server
|
|
||||||
build/node_modules
|
|
||||||
coverage/
|
coverage/
|
||||||
test_data/
|
test_data/
|
||||||
test-results/
|
test-results/
|
||||||
|
|||||||
1
.vscode/extensions.json
vendored
1
.vscode/extensions.json
vendored
@@ -4,7 +4,6 @@
|
|||||||
"recommendations": [
|
"recommendations": [
|
||||||
"ms-vscode.vscode-typescript-tslint-plugin",
|
"ms-vscode.vscode-typescript-tslint-plugin",
|
||||||
"dbaeumer.vscode-eslint",
|
"dbaeumer.vscode-eslint",
|
||||||
"EditorConfig.EditorConfig",
|
|
||||||
"msjsdiag.debugger-for-chrome"
|
"msjsdiag.debugger-for-chrome"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
3
.vscode/launch.json
vendored
3
.vscode/launch.json
vendored
@@ -93,9 +93,6 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "Launch ADS (Main Process)",
|
"name": "Launch ADS (Main Process)",
|
||||||
"runtimeExecutable": "${workspaceFolder}/scripts/sql.sh",
|
"runtimeExecutable": "${workspaceFolder}/scripts/sql.sh",
|
||||||
"windows": {
|
|
||||||
"runtimeExecutable": "${workspaceFolder}/scripts/sql.bat",
|
|
||||||
},
|
|
||||||
"runtimeArgs": [
|
"runtimeArgs": [
|
||||||
"--no-cached-data"
|
"--no-cached-data"
|
||||||
],
|
],
|
||||||
|
|||||||
8
.vscode/settings.json
vendored
8
.vscode/settings.json
vendored
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"editor.insertSpaces": false,
|
"editor.insertSpaces": false,
|
||||||
|
"files.eol": "\n",
|
||||||
"files.trimTrailingWhitespace": true,
|
"files.trimTrailingWhitespace": true,
|
||||||
"files.exclude": {
|
"files.exclude": {
|
||||||
".git": true,
|
".git": true,
|
||||||
@@ -39,6 +40,7 @@
|
|||||||
],
|
],
|
||||||
"typescript.tsdk": "node_modules/typescript/lib",
|
"typescript.tsdk": "node_modules/typescript/lib",
|
||||||
"npm.exclude": "**/extensions/**",
|
"npm.exclude": "**/extensions/**",
|
||||||
|
"git.ignoreLimitWarning": true,
|
||||||
"emmet.excludeLanguages": [],
|
"emmet.excludeLanguages": [],
|
||||||
"typescript.preferences.importModuleSpecifier": "non-relative",
|
"typescript.preferences.importModuleSpecifier": "non-relative",
|
||||||
"typescript.preferences.quoteStyle": "single",
|
"typescript.preferences.quoteStyle": "single",
|
||||||
@@ -56,9 +58,5 @@
|
|||||||
"url": "./.vscode/cglicenses.schema.json"
|
"url": "./.vscode/cglicenses.schema.json"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"git.ignoreLimitWarning": true,
|
"git.ignoreLimitWarning": true
|
||||||
"remote.extensionKind": {
|
|
||||||
"msjsdiag.debugger-for-chrome": "workspace"
|
|
||||||
},
|
|
||||||
"files.insertFinalNewline": true
|
|
||||||
}
|
}
|
||||||
2
.yarnrc
2
.yarnrc
@@ -1,3 +1,3 @@
|
|||||||
disturl "https://atom.io/download/electron"
|
disturl "https://atom.io/download/electron"
|
||||||
target "4.2.7"
|
target "3.1.8"
|
||||||
runtime "electron"
|
runtime "electron"
|
||||||
|
|||||||
26
CHANGELOG.md
26
CHANGELOG.md
@@ -1,31 +1,5 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
## Version 1.9.0
|
|
||||||
* Release date: July 11, 2019
|
|
||||||
* Release status: General Availability
|
|
||||||
|
|
||||||
## What's new in this version
|
|
||||||
* Release of [SentryOne Plan Explorer Extension](https://www.sentryone.com/products/sentryone-plan-explorer-extension-azure-data-studio)
|
|
||||||
* **Schema Compare**
|
|
||||||
* Schema Compare File Support (.SCMP)
|
|
||||||
* Cancel support
|
|
||||||
* [Other fixes and improvements](https://github.com/Microsoft/azuredatastudio/issues?q=is%3Aissue+milestone%3A%22July+2019+Release%22+is%3Aclosed+label%3A%22Area%3A+Schema+Compare%22)
|
|
||||||
* **Notebooks**
|
|
||||||
* Plotly Support
|
|
||||||
* Open Notebook from Browser
|
|
||||||
* Python Package Management
|
|
||||||
* Performance & Markdown Enhancements
|
|
||||||
* Improved Keyboard Shortcuts
|
|
||||||
* [Other fixes and improvements](https://github.com/Microsoft/azuredatastudio/issues?q=is%3Aissue+milestone%3A%22July+2019+Release%22+is%3Aclosed+label%3A%22Area%3A+Notebooks%22)
|
|
||||||
* **SQL Server Profiler**
|
|
||||||
* Filtering by Database Name
|
|
||||||
* Copy & Paste Support
|
|
||||||
* Save/Load Filter
|
|
||||||
* SQL Server 2019 Support
|
|
||||||
* New Language Packs Available
|
|
||||||
* Visual Studio Code May Release Merge 1.35 - the latest improvements can be found [here](https://code.visualstudio.com/updates/v1_35)
|
|
||||||
* Resolved [bugs and issues](https://github.com/microsoft/azuredatastudio/milestone/35?closed=1).
|
|
||||||
|
|
||||||
## Version 1.8.0
|
## Version 1.8.0
|
||||||
* Release date: June 6, 2019
|
* Release date: June 6, 2019
|
||||||
* Release status: General Availability
|
* Release status: General Availability
|
||||||
|
|||||||
1
CODE_OF_CONDUCT.md
Normal file
1
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||||
14
README.md
14
README.md
@@ -9,13 +9,13 @@ Azure Data Studio is a data management tool that enables you to work with SQL Se
|
|||||||
|
|
||||||
Platform | Link
|
Platform | Link
|
||||||
-- | --
|
-- | --
|
||||||
Windows User Installer | https://go.microsoft.com/fwlink/?linkid=2098449
|
Windows User Installer | https://go.microsoft.com/fwlink/?linkid=2094100
|
||||||
Windows System Installer | https://go.microsoft.com/fwlink/?linkid=2098450
|
Windows System Installer | https://go.microsoft.com/fwlink/?linkid=2094200
|
||||||
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=2098500
|
Windows ZIP | https://go.microsoft.com/fwlink/?linkid=2094201
|
||||||
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=2098501
|
macOS ZIP | https://go.microsoft.com/fwlink/?linkid=2094202
|
||||||
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=2098197
|
Linux TAR.GZ | https://go.microsoft.com/fwlink/?linkid=2094101
|
||||||
Linux RPM | https://go.microsoft.com/fwlink/?linkid=2098280
|
Linux RPM | https://go.microsoft.com/fwlink/?linkid=2094102
|
||||||
Linux DEB | https://go.microsoft.com/fwlink/?linkid=2098279
|
Linux DEB | https://go.microsoft.com/fwlink/?linkid=2094203
|
||||||
|
|
||||||
Go to our [download page](https://aka.ms/azuredatastudio) for more specific instructions.
|
Go to our [download page](https://aka.ms/azuredatastudio) for more specific instructions.
|
||||||
|
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ steps:
|
|||||||
yarn tslint
|
yarn tslint
|
||||||
displayName: 'Run TSLint'
|
displayName: 'Run TSLint'
|
||||||
|
|
||||||
# - script: |
|
- script: |
|
||||||
# yarn strict-null-check
|
yarn strict-null-check
|
||||||
# displayName: 'Run Strict Null Check'
|
displayName: 'Run Strict Null Check'
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
yarn compile
|
yarn compile
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ steps:
|
|||||||
yarn tslint
|
yarn tslint
|
||||||
displayName: 'Run TSLint'
|
displayName: 'Run TSLint'
|
||||||
|
|
||||||
# - script: |
|
- script: |
|
||||||
# yarn strict-null-check
|
yarn strict-null-check
|
||||||
# displayName: 'Run Strict Null Check'
|
displayName: 'Run Strict Null Check'
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
yarn compile
|
yarn compile
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
2019-07-11T05:47:05.444Z
|
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
# cleanup rules for native node modules, .gitignore style
|
# cleanup rules for native node modules, .gitignore style
|
||||||
|
|
||||||
nan/**
|
|
||||||
*/node_modules/nan/**
|
|
||||||
|
|
||||||
fsevents/binding.gyp
|
fsevents/binding.gyp
|
||||||
fsevents/fsevents.cc
|
fsevents/fsevents.cc
|
||||||
fsevents/build/**
|
fsevents/build/**
|
||||||
@@ -67,6 +64,14 @@ windows-process-tree/build/**
|
|||||||
windows-process-tree/src/**
|
windows-process-tree/src/**
|
||||||
!windows-process-tree/**/*.node
|
!windows-process-tree/**/*.node
|
||||||
|
|
||||||
|
gc-signals/binding.gyp
|
||||||
|
gc-signals/build/**
|
||||||
|
gc-signals/src/**
|
||||||
|
gc-signals/deps/**
|
||||||
|
|
||||||
|
!gc-signals/build/Release/*.node
|
||||||
|
!gc-signals/src/index.js
|
||||||
|
|
||||||
keytar/binding.gyp
|
keytar/binding.gyp
|
||||||
keytar/build/**
|
keytar/build/**
|
||||||
keytar/src/**
|
keytar/src/**
|
||||||
@@ -78,53 +83,40 @@ node-pty/binding.gyp
|
|||||||
node-pty/build/**
|
node-pty/build/**
|
||||||
node-pty/src/**
|
node-pty/src/**
|
||||||
node-pty/tools/**
|
node-pty/tools/**
|
||||||
node-pty/deps/**
|
|
||||||
!node-pty/build/Release/*.exe
|
!node-pty/build/Release/*.exe
|
||||||
!node-pty/build/Release/*.dll
|
!node-pty/build/Release/*.dll
|
||||||
!node-pty/build/Release/*.node
|
!node-pty/build/Release/*.node
|
||||||
|
|
||||||
|
chart.js/node_modules/**
|
||||||
|
|
||||||
emmet/node_modules/**
|
emmet/node_modules/**
|
||||||
|
|
||||||
pty.js/build/**
|
pty.js/build/**
|
||||||
!pty.js/build/Release/**
|
!pty.js/build/Release/**
|
||||||
|
|
||||||
# START SQL Modules
|
|
||||||
|
|
||||||
@angular/**/src/**
|
|
||||||
@angular/**/testing/**
|
|
||||||
|
|
||||||
angular2-grid/components/**
|
|
||||||
angular2-grid/directives/**
|
|
||||||
angular2-grid/interfaces/**
|
|
||||||
angular2-grid/modules/**
|
|
||||||
|
|
||||||
angular2-slickgrid/.vscode/**
|
|
||||||
angular2-slickgrid/components/**
|
|
||||||
angular2-slickgrid/examples/**
|
|
||||||
|
|
||||||
jquery-ui/external/**
|
jquery-ui/external/**
|
||||||
jquery-ui/demos/**
|
jquery-ui/demos/**
|
||||||
|
|
||||||
|
core-js/**/**
|
||||||
|
|
||||||
slickgrid/node_modules/**
|
slickgrid/node_modules/**
|
||||||
slickgrid/examples/**
|
slickgrid/examples/**
|
||||||
|
|
||||||
# END SQL Modules
|
vscode-nsfw/binding.gyp
|
||||||
|
vscode-nsfw/build/**
|
||||||
|
vscode-nsfw/src/**
|
||||||
|
vscode-nsfw/openpa/**
|
||||||
|
vscode-nsfw/includes/**
|
||||||
|
!vscode-nsfw/build/Release/*.node
|
||||||
|
!vscode-nsfw/**/*.a
|
||||||
|
|
||||||
nsfw/binding.gyp
|
|
||||||
nsfw/build/**
|
|
||||||
nsfw/src/**
|
|
||||||
nsfw/openpa/**
|
|
||||||
nsfw/includes/**
|
|
||||||
!nsfw/build/Release/*.node
|
|
||||||
!nsfw/**/*.a
|
|
||||||
|
|
||||||
vsda/build/**
|
|
||||||
vsda/ci/**
|
|
||||||
vsda/src/**
|
|
||||||
vsda/.gitignore
|
|
||||||
vsda/binding.gyp
|
vsda/binding.gyp
|
||||||
vsda/README.md
|
vsda/README.md
|
||||||
vsda/targets
|
vsda/build/**
|
||||||
|
vsda/*.bat
|
||||||
|
vsda/*.sh
|
||||||
|
vsda/*.cpp
|
||||||
|
vsda/*.h
|
||||||
!vsda/build/Release/vsda.node
|
!vsda/build/Release/vsda.node
|
||||||
|
|
||||||
vscode-windows-ca-certs/**/*
|
vscode-windows-ca-certs/**/*
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cd $BUILD_STAGINGDIRECTORY
|
|
||||||
mkdir extraction
|
|
||||||
cd extraction
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-extension-telemetry.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-chrome-debug-core.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-node-debug2.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-node-debug.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-html-languageservice.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-json-languageservice.git
|
|
||||||
$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints
|
|
||||||
$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --config $BUILD_SOURCESDIRECTORY/build/azure-pipelines/common/telemetry-config.json -o .
|
|
||||||
mkdir -p $BUILD_SOURCESDIRECTORY/.build/telemetry
|
|
||||||
mv declarations-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-core.json
|
|
||||||
mv config-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-extensions.json
|
|
||||||
cd ..
|
|
||||||
rm -rf extraction
|
|
||||||
20
build/azure-pipelines/common/installDistro.ts
Normal file
20
build/azure-pipelines/common/installDistro.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
import * as cp from 'child_process';
|
||||||
|
import * as path from 'path';
|
||||||
|
|
||||||
|
function yarnInstall(packageName: string): void {
|
||||||
|
cp.execSync(`yarn add --no-lockfile ${packageName}`);
|
||||||
|
cp.execSync(`yarn add --no-lockfile ${packageName}`, { cwd: path.join( process.cwd(), 'remote') });
|
||||||
|
}
|
||||||
|
|
||||||
|
const product = require('../../../product.json');
|
||||||
|
const dependencies = product.dependencies || {} as { [name: string]: string; };
|
||||||
|
|
||||||
|
Object.keys(dependencies).forEach(name => {
|
||||||
|
const url = dependencies[name];
|
||||||
|
yarnInstall(url);
|
||||||
|
});
|
||||||
@@ -152,6 +152,13 @@ async function publish(commit: string, quality: string, platform: string, type:
|
|||||||
|
|
||||||
const queuedBy = process.env['BUILD_QUEUEDBY']!;
|
const queuedBy = process.env['BUILD_QUEUEDBY']!;
|
||||||
const sourceBranch = process.env['BUILD_SOURCEBRANCH']!;
|
const sourceBranch = process.env['BUILD_SOURCEBRANCH']!;
|
||||||
|
const isReleased = (
|
||||||
|
// Insiders: nightly build from master
|
||||||
|
(quality === 'insider' && /^master$|^refs\/heads\/master$/.test(sourceBranch) && /Project Collection Service Accounts|Microsoft.VisualStudio.Services.TFS/.test(queuedBy)) ||
|
||||||
|
|
||||||
|
// Exploration: any build from electron-4.0.x branch
|
||||||
|
(quality === 'exploration' && /^electron-4.0.x$|^refs\/heads\/electron-4.0.x$/.test(sourceBranch))
|
||||||
|
);
|
||||||
|
|
||||||
console.log('Publishing...');
|
console.log('Publishing...');
|
||||||
console.log('Quality:', quality);
|
console.log('Quality:', quality);
|
||||||
@@ -161,6 +168,7 @@ async function publish(commit: string, quality: string, platform: string, type:
|
|||||||
console.log('Version:', version);
|
console.log('Version:', version);
|
||||||
console.log('Commit:', commit);
|
console.log('Commit:', commit);
|
||||||
console.log('Is Update:', isUpdate);
|
console.log('Is Update:', isUpdate);
|
||||||
|
console.log('Is Released:', isReleased);
|
||||||
console.log('File:', file);
|
console.log('File:', file);
|
||||||
|
|
||||||
const stat = await new Promise<fs.Stats>((c, e) => fs.stat(file, (err, stat) => err ? e(err) : c(stat)));
|
const stat = await new Promise<fs.Stats>((c, e) => fs.stat(file, (err, stat) => err ? e(err) : c(stat)));
|
||||||
@@ -215,15 +223,11 @@ async function publish(commit: string, quality: string, platform: string, type:
|
|||||||
|
|
||||||
console.log('Asset:', JSON.stringify(asset, null, ' '));
|
console.log('Asset:', JSON.stringify(asset, null, ' '));
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
// Insiders: nightly build from master
|
|
||||||
const isReleased = (quality === 'insider' && /^master$|^refs\/heads\/master$/.test(sourceBranch) && /Project Collection Service Accounts|Microsoft.VisualStudio.Services.TFS/.test(queuedBy));
|
|
||||||
|
|
||||||
const release = {
|
const release = {
|
||||||
id: commit,
|
id: commit,
|
||||||
timestamp: (new Date()).getTime(),
|
timestamp: (new Date()).getTime(),
|
||||||
version,
|
version,
|
||||||
isReleased: isReleased,
|
isReleased: config.frozen ? false : isReleased,
|
||||||
sourceBranch,
|
sourceBranch,
|
||||||
queuedBy,
|
queuedBy,
|
||||||
assets: [] as Array<Asset>,
|
assets: [] as Array<Asset>,
|
||||||
@@ -242,6 +246,11 @@ async function publish(commit: string, quality: string, platform: string, type:
|
|||||||
}
|
}
|
||||||
|
|
||||||
function main(): void {
|
function main(): void {
|
||||||
|
if (process.env['VSCODE_BUILD_SKIP_PUBLISH']) {
|
||||||
|
console.warn('Skipping publish due to VSCODE_BUILD_SKIP_PUBLISH');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const commit = process.env['BUILD_SOURCEVERSION'];
|
const commit = process.env['BUILD_SOURCEVERSION'];
|
||||||
|
|
||||||
if (!commit) {
|
if (!commit) {
|
||||||
|
|||||||
@@ -1,109 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* 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 { DocumentClient } from 'documentdb';
|
|
||||||
|
|
||||||
interface Config {
|
|
||||||
id: string;
|
|
||||||
frozen: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createDefaultConfig(quality: string): Config {
|
|
||||||
return {
|
|
||||||
id: quality,
|
|
||||||
frozen: false
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function getConfig(quality: string): Promise<Config> {
|
|
||||||
const client = new DocumentClient(process.env['AZURE_DOCUMENTDB_ENDPOINT']!, { masterKey: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
|
|
||||||
const collection = 'dbs/builds/colls/config';
|
|
||||||
const query = {
|
|
||||||
query: `SELECT TOP 1 * FROM c WHERE c.id = @quality`,
|
|
||||||
parameters: [
|
|
||||||
{ name: '@quality', value: quality }
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
return new Promise<Config>((c, e) => {
|
|
||||||
client.queryDocuments(collection, query).toArray((err, results) => {
|
|
||||||
if (err && err.code !== 409) { return e(err); }
|
|
||||||
|
|
||||||
c(!results || results.length === 0 ? createDefaultConfig(quality) : results[0] as any as Config);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function doRelease(commit: string, quality: string): Promise<void> {
|
|
||||||
const client = new DocumentClient(process.env['AZURE_DOCUMENTDB_ENDPOINT']!, { masterKey: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
|
|
||||||
const collection = 'dbs/builds/colls/' + quality;
|
|
||||||
const query = {
|
|
||||||
query: 'SELECT TOP 1 * FROM c WHERE c.id = @id',
|
|
||||||
parameters: [{ name: '@id', value: commit }]
|
|
||||||
};
|
|
||||||
|
|
||||||
let updateTries = 0;
|
|
||||||
|
|
||||||
function update(): Promise<void> {
|
|
||||||
updateTries++;
|
|
||||||
|
|
||||||
return new Promise<void>((c, e) => {
|
|
||||||
client.queryDocuments(collection, query).toArray((err, results) => {
|
|
||||||
if (err) { return e(err); }
|
|
||||||
if (results.length !== 1) { return e(new Error('No documents')); }
|
|
||||||
|
|
||||||
const release = results[0];
|
|
||||||
release.isReleased = true;
|
|
||||||
|
|
||||||
client.replaceDocument(release._self, release, err => {
|
|
||||||
if (err && err.code === 409 && updateTries < 5) { return c(update()); }
|
|
||||||
if (err) { return e(err); }
|
|
||||||
|
|
||||||
console.log('Build successfully updated.');
|
|
||||||
c();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return update();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function release(commit: string, quality: string): Promise<void> {
|
|
||||||
const config = await getConfig(quality);
|
|
||||||
|
|
||||||
console.log('Quality config:', config);
|
|
||||||
|
|
||||||
if (config.frozen) {
|
|
||||||
console.log(`Skipping release because quality ${quality} is frozen.`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await doRelease(commit, quality);
|
|
||||||
}
|
|
||||||
|
|
||||||
function env(name: string): string {
|
|
||||||
const result = process.env[name];
|
|
||||||
|
|
||||||
if (!result) {
|
|
||||||
throw new Error(`Skipping release due to missing env: ${name}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function main(): Promise<void> {
|
|
||||||
const commit = env('BUILD_SOURCEVERSION');
|
|
||||||
const quality = env('VSCODE_QUALITY');
|
|
||||||
|
|
||||||
await release(commit, quality);
|
|
||||||
}
|
|
||||||
|
|
||||||
main().catch(err => {
|
|
||||||
console.error(err);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
@@ -36,6 +36,7 @@ export interface IVersionAccessor extends IApplicationAccessor {
|
|||||||
enum Platform {
|
enum Platform {
|
||||||
WIN_32 = 'win32-ia32',
|
WIN_32 = 'win32-ia32',
|
||||||
WIN_64 = 'win32-x64',
|
WIN_64 = 'win32-x64',
|
||||||
|
LINUX_32 = 'linux-ia32',
|
||||||
LINUX_64 = 'linux-x64',
|
LINUX_64 = 'linux-x64',
|
||||||
MAC_OS = 'darwin-x64'
|
MAC_OS = 'darwin-x64'
|
||||||
}
|
}
|
||||||
@@ -146,10 +147,6 @@ async function ensureVersionAndSymbols(options: IOptions) {
|
|||||||
// Check version does not exist
|
// Check version does not exist
|
||||||
console.log(`HockeyApp: checking for existing version ${options.versions.code} (${options.platform})`);
|
console.log(`HockeyApp: checking for existing version ${options.versions.code} (${options.platform})`);
|
||||||
const versions = await getVersions({ accessToken: options.access.hockeyAppToken, appId: options.access.hockeyAppId });
|
const versions = await getVersions({ accessToken: options.access.hockeyAppToken, appId: options.access.hockeyAppId });
|
||||||
if (!Array.isArray(versions.app_versions)) {
|
|
||||||
throw new Error(`Unexpected response: ${JSON.stringify(versions)}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (versions.app_versions.some(v => v.version === options.versions.code)) {
|
if (versions.app_versions.some(v => v.version === options.versions.code)) {
|
||||||
console.log(`HockeyApp: Returning without uploading symbols because version ${options.versions.code} (${options.platform}) was already found`);
|
console.log(`HockeyApp: Returning without uploading symbols because version ${options.versions.code} (${options.platform}) was already found`);
|
||||||
return;
|
return;
|
||||||
@@ -188,17 +185,13 @@ const hockeyAppToken = process.argv[3];
|
|||||||
const is64 = process.argv[4] === 'x64';
|
const is64 = process.argv[4] === 'x64';
|
||||||
const hockeyAppId = process.argv[5];
|
const hockeyAppId = process.argv[5];
|
||||||
|
|
||||||
if (process.argv.length !== 6) {
|
|
||||||
throw new Error(`HockeyApp: Unexpected number of arguments. Got ${process.argv}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
let platform: Platform;
|
let platform: Platform;
|
||||||
if (process.platform === 'darwin') {
|
if (process.platform === 'darwin') {
|
||||||
platform = Platform.MAC_OS;
|
platform = Platform.MAC_OS;
|
||||||
} else if (process.platform === 'win32') {
|
} else if (process.platform === 'win32') {
|
||||||
platform = is64 ? Platform.WIN_64 : Platform.WIN_32;
|
platform = is64 ? Platform.WIN_64 : Platform.WIN_32;
|
||||||
} else {
|
} else {
|
||||||
platform = Platform.LINUX_64;
|
platform = is64 ? Platform.LINUX_64 : Platform.LINUX_32;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create version and upload symbols in HockeyApp
|
// Create version and upload symbols in HockeyApp
|
||||||
@@ -219,9 +212,7 @@ if (repository && codeVersion && electronVersion && (product.quality === 'stable
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
console.log('HockeyApp: done');
|
console.log('HockeyApp: done');
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error(`HockeyApp: error ${error} (AppID: ${hockeyAppId})`);
|
console.error(`HockeyApp: error (${error})`);
|
||||||
|
|
||||||
return process.exit(1);
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log(`HockeyApp: skipping due to unexpected context (repository: ${repository}, codeVersion: ${codeVersion}, electronVersion: ${electronVersion}, quality: ${product.quality})`);
|
console.log(`HockeyApp: skipping due to unexpected context (repository: ${repository}, codeVersion: ${codeVersion}, electronVersion: ${electronVersion}, quality: ${product.quality})`);
|
||||||
|
|||||||
@@ -153,6 +153,11 @@ async function sync(commit: string, quality: string): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function main(): void {
|
function main(): void {
|
||||||
|
if (process.env['VSCODE_BUILD_SKIP_PUBLISH']) {
|
||||||
|
error('Skipping publish due to VSCODE_BUILD_SKIP_PUBLISH');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const commit = process.env['BUILD_SOURCEVERSION'];
|
const commit = process.env['BUILD_SOURCEVERSION'];
|
||||||
|
|
||||||
if (!commit) {
|
if (!commit) {
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"eventPrefix": "typescript-language-features/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"../../s/extensions/typescript-language-features"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "git/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"../../s/extensions/git"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "extension-telemetry/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"vscode-extension-telemetry"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "vscode-markdown/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"../../s/extensions/markdown-language-features"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "html-language-features/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"../../s/extensions/html-language-features",
|
|
||||||
"vscode-html-languageservice"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "json-language-features/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"../../s/extensions/json-language-features",
|
|
||||||
"vscode-json-languageservice"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "ms-vscode.node2/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"vscode-chrome-debug-core",
|
|
||||||
"vscode-node-debug2"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true,
|
|
||||||
"patchDebugEvents": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"eventPrefix": "ms-vscode.node/",
|
|
||||||
"sourceDirs": [
|
|
||||||
"vscode-chrome-debug-core",
|
|
||||||
"vscode-node-debug"
|
|
||||||
],
|
|
||||||
"excludedDirs": [],
|
|
||||||
"applyEndpoints": true,
|
|
||||||
"patchDebugEvents": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
5
build/azure-pipelines/darwin/build.sh
Executable file
5
build/azure-pipelines/darwin/build.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
yarn gulp vscode-darwin-min
|
||||||
|
yarn gulp vscode-reh-darwin-min
|
||||||
|
yarn gulp upload-vscode-sourcemaps
|
||||||
@@ -2,24 +2,25 @@ steps:
|
|||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "10.15.1"
|
versionSpec: "10.15.1"
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
|
||||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "1.10.1"
|
versionSpec: "1.10.1"
|
||||||
|
# - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
|
# inputs:
|
||||||
|
# keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
||||||
|
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
||||||
|
# vstsFeed: '$(ArtifactFeed)'
|
||||||
|
# condition: eq(variables['System.PullRequest.PullRequestId'], '')
|
||||||
- script: |
|
- script: |
|
||||||
yarn --frozen-lockfile
|
yarn
|
||||||
displayName: Install Dependencies
|
displayName: Install Dependencies
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
# condition: or(ne(variables['System.PullRequest.PullRequestId'], ''), ne(variables['CacheRestored'], 'true'))
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
# - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
||||||
inputs:
|
# inputs:
|
||||||
keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
# keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
# vstsFeed: '$(ArtifactFeed)'
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
# condition: and(succeeded(), eq(variables['System.PullRequest.PullRequestId'], ''), ne(variables['CacheRestored'], 'true'))
|
||||||
- script: |
|
- script: |
|
||||||
yarn gulp electron-x64
|
yarn gulp electron-x64
|
||||||
displayName: Download Electron
|
displayName: Download Electron
|
||||||
|
|||||||
@@ -1,23 +1,4 @@
|
|||||||
steps:
|
steps:
|
||||||
- script: |
|
|
||||||
mkdir -p .build
|
|
||||||
echo -n $BUILD_SOURCEVERSION > .build/commit
|
|
||||||
displayName: Prepare cache flag
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
exit 1
|
|
||||||
displayName: Check RestoreCache
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "10.15.1"
|
versionSpec: "10.15.1"
|
||||||
@@ -36,6 +17,8 @@ steps:
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
|
machine monacotools.visualstudio.com
|
||||||
|
password $(devops-pat)
|
||||||
machine github.com
|
machine github.com
|
||||||
login vscode
|
login vscode
|
||||||
password $(github-distro-mixin-password)
|
password $(github-distro-mixin-password)
|
||||||
@@ -43,53 +26,23 @@ steps:
|
|||||||
|
|
||||||
git config user.email "vscode@microsoft.com"
|
git config user.email "vscode@microsoft.com"
|
||||||
git config user.name "VSCode"
|
git config user.name "VSCode"
|
||||||
displayName: Prepare tooling
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
||||||
git fetch distro
|
git fetch distro
|
||||||
git merge $(node -p "require('./package.json').distro")
|
git merge $(node -p "require('./package.json').distro")
|
||||||
displayName: Merge distro
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
yarn
|
||||||
inputs:
|
yarn gulp mixin
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
yarn gulp hygiene
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
yarn monaco-compile-check
|
||||||
vstsFeed: 'npm-vscode'
|
node build/azure-pipelines/common/installDistro.js
|
||||||
|
node build/lib/builtInExtensions.js
|
||||||
- script: |
|
displayName: Prepare build
|
||||||
set -e
|
|
||||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
|
||||||
displayName: Install dependencies
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
yarn postinstall
|
|
||||||
displayName: Run postinstall scripts
|
|
||||||
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
node build/azure-pipelines/mixin
|
|
||||||
displayName: Mix in quality
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-darwin-min-ci
|
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
./build/azure-pipelines/darwin/build.sh
|
||||||
yarn gulp vscode-reh-darwin-min-ci
|
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
|
||||||
yarn gulp vscode-reh-web-darwin-min-ci
|
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
@@ -98,13 +51,11 @@ steps:
|
|||||||
# APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`"
|
# APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`"
|
||||||
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME"
|
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME"
|
||||||
displayName: Run unit tests
|
displayName: Run unit tests
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
./scripts/test-integration.sh --build --tfs "Integration Tests"
|
./scripts/test-integration.sh --build --tfs "Integration Tests"
|
||||||
displayName: Run integration tests
|
displayName: Run integration tests
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ node build/azure-pipelines/common/publish.js \
|
|||||||
../vscode-server-darwin.zip
|
../vscode-server-darwin.zip
|
||||||
|
|
||||||
# publish hockeyapp symbols
|
# publish hockeyapp symbols
|
||||||
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" x64 "$VSCODE_HOCKEYAPP_ID_MACOS"
|
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "$VSCODE_ARCH" "$VSCODE_HOCKEYAPP_ID_MACOS"
|
||||||
|
|
||||||
# upload configuration
|
# upload configuration
|
||||||
yarn gulp upload-vscode-configuration
|
yarn gulp upload-vscode-configuration
|
||||||
|
|||||||
@@ -30,13 +30,7 @@ steps:
|
|||||||
|
|
||||||
git remote add distro "https://github.com/$VSCODE_MIXIN_REPO.git"
|
git remote add distro "https://github.com/$VSCODE_MIXIN_REPO.git"
|
||||||
git fetch distro
|
git fetch distro
|
||||||
|
git push distro origin/master:refs/heads/master
|
||||||
# Push master branch into oss/master
|
|
||||||
git push distro origin/master:refs/heads/oss/master
|
|
||||||
|
|
||||||
# Push every release branch into oss/release
|
|
||||||
git for-each-ref --format="%(refname:short)" refs/remotes/origin/release/* | sed 's/^origin\/\(.*\)$/\0:refs\/heads\/oss\/\1/' | xargs git push distro
|
|
||||||
|
|
||||||
git merge $(node -p "require('./package.json').distro")
|
git merge $(node -p "require('./package.json').distro")
|
||||||
|
|
||||||
displayName: Sync & Merge Distro
|
displayName: Sync & Merge Distro
|
||||||
7
build/azure-pipelines/linux/build.sh
Executable file
7
build/azure-pipelines/linux/build.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
yarn gulp "vscode-linux-$VSCODE_ARCH-min"
|
||||||
|
|
||||||
|
if [[ "$VSCODE_ARCH" != "ia32" ]]; then
|
||||||
|
yarn gulp vscode-reh-linux-$VSCODE_ARCH-min
|
||||||
|
fi
|
||||||
@@ -10,24 +10,25 @@ steps:
|
|||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "10.15.1"
|
versionSpec: "10.15.1"
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
|
||||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "1.10.1"
|
versionSpec: "1.10.1"
|
||||||
|
# - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
|
# inputs:
|
||||||
|
# keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
||||||
|
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
||||||
|
# vstsFeed: '$(ArtifactFeed)'
|
||||||
|
# condition: eq(variables['System.PullRequest.PullRequestId'], '')
|
||||||
- script: |
|
- script: |
|
||||||
yarn --frozen-lockfile
|
yarn
|
||||||
displayName: Install Dependencies
|
displayName: Install Dependencies
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
# condition: or(ne(variables['System.PullRequest.PullRequestId'], ''), ne(variables['CacheRestored'], 'true'))
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
# - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
||||||
inputs:
|
# inputs:
|
||||||
keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
# keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
# vstsFeed: '$(ArtifactFeed)'
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
# condition: and(succeeded(), eq(variables['System.PullRequest.PullRequestId'], ''), ne(variables['CacheRestored'], 'true'))
|
||||||
- script: |
|
- script: |
|
||||||
yarn gulp electron-x64
|
yarn gulp electron-x64
|
||||||
displayName: Download Electron
|
displayName: Download Electron
|
||||||
@@ -46,9 +47,6 @@ steps:
|
|||||||
- script: |
|
- script: |
|
||||||
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
|
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
|
||||||
displayName: Run Unit Tests
|
displayName: Run Unit Tests
|
||||||
- script: |
|
|
||||||
DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests"
|
|
||||||
displayName: Run Integration Tests
|
|
||||||
- task: PublishTestResults@2
|
- task: PublishTestResults@2
|
||||||
displayName: Publish Tests Results
|
displayName: Publish Tests Results
|
||||||
inputs:
|
inputs:
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
echo 'noop'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
echo 'noop'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
echo 'noop'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
echo 'noop'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
echo 'noop'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
echo 'noop'
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
steps:
|
|
||||||
- script: |
|
|
||||||
mkdir -p .build
|
|
||||||
echo -n $BUILD_SOURCEVERSION > .build/commit
|
|
||||||
displayName: Prepare cache flag
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
exit 1
|
|
||||||
displayName: Check RestoreCache
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: "10.15.1"
|
|
||||||
|
|
||||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
|
||||||
inputs:
|
|
||||||
versionSpec: "1.10.1"
|
|
||||||
|
|
||||||
- task: AzureKeyVault@1
|
|
||||||
displayName: 'Azure Key Vault: Get Secrets'
|
|
||||||
inputs:
|
|
||||||
azureSubscription: 'vscode-builds-subscription'
|
|
||||||
KeyVaultName: vscode
|
|
||||||
|
|
||||||
- task: Docker@1
|
|
||||||
displayName: 'Pull image'
|
|
||||||
inputs:
|
|
||||||
azureSubscriptionEndpoint: 'vscode-builds-subscription'
|
|
||||||
azureContainerRegistry: vscodehub.azurecr.io
|
|
||||||
command: 'Run an image'
|
|
||||||
imageName: 'vscode-linux-build-agent:$(VSCODE_ARCH)'
|
|
||||||
containerCommand: uname
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cat << EOF > ~/.netrc
|
|
||||||
machine github.com
|
|
||||||
login vscode
|
|
||||||
password $(github-distro-mixin-password)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
git config user.email "vscode@microsoft.com"
|
|
||||||
git config user.name "VSCode"
|
|
||||||
displayName: Prepare tooling
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
|
||||||
git fetch distro
|
|
||||||
git merge $(node -p "require('./package.json').distro")
|
|
||||||
displayName: Merge distro
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
|
||||||
displayName: Install dependencies
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
yarn postinstall
|
|
||||||
displayName: Run postinstall scripts
|
|
||||||
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
node build/azure-pipelines/mixin
|
|
||||||
displayName: Mix in quality
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
CHILD_CONCURRENCY=1 ./build/azure-pipelines/linux/multiarch/$(VSCODE_ARCH)/prebuild.sh
|
|
||||||
displayName: Prebuild
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
./build/azure-pipelines/linux/multiarch/$(VSCODE_ARCH)/build.sh
|
|
||||||
displayName: Build
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
|
|
||||||
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
|
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
|
||||||
VSCODE_HOCKEYAPP_TOKEN="$(vscode-hockeyapp-token)" \
|
|
||||||
./build/azure-pipelines/linux/multiarch/$(VSCODE_ARCH)/publish.sh
|
|
||||||
displayName: Publish
|
|
||||||
|
|
||||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
|
||||||
displayName: 'Component Detection'
|
|
||||||
continueOnError: true
|
|
||||||
@@ -1,23 +1,4 @@
|
|||||||
steps:
|
steps:
|
||||||
- script: |
|
|
||||||
mkdir -p .build
|
|
||||||
echo -n $BUILD_SOURCEVERSION > .build/commit
|
|
||||||
displayName: Prepare cache flag
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
exit 1
|
|
||||||
displayName: Check RestoreCache
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "10.15.1"
|
versionSpec: "10.15.1"
|
||||||
@@ -34,7 +15,14 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
export npm_config_arch="$(VSCODE_ARCH)"
|
||||||
|
if [[ "$(VSCODE_ARCH)" == "ia32" ]]; then
|
||||||
|
export PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig"
|
||||||
|
fi
|
||||||
|
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
|
machine monacotools.visualstudio.com
|
||||||
|
password $(devops-pat)
|
||||||
machine github.com
|
machine github.com
|
||||||
login vscode
|
login vscode
|
||||||
password $(github-distro-mixin-password)
|
password $(github-distro-mixin-password)
|
||||||
@@ -42,73 +30,34 @@ steps:
|
|||||||
|
|
||||||
git config user.email "vscode@microsoft.com"
|
git config user.email "vscode@microsoft.com"
|
||||||
git config user.name "VSCode"
|
git config user.name "VSCode"
|
||||||
displayName: Prepare tooling
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
||||||
git fetch distro
|
git fetch distro
|
||||||
git merge $(node -p "require('./package.json').distro")
|
git merge $(node -p "require('./package.json').distro")
|
||||||
displayName: Merge distro
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
CHILD_CONCURRENCY=1 yarn
|
||||||
inputs:
|
yarn gulp mixin
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
yarn gulp hygiene
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
yarn monaco-compile-check
|
||||||
vstsFeed: 'npm-vscode'
|
node build/azure-pipelines/common/installDistro.js
|
||||||
|
node build/lib/builtInExtensions.js
|
||||||
- script: |
|
displayName: Prepare build
|
||||||
set -e
|
|
||||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
|
||||||
displayName: Install dependencies
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
yarn postinstall
|
|
||||||
displayName: Run postinstall scripts
|
|
||||||
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
node build/azure-pipelines/mixin
|
|
||||||
displayName: Mix in quality
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-linux-x64-min-ci
|
./build/azure-pipelines/linux/build.sh
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
|
||||||
yarn gulp vscode-reh-linux-x64-min-ci
|
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
|
||||||
yarn gulp vscode-reh-web-linux-x64-min-ci
|
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
|
yarn gulp "electron-$(VSCODE_ARCH)"
|
||||||
|
|
||||||
|
# xvfb seems to be crashing often, let's make sure it's always up
|
||||||
service xvfb start
|
service xvfb start
|
||||||
displayName: Start xvfb
|
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
|
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
|
||||||
|
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)"
|
||||||
displayName: Run unit tests
|
displayName: Run unit tests
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
|
|
||||||
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-x64"
|
|
||||||
displayName: Run integration tests
|
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
@@ -119,12 +68,12 @@ steps:
|
|||||||
./build/azure-pipelines/linux/publish.sh
|
./build/azure-pipelines/linux/publish.sh
|
||||||
displayName: Publish
|
displayName: Publish
|
||||||
|
|
||||||
- task: PublishPipelineArtifact@0
|
|
||||||
displayName: 'Publish Pipeline Artifact'
|
|
||||||
inputs:
|
|
||||||
artifactName: snap-x64
|
|
||||||
targetPath: .build/linux/snap-tarball
|
|
||||||
|
|
||||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
||||||
displayName: 'Component Detection'
|
displayName: 'Component Detection'
|
||||||
continueOnError: true
|
continueOnError: true
|
||||||
|
|
||||||
|
- task: PublishPipelineArtifact@0
|
||||||
|
displayName: 'Publish Pipeline Artifact'
|
||||||
|
inputs:
|
||||||
|
artifactName: snap-$(VSCODE_ARCH)
|
||||||
|
targetPath: .build/linux/snap-tarball
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ REPO="$(pwd)"
|
|||||||
ROOT="$REPO/.."
|
ROOT="$REPO/.."
|
||||||
|
|
||||||
# Publish tarball
|
# Publish tarball
|
||||||
PLATFORM_LINUX="linux-x64"
|
PLATFORM_LINUX="linux-$VSCODE_ARCH"
|
||||||
|
[[ "$VSCODE_ARCH" == "ia32" ]] && DEB_ARCH="i386" || DEB_ARCH="amd64"
|
||||||
|
[[ "$VSCODE_ARCH" == "ia32" ]] && RPM_ARCH="i386" || RPM_ARCH="x86_64"
|
||||||
BUILDNAME="VSCode-$PLATFORM_LINUX"
|
BUILDNAME="VSCode-$PLATFORM_LINUX"
|
||||||
BUILD="$ROOT/$BUILDNAME"
|
BUILD="$ROOT/$BUILDNAME"
|
||||||
BUILD_VERSION="$(date +%s)"
|
BUILD_VERSION="$(date +%s)"
|
||||||
@@ -19,42 +21,44 @@ rm -rf $ROOT/code-*.tar.*
|
|||||||
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_LINUX" archive-unsigned "$TARBALL_FILENAME" "$VERSION" true "$TARBALL_PATH"
|
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_LINUX" archive-unsigned "$TARBALL_FILENAME" "$VERSION" true "$TARBALL_PATH"
|
||||||
|
|
||||||
# Publish Remote Extension Host
|
# Publish Remote Extension Host
|
||||||
|
if [[ "$VSCODE_ARCH" != "ia32" ]]; then
|
||||||
LEGACY_SERVER_BUILD_NAME="vscode-reh-$PLATFORM_LINUX"
|
LEGACY_SERVER_BUILD_NAME="vscode-reh-$PLATFORM_LINUX"
|
||||||
SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX"
|
SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX"
|
||||||
SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX.tar.gz"
|
SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX.tar.gz"
|
||||||
SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
|
SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
|
||||||
|
|
||||||
rm -rf $ROOT/vscode-server-*.tar.*
|
rm -rf $ROOT/vscode-server-*.tar.*
|
||||||
(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
|
(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
|
||||||
|
|
||||||
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "server-$PLATFORM_LINUX" archive-unsigned "$SERVER_TARBALL_FILENAME" "$VERSION" true "$SERVER_TARBALL_PATH"
|
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "server-$PLATFORM_LINUX" archive-unsigned "$SERVER_TARBALL_FILENAME" "$VERSION" true "$SERVER_TARBALL_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
# Publish hockeyapp symbols
|
# Publish hockeyapp symbols
|
||||||
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "x64" "$VSCODE_HOCKEYAPP_ID_LINUX64"
|
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "$VSCODE_ARCH" "$VSCODE_HOCKEYAPP_ID_LINUX64"
|
||||||
|
|
||||||
# Publish DEB
|
# Publish DEB
|
||||||
yarn gulp "vscode-linux-x64-build-deb"
|
yarn gulp "vscode-linux-$VSCODE_ARCH-build-deb"
|
||||||
PLATFORM_DEB="linux-deb-x64"
|
PLATFORM_DEB="linux-deb-$VSCODE_ARCH"
|
||||||
DEB_ARCH="amd64"
|
[[ "$VSCODE_ARCH" == "ia32" ]] && DEB_ARCH="i386" || DEB_ARCH="amd64"
|
||||||
DEB_FILENAME="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/)"
|
DEB_FILENAME="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/)"
|
||||||
DEB_PATH="$REPO/.build/linux/deb/$DEB_ARCH/deb/$DEB_FILENAME"
|
DEB_PATH="$REPO/.build/linux/deb/$DEB_ARCH/deb/$DEB_FILENAME"
|
||||||
|
|
||||||
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_DEB" package "$DEB_FILENAME" "$VERSION" true "$DEB_PATH"
|
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_DEB" package "$DEB_FILENAME" "$VERSION" true "$DEB_PATH"
|
||||||
|
|
||||||
# Publish RPM
|
# Publish RPM
|
||||||
yarn gulp "vscode-linux-x64-build-rpm"
|
yarn gulp "vscode-linux-$VSCODE_ARCH-build-rpm"
|
||||||
PLATFORM_RPM="linux-rpm-x64"
|
PLATFORM_RPM="linux-rpm-$VSCODE_ARCH"
|
||||||
RPM_ARCH="x86_64"
|
[[ "$VSCODE_ARCH" == "ia32" ]] && RPM_ARCH="i386" || RPM_ARCH="x86_64"
|
||||||
RPM_FILENAME="$(ls $REPO/.build/linux/rpm/$RPM_ARCH/ | grep .rpm)"
|
RPM_FILENAME="$(ls $REPO/.build/linux/rpm/$RPM_ARCH/ | grep .rpm)"
|
||||||
RPM_PATH="$REPO/.build/linux/rpm/$RPM_ARCH/$RPM_FILENAME"
|
RPM_PATH="$REPO/.build/linux/rpm/$RPM_ARCH/$RPM_FILENAME"
|
||||||
|
|
||||||
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_RPM" package "$RPM_FILENAME" "$VERSION" true "$RPM_PATH"
|
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_RPM" package "$RPM_FILENAME" "$VERSION" true "$RPM_PATH"
|
||||||
|
|
||||||
# Publish Snap
|
# Publish Snap
|
||||||
yarn gulp "vscode-linux-x64-prepare-snap"
|
yarn gulp "vscode-linux-$VSCODE_ARCH-prepare-snap"
|
||||||
|
|
||||||
# Pack snap tarball artifact, in order to preserve file perms
|
# Pack snap tarball artifact, in order to preserve file perms
|
||||||
mkdir -p $REPO/.build/linux/snap-tarball
|
mkdir -p $REPO/.build/linux/snap-tarball
|
||||||
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-x64.tar.gz"
|
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$VSCODE_ARCH.tar.gz"
|
||||||
rm -rf $SNAP_TARBALL_PATH
|
rm -rf $SNAP_TARBALL_PATH
|
||||||
(cd .build/linux && tar -czf $SNAP_TARBALL_PATH snap)
|
(cd .build/linux && tar -czf $SNAP_TARBALL_PATH snap)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ steps:
|
|||||||
- task: DownloadPipelineArtifact@0
|
- task: DownloadPipelineArtifact@0
|
||||||
displayName: 'Download Pipeline Artifact'
|
displayName: 'Download Pipeline Artifact'
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: snap-x64
|
artifactName: snap-$(VSCODE_ARCH)
|
||||||
targetPath: .build/linux/snap-tarball
|
targetPath: .build/linux/snap-tarball
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
@@ -31,13 +31,14 @@ steps:
|
|||||||
|
|
||||||
# Define variables
|
# Define variables
|
||||||
REPO="$(pwd)"
|
REPO="$(pwd)"
|
||||||
SNAP_ROOT="$REPO/.build/linux/snap/x64"
|
ARCH="$(VSCODE_ARCH)"
|
||||||
|
SNAP_ROOT="$REPO/.build/linux/snap/$ARCH"
|
||||||
|
|
||||||
# Install build dependencies
|
# Install build dependencies
|
||||||
(cd build && yarn)
|
(cd build && yarn)
|
||||||
|
|
||||||
# Unpack snap tarball artifact, in order to preserve file perms
|
# Unpack snap tarball artifact, in order to preserve file perms
|
||||||
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-x64.tar.gz"
|
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$ARCH.tar.gz"
|
||||||
(cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
|
(cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
|
||||||
|
|
||||||
# Create snap package
|
# Create snap package
|
||||||
@@ -46,9 +47,9 @@ steps:
|
|||||||
PACKAGEJSON="$(ls $SNAP_ROOT/code*/usr/share/code*/resources/app/package.json)"
|
PACKAGEJSON="$(ls $SNAP_ROOT/code*/usr/share/code*/resources/app/package.json)"
|
||||||
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
|
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
|
||||||
SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME"
|
SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME"
|
||||||
(cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft snap --output "$SNAP_PATH")
|
(cd $SNAP_ROOT/code-* && sudo snapcraft snap --output "$SNAP_PATH")
|
||||||
|
|
||||||
# Publish snap package
|
# Publish snap package
|
||||||
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
|
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
|
||||||
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
|
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
|
||||||
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-x64" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
|
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-$ARCH" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const json = require('gulp-json-editor');
|
|
||||||
const buffer = require('gulp-buffer');
|
|
||||||
const filter = require('gulp-filter');
|
|
||||||
const es = require('event-stream');
|
|
||||||
const vfs = require('vinyl-fs');
|
|
||||||
const fancyLog = require('fancy-log');
|
|
||||||
const ansiColors = require('ansi-colors');
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
const quality = process.env['VSCODE_QUALITY'];
|
|
||||||
|
|
||||||
if (!quality) {
|
|
||||||
console.log('Missing VSCODE_QUALITY, skipping mixin');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const productJsonFilter = filter('product.json', { restore: true });
|
|
||||||
|
|
||||||
fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
|
|
||||||
return vfs
|
|
||||||
.src(`quality/${quality}/**`, { base: `quality/${quality}` })
|
|
||||||
.pipe(filter(f => !f.isDirectory()))
|
|
||||||
.pipe(productJsonFilter)
|
|
||||||
.pipe(buffer())
|
|
||||||
.pipe(json(o => Object.assign({}, require('../product.json'), o)))
|
|
||||||
.pipe(productJsonFilter.restore)
|
|
||||||
.pipe(es.mapSync(function (f) {
|
|
||||||
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
|
|
||||||
return f;
|
|
||||||
}))
|
|
||||||
.pipe(vfs.dest('.'));
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
||||||
@@ -1,136 +1,81 @@
|
|||||||
resources:
|
resources:
|
||||||
containers:
|
containers:
|
||||||
- container: vscode-x64
|
- container: vscode-x64
|
||||||
image: vscodehub.azurecr.io/vscode-linux-build-agent:x64
|
|
||||||
endpoint: VSCodeHub
|
endpoint: VSCodeHub
|
||||||
|
image: vscodehub.azurecr.io/vscode-linux-build-agent:x64
|
||||||
|
- container: vscode-ia32
|
||||||
|
endpoint: VSCodeHub
|
||||||
|
image: vscodehub.azurecr.io/vscode-linux-build-agent:ia32
|
||||||
- container: snapcraft
|
- container: snapcraft
|
||||||
image: snapcore/snapcraft:stable
|
image: snapcore/snapcraft
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
- job: Compile
|
|
||||||
pool:
|
|
||||||
vmImage: 'Ubuntu-16.04'
|
|
||||||
container: vscode-x64
|
|
||||||
steps:
|
|
||||||
- template: product-compile.yml
|
|
||||||
|
|
||||||
- job: Windows
|
- job: Windows
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
|
condition: eq(variables['VSCODE_BUILD_WIN32'], 'true')
|
||||||
pool:
|
pool:
|
||||||
vmImage: VS2017-Win2016
|
vmImage: VS2017-Win2016
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: x64
|
VSCODE_ARCH: x64
|
||||||
dependsOn:
|
|
||||||
- Compile
|
|
||||||
steps:
|
steps:
|
||||||
- template: win32/product-build-win32.yml
|
- template: win32/product-build-win32.yml
|
||||||
|
|
||||||
- job: Windows32
|
- job: Windows32
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true'))
|
condition: eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true')
|
||||||
pool:
|
pool:
|
||||||
vmImage: VS2017-Win2016
|
vmImage: VS2017-Win2016
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: ia32
|
VSCODE_ARCH: ia32
|
||||||
dependsOn:
|
|
||||||
- Compile
|
|
||||||
steps:
|
steps:
|
||||||
- template: win32/product-build-win32.yml
|
- template: win32/product-build-win32.yml
|
||||||
|
|
||||||
- job: Linux
|
- job: Linux
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
|
condition: eq(variables['VSCODE_BUILD_LINUX'], 'true')
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
container: vscode-x64
|
container: vscode-x64
|
||||||
dependsOn:
|
|
||||||
- Compile
|
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux.yml
|
- template: linux/product-build-linux.yml
|
||||||
|
|
||||||
- job: LinuxSnap
|
- job: LinuxSnap
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
|
condition: eq(variables['VSCODE_BUILD_LINUX'], 'true')
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
|
variables:
|
||||||
|
VSCODE_ARCH: x64
|
||||||
container: snapcraft
|
container: snapcraft
|
||||||
dependsOn: Linux
|
dependsOn: Linux
|
||||||
steps:
|
steps:
|
||||||
- template: linux/snap-build-linux.yml
|
- template: linux/snap-build-linux.yml
|
||||||
|
|
||||||
- job: LinuxArmhf
|
- job: Linux32
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
|
condition: eq(variables['VSCODE_BUILD_LINUX_32BIT'], 'true')
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
variables:
|
variables:
|
||||||
VSCODE_ARCH: armhf
|
VSCODE_ARCH: ia32
|
||||||
dependsOn:
|
container: vscode-ia32
|
||||||
- Compile
|
|
||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-multiarch.yml
|
- template: linux/product-build-linux.yml
|
||||||
|
|
||||||
- job: LinuxAlpine
|
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
|
|
||||||
pool:
|
|
||||||
vmImage: 'Ubuntu-16.04'
|
|
||||||
variables:
|
|
||||||
VSCODE_ARCH: alpine
|
|
||||||
dependsOn:
|
|
||||||
- Compile
|
|
||||||
steps:
|
|
||||||
- template: linux/product-build-linux-multiarch.yml
|
|
||||||
|
|
||||||
- job: LinuxWeb
|
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WEB'], 'true'))
|
|
||||||
pool:
|
|
||||||
vmImage: 'Ubuntu-16.04'
|
|
||||||
variables:
|
|
||||||
VSCODE_ARCH: x64
|
|
||||||
dependsOn:
|
|
||||||
- Compile
|
|
||||||
steps:
|
|
||||||
- template: web/product-build-web.yml
|
|
||||||
|
|
||||||
- job: macOS
|
- job: macOS
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
|
condition: eq(variables['VSCODE_BUILD_MACOS'], 'true')
|
||||||
pool:
|
pool:
|
||||||
vmImage: macOS 10.13
|
vmImage: macOS 10.13
|
||||||
dependsOn:
|
|
||||||
- Compile
|
|
||||||
steps:
|
steps:
|
||||||
- template: darwin/product-build-darwin.yml
|
- template: darwin/product-build-darwin.yml
|
||||||
|
|
||||||
- job: Release
|
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), or(eq(variables['VSCODE_RELEASE'], 'true'), and(or(eq(variables['VSCODE_QUALITY'], 'insider'), eq(variables['VSCODE_QUALITY'], 'exploration')), eq(variables['Build.Reason'], 'Schedule'))))
|
|
||||||
pool:
|
|
||||||
vmImage: 'Ubuntu-16.04'
|
|
||||||
dependsOn:
|
|
||||||
- Windows
|
|
||||||
- Windows32
|
|
||||||
- Linux
|
|
||||||
- LinuxSnap
|
|
||||||
- LinuxArmhf
|
|
||||||
- LinuxAlpine
|
|
||||||
- macOS
|
|
||||||
steps:
|
|
||||||
- template: release.yml
|
|
||||||
|
|
||||||
- job: Mooncake
|
- job: Mooncake
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
condition: and(succeededOrFailed(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
|
condition: true
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- Windows
|
- Windows
|
||||||
- Windows32
|
- Windows32
|
||||||
- Linux
|
- Linux
|
||||||
- LinuxSnap
|
- LinuxSnap
|
||||||
- LinuxArmhf
|
- Linux32
|
||||||
- LinuxAlpine
|
|
||||||
- LinuxWeb
|
|
||||||
- macOS
|
- macOS
|
||||||
steps:
|
steps:
|
||||||
- template: sync-mooncake.yml
|
- template: sync-mooncake.yml
|
||||||
|
|
||||||
schedules:
|
|
||||||
- cron: "0 5 * * Mon-Fri"
|
|
||||||
displayName: Mon-Fri at 7:00
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
steps:
|
|
||||||
- script: |
|
|
||||||
mkdir -p .build
|
|
||||||
echo -n $BUILD_SOURCEVERSION > .build/commit
|
|
||||||
displayName: Prepare cache flag
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: "10.15.1"
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
|
||||||
inputs:
|
|
||||||
versionSpec: "1.10.1"
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: AzureKeyVault@1
|
|
||||||
displayName: 'Azure Key Vault: Get Secrets'
|
|
||||||
inputs:
|
|
||||||
azureSubscription: 'vscode-builds-subscription'
|
|
||||||
KeyVaultName: vscode
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
cat << EOF > ~/.netrc
|
|
||||||
machine github.com
|
|
||||||
login vscode
|
|
||||||
password $(github-distro-mixin-password)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
git config user.email "vscode@microsoft.com"
|
|
||||||
git config user.name "VSCode"
|
|
||||||
displayName: Prepare tooling
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
|
||||||
git fetch distro
|
|
||||||
git merge $(node -p "require('./package.json').distro")
|
|
||||||
displayName: Merge distro
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
|
||||||
displayName: Install dependencies
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
yarn postinstall
|
|
||||||
displayName: Run postinstall scripts
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), eq(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
# Mixin must run before optimize, because the CSS loader will
|
|
||||||
# inline small SVGs
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
node build/azure-pipelines/mixin
|
|
||||||
displayName: Mix in quality
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
yarn gulp hygiene
|
|
||||||
yarn monaco-compile-check
|
|
||||||
displayName: Run hygiene checks
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -
|
|
||||||
./build/azure-pipelines/common/extract-telemetry.sh
|
|
||||||
displayName: Extract Telemetry
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
yarn gulp compile-build
|
|
||||||
yarn gulp compile-extensions-build
|
|
||||||
yarn gulp minify-vscode
|
|
||||||
yarn gulp minify-vscode-reh
|
|
||||||
yarn gulp minify-vscode-reh-web
|
|
||||||
displayName: Compile
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
|
|
||||||
node build/azure-pipelines/upload-sourcemaps
|
|
||||||
displayName: Upload sourcemaps
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
steps:
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: "10.x"
|
|
||||||
|
|
||||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
|
||||||
inputs:
|
|
||||||
versionSpec: "1.x"
|
|
||||||
|
|
||||||
- task: AzureKeyVault@1
|
|
||||||
displayName: 'Azure Key Vault: Get Secrets'
|
|
||||||
inputs:
|
|
||||||
azureSubscription: 'vscode-builds-subscription'
|
|
||||||
KeyVaultName: vscode
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
|
|
||||||
(cd build ; yarn)
|
|
||||||
|
|
||||||
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
|
|
||||||
node build/azure-pipelines/common/release.js
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const path = require('path');
|
|
||||||
const es = require('event-stream');
|
|
||||||
const azure = require('gulp-azure-storage');
|
|
||||||
const vfs = require('vinyl-fs');
|
|
||||||
const util = require('../lib/util');
|
|
||||||
const root = path.dirname(path.dirname(__dirname));
|
|
||||||
const commit = util.getVersion(root);
|
|
||||||
|
|
||||||
function main() {
|
|
||||||
const vs = vfs.src('out-vscode-min/**/*.map', { base: 'out-vscode-min' }) // client source-maps only
|
|
||||||
.pipe(es.mapSync(f => {
|
|
||||||
f.path = `${f.base}/core/${f.relative}`;
|
|
||||||
return f;
|
|
||||||
}));
|
|
||||||
|
|
||||||
const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
|
|
||||||
|
|
||||||
return es.merge(vs, extensionsOut)
|
|
||||||
.pipe(es.through(function (data) {
|
|
||||||
// debug
|
|
||||||
console.log('Uploading Sourcemap', data.relative);
|
|
||||||
this.emit('data', data);
|
|
||||||
}))
|
|
||||||
.pipe(azure.upload({
|
|
||||||
account: process.env.AZURE_STORAGE_ACCOUNT,
|
|
||||||
key: process.env.AZURE_STORAGE_ACCESS_KEY,
|
|
||||||
container: 'sourcemaps',
|
|
||||||
prefix: commit + '/'
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
steps:
|
|
||||||
- script: |
|
|
||||||
mkdir -p .build
|
|
||||||
echo -n $BUILD_SOURCEVERSION > .build/commit
|
|
||||||
displayName: Prepare cache flag
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
exit 1
|
|
||||||
displayName: Check RestoreCache
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: "10.15.1"
|
|
||||||
|
|
||||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
|
||||||
inputs:
|
|
||||||
versionSpec: "1.10.1"
|
|
||||||
|
|
||||||
- task: AzureKeyVault@1
|
|
||||||
displayName: 'Azure Key Vault: Get Secrets'
|
|
||||||
inputs:
|
|
||||||
azureSubscription: 'vscode-builds-subscription'
|
|
||||||
KeyVaultName: vscode
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
cat << EOF > ~/.netrc
|
|
||||||
machine github.com
|
|
||||||
login vscode
|
|
||||||
password $(github-distro-mixin-password)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
git config user.email "vscode@microsoft.com"
|
|
||||||
git config user.name "VSCode"
|
|
||||||
displayName: Prepare tooling
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
|
|
||||||
git fetch distro
|
|
||||||
git merge $(node -p "require('./package.json').distro")
|
|
||||||
displayName: Merge distro
|
|
||||||
|
|
||||||
# - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
# inputs:
|
|
||||||
# keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
# vstsFeed: 'npm-vscode'
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
|
|
||||||
displayName: Install dependencies
|
|
||||||
# condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
# - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
# inputs:
|
|
||||||
# keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
# vstsFeed: 'npm-vscode'
|
|
||||||
# condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
# - script: |
|
|
||||||
# set -e
|
|
||||||
# yarn postinstall
|
|
||||||
# displayName: Run postinstall scripts
|
|
||||||
# condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
node build/azure-pipelines/mixin
|
|
||||||
displayName: Mix in quality
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
|
||||||
yarn gulp vscode-web-min-ci
|
|
||||||
displayName: Build
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set -e
|
|
||||||
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
|
|
||||||
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
|
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
|
||||||
./build/azure-pipelines/web/publish.sh
|
|
||||||
displayName: Publish
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
REPO="$(pwd)"
|
|
||||||
ROOT="$REPO/.."
|
|
||||||
|
|
||||||
# Publish Web Client
|
|
||||||
WEB_BUILD_NAME="vscode-web"
|
|
||||||
WEB_TARBALL_FILENAME="vscode-web.tar.gz"
|
|
||||||
WEB_TARBALL_PATH="$ROOT/$WEB_TARBALL_FILENAME"
|
|
||||||
BUILD="$ROOT/$WEB_BUILD_NAME"
|
|
||||||
PACKAGEJSON="$BUILD/package.json"
|
|
||||||
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
|
|
||||||
|
|
||||||
rm -rf $ROOT/vscode-web.tar.*
|
|
||||||
|
|
||||||
(cd $ROOT && tar --owner=0 --group=0 -czf $WEB_TARBALL_PATH $WEB_BUILD_NAME)
|
|
||||||
|
|
||||||
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "web-standalone" archive-unsigned "$WEB_TARBALL_FILENAME" "$VERSION" true "$WEB_TARBALL_PATH"
|
|
||||||
5
build/azure-pipelines/win32/build.ps1
Normal file
5
build/azure-pipelines/win32/build.ps1
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-min" }
|
||||||
|
exec { yarn gulp "vscode-reh-win32-$env:VSCODE_ARCH-min" }
|
||||||
|
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-inno-updater" }
|
||||||
@@ -9,21 +9,22 @@ steps:
|
|||||||
inputs:
|
inputs:
|
||||||
versionSpec: '2.x'
|
versionSpec: '2.x'
|
||||||
addToPath: true
|
addToPath: true
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
# - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
inputs:
|
# inputs:
|
||||||
keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
# keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
# vstsFeed: '$(ArtifactFeed)'
|
||||||
|
# condition: eq(variables['System.PullRequest.PullRequestId'], '')
|
||||||
- powershell: |
|
- powershell: |
|
||||||
yarn --frozen-lockfile
|
yarn
|
||||||
displayName: Install Dependencies
|
displayName: Install Dependencies
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
# condition: or(ne(variables['System.PullRequest.PullRequestId'], ''), ne(variables['CacheRestored'], 'true'))
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
# - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
||||||
inputs:
|
# inputs:
|
||||||
keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
# keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
||||||
vstsFeed: '$(ArtifactFeed)'
|
# vstsFeed: '$(ArtifactFeed)'
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
# condition: and(succeeded(), eq(variables['System.PullRequest.PullRequestId'], ''), ne(variables['CacheRestored'], 'true'))
|
||||||
- powershell: |
|
- powershell: |
|
||||||
yarn gulp electron
|
yarn gulp electron
|
||||||
displayName: Download Electron
|
displayName: Download Electron
|
||||||
|
|||||||
@@ -1,23 +1,4 @@
|
|||||||
steps:
|
steps:
|
||||||
- powershell: |
|
|
||||||
mkdir .build -ea 0
|
|
||||||
"$env:BUILD_SOURCEVERSION" | Out-File -Encoding ascii -NoNewLine .build\commit
|
|
||||||
displayName: Prepare cache flag
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/commit'
|
|
||||||
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
platformIndependent: true
|
|
||||||
alias: 'Compilation'
|
|
||||||
|
|
||||||
- powershell: |
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
exit 1
|
|
||||||
displayName: Check RestoreCache
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
- task: NodeTool@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: "10.15.1"
|
versionSpec: "10.15.1"
|
||||||
@@ -40,67 +21,29 @@ steps:
|
|||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
"machine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
|
"machine monacotools.visualstudio.com`npassword $(devops-pat)`nmachine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
|
||||||
|
$env:npm_config_arch="$(VSCODE_ARCH)"
|
||||||
|
$env:CHILD_CONCURRENCY="1"
|
||||||
|
|
||||||
exec { git config user.email "vscode@microsoft.com" }
|
exec { git config user.email "vscode@microsoft.com" }
|
||||||
exec { git config user.name "VSCode" }
|
exec { git config user.name "VSCode" }
|
||||||
|
|
||||||
mkdir .build -ea 0
|
|
||||||
"$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
|
|
||||||
displayName: Prepare tooling
|
|
||||||
|
|
||||||
- powershell: |
|
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
exec { git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git" }
|
exec { git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git" }
|
||||||
exec { git fetch distro }
|
exec { git fetch distro }
|
||||||
exec { git merge $(node -p "require('./package.json').distro") }
|
exec { git merge $(node -p "require('./package.json').distro") }
|
||||||
displayName: Merge distro
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
exec { yarn }
|
||||||
inputs:
|
exec { yarn gulp mixin }
|
||||||
keyfile: 'build/.cachesalt, .build/arch, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
exec { yarn gulp hygiene }
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
exec { yarn monaco-compile-check }
|
||||||
vstsFeed: 'npm-vscode'
|
exec { node build/azure-pipelines/common/installDistro.js }
|
||||||
|
exec { node build/lib/builtInExtensions.js }
|
||||||
- powershell: |
|
displayName: Prepare build
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
$env:npm_config_arch="$(VSCODE_ARCH)"
|
|
||||||
$env:CHILD_CONCURRENCY="1"
|
|
||||||
exec { yarn --frozen-lockfile }
|
|
||||||
displayName: Install dependencies
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
|
||||||
inputs:
|
|
||||||
keyfile: 'build/.cachesalt, .build/arch, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
|
|
||||||
targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
|
|
||||||
vstsFeed: 'npm-vscode'
|
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- powershell: |
|
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
exec { yarn postinstall }
|
|
||||||
displayName: Run postinstall scripts
|
|
||||||
condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
|
|
||||||
|
|
||||||
- powershell: |
|
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
exec { node build/azure-pipelines/mixin }
|
|
||||||
displayName: Mix in quality
|
|
||||||
|
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
||||||
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-min-ci" }
|
.\build\azure-pipelines\win32\build.ps1
|
||||||
exec { yarn gulp "vscode-reh-win32-$env:VSCODE_ARCH-min-ci" }
|
|
||||||
exec { yarn gulp "vscode-reh-web-win32-$env:VSCODE_ARCH-min-ci" }
|
|
||||||
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-code-helper" }
|
|
||||||
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-inno-updater" }
|
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
- powershell: |
|
- powershell: |
|
||||||
@@ -108,8 +51,8 @@ steps:
|
|||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
exec { yarn gulp "electron-$(VSCODE_ARCH)" }
|
exec { yarn gulp "electron-$(VSCODE_ARCH)" }
|
||||||
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
|
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
|
||||||
|
# yarn smoketest -- --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
|
||||||
displayName: Run unit tests
|
displayName: Run unit tests
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- powershell: |
|
- powershell: |
|
||||||
. build/azure-pipelines/win32/exec.ps1
|
. build/azure-pipelines/win32/exec.ps1
|
||||||
@@ -117,7 +60,6 @@ steps:
|
|||||||
exec { yarn gulp "electron-$(VSCODE_ARCH)" }
|
exec { yarn gulp "electron-$(VSCODE_ARCH)" }
|
||||||
exec { .\scripts\test-integration.bat --build --tfs "Integration Tests" }
|
exec { .\scripts\test-integration.bat --build --tfs "Integration Tests" }
|
||||||
displayName: Run integration tests
|
displayName: Run integration tests
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
|
||||||
|
|
||||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||||
inputs:
|
inputs:
|
||||||
@@ -199,7 +141,6 @@ steps:
|
|||||||
$env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
|
$env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
|
||||||
$env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
|
$env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
|
||||||
$env:VSCODE_HOCKEYAPP_TOKEN = "$(vscode-hockeyapp-token)"
|
$env:VSCODE_HOCKEYAPP_TOKEN = "$(vscode-hockeyapp-token)"
|
||||||
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
|
|
||||||
.\build\azure-pipelines\win32\publish.ps1
|
.\build\azure-pipelines\win32\publish.ps1
|
||||||
displayName: Publish
|
displayName: Publish
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"name": "Microsoft.sqlservernotebook",
|
|
||||||
"version": "0.1.2",
|
|
||||||
"repo": "https://github.com/Microsoft/azuredatastudio"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -10,7 +10,7 @@ const path = require('path');
|
|||||||
let window = null;
|
let window = null;
|
||||||
|
|
||||||
app.once('ready', () => {
|
app.once('ready', () => {
|
||||||
window = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, webviewTag: true } });
|
window = new BrowserWindow({ width: 800, height: 600 });
|
||||||
window.setMenuBarVisibility(false);
|
window.setMenuBarVisibility(false);
|
||||||
window.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true }));
|
window.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true }));
|
||||||
// window.webContents.openDevTools();
|
// window.webContents.openDevTools();
|
||||||
|
|||||||
91
build/download/download.js
Normal file
91
build/download/download.js
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
"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 https = require("https");
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
const cp = require("child_process");
|
||||||
|
function ensureDir(filepath) {
|
||||||
|
if (!fs.existsSync(filepath)) {
|
||||||
|
ensureDir(path.dirname(filepath));
|
||||||
|
fs.mkdirSync(filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function download(options, destination) {
|
||||||
|
ensureDir(path.dirname(destination));
|
||||||
|
return new Promise((c, e) => {
|
||||||
|
const fd = fs.openSync(destination, 'w');
|
||||||
|
const req = https.get(options, (res) => {
|
||||||
|
res.on('data', (chunk) => {
|
||||||
|
fs.writeSync(fd, chunk);
|
||||||
|
});
|
||||||
|
res.on('end', () => {
|
||||||
|
fs.closeSync(fd);
|
||||||
|
c();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
req.on('error', (reqErr) => {
|
||||||
|
console.error(`request to ${options.host}${options.path} failed.`);
|
||||||
|
console.error(reqErr);
|
||||||
|
e(reqErr);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const MARKER_ARGUMENT = `_download_fork_`;
|
||||||
|
function base64encode(str) {
|
||||||
|
return Buffer.from(str, 'utf8').toString('base64');
|
||||||
|
}
|
||||||
|
function base64decode(str) {
|
||||||
|
return Buffer.from(str, 'base64').toString('utf8');
|
||||||
|
}
|
||||||
|
function downloadInExternalProcess(options) {
|
||||||
|
const url = `https://${options.requestOptions.host}${options.requestOptions.path}`;
|
||||||
|
console.log(`Downloading ${url}...`);
|
||||||
|
return new Promise((c, e) => {
|
||||||
|
const child = cp.fork(__filename, [MARKER_ARGUMENT, base64encode(JSON.stringify(options))], {
|
||||||
|
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
|
||||||
|
});
|
||||||
|
let stderr = [];
|
||||||
|
child.stderr.on('data', (chunk) => {
|
||||||
|
stderr.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
|
||||||
|
});
|
||||||
|
child.on('exit', (code) => {
|
||||||
|
if (code === 0) {
|
||||||
|
// normal termination
|
||||||
|
console.log(`Finished downloading ${url}.`);
|
||||||
|
c();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// abnormal termination
|
||||||
|
console.error(Buffer.concat(stderr).toString());
|
||||||
|
e(new Error(`Download of ${url} failed.`));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.downloadInExternalProcess = downloadInExternalProcess;
|
||||||
|
function _downloadInExternalProcess() {
|
||||||
|
let options;
|
||||||
|
try {
|
||||||
|
options = JSON.parse(base64decode(process.argv[3]));
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
console.error(`Cannot read arguments`);
|
||||||
|
console.error(err);
|
||||||
|
process.exit(-1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
download(options.requestOptions, options.destinationPath).then(() => {
|
||||||
|
process.exit(0);
|
||||||
|
}, (err) => {
|
||||||
|
console.error(err);
|
||||||
|
process.exit(-2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (process.argv.length >= 4 && process.argv[2] === MARKER_ARGUMENT) {
|
||||||
|
// running as forked download script
|
||||||
|
_downloadInExternalProcess();
|
||||||
|
}
|
||||||
111
build/download/download.ts
Normal file
111
build/download/download.ts
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
import * as https from 'https';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
import * as cp from 'child_process';
|
||||||
|
|
||||||
|
function ensureDir(filepath: string) {
|
||||||
|
if (!fs.existsSync(filepath)) {
|
||||||
|
ensureDir(path.dirname(filepath));
|
||||||
|
fs.mkdirSync(filepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function download(options: https.RequestOptions, destination: string): Promise<void> {
|
||||||
|
ensureDir(path.dirname(destination));
|
||||||
|
|
||||||
|
return new Promise<void>((c, e) => {
|
||||||
|
const fd = fs.openSync(destination, 'w');
|
||||||
|
const req = https.get(options, (res) => {
|
||||||
|
res.on('data', (chunk) => {
|
||||||
|
fs.writeSync(fd, chunk);
|
||||||
|
});
|
||||||
|
res.on('end', () => {
|
||||||
|
fs.closeSync(fd);
|
||||||
|
c();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
req.on('error', (reqErr) => {
|
||||||
|
console.error(`request to ${options.host}${options.path} failed.`);
|
||||||
|
console.error(reqErr);
|
||||||
|
e(reqErr);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const MARKER_ARGUMENT = `_download_fork_`;
|
||||||
|
|
||||||
|
function base64encode(str: string): string {
|
||||||
|
return Buffer.from(str, 'utf8').toString('base64');
|
||||||
|
}
|
||||||
|
|
||||||
|
function base64decode(str: string): string {
|
||||||
|
return Buffer.from(str, 'base64').toString('utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IDownloadRequestOptions {
|
||||||
|
host: string;
|
||||||
|
path: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IDownloadOptions {
|
||||||
|
requestOptions: IDownloadRequestOptions;
|
||||||
|
destinationPath: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function downloadInExternalProcess(options: IDownloadOptions): Promise<void> {
|
||||||
|
const url = `https://${options.requestOptions.host}${options.requestOptions.path}`;
|
||||||
|
console.log(`Downloading ${url}...`);
|
||||||
|
return new Promise<void>((c, e) => {
|
||||||
|
const child = cp.fork(
|
||||||
|
__filename,
|
||||||
|
[MARKER_ARGUMENT, base64encode(JSON.stringify(options))],
|
||||||
|
{
|
||||||
|
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
|
||||||
|
}
|
||||||
|
);
|
||||||
|
let stderr: Buffer[] = [];
|
||||||
|
child.stderr.on('data', (chunk) => {
|
||||||
|
stderr.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
|
||||||
|
});
|
||||||
|
child.on('exit', (code) => {
|
||||||
|
if (code === 0) {
|
||||||
|
// normal termination
|
||||||
|
console.log(`Finished downloading ${url}.`);
|
||||||
|
c();
|
||||||
|
} else {
|
||||||
|
// abnormal termination
|
||||||
|
console.error(Buffer.concat(stderr).toString());
|
||||||
|
e(new Error(`Download of ${url} failed.`));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function _downloadInExternalProcess() {
|
||||||
|
let options: IDownloadOptions;
|
||||||
|
try {
|
||||||
|
options = JSON.parse(base64decode(process.argv[3]));
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`Cannot read arguments`);
|
||||||
|
console.error(err);
|
||||||
|
process.exit(-1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
download(options.requestOptions, options.destinationPath).then(() => {
|
||||||
|
process.exit(0);
|
||||||
|
}, (err) => {
|
||||||
|
console.error(err);
|
||||||
|
process.exit(-2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.argv.length >= 4 && process.argv[2] === MARKER_ARGUMENT) {
|
||||||
|
// running as forked download script
|
||||||
|
_downloadInExternalProcess();
|
||||||
|
}
|
||||||
@@ -5,12 +5,14 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const gulp = require('gulp');
|
|
||||||
const util = require('./lib/util');
|
const util = require('./lib/util');
|
||||||
const task = require('./lib/task');
|
const task = require('./lib/task');
|
||||||
const compilation = require('./lib/compilation');
|
const compilation = require('./lib/compilation');
|
||||||
|
const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
|
||||||
|
|
||||||
// Full compile, including nls and inline sources in sourcemaps, for build
|
// Full compile, including nls and inline sources in sourcemaps, for build
|
||||||
const compileBuildTask = task.define('compile-build', task.series(util.rimraf('out-build'), compilation.compileTask('src', 'out-build', true)));
|
const compileClientBuildTask = task.define('compile-client-build', task.series(util.rimraf('out-build'), compilation.compileTask('src', 'out-build', true)));
|
||||||
gulp.task(compileBuildTask);
|
|
||||||
|
// All Build
|
||||||
|
const compileBuildTask = task.define('compile-build', task.parallel(compileClientBuildTask, compileExtensionsBuildTask));
|
||||||
exports.compileBuildTask = compileBuildTask;
|
exports.compileBuildTask = compileBuildTask;
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ const root = path.dirname(__dirname);
|
|||||||
const commit = util.getVersion(root);
|
const commit = util.getVersion(root);
|
||||||
const plumber = require('gulp-plumber');
|
const plumber = require('gulp-plumber');
|
||||||
const _ = require('underscore');
|
const _ = require('underscore');
|
||||||
const ext = require('./lib/extensions');
|
|
||||||
|
|
||||||
const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
|
const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
|
||||||
|
|
||||||
@@ -136,7 +135,11 @@ const tasks = compilations.map(function (tsconfigFile) {
|
|||||||
gulp.task(compileTask);
|
gulp.task(compileTask);
|
||||||
gulp.task(watchTask);
|
gulp.task(watchTask);
|
||||||
|
|
||||||
return { compileTask, watchTask, compileBuildTask };
|
return {
|
||||||
|
compileTask: compileTask,
|
||||||
|
watchTask: watchTask,
|
||||||
|
compileBuildTask: compileBuildTask
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
|
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
|
||||||
@@ -147,17 +150,5 @@ const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tas
|
|||||||
gulp.task(watchExtensionsTask);
|
gulp.task(watchExtensionsTask);
|
||||||
exports.watchExtensionsTask = watchExtensionsTask;
|
exports.watchExtensionsTask = watchExtensionsTask;
|
||||||
|
|
||||||
const compileExtensionsBuildLegacyTask = task.define('compile-extensions-build-legacy', task.parallel(...tasks.map(t => t.compileBuildTask)));
|
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.parallel(...tasks.map(t => t.compileBuildTask)));
|
||||||
gulp.task(compileExtensionsBuildLegacyTask);
|
|
||||||
|
|
||||||
// Azure Pipelines
|
|
||||||
|
|
||||||
const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
|
|
||||||
const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
|
|
||||||
cleanExtensionsBuildTask,
|
|
||||||
task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream().pipe(gulp.dest('.build'))),
|
|
||||||
task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream().pipe(gulp.dest('.build'))),
|
|
||||||
));
|
|
||||||
|
|
||||||
gulp.task(compileExtensionsBuildTask);
|
|
||||||
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
|
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
|
||||||
@@ -92,13 +92,12 @@ const indentationFilter = [
|
|||||||
'!**/*.dockerfile',
|
'!**/*.dockerfile',
|
||||||
'!extensions/markdown-language-features/media/*.js',
|
'!extensions/markdown-language-features/media/*.js',
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
'!**/*.{xlf,docx,sql,vsix,bacpac,ipynb}',
|
'!**/*.{xlf,docx,sql,vsix,bacpac}',
|
||||||
'!extensions/mssql/sqltoolsservice/**',
|
'!extensions/mssql/sqltoolsservice/**',
|
||||||
'!extensions/import/flatfileimportservice/**',
|
'!extensions/import/flatfileimportservice/**',
|
||||||
'!extensions/admin-tool-ext-win/ssmsmin/**',
|
'!extensions/admin-tool-ext-win/ssmsmin/**',
|
||||||
'!extensions/resource-deployment/notebooks/**',
|
'!extensions/resource-deployment/notebooks/**',
|
||||||
'!extensions/mssql/notebooks/**',
|
'!extensions/mssql/notebooks/**'
|
||||||
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const copyrightFilter = [
|
const copyrightFilter = [
|
||||||
@@ -128,30 +127,29 @@ const copyrightFilter = [
|
|||||||
'!extensions/markdown-language-features/media/highlight.css',
|
'!extensions/markdown-language-features/media/highlight.css',
|
||||||
'!extensions/html-language-features/server/src/modes/typescript/*',
|
'!extensions/html-language-features/server/src/modes/typescript/*',
|
||||||
'!extensions/*/server/bin/*',
|
'!extensions/*/server/bin/*',
|
||||||
'!src/vs/editor/test/node/classification/typescript-test.ts',
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
'!extensions/notebook/src/intellisense/text.ts',
|
'!extensions/notebook/src/intellisense/text.ts',
|
||||||
'!extensions/mssql/src/objectExplorerNodeProvider/webhdfs.ts',
|
'!extensions/mssql/src/objectExplorerNodeProvider/webhdfs.ts',
|
||||||
'!src/sql/workbench/parts/notebook/browser/outputs/tableRenderers.ts',
|
'!src/sql/workbench/parts/notebook/outputs/tableRenderers.ts',
|
||||||
'!src/sql/workbench/parts/notebook/common/models/url.ts',
|
'!src/sql/workbench/parts/notebook/outputs/common/url.ts',
|
||||||
'!src/sql/workbench/parts/notebook/common/models/renderMimeInterfaces.ts',
|
'!src/sql/workbench/parts/notebook/outputs/common/renderMimeInterfaces.ts',
|
||||||
'!src/sql/workbench/parts/notebook/common/models/outputProcessor.ts',
|
'!src/sql/workbench/parts/notebook/outputs/common/outputProcessor.ts',
|
||||||
'!src/sql/workbench/parts/notebook/common/models/mimemodel.ts',
|
'!src/sql/workbench/parts/notebook/outputs/common/mimemodel.ts',
|
||||||
'!src/sql/workbench/parts/notebook/browser/cellViews/media/*.css',
|
'!src/sql/workbench/parts/notebook/cellViews/media/*.css',
|
||||||
'!src/sql/base/browser/ui/table/plugins/rowSelectionModel.plugin.ts',
|
'!src/sql/base/browser/ui/table/plugins/rowSelectionModel.plugin.ts',
|
||||||
'!src/sql/base/browser/ui/table/plugins/rowDetailView.ts',
|
'!src/sql/base/browser/ui/table/plugins/rowDetailView.ts',
|
||||||
'!src/sql/base/browser/ui/table/plugins/headerFilter.plugin.ts',
|
'!src/sql/base/browser/ui/table/plugins/headerFilter.plugin.ts',
|
||||||
'!src/sql/base/browser/ui/table/plugins/checkboxSelectColumn.plugin.ts',
|
'!src/sql/base/browser/ui/table/plugins/checkboxSelectColumn.plugin.ts',
|
||||||
'!src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts',
|
'!src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts',
|
||||||
'!src/sql/base/browser/ui/table/plugins/autoSizeColumns.plugin.ts',
|
'!src/sql/base/browser/ui/table/plugins/autoSizeColumns.plugin.ts',
|
||||||
'!src/sql/workbench/parts/notebook/browser/outputs/sanitizer.ts',
|
'!src/sql/workbench/parts/notebook/outputs/sanitizer.ts',
|
||||||
'!src/sql/workbench/parts/notebook/browser/outputs/renderers.ts',
|
'!src/sql/workbench/parts/notebook/outputs/renderers.ts',
|
||||||
'!src/sql/workbench/parts/notebook/browser/outputs/registry.ts',
|
'!src/sql/workbench/parts/notebook/outputs/registry.ts',
|
||||||
'!src/sql/workbench/parts/notebook/browser/outputs/factories.ts',
|
'!src/sql/workbench/parts/notebook/outputs/factories.ts',
|
||||||
'!src/sql/workbench/parts/notebook/common/models/nbformat.ts',
|
'!src/sql/workbench/parts/notebook/models/nbformat.ts',
|
||||||
'!extensions/markdown-language-features/media/tomorrow.css',
|
'!extensions/markdown-language-features/media/tomorrow.css',
|
||||||
'!src/sql/workbench/browser/modelComponents/media/highlight.css',
|
'!src/sql/workbench/electron-browser/modelComponents/media/highlight.css',
|
||||||
'!src/sql/workbench/parts/notebook/electron-browser/cellViews/media/highlight.css',
|
'!src/sql/parts/modelComponents/highlight.css',
|
||||||
'!extensions/mssql/sqltoolsservice/**',
|
'!extensions/mssql/sqltoolsservice/**',
|
||||||
'!extensions/import/flatfileimportservice/**',
|
'!extensions/import/flatfileimportservice/**',
|
||||||
'!extensions/notebook/src/prompts/**',
|
'!extensions/notebook/src/prompts/**',
|
||||||
@@ -186,9 +184,7 @@ const tslintFilter = [
|
|||||||
'!extensions/vscode-api-tests/testWorkspace/**',
|
'!extensions/vscode-api-tests/testWorkspace/**',
|
||||||
'!extensions/vscode-api-tests/testWorkspace2/**',
|
'!extensions/vscode-api-tests/testWorkspace2/**',
|
||||||
'!extensions/**/*.test.ts',
|
'!extensions/**/*.test.ts',
|
||||||
'!extensions/html-language-features/server/lib/jquery.d.ts',
|
'!extensions/html-language-features/server/lib/jquery.d.ts'
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
'!extensions/big-data-cluster/src/bigDataCluster/controller/apiGenerated.ts'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
@@ -196,10 +192,6 @@ const useStrictFilter = [
|
|||||||
'src/**'
|
'src/**'
|
||||||
];
|
];
|
||||||
|
|
||||||
const sqlFilter = [
|
|
||||||
'src/sql/**'
|
|
||||||
];
|
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
const copyrightHeaderLines = [
|
const copyrightHeaderLines = [
|
||||||
'/*---------------------------------------------------------------------------------------------',
|
'/*---------------------------------------------------------------------------------------------',
|
||||||
@@ -228,17 +220,6 @@ gulp.task('tslint', () => {
|
|||||||
function hygiene(some) {
|
function hygiene(some) {
|
||||||
let errorCount = 0;
|
let errorCount = 0;
|
||||||
|
|
||||||
const productJson = es.through(function (file) {
|
|
||||||
// const product = JSON.parse(file.contents.toString('utf8'));
|
|
||||||
|
|
||||||
// if (product.extensionsGallery) { // {{SQL CARBON EDIT}} @todo we need to research on what the point of this is
|
|
||||||
// console.error('product.json: Contains "extensionsGallery"');
|
|
||||||
// errorCount++;
|
|
||||||
// }
|
|
||||||
|
|
||||||
this.emit('data', file);
|
|
||||||
});
|
|
||||||
|
|
||||||
const indentation = es.through(function (file) {
|
const indentation = es.through(function (file) {
|
||||||
const lines = file.contents.toString('utf8').split(/\r\n|\r|\n/);
|
const lines = file.contents.toString('utf8').split(/\r\n|\r|\n/);
|
||||||
file.__lines = lines;
|
file.__lines = lines;
|
||||||
@@ -339,24 +320,8 @@ function hygiene(some) {
|
|||||||
input = some;
|
input = some;
|
||||||
}
|
}
|
||||||
|
|
||||||
const tslintSqlConfiguration = tslint.Configuration.findConfiguration('tslint-sql.json', '.');
|
|
||||||
const tslintSqlOptions = { fix: false, formatter: 'json' };
|
|
||||||
const sqlTsLinter = new tslint.Linter(tslintSqlOptions);
|
|
||||||
|
|
||||||
const sqlTsl = es.through(function (file) {
|
|
||||||
const contents = file.contents.toString('utf8');
|
|
||||||
sqlTsLinter.lint(file.relative, contents, tslintSqlConfiguration.results);
|
|
||||||
|
|
||||||
this.emit('data', file);
|
|
||||||
});
|
|
||||||
|
|
||||||
const productJsonFilter = filter('product.json', { restore: true });
|
|
||||||
|
|
||||||
const result = input
|
const result = input
|
||||||
.pipe(filter(f => !f.stat.isDirectory()))
|
.pipe(filter(f => !f.stat.isDirectory()))
|
||||||
.pipe(productJsonFilter)
|
|
||||||
.pipe(process.env['BUILD_SOURCEVERSION'] ? es.through() : productJson)
|
|
||||||
.pipe(productJsonFilter.restore)
|
|
||||||
.pipe(filter(indentationFilter))
|
.pipe(filter(indentationFilter))
|
||||||
.pipe(indentation)
|
.pipe(indentation)
|
||||||
.pipe(filter(copyrightFilter))
|
.pipe(filter(copyrightFilter))
|
||||||
@@ -368,9 +333,7 @@ function hygiene(some) {
|
|||||||
.pipe(tsl)
|
.pipe(tsl)
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
.pipe(filter(useStrictFilter))
|
.pipe(filter(useStrictFilter))
|
||||||
.pipe(useStrict)
|
.pipe(useStrict);
|
||||||
.pipe(filter(sqlFilter))
|
|
||||||
.pipe(sqlTsl);
|
|
||||||
|
|
||||||
const javascript = result
|
const javascript = result
|
||||||
.pipe(filter(eslintFilter))
|
.pipe(filter(eslintFilter))
|
||||||
@@ -402,19 +365,6 @@ function hygiene(some) {
|
|||||||
errorCount += tslintResult.failures.length;
|
errorCount += tslintResult.failures.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
const sqlTslintResult = sqlTsLinter.getResult();
|
|
||||||
if (sqlTslintResult.failures.length > 0) {
|
|
||||||
for (const failure of sqlTslintResult.failures) {
|
|
||||||
const name = failure.getFileName();
|
|
||||||
const position = failure.getStartPosition();
|
|
||||||
const line = position.getLineAndCharacter().line;
|
|
||||||
const character = position.getLineAndCharacter().character;
|
|
||||||
|
|
||||||
console.error(`${name}:${line + 1}:${character + 1}:${failure.getFailure()}`);
|
|
||||||
}
|
|
||||||
errorCount += sqlTslintResult.failures.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (errorCount > 0) {
|
if (errorCount > 0) {
|
||||||
this.emit('error', 'Hygiene failed with ' + errorCount + ' errors. Check \'build/gulpfile.hygiene.js\'.');
|
this.emit('error', 'Hygiene failed with ' + errorCount + ' errors. Check \'build/gulpfile.hygiene.js\'.');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -7,137 +7,10 @@
|
|||||||
|
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
|
|
||||||
const path = require('path');
|
|
||||||
const es = require('event-stream');
|
|
||||||
const util = require('./lib/util');
|
|
||||||
const task = require('./lib/task');
|
|
||||||
const vfs = require('vinyl-fs');
|
|
||||||
const flatmap = require('gulp-flatmap');
|
|
||||||
const gunzip = require('gulp-gunzip');
|
|
||||||
const untar = require('gulp-untar');
|
|
||||||
const File = require('vinyl');
|
|
||||||
const fs = require('fs');
|
|
||||||
const remote = require('gulp-remote-retry-src');
|
|
||||||
const rename = require('gulp-rename');
|
|
||||||
const filter = require('gulp-filter');
|
|
||||||
const cp = require('child_process');
|
|
||||||
|
|
||||||
const REPO_ROOT = path.dirname(__dirname);
|
|
||||||
|
|
||||||
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: 'alpine', pkgTarget: 'node8-linux-alpine' },
|
|
||||||
];
|
|
||||||
|
|
||||||
const noop = () => { return Promise.resolve(); };
|
const noop = () => { return Promise.resolve(); };
|
||||||
|
|
||||||
gulp.task('vscode-reh-win32-ia32-min', noop);
|
gulp.task('vscode-reh-win32-ia32-min', noop);
|
||||||
gulp.task('vscode-reh-win32-x64-min', noop);
|
gulp.task('vscode-reh-win32-x64-min', noop);
|
||||||
gulp.task('vscode-reh-darwin-min', noop);
|
gulp.task('vscode-reh-darwin-min', noop);
|
||||||
gulp.task('vscode-reh-linux-x64-min', noop);
|
gulp.task('vscode-reh-linux-x64-min', noop);
|
||||||
gulp.task('vscode-reh-linux-armhf-min', noop);
|
gulp.task('vscode-reh-linux-arm-min', noop);
|
||||||
gulp.task('vscode-reh-linux-alpine-min', noop);
|
|
||||||
|
|
||||||
gulp.task('vscode-reh-web-win32-ia32-min', noop);
|
|
||||||
gulp.task('vscode-reh-web-win32-x64-min', noop);
|
|
||||||
gulp.task('vscode-reh-web-darwin-min', noop);
|
|
||||||
gulp.task('vscode-reh-web-linux-x64-min', noop);
|
|
||||||
gulp.task('vscode-reh-web-linux-alpine-min', noop);
|
|
||||||
|
|
||||||
function getNodeVersion() {
|
|
||||||
const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
|
|
||||||
const target = /^target "(.*)"$/m.exec(yarnrc)[1];
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
|
|
||||||
const nodeVersion = getNodeVersion();
|
|
||||||
|
|
||||||
BUILD_TARGETS.forEach(({ platform, arch }) => {
|
|
||||||
if (platform === 'darwin') {
|
|
||||||
arch = 'x64';
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task(task.define(`node-${platform}-${arch}`, () => {
|
|
||||||
const nodePath = path.join('.build', 'node', `v${nodeVersion}`, `${platform}-${arch}`);
|
|
||||||
|
|
||||||
if (!fs.existsSync(nodePath)) {
|
|
||||||
util.rimraf(nodePath);
|
|
||||||
|
|
||||||
return nodejs(platform, arch)
|
|
||||||
.pipe(vfs.dest(nodePath));
|
|
||||||
}
|
|
||||||
|
|
||||||
return Promise.resolve(null);
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
const defaultNodeTask = gulp.task(`node-${process.platform}-${process.arch}`);
|
|
||||||
|
|
||||||
if (defaultNodeTask) {
|
|
||||||
gulp.task(task.define('node', defaultNodeTask));
|
|
||||||
}
|
|
||||||
|
|
||||||
function nodejs(platform, arch) {
|
|
||||||
if (arch === 'ia32') {
|
|
||||||
arch = 'x86';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (platform === 'win32') {
|
|
||||||
return remote(`/dist/v${nodeVersion}/win-${arch}/node.exe`, { base: 'https://nodejs.org' })
|
|
||||||
.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' });
|
|
||||||
return es.readArray([new File({ path: 'node', contents, stat: { mode: parseInt('755', 8) } })]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (platform === 'darwin') {
|
|
||||||
arch = 'x64';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arch === 'armhf') {
|
|
||||||
arch = 'armv7l';
|
|
||||||
}
|
|
||||||
|
|
||||||
return remote(`/dist/v${nodeVersion}/node-v${nodeVersion}-${platform}-${arch}.tar.gz`, { base: 'https://nodejs.org' })
|
|
||||||
.pipe(flatmap(stream => stream.pipe(gunzip()).pipe(untar())))
|
|
||||||
.pipe(filter('**/node'))
|
|
||||||
.pipe(util.setExecutableBit('**'))
|
|
||||||
.pipe(rename('node'));
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return Promise.resolve();
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task(task.define('mixin-server', () => mixinServer(false)));
|
|
||||||
gulp.task(task.define('mixin-server-watch', () => mixinServer(true)));
|
|
||||||
|
|||||||
@@ -10,10 +10,6 @@ const util = require('./lib/util');
|
|||||||
const tsfmt = require('typescript-formatter');
|
const tsfmt = require('typescript-formatter');
|
||||||
const es = require('event-stream');
|
const es = require('event-stream');
|
||||||
const filter = require('gulp-filter');
|
const filter = require('gulp-filter');
|
||||||
const del = require('del');
|
|
||||||
const serviceDownloader = require('service-downloader').ServiceDownloadProvider;
|
|
||||||
const platformInfo = require('service-downloader/out/platform').PlatformInformation;
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
gulp.task('clean-mssql-extension', util.rimraf('extensions/mssql/node_modules'));
|
gulp.task('clean-mssql-extension', util.rimraf('extensions/mssql/node_modules'));
|
||||||
gulp.task('clean-credentials-extension', util.rimraf('extensions/credentials/node_modules'));
|
gulp.task('clean-credentials-extension', util.rimraf('extensions/credentials/node_modules'));
|
||||||
@@ -85,48 +81,3 @@ const formatStagedFiles = () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function installService() {
|
|
||||||
let config = require('../extensions/mssql/src/config.json');
|
|
||||||
return platformInfo.getCurrent().then(p => {
|
|
||||||
let runtime = p.runtimeId;
|
|
||||||
// fix path since it won't be correct
|
|
||||||
config.installDirectory = path.join(__dirname, '../extensions/mssql/src', config.installDirectory);
|
|
||||||
var installer = new serviceDownloader(config);
|
|
||||||
let serviceInstallFolder = installer.getInstallDirectory(runtime);
|
|
||||||
console.log('Cleaning up the install folder: ' + serviceInstallFolder);
|
|
||||||
return del(serviceInstallFolder + '/*').then(() => {
|
|
||||||
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
|
||||||
return installer.installService(runtime);
|
|
||||||
}, delError => {
|
|
||||||
console.log('failed to delete the install folder error: ' + delError);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task('install-sqltoolsservice', () => {
|
|
||||||
return installService();
|
|
||||||
});
|
|
||||||
|
|
||||||
function installSsmsMin() {
|
|
||||||
const config = require('../extensions/admin-tool-ext-win/src/config.json');
|
|
||||||
return platformInfo.getCurrent().then(p => {
|
|
||||||
const runtime = p.runtimeId;
|
|
||||||
// fix path since it won't be correct
|
|
||||||
config.installDirectory = path.join(__dirname, '..', 'extensions', 'admin-tool-ext-win', config.installDirectory);
|
|
||||||
var installer = new serviceDownloader(config);
|
|
||||||
const serviceInstallFolder = installer.getInstallDirectory(runtime);
|
|
||||||
const serviceCleanupFolder = path.join(serviceInstallFolder, '..');
|
|
||||||
console.log('Cleaning up the install folder: ' + serviceCleanupFolder);
|
|
||||||
return del(serviceCleanupFolder + '/*').then(() => {
|
|
||||||
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
|
||||||
return installer.installService(runtime);
|
|
||||||
}, delError => {
|
|
||||||
console.log('failed to delete the install folder error: ' + delError);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task('install-ssmsmin', () => {
|
|
||||||
return installSsmsMin();
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ const json = require('gulp-json-editor');
|
|||||||
const _ = require('underscore');
|
const _ = require('underscore');
|
||||||
const util = require('./lib/util');
|
const util = require('./lib/util');
|
||||||
const task = require('./lib/task');
|
const task = require('./lib/task');
|
||||||
|
const ext = require('./lib/extensions');
|
||||||
const buildfile = require('../src/buildfile');
|
const buildfile = require('../src/buildfile');
|
||||||
const common = require('./lib/optimize');
|
const common = require('./lib/optimize');
|
||||||
const root = path.dirname(__dirname);
|
const root = path.dirname(__dirname);
|
||||||
@@ -29,14 +30,19 @@ const packageJson = require('../package.json');
|
|||||||
const product = require('../product.json');
|
const product = require('../product.json');
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
const i18n = require('./lib/i18n');
|
const i18n = require('./lib/i18n');
|
||||||
const ext = require('./lib/extensions'); // {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
|
const serviceDownloader = require('service-downloader').ServiceDownloadProvider;
|
||||||
|
const platformInfo = require('service-downloader/out/platform').PlatformInformation;
|
||||||
|
// {{SQL CARBON EDIT}} - End
|
||||||
const deps = require('./dependencies');
|
const deps = require('./dependencies');
|
||||||
const getElectronVersion = require('./lib/electron').getElectronVersion;
|
const getElectronVersion = require('./lib/electron').getElectronVersion;
|
||||||
const createAsar = require('./lib/asar').createAsar;
|
const createAsar = require('./lib/asar').createAsar;
|
||||||
const { compileBuildTask } = require('./gulpfile.compile');
|
const { compileBuildTask } = require('./gulpfile.compile');
|
||||||
const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
|
|
||||||
|
|
||||||
const productionDependencies = deps.getProductionDependencies(path.dirname(__dirname));
|
const productionDependencies = deps.getProductionDependencies(path.dirname(__dirname));
|
||||||
|
// @ts-ignore
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
var del = require('del');
|
||||||
|
|
||||||
const baseModules = Object.keys(process.binding('natives')).filter(n => !/^_|\//.test(n));
|
const baseModules = Object.keys(process.binding('natives')).filter(n => !/^_|\//.test(n));
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
@@ -46,12 +52,7 @@ const nodeModules = [
|
|||||||
'rxjs/Observable',
|
'rxjs/Observable',
|
||||||
'rxjs/Subject',
|
'rxjs/Subject',
|
||||||
'rxjs/Observer',
|
'rxjs/Observer',
|
||||||
'slickgrid/lib/jquery.event.drag-2.3.0',
|
'ng2-charts']
|
||||||
'slickgrid/lib/jquery-ui-1.9.2',
|
|
||||||
'slickgrid/slick.core',
|
|
||||||
'slickgrid/slick.grid',
|
|
||||||
'slickgrid/slick.editors',
|
|
||||||
'slickgrid/slick.dataview']
|
|
||||||
.concat(Object.keys(product.dependencies || {}))
|
.concat(Object.keys(product.dependencies || {}))
|
||||||
.concat(_.uniq(productionDependencies.map(d => d.name)))
|
.concat(_.uniq(productionDependencies.map(d => d.name)))
|
||||||
.concat(baseModules);
|
.concat(baseModules);
|
||||||
@@ -60,7 +61,6 @@ const nodeModules = [
|
|||||||
const vscodeEntryPoints = _.flatten([
|
const vscodeEntryPoints = _.flatten([
|
||||||
buildfile.entrypoint('vs/workbench/workbench.main'),
|
buildfile.entrypoint('vs/workbench/workbench.main'),
|
||||||
buildfile.base,
|
buildfile.base,
|
||||||
buildfile.serviceWorker,
|
|
||||||
buildfile.workbench,
|
buildfile.workbench,
|
||||||
buildfile.code
|
buildfile.code
|
||||||
]);
|
]);
|
||||||
@@ -74,7 +74,7 @@ const vscodeResources = [
|
|||||||
'out-build/bootstrap-amd.js',
|
'out-build/bootstrap-amd.js',
|
||||||
'out-build/bootstrap-window.js',
|
'out-build/bootstrap-window.js',
|
||||||
'out-build/paths.js',
|
'out-build/paths.js',
|
||||||
'out-build/vs/**/*.{svg,png,html}',
|
'out-build/vs/**/*.{svg,png,cur,html}',
|
||||||
'!out-build/vs/code/browser/**/*.html',
|
'!out-build/vs/code/browser/**/*.html',
|
||||||
'out-build/vs/base/common/performance.js',
|
'out-build/vs/base/common/performance.js',
|
||||||
'out-build/vs/base/node/languagePacks.js',
|
'out-build/vs/base/node/languagePacks.js',
|
||||||
@@ -88,8 +88,8 @@ const vscodeResources = [
|
|||||||
'out-build/vs/**/markdown.css',
|
'out-build/vs/**/markdown.css',
|
||||||
'out-build/vs/workbench/contrib/tasks/**/*.json',
|
'out-build/vs/workbench/contrib/tasks/**/*.json',
|
||||||
'out-build/vs/workbench/contrib/welcome/walkThrough/**/*.md',
|
'out-build/vs/workbench/contrib/welcome/walkThrough/**/*.md',
|
||||||
'out-build/vs/platform/files/**/*.exe',
|
'out-build/vs/workbench/services/files/**/*.exe',
|
||||||
'out-build/vs/platform/files/**/*.md',
|
'out-build/vs/workbench/services/files/**/*.md',
|
||||||
'out-build/vs/code/electron-browser/workbench/**',
|
'out-build/vs/code/electron-browser/workbench/**',
|
||||||
'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
|
'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
|
||||||
'out-build/vs/code/electron-browser/issue/issueReporter.js',
|
'out-build/vs/code/electron-browser/issue/issueReporter.js',
|
||||||
@@ -113,36 +113,50 @@ const vscodeResources = [
|
|||||||
'out-build/sql/media/objectTypes/*.svg',
|
'out-build/sql/media/objectTypes/*.svg',
|
||||||
'out-build/sql/media/icons/*.svg',
|
'out-build/sql/media/icons/*.svg',
|
||||||
'out-build/sql/workbench/parts/notebook/media/**/*.svg',
|
'out-build/sql/workbench/parts/notebook/media/**/*.svg',
|
||||||
'out-build/sql/setup.js',
|
|
||||||
'!**/test/**'
|
'!**/test/**'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const BUNDLED_FILE_HEADER = [
|
||||||
|
'/*!--------------------------------------------------------',
|
||||||
|
' * Copyright (C) Microsoft Corporation. All rights reserved.',
|
||||||
|
' *--------------------------------------------------------*/'
|
||||||
|
].join('\n');
|
||||||
|
|
||||||
const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
|
const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
|
||||||
|
task.parallel(
|
||||||
util.rimraf('out-vscode'),
|
util.rimraf('out-vscode'),
|
||||||
|
compileBuildTask
|
||||||
|
),
|
||||||
common.optimizeTask({
|
common.optimizeTask({
|
||||||
src: 'out-build',
|
src: 'out-build',
|
||||||
entryPoints: vscodeEntryPoints,
|
entryPoints: vscodeEntryPoints,
|
||||||
resources: vscodeResources,
|
resources: vscodeResources,
|
||||||
loaderConfig: common.loaderConfig(nodeModules),
|
loaderConfig: common.loaderConfig(nodeModules),
|
||||||
|
header: BUNDLED_FILE_HEADER,
|
||||||
out: 'out-vscode',
|
out: 'out-vscode',
|
||||||
bundleInfo: undefined
|
bundleInfo: undefined
|
||||||
})
|
})
|
||||||
));
|
));
|
||||||
gulp.task(optimizeVSCodeTask);
|
|
||||||
|
|
||||||
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
|
|
||||||
const minifyVSCodeTask = task.define('minify-vscode', task.series(
|
const optimizeIndexJSTask = task.define('optimize-index-js', task.series(
|
||||||
optimizeVSCodeTask,
|
optimizeVSCodeTask,
|
||||||
util.rimraf('out-vscode-min'),
|
|
||||||
() => {
|
() => {
|
||||||
const fullpath = path.join(process.cwd(), 'out-vscode/bootstrap-window.js');
|
const fullpath = path.join(process.cwd(), 'out-vscode/bootstrap-window.js');
|
||||||
const contents = fs.readFileSync(fullpath).toString();
|
const contents = fs.readFileSync(fullpath).toString();
|
||||||
const newContents = contents.replace('[/*BUILD->INSERT_NODE_MODULES*/]', JSON.stringify(nodeModules));
|
const newContents = contents.replace('[/*BUILD->INSERT_NODE_MODULES*/]', JSON.stringify(nodeModules));
|
||||||
fs.writeFileSync(fullpath, newContents);
|
fs.writeFileSync(fullpath, newContents);
|
||||||
},
|
}
|
||||||
|
));
|
||||||
|
|
||||||
|
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
|
||||||
|
const minifyVSCodeTask = task.define('minify-vscode', task.series(
|
||||||
|
task.parallel(
|
||||||
|
util.rimraf('out-vscode-min'),
|
||||||
|
optimizeIndexJSTask
|
||||||
|
),
|
||||||
common.minifyTask('out-vscode', `${sourceMappingURLBase}/core`)
|
common.minifyTask('out-vscode', `${sourceMappingURLBase}/core`)
|
||||||
));
|
));
|
||||||
gulp.task(minifyVSCodeTask);
|
|
||||||
|
|
||||||
// Package
|
// Package
|
||||||
|
|
||||||
@@ -263,17 +277,20 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
|
|
||||||
const src = gulp.src(out + '/**', { base: '.' })
|
const src = gulp.src(out + '/**', { base: '.' })
|
||||||
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + out), 'out'); }))
|
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + out), 'out'); }))
|
||||||
.pipe(util.setExecutableBit(['**/*.sh']));
|
.pipe(util.setExecutableBit(['**/*.sh']))
|
||||||
|
.pipe(filter(['**', '!**/*.js.map']));
|
||||||
|
|
||||||
|
const root = path.resolve(path.join(__dirname, '..'));
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
ext.packageBuiltInExtensions();
|
ext.packageBuiltInExtensions();
|
||||||
|
|
||||||
const extensions = gulp.src('.build/extensions/**', { base: '.build', dot: true });
|
const sources = es.merge(src, ext.packageExtensionsStream({
|
||||||
|
sourceMappingURLBase: sourceMappingURLBase
|
||||||
const sources = es.merge(src, extensions)
|
}));
|
||||||
.pipe(filter(['**', '!**/*.js.map'], { dot: true }));
|
|
||||||
|
|
||||||
let version = packageJson.version;
|
let version = packageJson.version;
|
||||||
|
// @ts-ignore JSON checking: quality is optional
|
||||||
const quality = product.quality;
|
const quality = product.quality;
|
||||||
|
|
||||||
if (quality && quality !== 'stable') {
|
if (quality && quality !== 'stable') {
|
||||||
@@ -310,24 +327,41 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
const dataApi = gulp.src('src/sql/azdata.d.ts').pipe(rename('out/sql/azdata.d.ts'));
|
const dataApi = gulp.src('src/sql/azdata.d.ts').pipe(rename('out/sql/azdata.d.ts'));
|
||||||
const sqlopsAPI = gulp.src('src/sql/sqlops.d.ts').pipe(rename('out/sql/sqlops.d.ts'));
|
const sqlopsAPI = gulp.src('src/sql/sqlops.d.ts').pipe(rename('out/sql/sqlops.d.ts'));
|
||||||
|
|
||||||
const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
|
const depsSrc = [
|
||||||
|
..._.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`])),
|
||||||
|
// @ts-ignore JSON checking: dependencies is optional
|
||||||
|
..._.flatten(Object.keys(product.dependencies || {}).map(d => [`node_modules/${d}/**`, `!node_modules/${d}/**/{test,tests}/**`]))
|
||||||
|
];
|
||||||
|
|
||||||
const root = path.resolve(path.join(__dirname, '..'));
|
const deps = gulp.src(depsSrc, { base: '.', dot: true })
|
||||||
const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]));
|
|
||||||
|
|
||||||
const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
|
|
||||||
.pipe(filter(['**', '!**/package-lock.json']))
|
.pipe(filter(['**', '!**/package-lock.json']))
|
||||||
.pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')))
|
.pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')))
|
||||||
.pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*'], 'app/node_modules.asar'));
|
.pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*'], 'app/node_modules.asar'));
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
let copiedModules = gulp.src([
|
||||||
|
'node_modules/jquery/**/*.*',
|
||||||
|
'node_modules/reflect-metadata/**/*.*',
|
||||||
|
'node_modules/slickgrid/**/*.*',
|
||||||
|
'node_modules/underscore/**/*.*',
|
||||||
|
'node_modules/zone.js/**/*.*',
|
||||||
|
'node_modules/chart.js/**/*.*',
|
||||||
|
'node_modules/chartjs-color/**/*.*',
|
||||||
|
'node_modules/chartjs-color-string/**/*.*',
|
||||||
|
'node_modules/color-convert/**/*.*',
|
||||||
|
'node_modules/color-name/**/*.*',
|
||||||
|
'node_modules/moment/**/*.*'
|
||||||
|
], { base: '.', dot: true });
|
||||||
|
|
||||||
let all = es.merge(
|
let all = es.merge(
|
||||||
packageJsonStream,
|
packageJsonStream,
|
||||||
productJsonStream,
|
productJsonStream,
|
||||||
license,
|
license,
|
||||||
api,
|
api,
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
copiedModules,
|
||||||
dataApi,
|
dataApi,
|
||||||
sqlopsAPI, // {{SQL CARBON EDIT}}
|
sqlopsAPI,
|
||||||
telemetry,
|
|
||||||
sources,
|
sources,
|
||||||
deps
|
deps
|
||||||
);
|
);
|
||||||
@@ -351,7 +385,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
.pipe(util.skipDirectories())
|
.pipe(util.skipDirectories())
|
||||||
.pipe(util.fixWin32DirectoryPermissions())
|
.pipe(util.fixWin32DirectoryPermissions())
|
||||||
.pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true })))
|
.pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true })))
|
||||||
.pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'], { dot: true }));
|
.pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version']));
|
||||||
|
|
||||||
// result = es.merge(result, gulp.src('resources/completions/**', { base: '.' }));
|
// result = es.merge(result, gulp.src('resources/completions/**', { base: '.' }));
|
||||||
|
|
||||||
@@ -368,7 +402,6 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
.pipe(replace('@@VERSION@@', version))
|
.pipe(replace('@@VERSION@@', version))
|
||||||
.pipe(replace('@@COMMIT@@', commit))
|
.pipe(replace('@@COMMIT@@', commit))
|
||||||
.pipe(replace('@@APPNAME@@', product.applicationName))
|
.pipe(replace('@@APPNAME@@', product.applicationName))
|
||||||
.pipe(replace('@@DATAFOLDER@@', product.dataFolderName))
|
|
||||||
.pipe(replace('@@QUALITY@@', quality))
|
.pipe(replace('@@QUALITY@@', quality))
|
||||||
.pipe(rename(function (f) { f.basename = product.applicationName; f.extname = ''; })));
|
.pipe(rename(function (f) { f.basename = product.applicationName; f.extname = ''; })));
|
||||||
|
|
||||||
@@ -415,17 +448,12 @@ BUILD_TARGETS.forEach(buildTarget => {
|
|||||||
const sourceFolderName = `out-vscode${dashed(minified)}`;
|
const sourceFolderName = `out-vscode${dashed(minified)}`;
|
||||||
const destinationFolderName = `azuredatastudio${dashed(platform)}${dashed(arch)}`;
|
const destinationFolderName = `azuredatastudio${dashed(platform)}${dashed(arch)}`;
|
||||||
|
|
||||||
const vscodeTaskCI = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series(
|
|
||||||
util.rimraf(path.join(buildRoot, destinationFolderName)),
|
|
||||||
packageTask(platform, arch, sourceFolderName, destinationFolderName, opts)
|
|
||||||
));
|
|
||||||
gulp.task(vscodeTaskCI);
|
|
||||||
|
|
||||||
const vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(
|
const vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(
|
||||||
compileBuildTask,
|
task.parallel(
|
||||||
compileExtensionsBuildTask,
|
|
||||||
minified ? minifyVSCodeTask : optimizeVSCodeTask,
|
minified ? minifyVSCodeTask : optimizeVSCodeTask,
|
||||||
vscodeTaskCI
|
util.rimraf(path.join(buildRoot, destinationFolderName))
|
||||||
|
),
|
||||||
|
packageTask(platform, arch, sourceFolderName, destinationFolderName, opts)
|
||||||
));
|
));
|
||||||
gulp.task(vscodeTask);
|
gulp.task(vscodeTask);
|
||||||
});
|
});
|
||||||
@@ -455,8 +483,6 @@ const apiToken = process.env.TRANSIFEX_API_TOKEN;
|
|||||||
gulp.task(task.define(
|
gulp.task(task.define(
|
||||||
'vscode-translations-push',
|
'vscode-translations-push',
|
||||||
task.series(
|
task.series(
|
||||||
compileBuildTask,
|
|
||||||
compileExtensionsBuildTask,
|
|
||||||
optimizeVSCodeTask,
|
optimizeVSCodeTask,
|
||||||
function () {
|
function () {
|
||||||
const pathToMetadata = './out-vscode/nls.metadata.json';
|
const pathToMetadata = './out-vscode/nls.metadata.json';
|
||||||
@@ -476,8 +502,6 @@ gulp.task(task.define(
|
|||||||
gulp.task(task.define(
|
gulp.task(task.define(
|
||||||
'vscode-translations-export',
|
'vscode-translations-export',
|
||||||
task.series(
|
task.series(
|
||||||
compileBuildTask,
|
|
||||||
compileExtensionsBuildTask,
|
|
||||||
optimizeVSCodeTask,
|
optimizeVSCodeTask,
|
||||||
function () {
|
function () {
|
||||||
const pathToMetadata = './out-vscode/nls.metadata.json';
|
const pathToMetadata = './out-vscode/nls.metadata.json';
|
||||||
@@ -514,6 +538,32 @@ gulp.task('vscode-translations-import', function () {
|
|||||||
// {{SQL CARBON EDIT}} - End
|
// {{SQL CARBON EDIT}} - End
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Sourcemaps
|
||||||
|
|
||||||
|
gulp.task('upload-vscode-sourcemaps', () => {
|
||||||
|
const vs = gulp.src('out-vscode-min/**/*.map', { base: 'out-vscode-min' })
|
||||||
|
.pipe(es.mapSync(f => {
|
||||||
|
f.path = `${f.base}/core/${f.relative}`;
|
||||||
|
return f;
|
||||||
|
}));
|
||||||
|
|
||||||
|
const extensionsOut = gulp.src('extensions/**/out/**/*.map', { base: '.' });
|
||||||
|
const extensionsDist = gulp.src('extensions/**/dist/**/*.map', { base: '.' });
|
||||||
|
|
||||||
|
return es.merge(vs, extensionsOut, extensionsDist)
|
||||||
|
.pipe(es.through(function (data) {
|
||||||
|
// debug
|
||||||
|
console.log('Uploading Sourcemap', data.relative);
|
||||||
|
this.emit('data', data);
|
||||||
|
}))
|
||||||
|
.pipe(azure.upload({
|
||||||
|
account: process.env.AZURE_STORAGE_ACCOUNT,
|
||||||
|
key: process.env.AZURE_STORAGE_ACCESS_KEY,
|
||||||
|
container: 'sourcemaps',
|
||||||
|
prefix: commit + '/'
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
// This task is only run for the MacOS build
|
// This task is only run for the MacOS build
|
||||||
const generateVSCodeConfigurationTask = task.define('generate-vscode-configuration', () => {
|
const generateVSCodeConfigurationTask = task.define('generate-vscode-configuration', () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@@ -606,3 +656,51 @@ function getSettingsSearchBuildId(packageJson) {
|
|||||||
throw new Error('Could not determine build number: ' + e.toString());
|
throw new Error('Could not determine build number: ' + e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
// Install service locally before building carbon
|
||||||
|
|
||||||
|
function installService() {
|
||||||
|
let config = require('../extensions/mssql/src/config.json');
|
||||||
|
return platformInfo.getCurrent().then(p => {
|
||||||
|
let runtime = p.runtimeId;
|
||||||
|
// fix path since it won't be correct
|
||||||
|
config.installDirectory = path.join(__dirname, '../extensions/mssql/src', config.installDirectory);
|
||||||
|
var installer = new serviceDownloader(config);
|
||||||
|
let serviceInstallFolder = installer.getInstallDirectory(runtime);
|
||||||
|
console.log('Cleaning up the install folder: ' + serviceInstallFolder);
|
||||||
|
return del(serviceInstallFolder + '/*').then(() => {
|
||||||
|
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
||||||
|
return installer.installService(runtime);
|
||||||
|
}, delError => {
|
||||||
|
console.log('failed to delete the install folder error: ' + delError);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
gulp.task('install-sqltoolsservice', () => {
|
||||||
|
return installService();
|
||||||
|
});
|
||||||
|
|
||||||
|
function installSsmsMin() {
|
||||||
|
const config = require('../extensions/admin-tool-ext-win/src/config.json');
|
||||||
|
return platformInfo.getCurrent().then(p => {
|
||||||
|
const runtime = p.runtimeId;
|
||||||
|
// fix path since it won't be correct
|
||||||
|
config.installDirectory = path.join(__dirname, '..', 'extensions', 'admin-tool-ext-win', config.installDirectory);
|
||||||
|
var installer = new serviceDownloader(config);
|
||||||
|
const serviceInstallFolder = installer.getInstallDirectory(runtime);
|
||||||
|
const serviceCleanupFolder = path.join(serviceInstallFolder, '..');
|
||||||
|
console.log('Cleaning up the install folder: ' + serviceCleanupFolder);
|
||||||
|
return del(serviceCleanupFolder + '/*').then(() => {
|
||||||
|
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
||||||
|
return installer.installService(runtime);
|
||||||
|
}, delError => {
|
||||||
|
console.log('failed to delete the install folder error: ' + delError);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
gulp.task('install-ssmsmin', () => {
|
||||||
|
return installSsmsMin();
|
||||||
|
});
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const commit = util.getVersion(root);
|
|||||||
const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
|
const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
|
||||||
|
|
||||||
function getDebPackageArch(arch) {
|
function getDebPackageArch(arch) {
|
||||||
return { x64: 'amd64', arm: 'armhf', arm64: "arm64" }[arch];
|
return { x64: 'amd64', ia32: 'i386', arm: 'armhf', arm64: "arm64" }[arch];
|
||||||
}
|
}
|
||||||
|
|
||||||
function prepareDebPackage(arch) {
|
function prepareDebPackage(arch) {
|
||||||
@@ -115,7 +115,7 @@ function getRpmBuildPath(rpmArch) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getRpmPackageArch(arch) {
|
function getRpmPackageArch(arch) {
|
||||||
return { x64: 'x86_64', arm: 'armhf', arm64: "arm64" }[arch];
|
return { x64: 'x86_64', ia32: 'i386', arm: 'armhf', arm64: "arm64" }[arch];
|
||||||
}
|
}
|
||||||
|
|
||||||
function prepareRpmPackage(arch) {
|
function prepareRpmPackage(arch) {
|
||||||
@@ -241,6 +241,7 @@ function buildSnapPackage(arch) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const BUILD_TARGETS = [
|
const BUILD_TARGETS = [
|
||||||
|
{ arch: 'ia32' },
|
||||||
{ arch: 'x64' },
|
{ arch: 'x64' },
|
||||||
{ arch: 'arm' },
|
{ arch: 'arm' },
|
||||||
{ arch: 'arm64' },
|
{ arch: 'arm64' },
|
||||||
|
|||||||
@@ -1,151 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const gulp = require('gulp');
|
|
||||||
const path = require('path');
|
|
||||||
const es = require('event-stream');
|
|
||||||
const util = require('./lib/util');
|
|
||||||
const task = require('./lib/task');
|
|
||||||
const common = require('./lib/optimize');
|
|
||||||
const product = require('../product.json');
|
|
||||||
const rename = require('gulp-rename');
|
|
||||||
const filter = require('gulp-filter');
|
|
||||||
const json = require('gulp-json-editor');
|
|
||||||
const _ = require('underscore');
|
|
||||||
const deps = require('./dependencies');
|
|
||||||
const vfs = require('vinyl-fs');
|
|
||||||
const packageJson = require('../package.json');
|
|
||||||
const { compileBuildTask } = require('./gulpfile.compile');
|
|
||||||
|
|
||||||
const REPO_ROOT = path.dirname(__dirname);
|
|
||||||
const commit = util.getVersion(REPO_ROOT);
|
|
||||||
const BUILD_ROOT = path.dirname(REPO_ROOT);
|
|
||||||
const WEB_FOLDER = path.join(REPO_ROOT, 'remote', 'web');
|
|
||||||
|
|
||||||
const productionDependencies = deps.getProductionDependencies(WEB_FOLDER);
|
|
||||||
|
|
||||||
const nodeModules = Object.keys(product.dependencies || {})
|
|
||||||
.concat(_.uniq(productionDependencies.map(d => d.name)));
|
|
||||||
|
|
||||||
const vscodeWebResources = [
|
|
||||||
|
|
||||||
// Workbench
|
|
||||||
'out-build/vs/{base,platform,editor,workbench}/**/*.{svg,png,html}',
|
|
||||||
'out-build/vs/base/browser/ui/octiconLabel/octicons/**',
|
|
||||||
'out-build/vs/**/markdown.css',
|
|
||||||
|
|
||||||
// Webview
|
|
||||||
'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
|
|
||||||
|
|
||||||
// Excludes
|
|
||||||
'!out-build/vs/**/{node,electron-browser,electron-main}/**',
|
|
||||||
'!out-build/vs/editor/standalone/**',
|
|
||||||
'!out-build/vs/workbench/**/*-tb.png',
|
|
||||||
'!**/test/**'
|
|
||||||
];
|
|
||||||
|
|
||||||
const buildfile = require('../src/buildfile');
|
|
||||||
|
|
||||||
const vscodeWebEntryPoints = [
|
|
||||||
buildfile.workbenchWeb,
|
|
||||||
buildfile.serviceWorker,
|
|
||||||
buildfile.keyboardMaps,
|
|
||||||
buildfile.base
|
|
||||||
];
|
|
||||||
|
|
||||||
const optimizeVSCodeWebTask = task.define('optimize-vscode-web', task.series(
|
|
||||||
util.rimraf('out-vscode-web'),
|
|
||||||
common.optimizeTask({
|
|
||||||
src: 'out-build',
|
|
||||||
entryPoints: _.flatten(vscodeWebEntryPoints),
|
|
||||||
otherSources: [],
|
|
||||||
resources: vscodeWebResources,
|
|
||||||
loaderConfig: common.loaderConfig(nodeModules),
|
|
||||||
out: 'out-vscode-web',
|
|
||||||
bundleInfo: undefined
|
|
||||||
})
|
|
||||||
));
|
|
||||||
|
|
||||||
const minifyVSCodeWebTask = task.define('minify-vscode-web', task.series(
|
|
||||||
optimizeVSCodeWebTask,
|
|
||||||
util.rimraf('out-vscode-web-min'),
|
|
||||||
common.minifyTask('out-vscode-web', `https://ticino.blob.core.windows.net/sourcemaps/${commit}/core`)
|
|
||||||
));
|
|
||||||
gulp.task(minifyVSCodeWebTask);
|
|
||||||
|
|
||||||
function packageTask(sourceFolderName, destinationFolderName) {
|
|
||||||
const destination = path.join(BUILD_ROOT, destinationFolderName);
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
|
|
||||||
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }))
|
|
||||||
.pipe(filter(['**', '!**/*.js.map']));
|
|
||||||
|
|
||||||
const sources = es.merge(src);
|
|
||||||
|
|
||||||
let version = packageJson.version;
|
|
||||||
const quality = product.quality;
|
|
||||||
|
|
||||||
if (quality && quality !== 'stable') {
|
|
||||||
version += '-' + quality;
|
|
||||||
}
|
|
||||||
|
|
||||||
const name = product.nameShort;
|
|
||||||
const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' })
|
|
||||||
.pipe(json({ name, version }));
|
|
||||||
|
|
||||||
const date = new Date().toISOString();
|
|
||||||
|
|
||||||
const productJsonStream = gulp.src(['product.json'], { base: '.' })
|
|
||||||
.pipe(json({ commit, date }));
|
|
||||||
|
|
||||||
const license = gulp.src(['remote/LICENSE'], { base: 'remote' });
|
|
||||||
|
|
||||||
const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]));
|
|
||||||
|
|
||||||
const deps = gulp.src(dependenciesSrc, { base: 'remote/web', dot: true })
|
|
||||||
.pipe(filter(['**', '!**/package-lock.json']))
|
|
||||||
.pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')));
|
|
||||||
|
|
||||||
const favicon = gulp.src('resources/server/favicon.ico', { base: 'resources/server' });
|
|
||||||
|
|
||||||
let all = es.merge(
|
|
||||||
packageJsonStream,
|
|
||||||
productJsonStream,
|
|
||||||
license,
|
|
||||||
sources,
|
|
||||||
deps,
|
|
||||||
favicon
|
|
||||||
);
|
|
||||||
|
|
||||||
let result = all
|
|
||||||
.pipe(util.skipDirectories())
|
|
||||||
.pipe(util.fixWin32DirectoryPermissions());
|
|
||||||
|
|
||||||
return result.pipe(vfs.dest(destination));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const dashed = (str) => (str ? `-${str}` : ``);
|
|
||||||
|
|
||||||
['', 'min'].forEach(minified => {
|
|
||||||
const sourceFolderName = `out-vscode-web${dashed(minified)}`;
|
|
||||||
const destinationFolderName = `vscode-web`;
|
|
||||||
|
|
||||||
const vscodeWebTaskCI = task.define(`vscode-web${dashed(minified)}-ci`, task.series(
|
|
||||||
minified ? minifyVSCodeWebTask : optimizeVSCodeWebTask,
|
|
||||||
util.rimraf(path.join(BUILD_ROOT, destinationFolderName)),
|
|
||||||
packageTask(sourceFolderName, destinationFolderName)
|
|
||||||
));
|
|
||||||
gulp.task(vscodeWebTaskCI);
|
|
||||||
|
|
||||||
const vscodeWebTask = task.define(`vscode-web${dashed(minified)}`, task.series(
|
|
||||||
compileBuildTask,
|
|
||||||
vscodeWebTaskCI
|
|
||||||
));
|
|
||||||
gulp.task(vscodeWebTask);
|
|
||||||
});
|
|
||||||
@@ -26,8 +26,8 @@ const zipDir = arch => path.join(repoPath, '.build', `win32-${arch}`, 'archive')
|
|||||||
const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`);
|
const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`);
|
||||||
const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`);
|
const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`);
|
||||||
const issPath = path.join(__dirname, 'win32', 'code.iss');
|
const issPath = path.join(__dirname, 'win32', 'code.iss');
|
||||||
const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup'))), 'bin', 'ISCC.exe');
|
const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup-compiler'))), 'bin', 'ISCC.exe');
|
||||||
const signPS1 = path.join(repoPath, 'build', 'azure-pipelines', 'win32', 'sign.ps1');
|
// const signPS1 = path.join(repoPath, 'build', 'azure-pipelines', 'win32', 'sign.ps1');
|
||||||
|
|
||||||
function packageInnoSetup(iss, options, cb) {
|
function packageInnoSetup(iss, options, cb) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
@@ -49,8 +49,9 @@ function packageInnoSetup(iss, options, cb) {
|
|||||||
const defs = keys.map(key => `/d${key}=${definitions[key]}`);
|
const defs = keys.map(key => `/d${key}=${definitions[key]}`);
|
||||||
const args = [
|
const args = [
|
||||||
iss,
|
iss,
|
||||||
...defs,
|
...defs
|
||||||
`/sesrp=powershell.exe -ExecutionPolicy bypass ${signPS1} $f`
|
//,
|
||||||
|
//`/sesrp=powershell.exe -ExecutionPolicy bypass ${signPS1} $f`
|
||||||
];
|
];
|
||||||
|
|
||||||
cp.spawn(innoSetupPath, args, { stdio: ['ignore', 'inherit', 'inherit'] })
|
cp.spawn(innoSetupPath, args, { stdio: ['ignore', 'inherit', 'inherit'] })
|
||||||
@@ -136,17 +137,12 @@ function copyInnoUpdater(arch) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateIcon(executablePath) {
|
function patchInnoUpdater(arch) {
|
||||||
return cb => {
|
return cb => {
|
||||||
const icon = path.join(repoPath, 'resources', 'win32', 'code.ico');
|
const icon = path.join(repoPath, 'resources', 'win32', 'code.ico');
|
||||||
rcedit(executablePath, { icon }, cb);
|
rcedit(path.join(buildPath(arch), 'tools', 'inno_updater.exe'), { icon }, cb);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
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-ia32-inno-updater', task.series(copyInnoUpdater('ia32'), patchInnoUpdater('ia32'))));
|
||||||
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-x64-inno-updater', task.series(copyInnoUpdater('x64'), patchInnoUpdater('x64'))));
|
||||||
|
|
||||||
// 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')))));
|
|
||||||
@@ -18,9 +18,7 @@ const fancyLog = require('fancy-log');
|
|||||||
const ansiColors = require('ansi-colors');
|
const ansiColors = require('ansi-colors');
|
||||||
|
|
||||||
const root = path.dirname(path.dirname(__dirname));
|
const root = path.dirname(path.dirname(__dirname));
|
||||||
// {{SQL CARBON EDIT}}
|
const builtInExtensions = require('../builtInExtensions.json');
|
||||||
const builtInExtensions = require('../builtInExtensions-insiders.json');
|
|
||||||
// {{SQL CARBON EDIT}} - END
|
|
||||||
const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
|
const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
|
||||||
|
|
||||||
function getExtensionPath(extension) {
|
function getExtensionPath(extension) {
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ class MonacoGenerator {
|
|||||||
this._executeSoonTimer = null;
|
this._executeSoonTimer = null;
|
||||||
this._isWatch = isWatch;
|
this._isWatch = isWatch;
|
||||||
this.stream = es.through();
|
this.stream = es.through();
|
||||||
|
this._watchers = [];
|
||||||
this._watchedFiles = {};
|
this._watchedFiles = {};
|
||||||
let onWillReadFile = (moduleId, filePath) => {
|
let onWillReadFile = (moduleId, filePath) => {
|
||||||
if (!this._isWatch) {
|
if (!this._isWatch) {
|
||||||
@@ -121,10 +122,26 @@ class MonacoGenerator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this._watchedFiles[filePath] = true;
|
this._watchedFiles[filePath] = true;
|
||||||
fs.watchFile(filePath, () => {
|
const watcher = fs.watch(filePath);
|
||||||
|
watcher.addListener('change', () => {
|
||||||
this._declarationResolver.invalidateCache(moduleId);
|
this._declarationResolver.invalidateCache(moduleId);
|
||||||
this._executeSoon();
|
this._executeSoon();
|
||||||
});
|
});
|
||||||
|
watcher.addListener('error', (err) => {
|
||||||
|
console.error(`Encountered error while watching ${filePath}.`);
|
||||||
|
console.log(err);
|
||||||
|
delete this._watchedFiles[filePath];
|
||||||
|
for (let i = 0; i < this._watchers.length; i++) {
|
||||||
|
if (this._watchers[i] === watcher) {
|
||||||
|
this._watchers.splice(i, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
watcher.close();
|
||||||
|
this._declarationResolver.invalidateCache(moduleId);
|
||||||
|
this._executeSoon();
|
||||||
|
});
|
||||||
|
this._watchers.push(watcher);
|
||||||
};
|
};
|
||||||
this._fsProvider = new class extends monacodts.FSProvider {
|
this._fsProvider = new class extends monacodts.FSProvider {
|
||||||
readFileSync(moduleId, filePath) {
|
readFileSync(moduleId, filePath) {
|
||||||
@@ -134,9 +151,11 @@ class MonacoGenerator {
|
|||||||
};
|
};
|
||||||
this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
|
this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
|
||||||
if (this._isWatch) {
|
if (this._isWatch) {
|
||||||
fs.watchFile(monacodts.RECIPE_PATH, () => {
|
const recipeWatcher = fs.watch(monacodts.RECIPE_PATH);
|
||||||
|
recipeWatcher.addListener('change', () => {
|
||||||
this._executeSoon();
|
this._executeSoon();
|
||||||
});
|
});
|
||||||
|
this._watchers.push(recipeWatcher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_executeSoon() {
|
_executeSoon() {
|
||||||
@@ -149,6 +168,9 @@ class MonacoGenerator {
|
|||||||
this.execute();
|
this.execute();
|
||||||
}, 20);
|
}, 20);
|
||||||
}
|
}
|
||||||
|
dispose() {
|
||||||
|
this._watchers.forEach(watcher => watcher.close());
|
||||||
|
}
|
||||||
_run() {
|
_run() {
|
||||||
let r = monacodts.run3(this._declarationResolver);
|
let r = monacodts.run3(this._declarationResolver);
|
||||||
if (!r && !this._isWatch) {
|
if (!r && !this._isWatch) {
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ class MonacoGenerator {
|
|||||||
private readonly _isWatch: boolean;
|
private readonly _isWatch: boolean;
|
||||||
public readonly stream: NodeJS.ReadWriteStream;
|
public readonly stream: NodeJS.ReadWriteStream;
|
||||||
|
|
||||||
|
private readonly _watchers: fs.FSWatcher[];
|
||||||
private readonly _watchedFiles: { [filePath: string]: boolean; };
|
private readonly _watchedFiles: { [filePath: string]: boolean; };
|
||||||
private readonly _fsProvider: monacodts.FSProvider;
|
private readonly _fsProvider: monacodts.FSProvider;
|
||||||
private readonly _declarationResolver: monacodts.DeclarationResolver;
|
private readonly _declarationResolver: monacodts.DeclarationResolver;
|
||||||
@@ -144,6 +145,7 @@ class MonacoGenerator {
|
|||||||
constructor(isWatch: boolean) {
|
constructor(isWatch: boolean) {
|
||||||
this._isWatch = isWatch;
|
this._isWatch = isWatch;
|
||||||
this.stream = es.through();
|
this.stream = es.through();
|
||||||
|
this._watchers = [];
|
||||||
this._watchedFiles = {};
|
this._watchedFiles = {};
|
||||||
let onWillReadFile = (moduleId: string, filePath: string) => {
|
let onWillReadFile = (moduleId: string, filePath: string) => {
|
||||||
if (!this._isWatch) {
|
if (!this._isWatch) {
|
||||||
@@ -154,10 +156,26 @@ class MonacoGenerator {
|
|||||||
}
|
}
|
||||||
this._watchedFiles[filePath] = true;
|
this._watchedFiles[filePath] = true;
|
||||||
|
|
||||||
fs.watchFile(filePath, () => {
|
const watcher = fs.watch(filePath);
|
||||||
|
watcher.addListener('change', () => {
|
||||||
this._declarationResolver.invalidateCache(moduleId);
|
this._declarationResolver.invalidateCache(moduleId);
|
||||||
this._executeSoon();
|
this._executeSoon();
|
||||||
});
|
});
|
||||||
|
watcher.addListener('error', (err) => {
|
||||||
|
console.error(`Encountered error while watching ${filePath}.`);
|
||||||
|
console.log(err);
|
||||||
|
delete this._watchedFiles[filePath];
|
||||||
|
for (let i = 0; i < this._watchers.length; i++) {
|
||||||
|
if (this._watchers[i] === watcher) {
|
||||||
|
this._watchers.splice(i, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
watcher.close();
|
||||||
|
this._declarationResolver.invalidateCache(moduleId);
|
||||||
|
this._executeSoon();
|
||||||
|
});
|
||||||
|
this._watchers.push(watcher);
|
||||||
};
|
};
|
||||||
this._fsProvider = new class extends monacodts.FSProvider {
|
this._fsProvider = new class extends monacodts.FSProvider {
|
||||||
public readFileSync(moduleId: string, filePath: string): Buffer {
|
public readFileSync(moduleId: string, filePath: string): Buffer {
|
||||||
@@ -168,9 +186,11 @@ class MonacoGenerator {
|
|||||||
this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
|
this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
|
||||||
|
|
||||||
if (this._isWatch) {
|
if (this._isWatch) {
|
||||||
fs.watchFile(monacodts.RECIPE_PATH, () => {
|
const recipeWatcher = fs.watch(monacodts.RECIPE_PATH);
|
||||||
|
recipeWatcher.addListener('change', () => {
|
||||||
this._executeSoon();
|
this._executeSoon();
|
||||||
});
|
});
|
||||||
|
this._watchers.push(recipeWatcher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,6 +206,10 @@ class MonacoGenerator {
|
|||||||
}, 20);
|
}, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public dispose(): void {
|
||||||
|
this._watchers.forEach(watcher => watcher.close());
|
||||||
|
}
|
||||||
|
|
||||||
private _run(): monacodts.IMonacoDeclarationResult | null {
|
private _run(): monacodts.IMonacoDeclarationResult | null {
|
||||||
let r = monacodts.run3(this._declarationResolver);
|
let r = monacodts.run3(this._declarationResolver);
|
||||||
if (!r && !this._isWatch) {
|
if (!r && !this._isWatch) {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ module.exports.getElectronVersion = getElectronVersion;
|
|||||||
if (require.main === module) {
|
if (require.main === module) {
|
||||||
const version = getElectronVersion();
|
const version = getElectronVersion();
|
||||||
const versionFile = path.join(root, '.build', 'electron', 'version');
|
const versionFile = path.join(root, '.build', 'electron', 'version');
|
||||||
const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
|
const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `v${version}`;
|
||||||
|
|
||||||
process.exit(isUpToDate ? 0 : 1);
|
process.exit(isUpToDate ? 0 : 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ const File = require("vinyl");
|
|||||||
const vsce = require("vsce");
|
const vsce = require("vsce");
|
||||||
const stats_1 = require("./stats");
|
const stats_1 = require("./stats");
|
||||||
const util2 = require("./util");
|
const util2 = require("./util");
|
||||||
const remote = require("gulp-remote-retry-src");
|
const remote = require("gulp-remote-src");
|
||||||
const vzip = require('gulp-vinyl-zip');
|
const vzip = require('gulp-vinyl-zip');
|
||||||
const filter = require("gulp-filter");
|
const filter = require("gulp-filter");
|
||||||
const rename = require("gulp-rename");
|
const rename = require("gulp-rename");
|
||||||
@@ -23,214 +23,13 @@ const buffer = require('gulp-buffer');
|
|||||||
const json = require("gulp-json-editor");
|
const json = require("gulp-json-editor");
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const webpackGulp = require('webpack-stream');
|
const webpackGulp = require('webpack-stream');
|
||||||
const util = require('./util');
|
const root = path.resolve(path.join(__dirname, '..', '..'));
|
||||||
const root = path.dirname(path.dirname(__dirname));
|
|
||||||
const commit = util.getVersion(root);
|
|
||||||
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
|
|
||||||
function fromLocal(extensionPath) {
|
|
||||||
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
|
|
||||||
if (fs.existsSync(webpackFilename)) {
|
|
||||||
return fromLocalWebpack(extensionPath);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return fromLocalNormal(extensionPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function fromLocalWebpack(extensionPath) {
|
|
||||||
const result = es.through();
|
|
||||||
const packagedDependencies = [];
|
|
||||||
const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
|
|
||||||
if (packageJsonConfig.dependencies) {
|
|
||||||
const webpackRootConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
|
|
||||||
for (const key in webpackRootConfig.externals) {
|
|
||||||
if (key in packageJsonConfig.dependencies) {
|
|
||||||
packagedDependencies.push(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
|
|
||||||
const files = fileNames
|
|
||||||
.map(fileName => path.join(extensionPath, fileName))
|
|
||||||
.map(filePath => new File({
|
|
||||||
path: filePath,
|
|
||||||
stat: fs.statSync(filePath),
|
|
||||||
base: extensionPath,
|
|
||||||
contents: fs.createReadStream(filePath)
|
|
||||||
}));
|
|
||||||
const filesStream = es.readArray(files);
|
|
||||||
// check for a webpack configuration files, then invoke webpack
|
|
||||||
// and merge its output with the files stream. also rewrite the package.json
|
|
||||||
// file to a new entry point
|
|
||||||
const webpackConfigLocations = glob.sync(path.join(extensionPath, '/**/extension.webpack.config.js'), { ignore: ['**/node_modules'] });
|
|
||||||
const packageJsonFilter = filter(f => {
|
|
||||||
if (path.basename(f.path) === 'package.json') {
|
|
||||||
// only modify package.json's next to the webpack file.
|
|
||||||
// to be safe, use existsSync instead of path comparison.
|
|
||||||
return fs.existsSync(path.join(path.dirname(f.path), 'extension.webpack.config.js'));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}, { restore: true });
|
|
||||||
const patchFilesStream = filesStream
|
|
||||||
.pipe(packageJsonFilter)
|
|
||||||
.pipe(buffer())
|
|
||||||
.pipe(json((data) => {
|
|
||||||
if (data.main) {
|
|
||||||
// hardcoded entry point directory!
|
|
||||||
data.main = data.main.replace('/out/', /dist/);
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}))
|
|
||||||
.pipe(packageJsonFilter.restore);
|
|
||||||
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
|
|
||||||
const webpackDone = (err, stats) => {
|
|
||||||
fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
|
|
||||||
if (err) {
|
|
||||||
result.emit('error', err);
|
|
||||||
}
|
|
||||||
const { compilation } = stats;
|
|
||||||
if (compilation.errors.length > 0) {
|
|
||||||
result.emit('error', compilation.errors.join('\n'));
|
|
||||||
}
|
|
||||||
if (compilation.warnings.length > 0) {
|
|
||||||
result.emit('error', compilation.warnings.join('\n'));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const webpackConfig = Object.assign({}, require(webpackConfigPath), { mode: 'production' });
|
|
||||||
const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
|
|
||||||
return webpackGulp(webpackConfig, webpack, webpackDone)
|
|
||||||
.pipe(es.through(function (data) {
|
|
||||||
data.stat = data.stat || {};
|
|
||||||
data.base = extensionPath;
|
|
||||||
this.emit('data', data);
|
|
||||||
}))
|
|
||||||
.pipe(es.through(function (data) {
|
|
||||||
// source map handling:
|
|
||||||
// * rewrite sourceMappingURL
|
|
||||||
// * save to disk so that upload-task picks this up
|
|
||||||
const contents = data.contents.toString('utf8');
|
|
||||||
data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
|
|
||||||
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
|
||||||
}), 'utf8');
|
|
||||||
this.emit('data', data);
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
es.merge(...webpackStreams, patchFilesStream)
|
|
||||||
// .pipe(es.through(function (data) {
|
|
||||||
// // debug
|
|
||||||
// console.log('out', data.path, data.contents.length);
|
|
||||||
// this.emit('data', data);
|
|
||||||
// }))
|
|
||||||
.pipe(result);
|
|
||||||
}).catch(err => {
|
|
||||||
console.error(extensionPath);
|
|
||||||
console.error(packagedDependencies);
|
|
||||||
result.emit('error', err);
|
|
||||||
});
|
|
||||||
return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
|
|
||||||
}
|
|
||||||
function fromLocalNormal(extensionPath) {
|
|
||||||
const result = es.through();
|
|
||||||
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
|
|
||||||
.then(fileNames => {
|
|
||||||
const files = fileNames
|
|
||||||
.map(fileName => path.join(extensionPath, fileName))
|
|
||||||
.map(filePath => new File({
|
|
||||||
path: filePath,
|
|
||||||
stat: fs.statSync(filePath),
|
|
||||||
base: extensionPath,
|
|
||||||
contents: fs.createReadStream(filePath)
|
|
||||||
}));
|
|
||||||
es.readArray(files).pipe(result);
|
|
||||||
})
|
|
||||||
.catch(err => result.emit('error', err));
|
|
||||||
return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
|
|
||||||
}
|
|
||||||
const baseHeaders = {
|
|
||||||
'X-Market-Client-Id': 'VSCode Build',
|
|
||||||
'User-Agent': 'VSCode Build',
|
|
||||||
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
|
||||||
};
|
|
||||||
function fromMarketplace(extensionName, version, metadata) {
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
const [, name] = extensionName.split('.');
|
const _ = require("underscore");
|
||||||
const url = `https://sqlopsextensions.blob.core.windows.net/extensions/${name}/${name}-${version}.vsix`;
|
|
||||||
fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
|
|
||||||
const options = {
|
|
||||||
base: url,
|
|
||||||
requestOptions: {
|
|
||||||
gzip: true,
|
|
||||||
headers: baseHeaders
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const packageJsonFilter = filter('package.json', { restore: true });
|
|
||||||
return remote('', options)
|
|
||||||
.pipe(vzip.src())
|
|
||||||
.pipe(filter('extension/**'))
|
|
||||||
.pipe(rename(p => p.dirname = p.dirname.replace(/^extension\/?/, '')))
|
|
||||||
.pipe(packageJsonFilter)
|
|
||||||
.pipe(buffer())
|
|
||||||
.pipe(json({ __metadata: metadata }))
|
|
||||||
.pipe(packageJsonFilter.restore);
|
|
||||||
}
|
|
||||||
exports.fromMarketplace = fromMarketplace;
|
|
||||||
const excludedExtensions = [
|
|
||||||
'vscode-api-tests',
|
|
||||||
'vscode-colorize-tests',
|
|
||||||
'vscode-test-resolver',
|
|
||||||
'ms-vscode.node-debug',
|
|
||||||
'ms-vscode.node-debug2',
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
'integration-tests'
|
|
||||||
];
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
const sqlBuiltInExtensions = [
|
|
||||||
// Add SQL built-in extensions here.
|
|
||||||
// the extension will be excluded from SQLOps package and will have separate vsix packages
|
|
||||||
'admin-tool-ext-win',
|
|
||||||
'agent',
|
|
||||||
'import',
|
|
||||||
'profiler',
|
|
||||||
'admin-pack',
|
|
||||||
'dacpac',
|
|
||||||
'schema-compare',
|
|
||||||
'cms'
|
|
||||||
];
|
|
||||||
// make resource deployment and BDC extension only available in insiders
|
|
||||||
if (process.env['VSCODE_QUALITY'] === 'stable') {
|
|
||||||
sqlBuiltInExtensions.push('resource-deployment');
|
|
||||||
sqlBuiltInExtensions.push('big-data-cluster');
|
|
||||||
}
|
|
||||||
const builtInExtensions = process.env['VSCODE_QUALITY'] === 'stable' ? require('../builtInExtensions.json') : require('../builtInExtensions-insiders.json');
|
|
||||||
// {{SQL CARBON EDIT}} - End
|
|
||||||
function packageLocalExtensionsStream() {
|
|
||||||
const localExtensionDescriptions = glob.sync('extensions/*/package.json')
|
|
||||||
.map(manifestPath => {
|
|
||||||
const extensionPath = path.dirname(path.join(root, manifestPath));
|
|
||||||
const extensionName = path.basename(extensionPath);
|
|
||||||
return { name: extensionName, path: extensionPath };
|
|
||||||
})
|
|
||||||
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
|
||||||
.filter(({ name }) => builtInExtensions.every(b => b.name !== name))
|
|
||||||
.filter(({ name }) => sqlBuiltInExtensions.indexOf(name) === -1); // {{SQL CARBON EDIT}} add aditional filter
|
|
||||||
const nodeModules = gulp.src('extensions/node_modules/**', { base: '.' });
|
|
||||||
const localExtensions = localExtensionDescriptions.map(extension => {
|
|
||||||
return fromLocal(extension.path)
|
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
|
||||||
});
|
|
||||||
return es.merge(nodeModules, ...localExtensions)
|
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']));
|
|
||||||
}
|
|
||||||
exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
|
|
||||||
function packageMarketplaceExtensionsStream() {
|
|
||||||
const extensions = builtInExtensions.map(extension => {
|
|
||||||
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
|
||||||
});
|
|
||||||
return es.merge(extensions)
|
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']));
|
|
||||||
}
|
|
||||||
exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;
|
|
||||||
const vfs = require("vinyl-fs");
|
const vfs = require("vinyl-fs");
|
||||||
|
const deps = require('../dependencies');
|
||||||
|
const extensionsRoot = path.join(root, 'extensions');
|
||||||
|
const extensionsProductionDependencies = deps.getProductionDependencies(extensionsRoot);
|
||||||
function packageBuiltInExtensions() {
|
function packageBuiltInExtensions() {
|
||||||
const sqlBuiltInLocalExtensionDescriptions = glob.sync('extensions/*/package.json')
|
const sqlBuiltInLocalExtensionDescriptions = glob.sync('extensions/*/package.json')
|
||||||
.map(manifestPath => {
|
.map(manifestPath => {
|
||||||
@@ -293,3 +92,242 @@ function packageExtensionTask(extensionName, platform, arch) {
|
|||||||
}
|
}
|
||||||
exports.packageExtensionTask = packageExtensionTask;
|
exports.packageExtensionTask = packageExtensionTask;
|
||||||
// {{SQL CARBON EDIT}} - End
|
// {{SQL CARBON EDIT}} - End
|
||||||
|
function fromLocal(extensionPath, sourceMappingURLBase) {
|
||||||
|
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
|
||||||
|
if (fs.existsSync(webpackFilename)) {
|
||||||
|
return fromLocalWebpack(extensionPath, sourceMappingURLBase);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return fromLocalNormal(extensionPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function fromLocalWebpack(extensionPath, sourceMappingURLBase) {
|
||||||
|
const result = es.through();
|
||||||
|
const packagedDependencies = [];
|
||||||
|
const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
|
||||||
|
if (packageJsonConfig.dependencies) {
|
||||||
|
const webpackRootConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
|
||||||
|
for (const key in webpackRootConfig.externals) {
|
||||||
|
if (key in packageJsonConfig.dependencies) {
|
||||||
|
packagedDependencies.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
|
||||||
|
const files = fileNames
|
||||||
|
.map(fileName => path.join(extensionPath, fileName))
|
||||||
|
.map(filePath => new File({
|
||||||
|
path: filePath,
|
||||||
|
stat: fs.statSync(filePath),
|
||||||
|
base: extensionPath,
|
||||||
|
contents: fs.createReadStream(filePath)
|
||||||
|
}));
|
||||||
|
const filesStream = es.readArray(files);
|
||||||
|
// check for a webpack configuration files, then invoke webpack
|
||||||
|
// and merge its output with the files stream. also rewrite the package.json
|
||||||
|
// file to a new entry point
|
||||||
|
const webpackConfigLocations = glob.sync(path.join(extensionPath, '/**/extension.webpack.config.js'), { ignore: ['**/node_modules'] });
|
||||||
|
const packageJsonFilter = filter(f => {
|
||||||
|
if (path.basename(f.path) === 'package.json') {
|
||||||
|
// only modify package.json's next to the webpack file.
|
||||||
|
// to be safe, use existsSync instead of path comparison.
|
||||||
|
return fs.existsSync(path.join(path.dirname(f.path), 'extension.webpack.config.js'));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}, { restore: true });
|
||||||
|
const patchFilesStream = filesStream
|
||||||
|
.pipe(packageJsonFilter)
|
||||||
|
.pipe(buffer())
|
||||||
|
.pipe(json((data) => {
|
||||||
|
if (data.main) {
|
||||||
|
// hardcoded entry point directory!
|
||||||
|
data.main = data.main.replace('/out/', /dist/);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}))
|
||||||
|
.pipe(packageJsonFilter.restore);
|
||||||
|
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => () => {
|
||||||
|
const webpackDone = (err, stats) => {
|
||||||
|
fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
|
||||||
|
if (err) {
|
||||||
|
result.emit('error', err);
|
||||||
|
}
|
||||||
|
const { compilation } = stats;
|
||||||
|
if (compilation.errors.length > 0) {
|
||||||
|
result.emit('error', compilation.errors.join('\n'));
|
||||||
|
}
|
||||||
|
if (compilation.warnings.length > 0) {
|
||||||
|
result.emit('error', compilation.warnings.join('\n'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const webpackConfig = Object.assign({}, require(webpackConfigPath), { mode: 'production' });
|
||||||
|
const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
|
||||||
|
return webpackGulp(webpackConfig, webpack, webpackDone)
|
||||||
|
.pipe(es.through(function (data) {
|
||||||
|
data.stat = data.stat || {};
|
||||||
|
data.base = extensionPath;
|
||||||
|
this.emit('data', data);
|
||||||
|
}))
|
||||||
|
.pipe(es.through(function (data) {
|
||||||
|
// source map handling:
|
||||||
|
// * rewrite sourceMappingURL
|
||||||
|
// * save to disk so that upload-task picks this up
|
||||||
|
if (sourceMappingURLBase) {
|
||||||
|
const contents = data.contents.toString('utf8');
|
||||||
|
data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
|
||||||
|
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
||||||
|
}), 'utf8');
|
||||||
|
if (/\.js\.map$/.test(data.path)) {
|
||||||
|
if (!fs.existsSync(path.dirname(data.path))) {
|
||||||
|
fs.mkdirSync(path.dirname(data.path));
|
||||||
|
}
|
||||||
|
fs.writeFileSync(data.path, data.contents);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.emit('data', data);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
es.merge(sequence(webpackStreams), patchFilesStream)
|
||||||
|
// .pipe(es.through(function (data) {
|
||||||
|
// // debug
|
||||||
|
// console.log('out', data.path, data.contents.length);
|
||||||
|
// this.emit('data', data);
|
||||||
|
// }))
|
||||||
|
.pipe(result);
|
||||||
|
}).catch(err => {
|
||||||
|
console.error(extensionPath);
|
||||||
|
console.error(packagedDependencies);
|
||||||
|
result.emit('error', err);
|
||||||
|
});
|
||||||
|
return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
|
||||||
|
}
|
||||||
|
function fromLocalNormal(extensionPath) {
|
||||||
|
const result = es.through();
|
||||||
|
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
|
||||||
|
.then(fileNames => {
|
||||||
|
const files = fileNames
|
||||||
|
.map(fileName => path.join(extensionPath, fileName))
|
||||||
|
.map(filePath => new File({
|
||||||
|
path: filePath,
|
||||||
|
stat: fs.statSync(filePath),
|
||||||
|
base: extensionPath,
|
||||||
|
contents: fs.createReadStream(filePath)
|
||||||
|
}));
|
||||||
|
es.readArray(files).pipe(result);
|
||||||
|
})
|
||||||
|
.catch(err => result.emit('error', err));
|
||||||
|
return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
|
||||||
|
}
|
||||||
|
const baseHeaders = {
|
||||||
|
'X-Market-Client-Id': 'VSCode Build',
|
||||||
|
'User-Agent': 'VSCode Build',
|
||||||
|
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
||||||
|
};
|
||||||
|
function fromMarketplace(extensionName, version, metadata) {
|
||||||
|
const [publisher, name] = extensionName.split('.');
|
||||||
|
const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
|
||||||
|
fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
|
||||||
|
const options = {
|
||||||
|
base: url,
|
||||||
|
requestOptions: {
|
||||||
|
gzip: true,
|
||||||
|
headers: baseHeaders
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const packageJsonFilter = filter('package.json', { restore: true });
|
||||||
|
return remote('', options)
|
||||||
|
.pipe(vzip.src())
|
||||||
|
.pipe(filter('extension/**'))
|
||||||
|
.pipe(rename(p => p.dirname = p.dirname.replace(/^extension\/?/, '')))
|
||||||
|
.pipe(packageJsonFilter)
|
||||||
|
.pipe(buffer())
|
||||||
|
.pipe(json({ __metadata: metadata }))
|
||||||
|
.pipe(packageJsonFilter.restore);
|
||||||
|
}
|
||||||
|
exports.fromMarketplace = fromMarketplace;
|
||||||
|
const excludedExtensions = [
|
||||||
|
'vscode-api-tests',
|
||||||
|
'vscode-colorize-tests',
|
||||||
|
'vscode-test-resolver',
|
||||||
|
'ms-vscode.node-debug',
|
||||||
|
'ms-vscode.node-debug2',
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
'integration-tests'
|
||||||
|
];
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
const sqlBuiltInExtensions = [
|
||||||
|
// Add SQL built-in extensions here.
|
||||||
|
// the extension will be excluded from SQLOps package and will have separate vsix packages
|
||||||
|
'admin-tool-ext-win',
|
||||||
|
'agent',
|
||||||
|
'import',
|
||||||
|
'profiler',
|
||||||
|
'admin-pack',
|
||||||
|
'big-data-cluster',
|
||||||
|
'dacpac',
|
||||||
|
'schema-compare',
|
||||||
|
'resource-deployment',
|
||||||
|
'cms'
|
||||||
|
];
|
||||||
|
const builtInExtensions = require('../builtInExtensions.json');
|
||||||
|
/**
|
||||||
|
* We're doing way too much stuff at once, with webpack et al. So much stuff
|
||||||
|
* that while downloading extensions from the marketplace, node js doesn't get enough
|
||||||
|
* stack frames to complete the download in under 2 minutes, at which point the
|
||||||
|
* marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
|
||||||
|
*/
|
||||||
|
function sequence(streamProviders) {
|
||||||
|
const result = es.through();
|
||||||
|
function pop() {
|
||||||
|
if (streamProviders.length === 0) {
|
||||||
|
result.emit('end');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const fn = streamProviders.shift();
|
||||||
|
fn()
|
||||||
|
.on('end', function () { setTimeout(pop, 0); })
|
||||||
|
.pipe(result, { end: false });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pop();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
function packageExtensionsStream(optsIn) {
|
||||||
|
const opts = optsIn || {};
|
||||||
|
const localExtensionDescriptions = glob.sync('extensions/*/package.json')
|
||||||
|
.map(manifestPath => {
|
||||||
|
const extensionPath = path.dirname(path.join(root, manifestPath));
|
||||||
|
const extensionName = path.basename(extensionPath);
|
||||||
|
return { name: extensionName, path: extensionPath };
|
||||||
|
})
|
||||||
|
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
||||||
|
.filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
|
||||||
|
.filter(({ name }) => builtInExtensions.every(b => b.name !== name))
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
.filter(({ name }) => sqlBuiltInExtensions.indexOf(name) === -1);
|
||||||
|
const localExtensions = () => sequence([...localExtensionDescriptions.map(extension => () => {
|
||||||
|
return fromLocal(extension.path, opts.sourceMappingURLBase)
|
||||||
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
|
})]);
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
const extensionDepsSrc = [
|
||||||
|
..._.flatten(extensionsProductionDependencies.map((d) => path.relative(root, d.path)).map((d) => [`${d}/**`, `!${d}/**/{test,tests}/**`])),
|
||||||
|
];
|
||||||
|
const localExtensionDependencies = () => gulp.src(extensionDepsSrc, { base: '.', dot: true })
|
||||||
|
.pipe(filter(['**', '!**/package-lock.json']));
|
||||||
|
// Original code commented out here
|
||||||
|
// const localExtensionDependencies = () => gulp.src('extensions/node_modules/**', { base: '.' });
|
||||||
|
// const marketplaceExtensions = () => es.merge(
|
||||||
|
// ...builtInExtensions
|
||||||
|
// .filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
|
||||||
|
// .map(extension => {
|
||||||
|
// return fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
|
// .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
return sequence([localExtensions, localExtensionDependencies,])
|
||||||
|
.pipe(util2.setExecutableBit(['**/*.sh']))
|
||||||
|
.pipe(filter(['**', '!**/*.js.map']));
|
||||||
|
// {{SQL CARBON EDIT}} - End
|
||||||
|
}
|
||||||
|
exports.packageExtensionsStream = packageExtensionsStream;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import * as File from 'vinyl';
|
|||||||
import * as vsce from 'vsce';
|
import * as vsce from 'vsce';
|
||||||
import { createStatsStream } from './stats';
|
import { createStatsStream } from './stats';
|
||||||
import * as util2 from './util';
|
import * as util2 from './util';
|
||||||
import remote = require('gulp-remote-retry-src');
|
import remote = require('gulp-remote-src');
|
||||||
const vzip = require('gulp-vinyl-zip');
|
const vzip = require('gulp-vinyl-zip');
|
||||||
import filter = require('gulp-filter');
|
import filter = require('gulp-filter');
|
||||||
import rename = require('gulp-rename');
|
import rename = require('gulp-rename');
|
||||||
@@ -23,265 +23,15 @@ const buffer = require('gulp-buffer');
|
|||||||
import json = require('gulp-json-editor');
|
import json = require('gulp-json-editor');
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const webpackGulp = require('webpack-stream');
|
const webpackGulp = require('webpack-stream');
|
||||||
const util = require('./util');
|
|
||||||
const root = path.dirname(path.dirname(__dirname));
|
|
||||||
const commit = util.getVersion(root);
|
|
||||||
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
|
|
||||||
|
|
||||||
function fromLocal(extensionPath: string): Stream {
|
const root = path.resolve(path.join(__dirname, '..', '..'));
|
||||||
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
|
|
||||||
if (fs.existsSync(webpackFilename)) {
|
|
||||||
return fromLocalWebpack(extensionPath);
|
|
||||||
} else {
|
|
||||||
return fromLocalNormal(extensionPath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function fromLocalWebpack(extensionPath: string): Stream {
|
|
||||||
const result = es.through();
|
|
||||||
|
|
||||||
const packagedDependencies: string[] = [];
|
|
||||||
const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
|
|
||||||
if (packageJsonConfig.dependencies) {
|
|
||||||
const webpackRootConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
|
|
||||||
for (const key in webpackRootConfig.externals) {
|
|
||||||
if (key in packageJsonConfig.dependencies) {
|
|
||||||
packagedDependencies.push(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
|
|
||||||
const files = fileNames
|
|
||||||
.map(fileName => path.join(extensionPath, fileName))
|
|
||||||
.map(filePath => new File({
|
|
||||||
path: filePath,
|
|
||||||
stat: fs.statSync(filePath),
|
|
||||||
base: extensionPath,
|
|
||||||
contents: fs.createReadStream(filePath) as any
|
|
||||||
}));
|
|
||||||
|
|
||||||
const filesStream = es.readArray(files);
|
|
||||||
|
|
||||||
// check for a webpack configuration files, then invoke webpack
|
|
||||||
// and merge its output with the files stream. also rewrite the package.json
|
|
||||||
// file to a new entry point
|
|
||||||
const webpackConfigLocations = (<string[]>glob.sync(
|
|
||||||
path.join(extensionPath, '/**/extension.webpack.config.js'),
|
|
||||||
{ ignore: ['**/node_modules'] }
|
|
||||||
));
|
|
||||||
|
|
||||||
const packageJsonFilter = filter(f => {
|
|
||||||
if (path.basename(f.path) === 'package.json') {
|
|
||||||
// only modify package.json's next to the webpack file.
|
|
||||||
// to be safe, use existsSync instead of path comparison.
|
|
||||||
return fs.existsSync(path.join(path.dirname(f.path), 'extension.webpack.config.js'));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}, { restore: true });
|
|
||||||
|
|
||||||
const patchFilesStream = filesStream
|
|
||||||
.pipe(packageJsonFilter)
|
|
||||||
.pipe(buffer())
|
|
||||||
.pipe(json((data: any) => {
|
|
||||||
if (data.main) {
|
|
||||||
// hardcoded entry point directory!
|
|
||||||
data.main = data.main.replace('/out/', /dist/);
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
}))
|
|
||||||
.pipe(packageJsonFilter.restore);
|
|
||||||
|
|
||||||
|
|
||||||
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
|
|
||||||
|
|
||||||
const webpackDone = (err: any, stats: any) => {
|
|
||||||
fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
|
|
||||||
if (err) {
|
|
||||||
result.emit('error', err);
|
|
||||||
}
|
|
||||||
const { compilation } = stats;
|
|
||||||
if (compilation.errors.length > 0) {
|
|
||||||
result.emit('error', compilation.errors.join('\n'));
|
|
||||||
}
|
|
||||||
if (compilation.warnings.length > 0) {
|
|
||||||
result.emit('error', compilation.warnings.join('\n'));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const webpackConfig = {
|
|
||||||
...require(webpackConfigPath),
|
|
||||||
...{ mode: 'production' }
|
|
||||||
};
|
|
||||||
const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
|
|
||||||
|
|
||||||
return webpackGulp(webpackConfig, webpack, webpackDone)
|
|
||||||
.pipe(es.through(function (data) {
|
|
||||||
data.stat = data.stat || {};
|
|
||||||
data.base = extensionPath;
|
|
||||||
this.emit('data', data);
|
|
||||||
}))
|
|
||||||
.pipe(es.through(function (data: File) {
|
|
||||||
// source map handling:
|
|
||||||
// * rewrite sourceMappingURL
|
|
||||||
// * save to disk so that upload-task picks this up
|
|
||||||
const contents = (<Buffer>data.contents).toString('utf8');
|
|
||||||
data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
|
|
||||||
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
|
||||||
}), 'utf8');
|
|
||||||
|
|
||||||
this.emit('data', data);
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
es.merge(...webpackStreams, patchFilesStream)
|
|
||||||
// .pipe(es.through(function (data) {
|
|
||||||
// // debug
|
|
||||||
// console.log('out', data.path, data.contents.length);
|
|
||||||
// this.emit('data', data);
|
|
||||||
// }))
|
|
||||||
.pipe(result);
|
|
||||||
|
|
||||||
}).catch(err => {
|
|
||||||
console.error(extensionPath);
|
|
||||||
console.error(packagedDependencies);
|
|
||||||
result.emit('error', err);
|
|
||||||
});
|
|
||||||
|
|
||||||
return result.pipe(createStatsStream(path.basename(extensionPath)));
|
|
||||||
}
|
|
||||||
|
|
||||||
function fromLocalNormal(extensionPath: string): Stream {
|
|
||||||
const result = es.through();
|
|
||||||
|
|
||||||
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
|
|
||||||
.then(fileNames => {
|
|
||||||
const files = fileNames
|
|
||||||
.map(fileName => path.join(extensionPath, fileName))
|
|
||||||
.map(filePath => new File({
|
|
||||||
path: filePath,
|
|
||||||
stat: fs.statSync(filePath),
|
|
||||||
base: extensionPath,
|
|
||||||
contents: fs.createReadStream(filePath) as any
|
|
||||||
}));
|
|
||||||
|
|
||||||
es.readArray(files).pipe(result);
|
|
||||||
})
|
|
||||||
.catch(err => result.emit('error', err));
|
|
||||||
|
|
||||||
return result.pipe(createStatsStream(path.basename(extensionPath)));
|
|
||||||
}
|
|
||||||
|
|
||||||
const baseHeaders = {
|
|
||||||
'X-Market-Client-Id': 'VSCode Build',
|
|
||||||
'User-Agent': 'VSCode Build',
|
|
||||||
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
|
||||||
};
|
|
||||||
|
|
||||||
export function fromMarketplace(extensionName: string, version: string, metadata: any): Stream {
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
const [, name] = extensionName.split('.');
|
|
||||||
const url = `https://sqlopsextensions.blob.core.windows.net/extensions/${name}/${name}-${version}.vsix`;
|
|
||||||
|
|
||||||
fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
base: url,
|
|
||||||
requestOptions: {
|
|
||||||
gzip: true,
|
|
||||||
headers: baseHeaders
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const packageJsonFilter = filter('package.json', { restore: true });
|
|
||||||
|
|
||||||
return remote('', options)
|
|
||||||
.pipe(vzip.src())
|
|
||||||
.pipe(filter('extension/**'))
|
|
||||||
.pipe(rename(p => p.dirname = p.dirname!.replace(/^extension\/?/, '')))
|
|
||||||
.pipe(packageJsonFilter)
|
|
||||||
.pipe(buffer())
|
|
||||||
.pipe(json({ __metadata: metadata }))
|
|
||||||
.pipe(packageJsonFilter.restore);
|
|
||||||
}
|
|
||||||
|
|
||||||
const excludedExtensions = [
|
|
||||||
'vscode-api-tests',
|
|
||||||
'vscode-colorize-tests',
|
|
||||||
'vscode-test-resolver',
|
|
||||||
'ms-vscode.node-debug',
|
|
||||||
'ms-vscode.node-debug2',
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
'integration-tests'
|
|
||||||
];
|
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
|
||||||
const sqlBuiltInExtensions = [
|
|
||||||
// Add SQL built-in extensions here.
|
|
||||||
// the extension will be excluded from SQLOps package and will have separate vsix packages
|
|
||||||
'admin-tool-ext-win',
|
|
||||||
'agent',
|
|
||||||
'import',
|
|
||||||
'profiler',
|
|
||||||
'admin-pack',
|
|
||||||
'dacpac',
|
|
||||||
'schema-compare',
|
|
||||||
'cms'
|
|
||||||
];
|
|
||||||
|
|
||||||
// make resource deployment and BDC extension only available in insiders
|
|
||||||
if (process.env['VSCODE_QUALITY'] === 'stable') {
|
|
||||||
sqlBuiltInExtensions.push('resource-deployment');
|
|
||||||
sqlBuiltInExtensions.push('big-data-cluster');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
interface IBuiltInExtension {
|
|
||||||
name: string;
|
|
||||||
version: string;
|
|
||||||
repo: string;
|
|
||||||
metadata: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
const builtInExtensions: IBuiltInExtension[] = process.env['VSCODE_QUALITY'] === 'stable' ? require('../builtInExtensions.json') : require('../builtInExtensions-insiders.json');
|
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}} - End
|
|
||||||
|
|
||||||
|
|
||||||
export function packageLocalExtensionsStream(): NodeJS.ReadWriteStream {
|
|
||||||
const localExtensionDescriptions = (<string[]>glob.sync('extensions/*/package.json'))
|
|
||||||
.map(manifestPath => {
|
|
||||||
const extensionPath = path.dirname(path.join(root, manifestPath));
|
|
||||||
const extensionName = path.basename(extensionPath);
|
|
||||||
return { name: extensionName, path: extensionPath };
|
|
||||||
})
|
|
||||||
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
|
||||||
.filter(({ name }) => builtInExtensions.every(b => b.name !== name))
|
|
||||||
.filter(({ name }) => sqlBuiltInExtensions.indexOf(name) === -1); // {{SQL CARBON EDIT}} add aditional filter
|
|
||||||
|
|
||||||
const nodeModules = gulp.src('extensions/node_modules/**', { base: '.' });
|
|
||||||
const localExtensions = localExtensionDescriptions.map(extension => {
|
|
||||||
return fromLocal(extension.path)
|
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
|
||||||
});
|
|
||||||
|
|
||||||
return es.merge(nodeModules, ...localExtensions)
|
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']));
|
|
||||||
}
|
|
||||||
|
|
||||||
export function packageMarketplaceExtensionsStream(): NodeJS.ReadWriteStream {
|
|
||||||
const extensions = builtInExtensions.map(extension => {
|
|
||||||
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
|
||||||
});
|
|
||||||
|
|
||||||
return es.merge(extensions)
|
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']));
|
|
||||||
}
|
|
||||||
|
|
||||||
// {{SQL CARBON EDIT}}
|
// {{SQL CARBON EDIT}}
|
||||||
import * as _ from 'underscore';
|
import * as _ from 'underscore';
|
||||||
import * as vfs from 'vinyl-fs';
|
import * as vfs from 'vinyl-fs';
|
||||||
|
const deps = require('../dependencies');
|
||||||
|
const extensionsRoot = path.join(root, 'extensions');
|
||||||
|
const extensionsProductionDependencies = deps.getProductionDependencies(extensionsRoot);
|
||||||
|
|
||||||
export function packageBuiltInExtensions() {
|
export function packageBuiltInExtensions() {
|
||||||
const sqlBuiltInLocalExtensionDescriptions = glob.sync('extensions/*/package.json')
|
const sqlBuiltInLocalExtensionDescriptions = glob.sync('extensions/*/package.json')
|
||||||
@@ -347,3 +97,301 @@ export function packageExtensionTask(extensionName: string, platform: string, ar
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
// {{SQL CARBON EDIT}} - End
|
// {{SQL CARBON EDIT}} - End
|
||||||
|
|
||||||
|
function fromLocal(extensionPath: string, sourceMappingURLBase?: string): Stream {
|
||||||
|
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
|
||||||
|
if (fs.existsSync(webpackFilename)) {
|
||||||
|
return fromLocalWebpack(extensionPath, sourceMappingURLBase);
|
||||||
|
} else {
|
||||||
|
return fromLocalNormal(extensionPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fromLocalWebpack(extensionPath: string, sourceMappingURLBase: string | undefined): Stream {
|
||||||
|
const result = es.through();
|
||||||
|
|
||||||
|
const packagedDependencies: string[] = [];
|
||||||
|
const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
|
||||||
|
if (packageJsonConfig.dependencies) {
|
||||||
|
const webpackRootConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
|
||||||
|
for (const key in webpackRootConfig.externals) {
|
||||||
|
if (key in packageJsonConfig.dependencies) {
|
||||||
|
packagedDependencies.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
|
||||||
|
const files = fileNames
|
||||||
|
.map(fileName => path.join(extensionPath, fileName))
|
||||||
|
.map(filePath => new File({
|
||||||
|
path: filePath,
|
||||||
|
stat: fs.statSync(filePath),
|
||||||
|
base: extensionPath,
|
||||||
|
contents: fs.createReadStream(filePath) as any
|
||||||
|
}));
|
||||||
|
|
||||||
|
const filesStream = es.readArray(files);
|
||||||
|
|
||||||
|
// check for a webpack configuration files, then invoke webpack
|
||||||
|
// and merge its output with the files stream. also rewrite the package.json
|
||||||
|
// file to a new entry point
|
||||||
|
const webpackConfigLocations = (<string[]>glob.sync(
|
||||||
|
path.join(extensionPath, '/**/extension.webpack.config.js'),
|
||||||
|
{ ignore: ['**/node_modules'] }
|
||||||
|
));
|
||||||
|
|
||||||
|
const packageJsonFilter = filter(f => {
|
||||||
|
if (path.basename(f.path) === 'package.json') {
|
||||||
|
// only modify package.json's next to the webpack file.
|
||||||
|
// to be safe, use existsSync instead of path comparison.
|
||||||
|
return fs.existsSync(path.join(path.dirname(f.path), 'extension.webpack.config.js'));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}, { restore: true });
|
||||||
|
|
||||||
|
const patchFilesStream = filesStream
|
||||||
|
.pipe(packageJsonFilter)
|
||||||
|
.pipe(buffer())
|
||||||
|
.pipe(json((data: any) => {
|
||||||
|
if (data.main) {
|
||||||
|
// hardcoded entry point directory!
|
||||||
|
data.main = data.main.replace('/out/', /dist/);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}))
|
||||||
|
.pipe(packageJsonFilter.restore);
|
||||||
|
|
||||||
|
|
||||||
|
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => () => {
|
||||||
|
|
||||||
|
const webpackDone = (err: any, stats: any) => {
|
||||||
|
fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
|
||||||
|
if (err) {
|
||||||
|
result.emit('error', err);
|
||||||
|
}
|
||||||
|
const { compilation } = stats;
|
||||||
|
if (compilation.errors.length > 0) {
|
||||||
|
result.emit('error', compilation.errors.join('\n'));
|
||||||
|
}
|
||||||
|
if (compilation.warnings.length > 0) {
|
||||||
|
result.emit('error', compilation.warnings.join('\n'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const webpackConfig = {
|
||||||
|
...require(webpackConfigPath),
|
||||||
|
...{ mode: 'production' }
|
||||||
|
};
|
||||||
|
const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
|
||||||
|
|
||||||
|
return webpackGulp(webpackConfig, webpack, webpackDone)
|
||||||
|
.pipe(es.through(function (data) {
|
||||||
|
data.stat = data.stat || {};
|
||||||
|
data.base = extensionPath;
|
||||||
|
this.emit('data', data);
|
||||||
|
}))
|
||||||
|
.pipe(es.through(function (data: File) {
|
||||||
|
// source map handling:
|
||||||
|
// * rewrite sourceMappingURL
|
||||||
|
// * save to disk so that upload-task picks this up
|
||||||
|
if (sourceMappingURLBase) {
|
||||||
|
const contents = (<Buffer>data.contents).toString('utf8');
|
||||||
|
data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
|
||||||
|
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
||||||
|
}), 'utf8');
|
||||||
|
|
||||||
|
if (/\.js\.map$/.test(data.path)) {
|
||||||
|
if (!fs.existsSync(path.dirname(data.path))) {
|
||||||
|
fs.mkdirSync(path.dirname(data.path));
|
||||||
|
}
|
||||||
|
fs.writeFileSync(data.path, data.contents);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.emit('data', data);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
es.merge(sequence(webpackStreams), patchFilesStream)
|
||||||
|
// .pipe(es.through(function (data) {
|
||||||
|
// // debug
|
||||||
|
// console.log('out', data.path, data.contents.length);
|
||||||
|
// this.emit('data', data);
|
||||||
|
// }))
|
||||||
|
.pipe(result);
|
||||||
|
|
||||||
|
}).catch(err => {
|
||||||
|
console.error(extensionPath);
|
||||||
|
console.error(packagedDependencies);
|
||||||
|
result.emit('error', err);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result.pipe(createStatsStream(path.basename(extensionPath)));
|
||||||
|
}
|
||||||
|
|
||||||
|
function fromLocalNormal(extensionPath: string): Stream {
|
||||||
|
const result = es.through();
|
||||||
|
|
||||||
|
vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
|
||||||
|
.then(fileNames => {
|
||||||
|
const files = fileNames
|
||||||
|
.map(fileName => path.join(extensionPath, fileName))
|
||||||
|
.map(filePath => new File({
|
||||||
|
path: filePath,
|
||||||
|
stat: fs.statSync(filePath),
|
||||||
|
base: extensionPath,
|
||||||
|
contents: fs.createReadStream(filePath) as any
|
||||||
|
}));
|
||||||
|
|
||||||
|
es.readArray(files).pipe(result);
|
||||||
|
})
|
||||||
|
.catch(err => result.emit('error', err));
|
||||||
|
|
||||||
|
return result.pipe(createStatsStream(path.basename(extensionPath)));
|
||||||
|
}
|
||||||
|
|
||||||
|
const baseHeaders = {
|
||||||
|
'X-Market-Client-Id': 'VSCode Build',
|
||||||
|
'User-Agent': 'VSCode Build',
|
||||||
|
'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
|
||||||
|
};
|
||||||
|
|
||||||
|
export function fromMarketplace(extensionName: string, version: string, metadata: any): Stream {
|
||||||
|
const [publisher, name] = extensionName.split('.');
|
||||||
|
const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
|
||||||
|
|
||||||
|
fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
base: url,
|
||||||
|
requestOptions: {
|
||||||
|
gzip: true,
|
||||||
|
headers: baseHeaders
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const packageJsonFilter = filter('package.json', { restore: true });
|
||||||
|
|
||||||
|
return remote('', options)
|
||||||
|
.pipe(vzip.src())
|
||||||
|
.pipe(filter('extension/**'))
|
||||||
|
.pipe(rename(p => p.dirname = p.dirname!.replace(/^extension\/?/, '')))
|
||||||
|
.pipe(packageJsonFilter)
|
||||||
|
.pipe(buffer())
|
||||||
|
.pipe(json({ __metadata: metadata }))
|
||||||
|
.pipe(packageJsonFilter.restore);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IPackageExtensionsOptions {
|
||||||
|
/**
|
||||||
|
* Set to undefined to package all of them.
|
||||||
|
*/
|
||||||
|
desiredExtensions?: string[];
|
||||||
|
sourceMappingURLBase?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const excludedExtensions = [
|
||||||
|
'vscode-api-tests',
|
||||||
|
'vscode-colorize-tests',
|
||||||
|
'vscode-test-resolver',
|
||||||
|
'ms-vscode.node-debug',
|
||||||
|
'ms-vscode.node-debug2',
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
'integration-tests'
|
||||||
|
];
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
const sqlBuiltInExtensions = [
|
||||||
|
// Add SQL built-in extensions here.
|
||||||
|
// the extension will be excluded from SQLOps package and will have separate vsix packages
|
||||||
|
'admin-tool-ext-win',
|
||||||
|
'agent',
|
||||||
|
'import',
|
||||||
|
'profiler',
|
||||||
|
'admin-pack',
|
||||||
|
'big-data-cluster',
|
||||||
|
'dacpac',
|
||||||
|
'schema-compare',
|
||||||
|
'resource-deployment',
|
||||||
|
'cms'
|
||||||
|
];
|
||||||
|
// {{SQL CARBON EDIT}} - End
|
||||||
|
|
||||||
|
interface IBuiltInExtension {
|
||||||
|
name: string;
|
||||||
|
version: string;
|
||||||
|
repo: string;
|
||||||
|
metadata: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
const builtInExtensions: IBuiltInExtension[] = require('../builtInExtensions.json');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We're doing way too much stuff at once, with webpack et al. So much stuff
|
||||||
|
* that while downloading extensions from the marketplace, node js doesn't get enough
|
||||||
|
* stack frames to complete the download in under 2 minutes, at which point the
|
||||||
|
* marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
|
||||||
|
*/
|
||||||
|
function sequence(streamProviders: { (): Stream }[]): Stream {
|
||||||
|
const result = es.through();
|
||||||
|
|
||||||
|
function pop() {
|
||||||
|
if (streamProviders.length === 0) {
|
||||||
|
result.emit('end');
|
||||||
|
} else {
|
||||||
|
const fn = streamProviders.shift()!;
|
||||||
|
fn()
|
||||||
|
.on('end', function () { setTimeout(pop, 0); })
|
||||||
|
.pipe(result, { end: false });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pop();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function packageExtensionsStream(optsIn?: IPackageExtensionsOptions): NodeJS.ReadWriteStream {
|
||||||
|
const opts = optsIn || {};
|
||||||
|
|
||||||
|
const localExtensionDescriptions = (<string[]>glob.sync('extensions/*/package.json'))
|
||||||
|
.map(manifestPath => {
|
||||||
|
const extensionPath = path.dirname(path.join(root, manifestPath));
|
||||||
|
const extensionName = path.basename(extensionPath);
|
||||||
|
return { name: extensionName, path: extensionPath };
|
||||||
|
})
|
||||||
|
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
||||||
|
.filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
|
||||||
|
.filter(({ name }) => builtInExtensions.every(b => b.name !== name))
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
.filter(({ name }) => sqlBuiltInExtensions.indexOf(name) === -1);
|
||||||
|
|
||||||
|
const localExtensions = () => sequence([...localExtensionDescriptions.map(extension => () => {
|
||||||
|
return fromLocal(extension.path, opts.sourceMappingURLBase)
|
||||||
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
|
})]);
|
||||||
|
|
||||||
|
// {{SQL CARBON EDIT}}
|
||||||
|
const extensionDepsSrc = [
|
||||||
|
..._.flatten(extensionsProductionDependencies.map((d: any) => path.relative(root, d.path)).map((d: any) => [`${d}/**`, `!${d}/**/{test,tests}/**`])),
|
||||||
|
];
|
||||||
|
|
||||||
|
const localExtensionDependencies = () => gulp.src(extensionDepsSrc, { base: '.', dot: true })
|
||||||
|
.pipe(filter(['**', '!**/package-lock.json']));
|
||||||
|
|
||||||
|
// Original code commented out here
|
||||||
|
// const localExtensionDependencies = () => gulp.src('extensions/node_modules/**', { base: '.' });
|
||||||
|
|
||||||
|
// const marketplaceExtensions = () => es.merge(
|
||||||
|
// ...builtInExtensions
|
||||||
|
// .filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
|
||||||
|
// .map(extension => {
|
||||||
|
// return fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
|
// .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
|
||||||
|
return sequence([localExtensions, localExtensionDependencies, /*marketplaceExtensions*/])
|
||||||
|
.pipe(util2.setExecutableBit(['**/*.sh']))
|
||||||
|
.pipe(filter(['**', '!**/*.js.map']));
|
||||||
|
// {{SQL CARBON EDIT}} - End
|
||||||
|
}
|
||||||
|
|||||||
@@ -38,6 +38,10 @@
|
|||||||
"name": "vs/workbench/contrib/codeEditor",
|
"name": "vs/workbench/contrib/codeEditor",
|
||||||
"project": "vscode-workbench"
|
"project": "vscode-workbench"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "vs/workbench/contrib/codeinset",
|
||||||
|
"project": "vscode-workbench"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vs/workbench/contrib/callHierarchy",
|
"name": "vs/workbench/contrib/callHierarchy",
|
||||||
"project": "vscode-workbench"
|
"project": "vscode-workbench"
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ function log(message: any, ...rest: any[]): void {
|
|||||||
|
|
||||||
export interface Language {
|
export interface Language {
|
||||||
id: string; // language id, e.g. zh-tw, de
|
id: string; // language id, e.g. zh-tw, de
|
||||||
translationId?: string; // language id used in translation tools, e.g. zh-hant, de (optional, if not set, the id is used)
|
translationId?: string; // language id used in translation tools, e.g zh-hant, de (optional, if not set, the id is used)
|
||||||
folderName?: string; // language specific folder name, e.g. cht, deu (optional, if not set, the id is used)
|
folderName?: string; // language specific folder name, e.g. cht, deu (optional, if not set, the id is used)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
"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 path = require("path");
|
|
||||||
const fs = require("fs");
|
|
||||||
const root = path.dirname(path.dirname(__dirname));
|
|
||||||
const yarnrcPath = path.join(root, 'remote', '.yarnrc');
|
|
||||||
const yarnrc = fs.readFileSync(yarnrcPath, 'utf8');
|
|
||||||
const version = /^target\s+"([^"]+)"$/m.exec(yarnrc)[1];
|
|
||||||
const node = process.platform === 'win32' ? 'node.exe' : 'node';
|
|
||||||
const nodePath = path.join(root, '.build', 'node', `v${version}`, `${process.platform}-${process.arch}`, node);
|
|
||||||
console.log(nodePath);
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
import * as path from 'path';
|
|
||||||
import * as fs from 'fs';
|
|
||||||
|
|
||||||
const root = path.dirname(path.dirname(__dirname));
|
|
||||||
const yarnrcPath = path.join(root, 'remote', '.yarnrc');
|
|
||||||
const yarnrc = fs.readFileSync(yarnrcPath, 'utf8');
|
|
||||||
const version = /^target\s+"([^"]+)"$/m.exec(yarnrc)![1];
|
|
||||||
const node = process.platform === 'win32' ? 'node.exe' : 'node';
|
|
||||||
const nodePath = path.join(root, '.build', 'node', `v${version}`, `${process.platform}-${process.arch}`, node);
|
|
||||||
|
|
||||||
console.log(nodePath);
|
|
||||||
@@ -60,7 +60,7 @@ function loader(src, bundledFileHeader, bundleLoader) {
|
|||||||
isFirst = false;
|
isFirst = false;
|
||||||
this.emit('data', new VinylFile({
|
this.emit('data', new VinylFile({
|
||||||
path: 'fake',
|
path: 'fake',
|
||||||
base: '',
|
base: undefined,
|
||||||
contents: Buffer.from(bundledFileHeader)
|
contents: Buffer.from(bundledFileHeader)
|
||||||
}));
|
}));
|
||||||
this.emit('data', data);
|
this.emit('data', data);
|
||||||
@@ -96,7 +96,7 @@ function toConcatStream(src, bundledFileHeader, sources, dest) {
|
|||||||
}
|
}
|
||||||
const treatedSources = sources.map(function (source) {
|
const treatedSources = sources.map(function (source) {
|
||||||
const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
|
const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
|
||||||
const base = source.path ? root + `/${src}` : '';
|
const base = source.path ? root + `/${src}` : undefined;
|
||||||
return new VinylFile({
|
return new VinylFile({
|
||||||
path: source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake',
|
path: source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake',
|
||||||
base: base,
|
base: base,
|
||||||
@@ -113,17 +113,12 @@ function toBundleStream(src, bundledFileHeader, bundles) {
|
|||||||
return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest);
|
return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
const DEFAULT_FILE_HEADER = [
|
|
||||||
'/*!--------------------------------------------------------',
|
|
||||||
' * Copyright (C) Microsoft Corporation. All rights reserved.',
|
|
||||||
' *--------------------------------------------------------*/'
|
|
||||||
].join('\n');
|
|
||||||
function optimizeTask(opts) {
|
function optimizeTask(opts) {
|
||||||
const src = opts.src;
|
const src = opts.src;
|
||||||
const entryPoints = opts.entryPoints;
|
const entryPoints = opts.entryPoints;
|
||||||
const resources = opts.resources;
|
const resources = opts.resources;
|
||||||
const loaderConfig = opts.loaderConfig;
|
const loaderConfig = opts.loaderConfig;
|
||||||
const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
|
const bundledFileHeader = opts.header;
|
||||||
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
|
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
|
||||||
const out = opts.out;
|
const out = opts.out;
|
||||||
return function () {
|
return function () {
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ function loader(src: string, bundledFileHeader: string, bundleLoader: boolean):
|
|||||||
isFirst = false;
|
isFirst = false;
|
||||||
this.emit('data', new VinylFile({
|
this.emit('data', new VinylFile({
|
||||||
path: 'fake',
|
path: 'fake',
|
||||||
base: '',
|
base: undefined,
|
||||||
contents: Buffer.from(bundledFileHeader)
|
contents: Buffer.from(bundledFileHeader)
|
||||||
}));
|
}));
|
||||||
this.emit('data', data);
|
this.emit('data', data);
|
||||||
@@ -114,7 +114,7 @@ function toConcatStream(src: string, bundledFileHeader: string, sources: bundle.
|
|||||||
|
|
||||||
const treatedSources = sources.map(function (source) {
|
const treatedSources = sources.map(function (source) {
|
||||||
const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
|
const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
|
||||||
const base = source.path ? root + `/${src}` : '';
|
const base = source.path ? root + `/${src}` : undefined;
|
||||||
|
|
||||||
return new VinylFile({
|
return new VinylFile({
|
||||||
path: source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake',
|
path: source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake',
|
||||||
@@ -156,7 +156,7 @@ export interface IOptimizeTaskOpts {
|
|||||||
/**
|
/**
|
||||||
* (basically the Copyright treatment)
|
* (basically the Copyright treatment)
|
||||||
*/
|
*/
|
||||||
header?: string;
|
header: string;
|
||||||
/**
|
/**
|
||||||
* (emit bundleInfo.json file)
|
* (emit bundleInfo.json file)
|
||||||
*/
|
*/
|
||||||
@@ -171,18 +171,12 @@ export interface IOptimizeTaskOpts {
|
|||||||
languages?: Language[];
|
languages?: Language[];
|
||||||
}
|
}
|
||||||
|
|
||||||
const DEFAULT_FILE_HEADER = [
|
|
||||||
'/*!--------------------------------------------------------',
|
|
||||||
' * Copyright (C) Microsoft Corporation. All rights reserved.',
|
|
||||||
' *--------------------------------------------------------*/'
|
|
||||||
].join('\n');
|
|
||||||
|
|
||||||
export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStream {
|
export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStream {
|
||||||
const src = opts.src;
|
const src = opts.src;
|
||||||
const entryPoints = opts.entryPoints;
|
const entryPoints = opts.entryPoints;
|
||||||
const resources = opts.resources;
|
const resources = opts.resources;
|
||||||
const loaderConfig = opts.loaderConfig;
|
const loaderConfig = opts.loaderConfig;
|
||||||
const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
|
const bundledFileHeader = opts.header;
|
||||||
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
|
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
|
||||||
const out = opts.out;
|
const out = opts.out;
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ function extractEditor(options) {
|
|||||||
let compilerOptions;
|
let compilerOptions;
|
||||||
if (tsConfig.extends) {
|
if (tsConfig.extends) {
|
||||||
compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
|
compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
|
||||||
delete tsConfig.extends;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
compilerOptions = tsConfig.compilerOptions;
|
compilerOptions = tsConfig.compilerOptions;
|
||||||
@@ -41,9 +40,9 @@ function extractEditor(options) {
|
|||||||
compilerOptions.noUnusedLocals = false;
|
compilerOptions.noUnusedLocals = false;
|
||||||
compilerOptions.preserveConstEnums = false;
|
compilerOptions.preserveConstEnums = false;
|
||||||
compilerOptions.declaration = false;
|
compilerOptions.declaration = false;
|
||||||
|
compilerOptions.noImplicitAny = false;
|
||||||
compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
|
compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
|
||||||
options.compilerOptions = compilerOptions;
|
options.compilerOptions = compilerOptions;
|
||||||
console.log(`Running with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
|
|
||||||
let result = tss.shake(options);
|
let result = tss.shake(options);
|
||||||
for (let fileName in result) {
|
for (let fileName in result) {
|
||||||
if (result.hasOwnProperty(fileName)) {
|
if (result.hasOwnProperty(fileName)) {
|
||||||
@@ -92,6 +91,8 @@ function extractEditor(options) {
|
|||||||
}
|
}
|
||||||
delete tsConfig.compilerOptions.moduleResolution;
|
delete tsConfig.compilerOptions.moduleResolution;
|
||||||
writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
|
writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
|
||||||
|
const tsConfigBase = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.base.json')).toString());
|
||||||
|
writeOutputFile('tsconfig.base.json', JSON.stringify(tsConfigBase, null, '\t'));
|
||||||
[
|
[
|
||||||
'vs/css.build.js',
|
'vs/css.build.js',
|
||||||
'vs/css.d.ts',
|
'vs/css.d.ts',
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
|
|||||||
let compilerOptions: { [key: string]: any };
|
let compilerOptions: { [key: string]: any };
|
||||||
if (tsConfig.extends) {
|
if (tsConfig.extends) {
|
||||||
compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
|
compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
|
||||||
delete tsConfig.extends;
|
|
||||||
} else {
|
} else {
|
||||||
compilerOptions = tsConfig.compilerOptions;
|
compilerOptions = tsConfig.compilerOptions;
|
||||||
}
|
}
|
||||||
@@ -45,13 +44,12 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
|
|||||||
compilerOptions.noUnusedLocals = false;
|
compilerOptions.noUnusedLocals = false;
|
||||||
compilerOptions.preserveConstEnums = false;
|
compilerOptions.preserveConstEnums = false;
|
||||||
compilerOptions.declaration = false;
|
compilerOptions.declaration = false;
|
||||||
|
compilerOptions.noImplicitAny = false;
|
||||||
compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
|
compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
|
||||||
|
|
||||||
|
|
||||||
options.compilerOptions = compilerOptions;
|
options.compilerOptions = compilerOptions;
|
||||||
|
|
||||||
console.log(`Running with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
|
|
||||||
|
|
||||||
let result = tss.shake(options);
|
let result = tss.shake(options);
|
||||||
for (let fileName in result) {
|
for (let fileName in result) {
|
||||||
if (result.hasOwnProperty(fileName)) {
|
if (result.hasOwnProperty(fileName)) {
|
||||||
@@ -102,6 +100,8 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
|
|||||||
|
|
||||||
delete tsConfig.compilerOptions.moduleResolution;
|
delete tsConfig.compilerOptions.moduleResolution;
|
||||||
writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
|
writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
|
||||||
|
const tsConfigBase = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.base.json')).toString());
|
||||||
|
writeOutputFile('tsconfig.base.json', JSON.stringify(tsConfigBase, null, '\t'));
|
||||||
|
|
||||||
[
|
[
|
||||||
'vs/css.build.js',
|
'vs/css.build.js',
|
||||||
|
|||||||
@@ -27,14 +27,14 @@ suite('XLF Parser Tests', () => {
|
|||||||
});
|
});
|
||||||
test('JSON file source path to Transifex resource match', () => {
|
test('JSON file source path to Transifex resource match', () => {
|
||||||
const editorProject = 'vscode-editor', workbenchProject = 'vscode-workbench';
|
const editorProject = 'vscode-editor', workbenchProject = 'vscode-workbench';
|
||||||
const platform = { name: 'vs/platform', project: editorProject }, editorContrib = { name: 'vs/editor/contrib', project: editorProject }, editor = { name: 'vs/editor', project: editorProject }, base = { name: 'vs/base', project: editorProject }, code = { name: 'vs/code', project: workbenchProject }, workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject }, workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject }, workbench = { name: 'vs/workbench', project: workbenchProject };
|
const platform = { name: 'vs/platform', project: editorProject }, editorContrib = { name: 'vs/editor/contrib', project: editorProject }, editor = { name: 'vs/editor', project: editorProject }, base = { name: 'vs/base', project: editorProject }, code = { name: 'vs/code', project: workbenchProject }, workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject }, workbenchServices = { name: 'vs/workbench/services/files', project: workbenchProject }, workbench = { name: 'vs/workbench', project: workbenchProject };
|
||||||
assert.deepEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
|
assert.deepEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
|
||||||
assert.deepEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
|
assert.deepEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
|
||||||
assert.deepEqual(i18n.getResource('vs/editor/common/modes/modesRegistry'), editor);
|
assert.deepEqual(i18n.getResource('vs/editor/common/modes/modesRegistry'), editor);
|
||||||
assert.deepEqual(i18n.getResource('vs/base/common/errorMessage'), base);
|
assert.deepEqual(i18n.getResource('vs/base/common/errorMessage'), base);
|
||||||
assert.deepEqual(i18n.getResource('vs/code/electron-main/window'), code);
|
assert.deepEqual(i18n.getResource('vs/code/electron-main/window'), code);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
|
assert.deepEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
|
assert.deepEqual(i18n.getResource('vs/workbench/services/files/node/fileService'), workbenchServices);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ suite('XLF Parser Tests', () => {
|
|||||||
base = { name: 'vs/base', project: editorProject },
|
base = { name: 'vs/base', project: editorProject },
|
||||||
code = { name: 'vs/code', project: workbenchProject },
|
code = { name: 'vs/code', project: workbenchProject },
|
||||||
workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject },
|
workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject },
|
||||||
workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject },
|
workbenchServices = { name: 'vs/workbench/services/files', project: workbenchProject },
|
||||||
workbench = { name: 'vs/workbench', project: workbenchProject};
|
workbench = { name: 'vs/workbench', project: workbenchProject};
|
||||||
|
|
||||||
assert.deepEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
|
assert.deepEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
|
||||||
@@ -48,7 +48,7 @@ suite('XLF Parser Tests', () => {
|
|||||||
assert.deepEqual(i18n.getResource('vs/base/common/errorMessage'), base);
|
assert.deepEqual(i18n.getResource('vs/base/common/errorMessage'), base);
|
||||||
assert.deepEqual(i18n.getResource('vs/code/electron-main/window'), code);
|
assert.deepEqual(i18n.getResource('vs/code/electron-main/window'), code);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
|
assert.deepEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
|
assert.deepEqual(i18n.getResource('vs/workbench/services/files/node/fileService'), workbenchServices);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -14,17 +14,6 @@ var ShakeLevel;
|
|||||||
ShakeLevel[ShakeLevel["InnerFile"] = 1] = "InnerFile";
|
ShakeLevel[ShakeLevel["InnerFile"] = 1] = "InnerFile";
|
||||||
ShakeLevel[ShakeLevel["ClassMembers"] = 2] = "ClassMembers";
|
ShakeLevel[ShakeLevel["ClassMembers"] = 2] = "ClassMembers";
|
||||||
})(ShakeLevel = exports.ShakeLevel || (exports.ShakeLevel = {}));
|
})(ShakeLevel = exports.ShakeLevel || (exports.ShakeLevel = {}));
|
||||||
function toStringShakeLevel(shakeLevel) {
|
|
||||||
switch (shakeLevel) {
|
|
||||||
case 0 /* Files */:
|
|
||||||
return 'Files (0)';
|
|
||||||
case 1 /* InnerFile */:
|
|
||||||
return 'InnerFile (1)';
|
|
||||||
case 2 /* ClassMembers */:
|
|
||||||
return 'ClassMembers (2)';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.toStringShakeLevel = toStringShakeLevel;
|
|
||||||
function printDiagnostics(diagnostics) {
|
function printDiagnostics(diagnostics) {
|
||||||
for (const diag of diagnostics) {
|
for (const diag of diagnostics) {
|
||||||
let result = '';
|
let result = '';
|
||||||
@@ -405,7 +394,6 @@ function markNodes(languageService, options) {
|
|||||||
|| memberName === 'toJSON'
|
|| memberName === 'toJSON'
|
||||||
|| memberName === 'toString'
|
|| memberName === 'toString'
|
||||||
|| memberName === 'dispose' // TODO: keeping all `dispose` methods
|
|| memberName === 'dispose' // TODO: keeping all `dispose` methods
|
||||||
|| /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
|
|
||||||
) {
|
) {
|
||||||
enqueue_black(member);
|
enqueue_black(member);
|
||||||
}
|
}
|
||||||
@@ -525,6 +513,10 @@ function generateResult(languageService, shakeLevel) {
|
|||||||
// keep method
|
// keep method
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (/^_(.*)Brand$/.test(member.name.getText())) {
|
||||||
|
// TODO: keep all members ending with `Brand`...
|
||||||
|
continue;
|
||||||
|
}
|
||||||
let pos = member.pos - node.pos;
|
let pos = member.pos - node.pos;
|
||||||
let end = member.end - node.pos;
|
let end = member.end - node.pos;
|
||||||
toWrite = toWrite.substring(0, pos) + toWrite.substring(end);
|
toWrite = toWrite.substring(0, pos) + toWrite.substring(end);
|
||||||
|
|||||||
@@ -17,17 +17,6 @@ export const enum ShakeLevel {
|
|||||||
ClassMembers = 2
|
ClassMembers = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toStringShakeLevel(shakeLevel: ShakeLevel): string {
|
|
||||||
switch(shakeLevel) {
|
|
||||||
case ShakeLevel.Files:
|
|
||||||
return 'Files (0)';
|
|
||||||
case ShakeLevel.InnerFile:
|
|
||||||
return 'InnerFile (1)';
|
|
||||||
case ShakeLevel.ClassMembers:
|
|
||||||
return 'ClassMembers (2)';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ITreeShakingOptions {
|
export interface ITreeShakingOptions {
|
||||||
/**
|
/**
|
||||||
* The full path to the root where sources are.
|
* The full path to the root where sources are.
|
||||||
@@ -524,7 +513,6 @@ function markNodes(languageService: ts.LanguageService, options: ITreeShakingOpt
|
|||||||
|| memberName === 'toJSON'
|
|| memberName === 'toJSON'
|
||||||
|| memberName === 'toString'
|
|| memberName === 'toString'
|
||||||
|| memberName === 'dispose'// TODO: keeping all `dispose` methods
|
|| memberName === 'dispose'// TODO: keeping all `dispose` methods
|
||||||
|| /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
|
|
||||||
) {
|
) {
|
||||||
enqueue_black(member);
|
enqueue_black(member);
|
||||||
}
|
}
|
||||||
@@ -654,6 +642,10 @@ function generateResult(languageService: ts.LanguageService, shakeLevel: ShakeLe
|
|||||||
// keep method
|
// keep method
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (/^_(.*)Brand$/.test(member.name.getText())) {
|
||||||
|
// TODO: keep all members ending with `Brand`...
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let pos = member.pos - node.pos;
|
let pos = member.pos - node.pos;
|
||||||
let end = member.end - node.pos;
|
let end = member.end - node.pos;
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
"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 ts = require("typescript");
|
|
||||||
const Lint = require("tslint");
|
|
||||||
/**
|
|
||||||
* Implementation of the double-quoted-string-arg rule which verifies that the specified index of calls matching
|
|
||||||
* the specified signatures is quoted with double-quotes only.
|
|
||||||
*/
|
|
||||||
class Rule extends Lint.Rules.AbstractRule {
|
|
||||||
apply(sourceFile) {
|
|
||||||
return this.applyWithWalker(new DoubleQuotedStringArgRuleWalker(sourceFile, this.getOptions()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.Rule = Rule;
|
|
||||||
class DoubleQuotedStringArgRuleWalker extends Lint.RuleWalker {
|
|
||||||
constructor(file, opts) {
|
|
||||||
super(file, opts);
|
|
||||||
this.signatures = Object.create(null);
|
|
||||||
this.argIndex = undefined;
|
|
||||||
const options = this.getOptions();
|
|
||||||
const first = options && options.length > 0 ? options[0] : null;
|
|
||||||
if (first) {
|
|
||||||
if (Array.isArray(first.signatures)) {
|
|
||||||
first.signatures.forEach((signature) => this.signatures[signature] = true);
|
|
||||||
}
|
|
||||||
if (typeof first.argIndex !== 'undefined') {
|
|
||||||
this.argIndex = first.argIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
visitCallExpression(node) {
|
|
||||||
this.checkCallExpression(node);
|
|
||||||
super.visitCallExpression(node);
|
|
||||||
}
|
|
||||||
checkCallExpression(node) {
|
|
||||||
// Not one of the functions we're looking for, continue on
|
|
||||||
const functionName = node.expression.getText();
|
|
||||||
if (functionName && !this.signatures[functionName]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const arg = node.arguments[this.argIndex];
|
|
||||||
// Ignore if the arg isn't a string - we expect the compiler to warn if that's an issue
|
|
||||||
if (arg && ts.isStringLiteral(arg)) {
|
|
||||||
const argText = arg.getText();
|
|
||||||
const doubleQuotedArg = argText.length >= 2 && argText[0] === DoubleQuotedStringArgRuleWalker.DOUBLE_QUOTE && argText[argText.length - 1] === DoubleQuotedStringArgRuleWalker.DOUBLE_QUOTE;
|
|
||||||
if (!doubleQuotedArg) {
|
|
||||||
const fix = [
|
|
||||||
Lint.Replacement.replaceFromTo(arg.getStart(), arg.getWidth(), `"${arg.getText().slice(1, arg.getWidth() - 2)}"`),
|
|
||||||
];
|
|
||||||
this.addFailure(this.createFailure(arg.getStart(), arg.getWidth(), `Argument ${this.argIndex + 1} to '${functionName}' must be double quoted.`, fix));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DoubleQuotedStringArgRuleWalker.DOUBLE_QUOTE = '"';
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
import * as ts from 'typescript';
|
|
||||||
import * as Lint from 'tslint';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of the double-quoted-string-arg rule which verifies that the specified index of calls matching
|
|
||||||
* the specified signatures is quoted with double-quotes only.
|
|
||||||
*/
|
|
||||||
export class Rule extends Lint.Rules.AbstractRule {
|
|
||||||
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
|
|
||||||
return this.applyWithWalker(new DoubleQuotedStringArgRuleWalker(sourceFile, this.getOptions()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Map<V> {
|
|
||||||
[key: string]: V;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface DoubleQuotedStringArgOptions {
|
|
||||||
signatures?: string[];
|
|
||||||
argIndex?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
class DoubleQuotedStringArgRuleWalker extends Lint.RuleWalker {
|
|
||||||
|
|
||||||
private static DOUBLE_QUOTE: string = '"';
|
|
||||||
|
|
||||||
private signatures: Map<boolean>;
|
|
||||||
private argIndex: number | undefined;
|
|
||||||
|
|
||||||
constructor(file: ts.SourceFile, opts: Lint.IOptions) {
|
|
||||||
super(file, opts);
|
|
||||||
this.signatures = Object.create(null);
|
|
||||||
this.argIndex = undefined;
|
|
||||||
const options: any[] = this.getOptions();
|
|
||||||
const first: DoubleQuotedStringArgOptions = options && options.length > 0 ? options[0] : null;
|
|
||||||
if (first) {
|
|
||||||
if (Array.isArray(first.signatures)) {
|
|
||||||
first.signatures.forEach((signature: string) => this.signatures[signature] = true);
|
|
||||||
}
|
|
||||||
if (typeof first.argIndex !== 'undefined') {
|
|
||||||
this.argIndex = first.argIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected visitCallExpression(node: ts.CallExpression): void {
|
|
||||||
this.checkCallExpression(node);
|
|
||||||
super.visitCallExpression(node);
|
|
||||||
}
|
|
||||||
|
|
||||||
private checkCallExpression(node: ts.CallExpression): void {
|
|
||||||
// Not one of the functions we're looking for, continue on
|
|
||||||
const functionName = node.expression.getText();
|
|
||||||
if (functionName && !this.signatures[functionName]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const arg = node.arguments[this.argIndex!];
|
|
||||||
|
|
||||||
// Ignore if the arg isn't a string - we expect the compiler to warn if that's an issue
|
|
||||||
if(arg && ts.isStringLiteral(arg)) {
|
|
||||||
const argText = arg.getText();
|
|
||||||
const doubleQuotedArg = argText.length >= 2 && argText[0] === DoubleQuotedStringArgRuleWalker.DOUBLE_QUOTE && argText[argText.length - 1] === DoubleQuotedStringArgRuleWalker.DOUBLE_QUOTE;
|
|
||||||
|
|
||||||
if (!doubleQuotedArg) {
|
|
||||||
const fix = [
|
|
||||||
Lint.Replacement.replaceFromTo(arg.getStart(), arg.getWidth(), `"${arg.getText().slice(1, arg.getWidth() - 2)}"`),
|
|
||||||
];
|
|
||||||
this.addFailure(this.createFailure(
|
|
||||||
arg.getStart(), arg.getWidth(),
|
|
||||||
`Argument ${this.argIndex! + 1} to '${functionName}' must be double quoted.`, fix));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
2
build/lib/typings/gulp-remote-src.d.ts
vendored
2
build/lib/typings/gulp-remote-src.d.ts
vendored
@@ -1,4 +1,4 @@
|
|||||||
declare module 'gulp-remote-retry-src' {
|
declare module 'gulp-remote-src' {
|
||||||
|
|
||||||
import stream = require("stream");
|
import stream = require("stream");
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ const fs = require("fs");
|
|||||||
const _rimraf = require("rimraf");
|
const _rimraf = require("rimraf");
|
||||||
const git = require("./git");
|
const git = require("./git");
|
||||||
const VinylFile = require("vinyl");
|
const VinylFile = require("vinyl");
|
||||||
|
const download_1 = require("../download/download");
|
||||||
|
const REPO_ROOT = path.join(__dirname, '../../');
|
||||||
const NoCancellationToken = { isCancellationRequested: () => false };
|
const NoCancellationToken = { isCancellationRequested: () => false };
|
||||||
function incremental(streamProvider, initial, supportsCancellation) {
|
function incremental(streamProvider, initial, supportsCancellation) {
|
||||||
const input = es.through();
|
const input = es.through();
|
||||||
@@ -66,9 +68,6 @@ function fixWin32DirectoryPermissions() {
|
|||||||
exports.fixWin32DirectoryPermissions = fixWin32DirectoryPermissions;
|
exports.fixWin32DirectoryPermissions = fixWin32DirectoryPermissions;
|
||||||
function setExecutableBit(pattern) {
|
function setExecutableBit(pattern) {
|
||||||
const setBit = es.mapSync(f => {
|
const setBit = es.mapSync(f => {
|
||||||
if (!f.stat) {
|
|
||||||
f.stat = { isFile() { return true; } };
|
|
||||||
}
|
|
||||||
f.stat.mode = /* 100755 */ 33261;
|
f.stat.mode = /* 100755 */ 33261;
|
||||||
return f;
|
return f;
|
||||||
});
|
});
|
||||||
@@ -178,7 +177,7 @@ function rimraf(dir) {
|
|||||||
return cb(err);
|
return cb(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
retry.taskName = `clean-${path.basename(dir).toLowerCase()}`;
|
retry.taskName = `clean-${path.basename(dir)}`;
|
||||||
return retry;
|
return retry;
|
||||||
}
|
}
|
||||||
exports.rimraf = rimraf;
|
exports.rimraf = rimraf;
|
||||||
@@ -219,3 +218,38 @@ function versionStringToNumber(versionStr) {
|
|||||||
return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
|
return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
|
||||||
}
|
}
|
||||||
exports.versionStringToNumber = versionStringToNumber;
|
exports.versionStringToNumber = versionStringToNumber;
|
||||||
|
function download(requestOptions) {
|
||||||
|
const result = es.through();
|
||||||
|
const filename = path.join(REPO_ROOT, `.build/tmp-${Date.now()}-${path.posix.basename(requestOptions.path)}`);
|
||||||
|
const opts = {
|
||||||
|
requestOptions: requestOptions,
|
||||||
|
destinationPath: filename
|
||||||
|
};
|
||||||
|
download_1.downloadInExternalProcess(opts).then(() => {
|
||||||
|
fs.stat(filename, (err, stat) => {
|
||||||
|
if (err) {
|
||||||
|
result.emit('error', err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fs.readFile(filename, (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
result.emit('error', err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fs.unlink(filename, () => {
|
||||||
|
result.emit('data', new VinylFile({
|
||||||
|
path: path.normalize(requestOptions.path),
|
||||||
|
stat: stat,
|
||||||
|
base: path.normalize(requestOptions.path),
|
||||||
|
contents: data
|
||||||
|
}));
|
||||||
|
result.emit('end');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, (err) => {
|
||||||
|
result.emit('error', err);
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
exports.download = download;
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ import * as git from './git';
|
|||||||
import * as VinylFile from 'vinyl';
|
import * as VinylFile from 'vinyl';
|
||||||
import { ThroughStream } from 'through';
|
import { ThroughStream } from 'through';
|
||||||
import * as sm from 'source-map';
|
import * as sm from 'source-map';
|
||||||
|
import { IDownloadOptions, downloadInExternalProcess, IDownloadRequestOptions } from '../download/download';
|
||||||
|
|
||||||
|
const REPO_ROOT = path.join(__dirname, '../../');
|
||||||
|
|
||||||
export interface ICancellationToken {
|
export interface ICancellationToken {
|
||||||
isCancellationRequested(): boolean;
|
isCancellationRequested(): boolean;
|
||||||
@@ -93,9 +96,6 @@ export function fixWin32DirectoryPermissions(): NodeJS.ReadWriteStream {
|
|||||||
|
|
||||||
export function setExecutableBit(pattern?: string | string[]): NodeJS.ReadWriteStream {
|
export function setExecutableBit(pattern?: string | string[]): NodeJS.ReadWriteStream {
|
||||||
const setBit = es.mapSync<VinylFile, VinylFile>(f => {
|
const setBit = es.mapSync<VinylFile, VinylFile>(f => {
|
||||||
if (!f.stat) {
|
|
||||||
f.stat = { isFile() { return true; } } as any;
|
|
||||||
}
|
|
||||||
f.stat.mode = /* 100755 */ 33261;
|
f.stat.mode = /* 100755 */ 33261;
|
||||||
return f;
|
return f;
|
||||||
});
|
});
|
||||||
@@ -234,7 +234,7 @@ export function rimraf(dir: string): (cb: any) => void {
|
|||||||
return cb(err);
|
return cb(err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
retry.taskName = `clean-${path.basename(dir).toLowerCase()}`;
|
retry.taskName = `clean-${path.basename(dir)}`;
|
||||||
return retry;
|
return retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,3 +281,38 @@ export function versionStringToNumber(versionStr: string) {
|
|||||||
|
|
||||||
return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
|
return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function download(requestOptions: IDownloadRequestOptions): NodeJS.ReadWriteStream {
|
||||||
|
const result = es.through();
|
||||||
|
const filename = path.join(REPO_ROOT, `.build/tmp-${Date.now()}-${path.posix.basename(requestOptions.path)}`);
|
||||||
|
const opts: IDownloadOptions = {
|
||||||
|
requestOptions: requestOptions,
|
||||||
|
destinationPath: filename
|
||||||
|
};
|
||||||
|
downloadInExternalProcess(opts).then(() => {
|
||||||
|
fs.stat(filename, (err, stat) => {
|
||||||
|
if (err) {
|
||||||
|
result.emit('error', err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fs.readFile(filename, (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
result.emit('error', err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fs.unlink(filename, () => {
|
||||||
|
result.emit('data', new VinylFile({
|
||||||
|
path: path.normalize(requestOptions.path),
|
||||||
|
stat: stat,
|
||||||
|
base: path.normalize(requestOptions.path),
|
||||||
|
contents: data
|
||||||
|
}));
|
||||||
|
result.emit('end');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, (err) => {
|
||||||
|
result.emit('error', err);
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
"description": "",
|
"description": "",
|
||||||
"author": "Microsoft ",
|
"author": "Microsoft ",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "MIT",
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"gulp-watch": "5.0.1"
|
"gulp-watch": "^4.3.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -306,8 +306,8 @@ function generateDeclarationFile(recipe, sourceFileGetter) {
|
|||||||
let usageImports = [];
|
let usageImports = [];
|
||||||
let usage = [];
|
let usage = [];
|
||||||
let failed = false;
|
let failed = false;
|
||||||
usage.push(`var a: any;`);
|
usage.push(`var a;`);
|
||||||
usage.push(`var b: any;`);
|
usage.push(`var b;`);
|
||||||
const generateUsageImport = (moduleId) => {
|
const generateUsageImport = (moduleId) => {
|
||||||
let importName = 'm' + (++usageCounter);
|
let importName = 'm' + (++usageCounter);
|
||||||
usageImports.push(`import * as ${importName} from './${moduleId.replace(/\.d\.ts$/, '')}';`);
|
usageImports.push(`import * as ${importName} from './${moduleId.replace(/\.d\.ts$/, '')}';`);
|
||||||
|
|||||||
@@ -366,8 +366,8 @@ function generateDeclarationFile(recipe: string, sourceFileGetter: SourceFileGet
|
|||||||
|
|
||||||
let failed = false;
|
let failed = false;
|
||||||
|
|
||||||
usage.push(`var a: any;`);
|
usage.push(`var a;`);
|
||||||
usage.push(`var b: any;`);
|
usage.push(`var b;`);
|
||||||
|
|
||||||
const generateUsageImport = (moduleId: string) => {
|
const generateUsageImport = (moduleId: string) => {
|
||||||
let importName = 'm' + (++usageCounter);
|
let importName = 'm' + (++usageCounter);
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
|
|
||||||
declare namespace monaco {
|
declare namespace monaco {
|
||||||
|
|
||||||
// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.
|
|
||||||
|
|
||||||
export type Thenable<T> = PromiseLike<T>;
|
export type Thenable<T> = PromiseLike<T>;
|
||||||
|
|
||||||
export interface IDisposable {
|
export interface IDisposable {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import * as editorAPI from './vs/editor/editor.api';
|
|||||||
a = (<ServiceIdentifier<any>>b).type;
|
a = (<ServiceIdentifier<any>>b).type;
|
||||||
a = (<IHighlight>b).start;
|
a = (<IHighlight>b).start;
|
||||||
a = (<IHighlight>b).end;
|
a = (<IHighlight>b).end;
|
||||||
a = (<SimpleWorkerClient<any, any>>b).getProxyObject; // IWorkerClient
|
a = (<SimpleWorkerClient<any>>b).getProxyObject; // IWorkerClient
|
||||||
a = create1;
|
a = create1;
|
||||||
a = create2;
|
a = create2;
|
||||||
a = (<DocumentRangeFormattingEditProvider>b).extensionId;
|
a = (<DocumentRangeFormattingEditProvider>b).extensionId;
|
||||||
|
|||||||
@@ -20,10 +20,13 @@ function yarnInstall(location, opts) {
|
|||||||
const raw = process.env['npm_config_argv'] || '{}';
|
const raw = process.env['npm_config_argv'] || '{}';
|
||||||
const argv = JSON.parse(raw);
|
const argv = JSON.parse(raw);
|
||||||
const original = argv.original || [];
|
const original = argv.original || [];
|
||||||
const args = original.filter(arg => arg === '--ignore-optional' || arg === '--frozen-lockfile');
|
const args = ['install'];
|
||||||
|
|
||||||
console.log(`Installing dependencies in ${location}...`);
|
if (original.indexOf('--ignore-optional') > -1) {
|
||||||
console.log(`$ yarn ${args.join(' ')}`);
|
args.push('--ignore-optional');
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Installing dependencies in \'%s\'.', location);
|
||||||
const result = cp.spawnSync(yarn, args, opts);
|
const result = cp.spawnSync(yarn, args, opts);
|
||||||
|
|
||||||
if (result.error || result.status !== 0) {
|
if (result.error || result.status !== 0) {
|
||||||
@@ -35,8 +38,6 @@ yarnInstall('extensions'); // node modules shared by all extensions
|
|||||||
|
|
||||||
yarnInstall('remote'); // node modules used by vscode server
|
yarnInstall('remote'); // node modules used by vscode server
|
||||||
|
|
||||||
yarnInstall('remote/web'); // node modules used by vscode web
|
|
||||||
|
|
||||||
const allExtensionFolders = fs.readdirSync('extensions');
|
const allExtensionFolders = fs.readdirSync('extensions');
|
||||||
const extensions = allExtensionFolders.filter(e => {
|
const extensions = allExtensionFolders.filter(e => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
const cp = require('child_process');
|
|
||||||
const path = require('path');
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const rootPath = path.dirname(path.dirname(path.dirname(__dirname)));
|
|
||||||
const vscodePath = path.join(rootPath, 'vscode');
|
|
||||||
const distroPath = path.join(rootPath, 'vscode-distro');
|
|
||||||
const commit = cp.execSync('git rev-parse HEAD', { cwd: distroPath, encoding: 'utf8' }).trim();
|
|
||||||
const packageJsonPath = path.join(vscodePath, 'package.json');
|
|
||||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
||||||
|
|
||||||
packageJson.distro = commit;
|
|
||||||
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
||||||
@@ -82,7 +82,7 @@ function getCommitSha(repoId, repoPath) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'master', packageJsonPathOverride = '') {
|
exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'master') {
|
||||||
var contentPath = 'https://raw.githubusercontent.com/' + repoId + `/${version}/` + repoPath;
|
var contentPath = 'https://raw.githubusercontent.com/' + repoId + `/${version}/` + repoPath;
|
||||||
console.log('Reading from ' + contentPath);
|
console.log('Reading from ' + contentPath);
|
||||||
return download(contentPath).then(function (content) {
|
return download(contentPath).then(function (content) {
|
||||||
@@ -128,11 +128,7 @@ exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'mas
|
|||||||
|
|
||||||
// Add commit sha to cgmanifest.
|
// Add commit sha to cgmanifest.
|
||||||
if (currentCommitDate > commitDate) {
|
if (currentCommitDate > commitDate) {
|
||||||
let packageJsonPath = 'https://raw.githubusercontent.com/' + repoId + `/${info.commitSha}/`;
|
let packageJsonPath = 'https://raw.githubusercontent.com/' + repoId + `/${info.commitSha}/package.json`;
|
||||||
if (packageJsonPathOverride) {
|
|
||||||
packageJsonPath += packageJsonPathOverride;
|
|
||||||
}
|
|
||||||
packageJsonPath += '/package.json';
|
|
||||||
for (let i = 0; i < cgmanifestRead.registrations.length; i++) {
|
for (let i = 0; i < cgmanifestRead.registrations.length; i++) {
|
||||||
if (cgmanifestRead.registrations[i].component.git.repositoryUrl.substr(cgmanifestRead.registrations[i].component.git.repositoryUrl.length - repoId.length, repoId.length) === repoId) {
|
if (cgmanifestRead.registrations[i].component.git.repositoryUrl.substr(cgmanifestRead.registrations[i].component.git.repositoryUrl.length - repoId.length, repoId.length) === repoId) {
|
||||||
cgmanifestRead.registrations[i].component.git.commitHash = info.commitSha;
|
cgmanifestRead.registrations[i].component.git.commitHash = info.commitSha;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "azuredatastudio-oss-dev-build",
|
"name": "azuredatastudio-oss-dev-build",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "MIT",
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/ansi-colors": "^3.2.0",
|
"@types/ansi-colors": "^3.2.0",
|
||||||
"@types/azure": "0.9.19",
|
"@types/azure": "0.9.19",
|
||||||
@@ -20,7 +19,7 @@
|
|||||||
"@types/minimatch": "^3.0.3",
|
"@types/minimatch": "^3.0.3",
|
||||||
"@types/minimist": "^1.2.0",
|
"@types/minimist": "^1.2.0",
|
||||||
"@types/mocha": "2.2.39",
|
"@types/mocha": "2.2.39",
|
||||||
"@types/node": "^10.14.8",
|
"@types/node": "8.0.33",
|
||||||
"@types/pump": "^1.0.1",
|
"@types/pump": "^1.0.1",
|
||||||
"@types/request": "^2.47.0",
|
"@types/request": "^2.47.0",
|
||||||
"@types/rimraf": "^2.0.2",
|
"@types/rimraf": "^2.0.2",
|
||||||
@@ -29,10 +28,12 @@
|
|||||||
"@types/uglify-es": "^3.0.0",
|
"@types/uglify-es": "^3.0.0",
|
||||||
"@types/underscore": "^1.8.9",
|
"@types/underscore": "^1.8.9",
|
||||||
"@types/xml2js": "0.0.33",
|
"@types/xml2js": "0.0.33",
|
||||||
"applicationinsights": "1.0.8",
|
"applicationinsights": "1.0.6",
|
||||||
"azure-storage": "^2.1.0",
|
"azure-storage": "^2.1.0",
|
||||||
|
"decompress": "^4.2.0",
|
||||||
"del": "^3.0.0",
|
"del": "^3.0.0",
|
||||||
"documentdb": "1.13.0",
|
"documentdb": "1.13.0",
|
||||||
|
"fs-extra-promise": "^1.0.1",
|
||||||
"github-releases": "^0.4.1",
|
"github-releases": "^0.4.1",
|
||||||
"gulp-bom": "^1.0.0",
|
"gulp-bom": "^1.0.0",
|
||||||
"gulp-sourcemaps": "^1.11.0",
|
"gulp-sourcemaps": "^1.11.0",
|
||||||
@@ -42,9 +43,8 @@
|
|||||||
"request": "^2.85.0",
|
"request": "^2.85.0",
|
||||||
"tslint": "^5.9.1",
|
"tslint": "^5.9.1",
|
||||||
"service-downloader": "github:anthonydresser/service-downloader#0.1.5",
|
"service-downloader": "github:anthonydresser/service-downloader#0.1.5",
|
||||||
"typescript": "3.5.2",
|
"typescript": "3.4.5",
|
||||||
"vsce": "1.48.0",
|
"vsce": "1.48.0",
|
||||||
"vscode-telemetry-extractor": "1.5.3",
|
|
||||||
"xml2js": "^0.4.17"
|
"xml2js": "^0.4.17"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
4
build/win32/Cargo.lock
generated
4
build/win32/Cargo.lock
generated
@@ -1,5 +1,3 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
|
||||||
# It is not intended for manual editing.
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "build_const"
|
name = "build_const"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
@@ -29,7 +27,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "inno_updater"
|
name = "inno_updater"
|
||||||
version = "0.8.0"
|
version = "0.7.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ begin
|
|||||||
AltArch := '32';
|
AltArch := '32';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if not Result and not WizardSilent() then begin
|
if not Result then begin
|
||||||
MsgBox('Please uninstall the ' + AltArch + '-bit version of {#NameShort} before installing this ' + ThisArch + '-bit version.', mbInformation, MB_OK);
|
MsgBox('Please uninstall the ' + AltArch + '-bit version of {#NameShort} before installing this ' + ThisArch + '-bit version.', mbInformation, MB_OK);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
AddContextMenuFiles=Add "Open with %1" action to Windows Explorer file context menu
|
AddContextMenuFiles=Add "Open with %1" action to Windows Explorer file context menu
|
||||||
AddContextMenuFolders=Add "Open with %1" action to Windows Explorer directory context menu
|
AddContextMenuFolders=Add "Open with %1" action to Windows Explorer directory context menu
|
||||||
AssociateWithFiles=Register %1 as an editor for supported file types
|
AssociateWithFiles=Register %1 as an editor for supported file types
|
||||||
AddToPath=Add to PATH (requires shell restart)
|
AddToPath=Add to PATH (available after restart)
|
||||||
RunAfter=Run %1 after installation
|
RunAfter=Run %1 after installation
|
||||||
Other=Other:
|
Other=Other:
|
||||||
SourceFile=%1 Source File
|
SourceFile=%1 Source File
|
||||||
Binary file not shown.
373
build/yarn.lock
373
build/yarn.lock
@@ -2,14 +2,6 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@dsherret/to-absolute-glob@^2.0.2":
|
|
||||||
version "2.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1f6475dc8bd974cea07a2daf3864b317b1dd332c"
|
|
||||||
integrity sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=
|
|
||||||
dependencies:
|
|
||||||
is-absolute "^1.0.0"
|
|
||||||
is-negated-glob "^1.0.0"
|
|
||||||
|
|
||||||
"@gulp-sourcemaps/map-sources@1.X":
|
"@gulp-sourcemaps/map-sources@1.X":
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda"
|
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda"
|
||||||
@@ -18,27 +10,6 @@
|
|||||||
normalize-path "^2.0.1"
|
normalize-path "^2.0.1"
|
||||||
through2 "^2.0.3"
|
through2 "^2.0.3"
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.1":
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb"
|
|
||||||
integrity sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg==
|
|
||||||
dependencies:
|
|
||||||
"@nodelib/fs.stat" "2.0.1"
|
|
||||||
run-parallel "^1.1.9"
|
|
||||||
|
|
||||||
"@nodelib/fs.stat@2.0.1", "@nodelib/fs.stat@^2.0.1":
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz#814f71b1167390cfcb6a6b3d9cdeb0951a192c14"
|
|
||||||
integrity sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw==
|
|
||||||
|
|
||||||
"@nodelib/fs.walk@^1.2.1":
|
|
||||||
version "1.2.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz#6a6450c5e17012abd81450eb74949a4d970d2807"
|
|
||||||
integrity sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ==
|
|
||||||
dependencies:
|
|
||||||
"@nodelib/fs.scandir" "2.1.1"
|
|
||||||
fastq "^1.6.0"
|
|
||||||
|
|
||||||
"@types/ansi-colors@^3.2.0":
|
"@types/ansi-colors@^3.2.0":
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/ansi-colors/-/ansi-colors-3.2.0.tgz#3e4fe85d9131ce1c6994f3040bd0b25306c16a6e"
|
resolved "https://registry.yarnpkg.com/@types/ansi-colors/-/ansi-colors-3.2.0.tgz#3e4fe85d9131ce1c6994f3040bd0b25306c16a6e"
|
||||||
@@ -187,10 +158,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb"
|
||||||
integrity sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==
|
integrity sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==
|
||||||
|
|
||||||
"@types/node@^10.14.8":
|
"@types/node@8.0.33":
|
||||||
version "10.14.13"
|
version "8.0.33"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.13.tgz#ac786d623860adf39a3f51d629480aacd6a6eec7"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.33.tgz#1126e94374014e54478092830704f6ea89df04cd"
|
||||||
integrity sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==
|
integrity sha512-vmCdO8Bm1ExT+FWfC9sd9r4jwqM7o97gGy2WBshkkXbf/2nLAJQUrZfIhw27yVOtLUev6kSZc4cav/46KbDd8A==
|
||||||
|
|
||||||
"@types/pump@^1.0.1":
|
"@types/pump@^1.0.1":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@@ -374,10 +345,10 @@ anymatch@^2.0.0:
|
|||||||
micromatch "^3.1.4"
|
micromatch "^3.1.4"
|
||||||
normalize-path "^2.1.1"
|
normalize-path "^2.1.1"
|
||||||
|
|
||||||
applicationinsights@1.0.8:
|
applicationinsights@1.0.6:
|
||||||
version "1.0.8"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.8.tgz#db6e3d983cf9f9405fe1ee5ba30ac6e1914537b5"
|
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.6.tgz#bc201810de91cea910dab34e8ad35ecde488edeb"
|
||||||
integrity sha512-KzOOGdphOS/lXWMFZe5440LUdFbrLpMvh2SaRxn7BmiI550KAoSb2gIhiq6kJZ9Ir3AxRRztjhzif+e5P5IXIg==
|
integrity sha512-VQT3kBpJVPw5fCO5n+WUeSx0VHjxFtD7znYbILBlVgOS9/cMDuGFmV2Br3ObzFyZUDGNbEfW36fD1y2/vAiCKw==
|
||||||
dependencies:
|
dependencies:
|
||||||
diagnostic-channel "0.2.0"
|
diagnostic-channel "0.2.0"
|
||||||
diagnostic-channel-publishers "0.2.1"
|
diagnostic-channel-publishers "0.2.1"
|
||||||
@@ -418,21 +389,11 @@ arr-union@^3.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
||||||
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
|
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
|
||||||
|
|
||||||
array-back@^3.0.1:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
|
|
||||||
integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==
|
|
||||||
|
|
||||||
array-differ@^1.0.0:
|
array-differ@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
|
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
|
||||||
integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
|
integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
|
||||||
|
|
||||||
array-differ@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
|
|
||||||
integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
|
|
||||||
|
|
||||||
array-union@^1.0.1:
|
array-union@^1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
|
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
|
||||||
@@ -440,11 +401,6 @@ array-union@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
array-uniq "^1.0.1"
|
array-uniq "^1.0.1"
|
||||||
|
|
||||||
array-union@^2.1.0:
|
|
||||||
version "2.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
|
|
||||||
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
|
|
||||||
|
|
||||||
array-uniq@^1.0.1, array-uniq@^1.0.2:
|
array-uniq@^1.0.1, array-uniq@^1.0.2:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
|
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
|
||||||
@@ -455,11 +411,6 @@ array-unique@^0.3.2:
|
|||||||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||||
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
||||||
|
|
||||||
arrify@^2.0.1:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
|
|
||||||
integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
|
|
||||||
|
|
||||||
asn1@~0.2.3:
|
asn1@~0.2.3:
|
||||||
version "0.2.3"
|
version "0.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
|
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
|
||||||
@@ -594,6 +545,11 @@ bl@^1.0.0:
|
|||||||
readable-stream "^2.3.5"
|
readable-stream "^2.3.5"
|
||||||
safe-buffer "^5.1.1"
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
|
bluebird@^3.5.0:
|
||||||
|
version "3.5.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
|
||||||
|
integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
|
||||||
|
|
||||||
boolbase@~1.0.0:
|
boolbase@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
||||||
@@ -644,13 +600,6 @@ braces@^2.3.1, braces@^2.3.2:
|
|||||||
split-string "^3.0.2"
|
split-string "^3.0.2"
|
||||||
to-regex "^3.0.1"
|
to-regex "^3.0.1"
|
||||||
|
|
||||||
braces@^3.0.1:
|
|
||||||
version "3.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
|
||||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
|
||||||
dependencies:
|
|
||||||
fill-range "^7.0.1"
|
|
||||||
|
|
||||||
browserify-mime@~1.2.9:
|
browserify-mime@~1.2.9:
|
||||||
version "1.2.9"
|
version "1.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/browserify-mime/-/browserify-mime-1.2.9.tgz#aeb1af28de6c0d7a6a2ce40adb68ff18422af31f"
|
resolved "https://registry.yarnpkg.com/browserify-mime/-/browserify-mime-1.2.9.tgz#aeb1af28de6c0d7a6a2ce40adb68ff18422af31f"
|
||||||
@@ -793,11 +742,6 @@ co@^4.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
||||||
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
|
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
|
||||||
|
|
||||||
code-block-writer@9.4.1:
|
|
||||||
version "9.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-9.4.1.tgz#1448fca79dfc7a3649000f4c85be6bc770604c4c"
|
|
||||||
integrity sha512-LHAB+DL4YZDcwK8y/kAxZ0Lf/ncwLh/Ux4cTVWbPwIdrf1gPxXiPcwpz8r8/KqXu1aD+Raz46EOxDjFlbyO6bA==
|
|
||||||
|
|
||||||
code-point-at@^1.0.0:
|
code-point-at@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||||
@@ -847,16 +791,6 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
delayed-stream "~1.0.0"
|
delayed-stream "~1.0.0"
|
||||||
|
|
||||||
command-line-args@^5.1.1:
|
|
||||||
version "5.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a"
|
|
||||||
integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==
|
|
||||||
dependencies:
|
|
||||||
array-back "^3.0.1"
|
|
||||||
find-replace "^3.0.0"
|
|
||||||
lodash.camelcase "^4.3.0"
|
|
||||||
typical "^4.0.0"
|
|
||||||
|
|
||||||
commander@^2.12.1, commander@^2.8.1:
|
commander@^2.12.1, commander@^2.8.1:
|
||||||
version "2.19.0"
|
version "2.19.0"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||||
@@ -1121,13 +1055,6 @@ diff@^3.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
|
||||||
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
|
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
|
||||||
|
|
||||||
dir-glob@^3.0.1:
|
|
||||||
version "3.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
|
||||||
integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
|
|
||||||
dependencies:
|
|
||||||
path-type "^4.0.0"
|
|
||||||
|
|
||||||
documentdb@1.13.0:
|
documentdb@1.13.0:
|
||||||
version "1.13.0"
|
version "1.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/documentdb/-/documentdb-1.13.0.tgz#bba6f03150b2f42498cec4261bc439d834a33f8b"
|
resolved "https://registry.yarnpkg.com/documentdb/-/documentdb-1.13.0.tgz#bba6f03150b2f42498cec4261bc439d834a33f8b"
|
||||||
@@ -1313,30 +1240,11 @@ fast-deep-equal@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
|
||||||
integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
|
integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
|
||||||
|
|
||||||
fast-glob@^3.0.3:
|
|
||||||
version "3.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.0.4.tgz#d484a41005cb6faeb399b951fd1bd70ddaebb602"
|
|
||||||
integrity sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg==
|
|
||||||
dependencies:
|
|
||||||
"@nodelib/fs.stat" "^2.0.1"
|
|
||||||
"@nodelib/fs.walk" "^1.2.1"
|
|
||||||
glob-parent "^5.0.0"
|
|
||||||
is-glob "^4.0.1"
|
|
||||||
merge2 "^1.2.3"
|
|
||||||
micromatch "^4.0.2"
|
|
||||||
|
|
||||||
fast-json-stable-stringify@^2.0.0:
|
fast-json-stable-stringify@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
||||||
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
||||||
|
|
||||||
fastq@^1.6.0:
|
|
||||||
version "1.6.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2"
|
|
||||||
integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==
|
|
||||||
dependencies:
|
|
||||||
reusify "^1.0.0"
|
|
||||||
|
|
||||||
fd-slicer@~1.1.0:
|
fd-slicer@~1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
|
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
|
||||||
@@ -1369,20 +1277,6 @@ fill-range@^4.0.0:
|
|||||||
repeat-string "^1.6.1"
|
repeat-string "^1.6.1"
|
||||||
to-regex-range "^2.1.0"
|
to-regex-range "^2.1.0"
|
||||||
|
|
||||||
fill-range@^7.0.1:
|
|
||||||
version "7.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
|
||||||
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
|
||||||
dependencies:
|
|
||||||
to-regex-range "^5.0.1"
|
|
||||||
|
|
||||||
find-replace@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38"
|
|
||||||
integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==
|
|
||||||
dependencies:
|
|
||||||
array-back "^3.0.1"
|
|
||||||
|
|
||||||
for-in@^1.0.2:
|
for-in@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||||
@@ -1423,14 +1317,21 @@ fs-constants@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||||
|
|
||||||
fs-extra@^8.1.0:
|
fs-extra-promise@^1.0.1:
|
||||||
version "8.1.0"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
resolved "https://registry.yarnpkg.com/fs-extra-promise/-/fs-extra-promise-1.0.1.tgz#b6ed1ace97b10e06b95f458d051b7f05c6613ee6"
|
||||||
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
|
integrity sha1-tu0azpexDga5X0WNBRt/BcZhPuY=
|
||||||
dependencies:
|
dependencies:
|
||||||
graceful-fs "^4.2.0"
|
bluebird "^3.5.0"
|
||||||
jsonfile "^4.0.0"
|
fs-extra "^2.1.2"
|
||||||
universalify "^0.1.0"
|
|
||||||
|
fs-extra@^2.1.2:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35"
|
||||||
|
integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.1.2"
|
||||||
|
jsonfile "^2.1.0"
|
||||||
|
|
||||||
fs-minipass@^1.2.5:
|
fs-minipass@^1.2.5:
|
||||||
version "1.2.5"
|
version "1.2.5"
|
||||||
@@ -1504,14 +1405,7 @@ glob-parent@^3.1.0:
|
|||||||
is-glob "^3.1.0"
|
is-glob "^3.1.0"
|
||||||
path-dirname "^1.0.0"
|
path-dirname "^1.0.0"
|
||||||
|
|
||||||
glob-parent@^5.0.0:
|
glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3:
|
||||||
version "5.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
|
|
||||||
integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
|
|
||||||
dependencies:
|
|
||||||
is-glob "^4.0.1"
|
|
||||||
|
|
||||||
glob@^7.0.3, glob@^7.0.6, glob@^7.1.1:
|
|
||||||
version "7.1.3"
|
version "7.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
|
||||||
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
|
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
|
||||||
@@ -1523,32 +1417,6 @@ glob@^7.0.3, glob@^7.0.6, glob@^7.1.1:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
glob@^7.1.3:
|
|
||||||
version "7.1.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
|
||||||
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
|
|
||||||
dependencies:
|
|
||||||
fs.realpath "^1.0.0"
|
|
||||||
inflight "^1.0.4"
|
|
||||||
inherits "2"
|
|
||||||
minimatch "^3.0.4"
|
|
||||||
once "^1.3.0"
|
|
||||||
path-is-absolute "^1.0.0"
|
|
||||||
|
|
||||||
globby@^10.0.1:
|
|
||||||
version "10.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22"
|
|
||||||
integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==
|
|
||||||
dependencies:
|
|
||||||
"@types/glob" "^7.1.1"
|
|
||||||
array-union "^2.1.0"
|
|
||||||
dir-glob "^3.0.1"
|
|
||||||
fast-glob "^3.0.3"
|
|
||||||
glob "^7.1.3"
|
|
||||||
ignore "^5.1.1"
|
|
||||||
merge2 "^1.2.3"
|
|
||||||
slash "^3.0.0"
|
|
||||||
|
|
||||||
globby@^6.1.0:
|
globby@^6.1.0:
|
||||||
version "6.1.0"
|
version "6.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
|
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
|
||||||
@@ -1572,16 +1440,11 @@ graceful-fs@4.X:
|
|||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
|
||||||
integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
|
integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
|
||||||
|
|
||||||
graceful-fs@^4.1.10, graceful-fs@^4.1.11:
|
graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
||||||
version "4.1.15"
|
version "4.1.15"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
||||||
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
|
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
|
||||||
|
|
||||||
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
|
||||||
version "4.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
|
|
||||||
integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
|
|
||||||
|
|
||||||
"graceful-readlink@>= 1.0.0":
|
"graceful-readlink@>= 1.0.0":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
|
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
|
||||||
@@ -1834,11 +1697,6 @@ ignore-walk@^3.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
ignore@^5.1.1:
|
|
||||||
version "5.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558"
|
|
||||||
integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==
|
|
||||||
|
|
||||||
inflight@^1.0.4:
|
inflight@^1.0.4:
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||||
@@ -1847,12 +1705,7 @@ inflight@^1.0.4:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
wrappy "1"
|
wrappy "1"
|
||||||
|
|
||||||
inherits@2:
|
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
||||||
version "2.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
|
||||||
|
|
||||||
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||||
@@ -1862,14 +1715,6 @@ ini@~1.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||||
|
|
||||||
is-absolute@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
|
|
||||||
integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
|
|
||||||
dependencies:
|
|
||||||
is-relative "^1.0.0"
|
|
||||||
is-windows "^1.0.1"
|
|
||||||
|
|
||||||
is-accessor-descriptor@^0.1.6:
|
is-accessor-descriptor@^0.1.6:
|
||||||
version "0.1.6"
|
version "0.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
||||||
@@ -1971,23 +1816,11 @@ is-glob@^4.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-extglob "^2.1.1"
|
is-extglob "^2.1.1"
|
||||||
|
|
||||||
is-glob@^4.0.1:
|
|
||||||
version "4.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
|
|
||||||
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
|
|
||||||
dependencies:
|
|
||||||
is-extglob "^2.1.1"
|
|
||||||
|
|
||||||
is-natural-number@^4.0.1:
|
is-natural-number@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
|
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
|
||||||
integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=
|
integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=
|
||||||
|
|
||||||
is-negated-glob@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
|
|
||||||
integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
|
|
||||||
|
|
||||||
is-number@^3.0.0:
|
is-number@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
||||||
@@ -1995,11 +1828,6 @@ is-number@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
kind-of "^3.0.2"
|
kind-of "^3.0.2"
|
||||||
|
|
||||||
is-number@^7.0.0:
|
|
||||||
version "7.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
|
||||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
|
||||||
|
|
||||||
is-path-cwd@^1.0.0:
|
is-path-cwd@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
|
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
|
||||||
@@ -2026,13 +1854,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
is-relative@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
|
|
||||||
integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
|
|
||||||
dependencies:
|
|
||||||
is-unc-path "^1.0.0"
|
|
||||||
|
|
||||||
is-stream@^1.1.0:
|
is-stream@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||||
@@ -2043,19 +1864,12 @@ is-typedarray@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||||
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
|
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
|
||||||
|
|
||||||
is-unc-path@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
|
|
||||||
integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
|
|
||||||
dependencies:
|
|
||||||
unc-path-regex "^0.1.2"
|
|
||||||
|
|
||||||
is-utf8@^0.2.0:
|
is-utf8@^0.2.0:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||||
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
|
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
|
||||||
|
|
||||||
is-windows@^1.0.1, is-windows@^1.0.2:
|
is-windows@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
||||||
@@ -2134,10 +1948,10 @@ json-stringify-safe@~5.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||||
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
|
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
|
||||||
|
|
||||||
jsonfile@^4.0.0:
|
jsonfile@^2.1.0:
|
||||||
version "4.0.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
|
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
|
||||||
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
|
integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
graceful-fs "^4.1.6"
|
graceful-fs "^4.1.6"
|
||||||
|
|
||||||
@@ -2242,11 +2056,6 @@ lodash._root@^3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
|
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
|
||||||
integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
|
integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
|
||||||
|
|
||||||
lodash.camelcase@^4.3.0:
|
|
||||||
version "4.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
|
|
||||||
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
|
|
||||||
|
|
||||||
lodash.escape@^3.0.0:
|
lodash.escape@^3.0.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
|
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
|
||||||
@@ -2349,11 +2158,6 @@ mdurl@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
|
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
|
||||||
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
|
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
|
||||||
|
|
||||||
merge2@^1.2.3:
|
|
||||||
version "1.2.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
|
|
||||||
integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
|
|
||||||
|
|
||||||
micromatch@^3.1.10, micromatch@^3.1.4:
|
micromatch@^3.1.10, micromatch@^3.1.4:
|
||||||
version "3.1.10"
|
version "3.1.10"
|
||||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
||||||
@@ -2373,14 +2177,6 @@ micromatch@^3.1.10, micromatch@^3.1.4:
|
|||||||
snapdragon "^0.8.1"
|
snapdragon "^0.8.1"
|
||||||
to-regex "^3.0.2"
|
to-regex "^3.0.2"
|
||||||
|
|
||||||
micromatch@^4.0.2:
|
|
||||||
version "4.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
|
|
||||||
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
|
|
||||||
dependencies:
|
|
||||||
braces "^3.0.1"
|
|
||||||
picomatch "^2.0.5"
|
|
||||||
|
|
||||||
mime-db@~1.30.0:
|
mime-db@~1.30.0:
|
||||||
version "1.30.0"
|
version "1.30.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
|
||||||
@@ -2472,17 +2268,6 @@ ms@^2.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||||
|
|
||||||
multimatch@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3"
|
|
||||||
integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==
|
|
||||||
dependencies:
|
|
||||||
"@types/minimatch" "^3.0.3"
|
|
||||||
array-differ "^3.0.0"
|
|
||||||
array-union "^2.1.0"
|
|
||||||
arrify "^2.0.1"
|
|
||||||
minimatch "^3.0.4"
|
|
||||||
|
|
||||||
multipipe@^0.1.2:
|
multipipe@^0.1.2:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
|
resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
|
||||||
@@ -2717,11 +2502,6 @@ path-parse@^1.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
||||||
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
||||||
|
|
||||||
path-type@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
|
||||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
|
||||||
|
|
||||||
pend@~1.2.0:
|
pend@~1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||||
@@ -2737,11 +2517,6 @@ performance-now@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||||
|
|
||||||
picomatch@^2.0.5:
|
|
||||||
version "2.0.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
|
|
||||||
integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
|
|
||||||
|
|
||||||
pify@^2.0.0, pify@^2.3.0:
|
pify@^2.0.0, pify@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||||
@@ -2983,11 +2758,6 @@ ret@~0.1.10:
|
|||||||
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
||||||
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
|
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
|
||||||
|
|
||||||
reusify@^1.0.0:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
|
||||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
|
||||||
|
|
||||||
rimraf@^2.2.8, rimraf@^2.6.1:
|
rimraf@^2.2.8, rimraf@^2.6.1:
|
||||||
version "2.6.3"
|
version "2.6.3"
|
||||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
||||||
@@ -2995,11 +2765,6 @@ rimraf@^2.2.8, rimraf@^2.6.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
run-parallel@^1.1.9:
|
|
||||||
version "1.1.9"
|
|
||||||
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
|
|
||||||
integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
|
|
||||||
|
|
||||||
safe-buffer@^5.0.1, safe-buffer@^5.1.1:
|
safe-buffer@^5.0.1, safe-buffer@^5.1.1:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||||
@@ -3090,11 +2855,6 @@ signal-exit@^3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||||
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
||||||
|
|
||||||
slash@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
|
|
||||||
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
|
|
||||||
|
|
||||||
snapdragon-node@^2.0.1:
|
snapdragon-node@^2.0.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||||
@@ -3362,13 +3122,6 @@ to-regex-range@^2.1.0:
|
|||||||
is-number "^3.0.0"
|
is-number "^3.0.0"
|
||||||
repeat-string "^1.6.1"
|
repeat-string "^1.6.1"
|
||||||
|
|
||||||
to-regex-range@^5.0.1:
|
|
||||||
version "5.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
|
||||||
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
|
||||||
dependencies:
|
|
||||||
is-number "^7.0.0"
|
|
||||||
|
|
||||||
to-regex@^3.0.1, to-regex@^3.0.2:
|
to-regex@^3.0.1, to-regex@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
|
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
|
||||||
@@ -3393,20 +3146,6 @@ tough-cookie@~2.3.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
punycode "^1.4.1"
|
punycode "^1.4.1"
|
||||||
|
|
||||||
ts-morph@^3.1.3:
|
|
||||||
version "3.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-3.1.3.tgz#bbfa1d14481ee23bdd1c030340ccf4a243cfc844"
|
|
||||||
integrity sha512-CwjgyJTtd3f8vBi7Vr0IOgdOY6Wi/Tq0MhieXOE2B5ns5WWRD7BwMNHtv+ZufKI/S2U/lMrh+Q3bOauE4tsv2g==
|
|
||||||
dependencies:
|
|
||||||
"@dsherret/to-absolute-glob" "^2.0.2"
|
|
||||||
code-block-writer "9.4.1"
|
|
||||||
fs-extra "^8.1.0"
|
|
||||||
glob-parent "^5.0.0"
|
|
||||||
globby "^10.0.1"
|
|
||||||
is-negated-glob "^1.0.0"
|
|
||||||
multimatch "^4.0.0"
|
|
||||||
typescript "^3.0.1"
|
|
||||||
|
|
||||||
tslib@^1.8.0, tslib@^1.8.1:
|
tslib@^1.8.0, tslib@^1.8.1:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
||||||
@@ -3462,20 +3201,10 @@ typed-rest-client@^0.9.0:
|
|||||||
tunnel "0.0.4"
|
tunnel "0.0.4"
|
||||||
underscore "1.8.3"
|
underscore "1.8.3"
|
||||||
|
|
||||||
typescript@3.5.2:
|
typescript@3.4.5:
|
||||||
version "3.5.2"
|
version "3.4.5"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99"
|
||||||
integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==
|
integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==
|
||||||
|
|
||||||
typescript@^3.0.1:
|
|
||||||
version "3.5.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
|
|
||||||
integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==
|
|
||||||
|
|
||||||
typical@^4.0.0:
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
|
|
||||||
integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==
|
|
||||||
|
|
||||||
uc.micro@^1.0.1, uc.micro@^1.0.5:
|
uc.micro@^1.0.1, uc.micro@^1.0.5:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
@@ -3490,11 +3219,6 @@ unbzip2-stream@^1.0.9:
|
|||||||
buffer "^5.2.1"
|
buffer "^5.2.1"
|
||||||
through "^2.3.8"
|
through "^2.3.8"
|
||||||
|
|
||||||
unc-path-regex@^0.1.2:
|
|
||||||
version "0.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
|
|
||||||
integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
|
|
||||||
|
|
||||||
underscore@1.8.3, underscore@~1.8.3:
|
underscore@1.8.3, underscore@~1.8.3:
|
||||||
version "1.8.3"
|
version "1.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
|
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
|
||||||
@@ -3515,11 +3239,6 @@ union-value@^1.0.0:
|
|||||||
is-extendable "^0.1.1"
|
is-extendable "^0.1.1"
|
||||||
set-value "^0.4.3"
|
set-value "^0.4.3"
|
||||||
|
|
||||||
universalify@^0.1.0:
|
|
||||||
version "0.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
|
||||||
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
|
||||||
|
|
||||||
unset-value@^1.0.0:
|
unset-value@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
|
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
|
||||||
@@ -3618,20 +3337,6 @@ vsce@1.48.0:
|
|||||||
yauzl "^2.3.1"
|
yauzl "^2.3.1"
|
||||||
yazl "^2.2.2"
|
yazl "^2.2.2"
|
||||||
|
|
||||||
vscode-ripgrep@^1.5.5:
|
|
||||||
version "1.5.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.5.tgz#24c0e9cb356cf889c98e15ecb58f9cf654a1d961"
|
|
||||||
integrity sha512-OrPrAmcun4+uZAuNcQvE6CCPskh+5AsjANod/Q3zRcJcGNxgoOSGlQN9RPtatkUNmkN8Nn8mZBnS1jMylu/dKg==
|
|
||||||
|
|
||||||
vscode-telemetry-extractor@1.5.3:
|
|
||||||
version "1.5.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.3.tgz#c17f9065a47425edafd23ea161e80c23274e009d"
|
|
||||||
integrity sha512-feioJ1e1KyMa9rzblnLbSOduo+Ny0l62H3/bSDgfgCSnU/km+tTSYxPBvZHVr7iQfQGC95J61yC/ObqS9EbaQg==
|
|
||||||
dependencies:
|
|
||||||
command-line-args "^5.1.1"
|
|
||||||
ts-morph "^3.1.3"
|
|
||||||
vscode-ripgrep "^1.5.5"
|
|
||||||
|
|
||||||
vso-node-api@6.1.2-preview:
|
vso-node-api@6.1.2-preview:
|
||||||
version "6.1.2-preview"
|
version "6.1.2-preview"
|
||||||
resolved "https://registry.yarnpkg.com/vso-node-api/-/vso-node-api-6.1.2-preview.tgz#aab3546df2451ecd894e071bb99b5df19c5fa78f"
|
resolved "https://registry.yarnpkg.com/vso-node-api/-/vso-node-api-6.1.2-preview.tgz#aab3546df2451ecd894e071bb99b5df19c5fa78f"
|
||||||
|
|||||||
@@ -695,79 +695,5 @@
|
|||||||
"",
|
"",
|
||||||
"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."
|
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "xterm-addon-search",
|
|
||||||
"licenseDetail": [
|
|
||||||
"Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)",
|
|
||||||
"",
|
|
||||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
|
||||||
"of this software and associated documentation files (the \"Software\"), to deal",
|
|
||||||
"in the Software without restriction, including without limitation the rights",
|
|
||||||
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
|
|
||||||
"copies of the Software, and to permit persons to whom the Software is",
|
|
||||||
"furnished to do so, subject to the following conditions:",
|
|
||||||
"",
|
|
||||||
"The above copyright notice and this permission notice shall be included in",
|
|
||||||
"all copies or substantial portions of the Software.",
|
|
||||||
"",
|
|
||||||
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
|
|
||||||
"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
|
|
||||||
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
|
|
||||||
"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
|
|
||||||
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
|
|
||||||
"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
|
|
||||||
"THE SOFTWARE."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "xterm-addon-web-links",
|
|
||||||
"licenseDetail": [
|
|
||||||
"Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)",
|
|
||||||
"",
|
|
||||||
"Permission is hereby granted, free of charge, to any person obtaining a copy",
|
|
||||||
"of this software and associated documentation files (the \"Software\"), to deal",
|
|
||||||
"in the Software without restriction, including without limitation the rights",
|
|
||||||
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
|
|
||||||
"copies of the Software, and to permit persons to whom the Software is",
|
|
||||||
"furnished to do so, subject to the following conditions:",
|
|
||||||
"",
|
|
||||||
"The above copyright notice and this permission notice shall be included in",
|
|
||||||
"all copies or substantial portions of the Software.",
|
|
||||||
"",
|
|
||||||
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
|
|
||||||
"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
|
|
||||||
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
|
|
||||||
"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
|
|
||||||
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
|
|
||||||
"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
|
|
||||||
"THE SOFTWARE."
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "atob",
|
|
||||||
"licenseDetail": [
|
|
||||||
"The MIT License (MIT)",
|
|
||||||
"",
|
|
||||||
"Copyright (c) 2015 AJ ONeal",
|
|
||||||
"",
|
|
||||||
"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."
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"git": {
|
"git": {
|
||||||
"name": "chromium",
|
"name": "chromium",
|
||||||
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
|
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
|
||||||
"commitHash": "c6a08e5368de4352903e702cde750b33239a50ab"
|
"commitHash": "164c37e3f235134c88e80fac2a182cfba3f07f00"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"licenseDetail": [
|
"licenseDetail": [
|
||||||
@@ -40,7 +40,20 @@
|
|||||||
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
],
|
],
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"version": "69.0.3497.128"
|
"version": "66.0.3359.181"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"component": {
|
||||||
|
"type": "git",
|
||||||
|
"git": {
|
||||||
|
"name": "libchromiumcontent",
|
||||||
|
"repositoryUrl": "https://github.com/electron/libchromiumcontent",
|
||||||
|
"commitHash": "7ea271f92018b1eeb8e70ec6de8c29f9758a0c05"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"isOnlyProductionDependency": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"version": "66.0.3359.181"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
@@ -48,11 +61,11 @@
|
|||||||
"git": {
|
"git": {
|
||||||
"name": "nodejs",
|
"name": "nodejs",
|
||||||
"repositoryUrl": "https://github.com/nodejs/node",
|
"repositoryUrl": "https://github.com/nodejs/node",
|
||||||
"commitHash": "8c70b2084ce5f76ea1e3b3c4ccdeee4483fe338b"
|
"commitHash": "5cbb905c1af7cea2d709932d59827d7c6d03ef4a"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"version": "10.11.0"
|
"version": "10.2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
@@ -60,12 +73,12 @@
|
|||||||
"git": {
|
"git": {
|
||||||
"name": "electron",
|
"name": "electron",
|
||||||
"repositoryUrl": "https://github.com/electron/electron",
|
"repositoryUrl": "https://github.com/electron/electron",
|
||||||
"commitHash": "36ea114ac0616e469e75ae94e6d53af48925e036"
|
"commitHash": "e84a6860e35e14b4031b88bb9b49841cdb89a305"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"version": "4.2.7"
|
"version": "3.1.8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
@@ -98,11 +111,11 @@
|
|||||||
"git": {
|
"git": {
|
||||||
"name": "vscode-octicons-font",
|
"name": "vscode-octicons-font",
|
||||||
"repositoryUrl": "https://github.com/Microsoft/vscode-octicons-font",
|
"repositoryUrl": "https://github.com/Microsoft/vscode-octicons-font",
|
||||||
"commitHash": "415cd5b42ab699b6b46c0bf011ada0a2ae50bfb4"
|
"commitHash": "4f69de3a233ed501c2098e33047e116ac2fbbf42"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"version": "1.3.1"
|
"version": "1.1.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
|
|||||||
@@ -3,5 +3,3 @@ src/**
|
|||||||
.gitignore
|
.gitignore
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
InstallSsmsMin.bat
|
InstallSsmsMin.bat
|
||||||
cgmanifest.json
|
|
||||||
.vscode
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user