Merge remote-tracking branch 'origin/master' into alex/tokenization
161
.github/classifier.yml
vendored
@@ -18,40 +18,127 @@
|
|||||||
assignees: [ weinand ],
|
assignees: [ weinand ],
|
||||||
assignLabel: false
|
assignLabel: false
|
||||||
},
|
},
|
||||||
diff-editor: [],
|
diff-editor: : {
|
||||||
dropdown: [],
|
assignees: [],
|
||||||
editor: {
|
assignLabel: false
|
||||||
|
},
|
||||||
|
dropdown: [],
|
||||||
|
editor: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-1000-limit: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-autoclosing: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-autoindent: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-brackets: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-clipboard: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-code-actions: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-code-lens: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-color-picker: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-colors: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-columnselect: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-commands: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-contrib: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-drag-and-drop: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-find: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-folding: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-hover: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-ime: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-input: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-ligatures: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-links: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-minimap: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-multicursor: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-parameter-hints: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-rendering: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-smooth: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-symbols: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-textbuffer: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
editor-wrapping: : {
|
||||||
assignees: [],
|
assignees: [],
|
||||||
assignLabel: false
|
assignLabel: false
|
||||||
},
|
},
|
||||||
editor-1000-limit: [],
|
|
||||||
editor-autoclosing: [],
|
|
||||||
editor-autoindent: [],
|
|
||||||
editor-brackets: [],
|
|
||||||
editor-clipboard: [],
|
|
||||||
editor-code-actions: [],
|
|
||||||
editor-code-lens: [],
|
|
||||||
editor-color-picker: [],
|
|
||||||
editor-colors: [],
|
|
||||||
editor-columnselect: [],
|
|
||||||
editor-commands: [],
|
|
||||||
editor-contrib: [],
|
|
||||||
editor-drag-and-drop: [],
|
|
||||||
editor-find: [],
|
|
||||||
editor-folding: [],
|
|
||||||
editor-hover: [],
|
|
||||||
editor-ime: [],
|
|
||||||
editor-input: [],
|
|
||||||
editor-ligatures: [],
|
|
||||||
editor-links: [],
|
|
||||||
editor-minimap: [],
|
|
||||||
editor-multicursor: [],
|
|
||||||
editor-parameter-hints: [],
|
|
||||||
editor-rendering: [],
|
|
||||||
editor-smooth: [],
|
|
||||||
editor-symbols: [],
|
|
||||||
editor-textbuffer: [],
|
|
||||||
editor-wrapping: [],
|
|
||||||
emmet: [ octref ],
|
emmet: [ octref ],
|
||||||
error-list: [],
|
error-list: [],
|
||||||
explorer-custom: [],
|
explorer-custom: [],
|
||||||
@@ -81,14 +168,20 @@
|
|||||||
hot-exit: [],
|
hot-exit: [],
|
||||||
html: [],
|
html: [],
|
||||||
install-update: [],
|
install-update: [],
|
||||||
integrated-terminal: [ Tyriar ],
|
integrated-terminal: [],
|
||||||
integration-test: [],
|
integration-test: [],
|
||||||
intellisense-config: [],
|
intellisense-config: [],
|
||||||
issue-reporter: [ RMacfarlane ],
|
issue-reporter: [ RMacfarlane ],
|
||||||
javascript: [ mjbvz ],
|
javascript: [ mjbvz ],
|
||||||
json: [],
|
json: [],
|
||||||
keyboard-layout: [],
|
keyboard-layout: : {
|
||||||
keybindings: [],
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
|
keybindings: : {
|
||||||
|
assignees: [],
|
||||||
|
assignLabel: false
|
||||||
|
},
|
||||||
keybindings-editor: [],
|
keybindings-editor: [],
|
||||||
lang-diagnostics: [],
|
lang-diagnostics: [],
|
||||||
languages basic: [],
|
languages basic: [],
|
||||||
|
|||||||
4
.gitignore
vendored
@@ -18,9 +18,11 @@ 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/
|
||||||
|
out-vscode-reh-web-min/
|
||||||
|
out-vscode-reh-web-pkg/
|
||||||
out-vscode-web/
|
out-vscode-web/
|
||||||
out-vscode-web-min/
|
out-vscode-web-min/
|
||||||
out-vscode-web-pkg/
|
|
||||||
src/vs/server
|
src/vs/server
|
||||||
resources/server
|
resources/server
|
||||||
build/node_modules
|
build/node_modules
|
||||||
|
|||||||
3
.vscode/settings.json
vendored
@@ -59,5 +59,6 @@
|
|||||||
"git.ignoreLimitWarning": true,
|
"git.ignoreLimitWarning": true,
|
||||||
"remote.extensionKind": {
|
"remote.extensionKind": {
|
||||||
"msjsdiag.debugger-for-chrome": "workspace"
|
"msjsdiag.debugger-for-chrome": "workspace"
|
||||||
}
|
},
|
||||||
|
"files.insertFinalNewline": true
|
||||||
}
|
}
|
||||||
2
.yarnrc
@@ -1,3 +1,3 @@
|
|||||||
disturl "https://atom.io/download/electron"
|
disturl "https://atom.io/download/electron"
|
||||||
target "4.2.5"
|
target "4.2.7"
|
||||||
runtime "electron"
|
runtime "electron"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1
|
2019-07-11T05:47:05.444Z
|
||||||
|
|||||||
@@ -2,29 +2,18 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd $BUILD_STAGINGDIRECTORY
|
cd $BUILD_STAGINGDIRECTORY
|
||||||
git clone https://github.com/microsoft/vscode-telemetry-extractor.git
|
mkdir extraction
|
||||||
cd vscode-telemetry-extractor
|
cd extraction
|
||||||
git checkout 4e64f3de30f8fccb58ebdc0d85c4861a135d46cf
|
|
||||||
npm i
|
|
||||||
npm run compile
|
|
||||||
cd src
|
|
||||||
mkdir telemetry-sources
|
|
||||||
cd telemetry-sources
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-extension-telemetry.git
|
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-chrome-debug-core.git
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-chrome-debug.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-node-debug2.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-node-debug.git
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-docker.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-go.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-azure-account.git
|
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-html-languageservice.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
|
git clone --depth 1 https://github.com/Microsoft/vscode-json-languageservice.git
|
||||||
git clone --depth 1 https://github.com/Microsoft/vscode-mono-debug.git
|
$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints
|
||||||
git clone --depth 1 https://github.com/Microsoft/TypeScript.git
|
$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --config $BUILD_SOURCESDIRECTORY/build/azure-pipelines/common/telemetry-config.json -o .
|
||||||
cd ../../
|
|
||||||
node ./out/cli-extract.js --sourceDir $BUILD_SOURCESDIRECTORY --excludedDirPattern extensions --outputDir . --applyEndpoints --includeIsMeasurement
|
|
||||||
node ./out/cli-extract-extensions.js --sourceDir ./src/telemetry-sources --outputDir . --applyEndpoints --includeIsMeasurement
|
|
||||||
mkdir -p $BUILD_SOURCESDIRECTORY/.build/telemetry
|
mkdir -p $BUILD_SOURCESDIRECTORY/.build/telemetry
|
||||||
mv declarations-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-core.json
|
mv declarations-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-core.json
|
||||||
mv declarations-extensions-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-extensions.json
|
mv config-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-extensions.json
|
||||||
|
cd ..
|
||||||
|
rm -rf extraction
|
||||||
72
build/azure-pipelines/common/telemetry-config.json
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -6,8 +6,8 @@ steps:
|
|||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
inputs:
|
inputs:
|
||||||
keyfile: '.build/commit'
|
keyfile: 'build/.cachesalt, .build/commit'
|
||||||
targetfolder: '.build, **/out-build, **/out-vscode-min, **/out-vscode-reh-min, **/out-vscode-web-min'
|
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
||||||
vstsFeed: 'npm-vscode'
|
vstsFeed: 'npm-vscode'
|
||||||
platformIndependent: true
|
platformIndependent: true
|
||||||
alias: 'Compilation'
|
alias: 'Compilation'
|
||||||
@@ -89,9 +89,7 @@ steps:
|
|||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-reh-darwin-min-ci
|
yarn gulp vscode-reh-darwin-min-ci
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-web-darwin-min-ci
|
yarn gulp vscode-reh-web-darwin-min-ci
|
||||||
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
|
|
||||||
yarn gulp upload-vscode-sourcemaps
|
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
|
|||||||
@@ -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" "$VSCODE_ARCH" "$VSCODE_HOCKEYAPP_ID_MACOS"
|
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" x64 "$VSCODE_HOCKEYAPP_ID_MACOS"
|
||||||
|
|
||||||
# upload configuration
|
# upload configuration
|
||||||
yarn gulp upload-vscode-configuration
|
yarn gulp upload-vscode-configuration
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ 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
|
||||||
|
|
||||||
# Push master branch into master and oss/master
|
# Push master branch into oss/master
|
||||||
git push distro origin/master:refs/heads/master origin/master:refs/heads/oss/master
|
git push distro origin/master:refs/heads/oss/master
|
||||||
|
|
||||||
# Push every release branch into oss/release
|
# 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 for-each-ref --format="%(refname:short)" refs/remotes/origin/release/* | sed 's/^origin\/\(.*\)$/\0:refs\/heads\/oss\/\1/' | xargs git push distro
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ steps:
|
|||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
inputs:
|
inputs:
|
||||||
keyfile: '.build/commit'
|
keyfile: 'build/.cachesalt, .build/commit'
|
||||||
targetfolder: '.build, **/out-build, **/out-vscode-min, **/out-vscode-reh-min, **/out-vscode-web-min'
|
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
||||||
vstsFeed: 'npm-vscode'
|
vstsFeed: 'npm-vscode'
|
||||||
platformIndependent: true
|
platformIndependent: true
|
||||||
alias: 'Compilation'
|
alias: 'Compilation'
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ steps:
|
|||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
inputs:
|
inputs:
|
||||||
keyfile: '.build/commit'
|
keyfile: 'build/.cachesalt, .build/commit'
|
||||||
targetfolder: '.build, **/out-build, **/out-vscode-min, **/out-vscode-reh-min, **/out-vscode-web-min'
|
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
||||||
vstsFeed: 'npm-vscode'
|
vstsFeed: 'npm-vscode'
|
||||||
platformIndependent: true
|
platformIndependent: true
|
||||||
alias: 'Compilation'
|
alias: 'Compilation'
|
||||||
@@ -34,8 +34,6 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
export npm_config_arch="$(VSCODE_ARCH)"
|
|
||||||
|
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
machine github.com
|
machine github.com
|
||||||
login vscode
|
login vscode
|
||||||
@@ -86,22 +84,22 @@ steps:
|
|||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-linux-$VSCODE_ARCH-min-ci
|
yarn gulp vscode-linux-x64-min-ci
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-reh-linux-$VSCODE_ARCH-min-ci
|
yarn gulp vscode-reh-linux-x64-min-ci
|
||||||
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
|
||||||
yarn gulp vscode-web-linux-$VSCODE_ARCH-min-ci
|
yarn gulp vscode-reh-web-linux-x64-min-ci
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
yarn gulp "electron-$(VSCODE_ARCH)"
|
yarn gulp "electron-x64"
|
||||||
|
|
||||||
# xvfb seems to be crashing often, let's make sure it's always up
|
# xvfb seems to be crashing often, let's make sure it's always up
|
||||||
service xvfb start
|
service xvfb start
|
||||||
|
|
||||||
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)"
|
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-x64"
|
||||||
displayName: Run unit tests
|
displayName: Run unit tests
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
|
||||||
|
|
||||||
@@ -117,7 +115,7 @@ steps:
|
|||||||
- task: PublishPipelineArtifact@0
|
- task: PublishPipelineArtifact@0
|
||||||
displayName: 'Publish Pipeline Artifact'
|
displayName: 'Publish Pipeline Artifact'
|
||||||
inputs:
|
inputs:
|
||||||
artifactName: snap-$(VSCODE_ARCH)
|
artifactName: snap-x64
|
||||||
targetPath: .build/linux/snap-tarball
|
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
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ REPO="$(pwd)"
|
|||||||
ROOT="$REPO/.."
|
ROOT="$REPO/.."
|
||||||
|
|
||||||
# Publish tarball
|
# Publish tarball
|
||||||
PLATFORM_LINUX="linux-$VSCODE_ARCH"
|
PLATFORM_LINUX="linux-x64"
|
||||||
BUILDNAME="VSCode-$PLATFORM_LINUX"
|
BUILDNAME="VSCode-$PLATFORM_LINUX"
|
||||||
BUILD="$ROOT/$BUILDNAME"
|
BUILD="$ROOT/$BUILDNAME"
|
||||||
BUILD_VERSION="$(date +%s)"
|
BUILD_VERSION="$(date +%s)"
|
||||||
@@ -19,24 +19,22 @@ 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 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
|
(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -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" "$VSCODE_ARCH" "$VSCODE_HOCKEYAPP_ID_LINUX64"
|
node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "x64" "$VSCODE_HOCKEYAPP_ID_LINUX64"
|
||||||
|
|
||||||
# Publish DEB
|
# Publish DEB
|
||||||
yarn gulp "vscode-linux-$VSCODE_ARCH-build-deb"
|
yarn gulp "vscode-linux-x64-build-deb"
|
||||||
PLATFORM_DEB="linux-deb-$VSCODE_ARCH"
|
PLATFORM_DEB="linux-deb-x64"
|
||||||
DEB_ARCH="amd64"
|
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"
|
||||||
@@ -44,8 +42,8 @@ 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-$VSCODE_ARCH-build-rpm"
|
yarn gulp "vscode-linux-x64-build-rpm"
|
||||||
PLATFORM_RPM="linux-rpm-$VSCODE_ARCH"
|
PLATFORM_RPM="linux-rpm-x64"
|
||||||
RPM_ARCH="x86_64"
|
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"
|
||||||
@@ -53,10 +51,10 @@ 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-$VSCODE_ARCH-prepare-snap"
|
yarn gulp "vscode-linux-x64-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-$VSCODE_ARCH.tar.gz"
|
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-x64.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-$(VSCODE_ARCH)
|
artifactName: snap-x64
|
||||||
targetPath: .build/linux/snap-tarball
|
targetPath: .build/linux/snap-tarball
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
@@ -31,14 +31,13 @@ steps:
|
|||||||
|
|
||||||
# Define variables
|
# Define variables
|
||||||
REPO="$(pwd)"
|
REPO="$(pwd)"
|
||||||
ARCH="$(VSCODE_ARCH)"
|
SNAP_ROOT="$REPO/.build/linux/snap/x64"
|
||||||
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-$ARCH.tar.gz"
|
SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-x64.tar.gz"
|
||||||
(cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
|
(cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
|
||||||
|
|
||||||
# Create snap package
|
# Create snap package
|
||||||
@@ -52,4 +51,4 @@ steps:
|
|||||||
# 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-$ARCH" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
|
node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-x64" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
|
||||||
@@ -10,15 +10,12 @@ jobs:
|
|||||||
- job: Compile
|
- job: Compile
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
variables:
|
|
||||||
VSCODE_ARCH: x64
|
|
||||||
container: vscode-x64
|
container: vscode-x64
|
||||||
steps:
|
steps:
|
||||||
- template: product-compile.yml
|
- template: product-compile.yml
|
||||||
|
|
||||||
- job: Windows
|
- job: Windows
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
|
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: VS2017-Win2016
|
vmImage: VS2017-Win2016
|
||||||
variables:
|
variables:
|
||||||
@@ -30,7 +27,6 @@ jobs:
|
|||||||
|
|
||||||
- job: Windows32
|
- job: Windows32
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true'))
|
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: VS2017-Win2016
|
vmImage: VS2017-Win2016
|
||||||
variables:
|
variables:
|
||||||
@@ -42,11 +38,8 @@ jobs:
|
|||||||
|
|
||||||
- job: Linux
|
- job: Linux
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
|
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
variables:
|
|
||||||
VSCODE_ARCH: x64
|
|
||||||
container: vscode-x64
|
container: vscode-x64
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- Compile
|
- Compile
|
||||||
@@ -55,11 +48,8 @@ jobs:
|
|||||||
|
|
||||||
- job: LinuxSnap
|
- job: LinuxSnap
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
|
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
variables:
|
|
||||||
VSCODE_ARCH: x64
|
|
||||||
container: snapcraft
|
container: snapcraft
|
||||||
dependsOn: Linux
|
dependsOn: Linux
|
||||||
steps:
|
steps:
|
||||||
@@ -67,7 +57,6 @@ jobs:
|
|||||||
|
|
||||||
- job: LinuxArmhf
|
- job: LinuxArmhf
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
|
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
variables:
|
variables:
|
||||||
@@ -79,7 +68,6 @@ jobs:
|
|||||||
|
|
||||||
- job: LinuxAlpine
|
- job: LinuxAlpine
|
||||||
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
|
condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'Ubuntu-16.04'
|
vmImage: 'Ubuntu-16.04'
|
||||||
variables:
|
variables:
|
||||||
@@ -89,9 +77,19 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- template: linux/product-build-linux-multiarch.yml
|
- 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: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
|
||||||
timeoutInMinutes: 120
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: macOS 10.13
|
vmImage: macOS 10.13
|
||||||
dependsOn:
|
dependsOn:
|
||||||
@@ -130,8 +128,8 @@ jobs:
|
|||||||
- template: sync-mooncake.yml
|
- template: sync-mooncake.yml
|
||||||
|
|
||||||
schedules:
|
schedules:
|
||||||
- cron: "0 6 * * Mon-Fri"
|
- cron: "0 5 * * Mon-Fri"
|
||||||
displayName: Mon-Fri at 6:00
|
displayName: Mon-Fri at 7:00
|
||||||
branches:
|
branches:
|
||||||
include:
|
include:
|
||||||
- master
|
- master
|
||||||
@@ -6,8 +6,8 @@ steps:
|
|||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
inputs:
|
inputs:
|
||||||
keyfile: '.build/commit'
|
keyfile: 'build/.cachesalt, .build/commit'
|
||||||
targetfolder: '.build, **/out-build, **/out-vscode-min, **/out-vscode-reh-min, **/out-vscode-web-min'
|
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
||||||
vstsFeed: 'npm-vscode'
|
vstsFeed: 'npm-vscode'
|
||||||
platformIndependent: true
|
platformIndependent: true
|
||||||
alias: 'Compilation'
|
alias: 'Compilation'
|
||||||
@@ -31,8 +31,6 @@ steps:
|
|||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set -e
|
set -e
|
||||||
export npm_config_arch="$(VSCODE_ARCH)"
|
|
||||||
|
|
||||||
cat << EOF > ~/.netrc
|
cat << EOF > ~/.netrc
|
||||||
machine github.com
|
machine github.com
|
||||||
login vscode
|
login vscode
|
||||||
@@ -105,14 +103,21 @@ steps:
|
|||||||
yarn gulp compile-extensions-build
|
yarn gulp compile-extensions-build
|
||||||
yarn gulp minify-vscode
|
yarn gulp minify-vscode
|
||||||
yarn gulp minify-vscode-reh
|
yarn gulp minify-vscode-reh
|
||||||
yarn gulp minify-vscode-web
|
yarn gulp minify-vscode-reh-web
|
||||||
displayName: Compile
|
displayName: Compile
|
||||||
condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
|
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
|
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
||||||
inputs:
|
inputs:
|
||||||
keyfile: '.build/commit'
|
keyfile: 'build/.cachesalt, .build/commit'
|
||||||
targetfolder: '.build, **/out-build, **/out-vscode-min, **/out-vscode-reh-min, **/out-vscode-web-min'
|
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
||||||
vstsFeed: 'npm-vscode'
|
vstsFeed: 'npm-vscode'
|
||||||
platformIndependent: true
|
platformIndependent: true
|
||||||
alias: 'Compilation'
|
alias: 'Compilation'
|
||||||
|
|||||||
39
build/azure-pipelines/upload-sourcemaps.js
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. 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();
|
||||||
96
build/azure-pipelines/web/product-build-web.yml
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
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
|
||||||
15
build/azure-pipelines/web/publish.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/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"
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -6,8 +6,8 @@ steps:
|
|||||||
|
|
||||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||||
inputs:
|
inputs:
|
||||||
keyfile: '.build/commit'
|
keyfile: 'build/.cachesalt, .build/commit'
|
||||||
targetfolder: '.build, **/out-build, **/out-vscode-min, **/out-vscode-reh-min, **/out-vscode-web-min'
|
targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
|
||||||
vstsFeed: 'npm-vscode'
|
vstsFeed: 'npm-vscode'
|
||||||
platformIndependent: true
|
platformIndependent: true
|
||||||
alias: 'Compilation'
|
alias: 'Compilation'
|
||||||
@@ -98,7 +98,7 @@ steps:
|
|||||||
$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" }
|
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-min-ci" }
|
||||||
exec { yarn gulp "vscode-reh-win32-$env:VSCODE_ARCH-min-ci" }
|
exec { yarn gulp "vscode-reh-win32-$env:VSCODE_ARCH-min-ci" }
|
||||||
exec { yarn gulp "vscode-web-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-inno-updater" }
|
exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-inno-updater" }
|
||||||
displayName: Build
|
displayName: Build
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ms-vscode.references-view",
|
"name": "ms-vscode.references-view",
|
||||||
"version": "0.0.28",
|
"version": "0.0.29",
|
||||||
"repo": "https://github.com/Microsoft/vscode-reference-view",
|
"repo": "https://github.com/Microsoft/vscode-reference-view",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "dc489f46-520d-4556-ae85-1f9eab3c412d",
|
"id": "dc489f46-520d-4556-ae85-1f9eab3c412d",
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const gunzip = require('gulp-gunzip');
|
|||||||
const untar = require('gulp-untar');
|
const untar = require('gulp-untar');
|
||||||
const File = require('vinyl');
|
const File = require('vinyl');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const remote = require('gulp-remote-src');
|
const remote = require('gulp-remote-retry-src');
|
||||||
const rename = require('gulp-rename');
|
const rename = require('gulp-rename');
|
||||||
const filter = require('gulp-filter');
|
const filter = require('gulp-filter');
|
||||||
const cp = require('child_process');
|
const cp = require('child_process');
|
||||||
@@ -43,11 +43,11 @@ gulp.task('vscode-reh-linux-x64-min', noop);
|
|||||||
gulp.task('vscode-reh-linux-armhf-min', noop);
|
gulp.task('vscode-reh-linux-armhf-min', noop);
|
||||||
gulp.task('vscode-reh-linux-alpine-min', noop);
|
gulp.task('vscode-reh-linux-alpine-min', noop);
|
||||||
|
|
||||||
gulp.task('vscode-web-win32-ia32-min', noop);
|
gulp.task('vscode-reh-web-win32-ia32-min', noop);
|
||||||
gulp.task('vscode-web-win32-x64-min', noop);
|
gulp.task('vscode-reh-web-win32-x64-min', noop);
|
||||||
gulp.task('vscode-web-darwin-min', noop);
|
gulp.task('vscode-reh-web-darwin-min', noop);
|
||||||
gulp.task('vscode-web-linux-x64-min', noop);
|
gulp.task('vscode-reh-web-linux-x64-min', noop);
|
||||||
gulp.task('vscode-web-linux-alpine-min', noop);
|
gulp.task('vscode-reh-web-linux-alpine-min', noop);
|
||||||
|
|
||||||
function getNodeVersion() {
|
function getNodeVersion() {
|
||||||
const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
|
const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
|
||||||
|
|||||||
@@ -63,7 +63,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,cur,html}',
|
'out-build/vs/**/*.{svg,png,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',
|
||||||
@@ -77,8 +77,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/workbench/services/files/**/*.exe',
|
'out-build/vs/platform/files/**/*.exe',
|
||||||
'out-build/vs/workbench/services/files/**/*.md',
|
'out-build/vs/platform/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',
|
||||||
@@ -86,12 +86,6 @@ const vscodeResources = [
|
|||||||
'!**/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(
|
||||||
util.rimraf('out-vscode'),
|
util.rimraf('out-vscode'),
|
||||||
common.optimizeTask({
|
common.optimizeTask({
|
||||||
@@ -99,7 +93,6 @@ const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
|
|||||||
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
|
||||||
})
|
})
|
||||||
@@ -265,16 +258,14 @@ 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, '..'));
|
|
||||||
|
|
||||||
const extensions = gulp.src('.build/extensions/**', { base: '.build', dot: true });
|
const extensions = gulp.src('.build/extensions/**', { base: '.build', dot: true });
|
||||||
const sources = es.merge(src, extensions);
|
|
||||||
|
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') {
|
||||||
@@ -309,6 +300,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
|||||||
|
|
||||||
const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
|
const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
|
||||||
|
|
||||||
|
const root = path.resolve(path.join(__dirname, '..'));
|
||||||
const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]));
|
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 })
|
const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
|
||||||
@@ -475,6 +467,8 @@ 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';
|
||||||
@@ -494,6 +488,8 @@ 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';
|
||||||
@@ -531,32 +527,6 @@ gulp.task('vscode-translations-import', function () {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Sourcemaps
|
|
||||||
|
|
||||||
gulp.task('upload-vscode-sourcemaps', () => {
|
|
||||||
const vs = gulp.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 = gulp.src(['extensions/**/out/**/*.map', '!extensions/**/node_modules/**'], { base: '.' });
|
|
||||||
const extensionsDist = gulp.src(['extensions/**/dist/**/*.map', '!extensions/**/node_modules/**'], { 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) => {
|
||||||
|
|||||||
151
build/gulpfile.vscode.web.js
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. 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);
|
||||||
|
});
|
||||||
@@ -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-src");
|
const remote = require("gulp-remote-retry-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");
|
||||||
@@ -111,12 +111,6 @@ function fromLocalWebpack(extensionPath) {
|
|||||||
data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
|
data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
|
||||||
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
||||||
}), 'utf8');
|
}), '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);
|
this.emit('data', data);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
@@ -195,20 +189,21 @@ function packageLocalExtensionsStream() {
|
|||||||
})
|
})
|
||||||
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
||||||
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
|
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
|
||||||
return es.merge(gulp.src('extensions/node_modules/**', { base: '.' }), ...localExtensionDescriptions.map(extension => {
|
const nodeModules = gulp.src('extensions/node_modules/**', { base: '.' });
|
||||||
|
const localExtensions = localExtensionDescriptions.map(extension => {
|
||||||
return fromLocal(extension.path)
|
return fromLocal(extension.path)
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
}))
|
});
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']))
|
return es.merge(nodeModules, ...localExtensions)
|
||||||
.pipe(filter(['**', '!**/*.js.map']));
|
.pipe(util2.setExecutableBit(['**/*.sh']));
|
||||||
}
|
}
|
||||||
exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
|
exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
|
||||||
function packageMarketplaceExtensionsStream() {
|
function packageMarketplaceExtensionsStream() {
|
||||||
return es.merge(builtInExtensions.map(extension => {
|
const extensions = builtInExtensions.map(extension => {
|
||||||
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
}))
|
});
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']))
|
return es.merge(extensions)
|
||||||
.pipe(filter(['**', '!**/*.js.map']));
|
.pipe(util2.setExecutableBit(['**/*.sh']));
|
||||||
}
|
}
|
||||||
exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;
|
exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;
|
||||||
|
|||||||
@@ -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-src');
|
import remote = require('gulp-remote-retry-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');
|
||||||
@@ -130,12 +130,6 @@ function fromLocalWebpack(extensionPath: string): Stream {
|
|||||||
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
|
||||||
}), 'utf8');
|
}), '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);
|
this.emit('data', data);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
@@ -237,22 +231,22 @@ export function packageLocalExtensionsStream(): NodeJS.ReadWriteStream {
|
|||||||
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
|
||||||
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
|
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
|
||||||
|
|
||||||
return es.merge(
|
const nodeModules = gulp.src('extensions/node_modules/**', { base: '.' });
|
||||||
gulp.src('extensions/node_modules/**', { base: '.' }),
|
const localExtensions = localExtensionDescriptions.map(extension => {
|
||||||
...localExtensionDescriptions.map(extension => {
|
|
||||||
return fromLocal(extension.path)
|
return fromLocal(extension.path)
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
})
|
});
|
||||||
)
|
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']))
|
return es.merge(nodeModules, ...localExtensions)
|
||||||
.pipe(filter(['**', '!**/*.js.map']));
|
.pipe(util2.setExecutableBit(['**/*.sh']));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function packageMarketplaceExtensionsStream(): NodeJS.ReadWriteStream {
|
export function packageMarketplaceExtensionsStream(): NodeJS.ReadWriteStream {
|
||||||
return es.merge(builtInExtensions.map(extension => {
|
const extensions = builtInExtensions.map(extension => {
|
||||||
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
return fromMarketplace(extension.name, extension.version, extension.metadata)
|
||||||
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
|
||||||
}))
|
});
|
||||||
.pipe(util2.setExecutableBit(['**/*.sh']))
|
|
||||||
.pipe(filter(['**', '!**/*.js.map']));
|
return es.merge(extensions)
|
||||||
|
.pipe(util2.setExecutableBit(['**/*.sh']));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,12 +111,17 @@ 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;
|
const bundledFileHeader = opts.header || DEFAULT_FILE_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 () {
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ export interface IOptimizeTaskOpts {
|
|||||||
/**
|
/**
|
||||||
* (basically the Copyright treatment)
|
* (basically the Copyright treatment)
|
||||||
*/
|
*/
|
||||||
header: string;
|
header?: string;
|
||||||
/**
|
/**
|
||||||
* (emit bundleInfo.json file)
|
* (emit bundleInfo.json file)
|
||||||
*/
|
*/
|
||||||
@@ -169,12 +169,18 @@ 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;
|
const bundledFileHeader = opts.header || DEFAULT_FILE_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;
|
||||||
|
|
||||||
|
|||||||
@@ -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/files', 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/textfile', 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/files/node/fileService'), workbenchServices);
|
assert.deepEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), 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/files', project: workbenchProject },
|
workbenchServices = { name: 'vs/workbench/services/textfile', 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/files/node/fileService'), workbenchServices);
|
assert.deepEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
|
||||||
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
2
build/lib/typings/gulp-remote-src.d.ts
vendored
@@ -1,4 +1,4 @@
|
|||||||
declare module 'gulp-remote-src' {
|
declare module 'gulp-remote-retry-src' {
|
||||||
|
|
||||||
import stream = require("stream");
|
import stream = require("stream");
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"gulp-watch": "^4.3.9"
|
"gulp-watch": "5.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
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>>b).getProxyObject; // IWorkerClient
|
a = (<SimpleWorkerClient<any, any>>b).getProxyObject; // IWorkerClient
|
||||||
a = create1;
|
a = create1;
|
||||||
a = create2;
|
a = create2;
|
||||||
a = (<DocumentRangeFormattingEditProvider>b).extensionId;
|
a = (<DocumentRangeFormattingEditProvider>b).extensionId;
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ 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 {
|
||||||
|
|||||||
@@ -20,7 +20,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": "8.0.33",
|
"@types/node": "^10.14.8",
|
||||||
"@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,7 +29,7 @@
|
|||||||
"@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.6",
|
"applicationinsights": "1.0.8",
|
||||||
"azure-storage": "^2.1.0",
|
"azure-storage": "^2.1.0",
|
||||||
"documentdb": "1.13.0",
|
"documentdb": "1.13.0",
|
||||||
"github-releases": "^0.4.1",
|
"github-releases": "^0.4.1",
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
"tslint": "^5.9.1",
|
"tslint": "^5.9.1",
|
||||||
"typescript": "3.5.2",
|
"typescript": "3.5.2",
|
||||||
"vsce": "1.48.0",
|
"vsce": "1.48.0",
|
||||||
|
"vscode-telemetry-extractor": "^1.5.1",
|
||||||
"xml2js": "^0.4.17"
|
"xml2js": "^0.4.17"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
351
build/yarn.lock
@@ -2,6 +2,14 @@
|
|||||||
# 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"
|
||||||
@@ -10,6 +18,27 @@
|
|||||||
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"
|
||||||
@@ -166,10 +195,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@8.0.33":
|
"@types/node@^10.14.8":
|
||||||
version "8.0.33"
|
version "10.14.13"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.33.tgz#1126e94374014e54478092830704f6ea89df04cd"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.13.tgz#ac786d623860adf39a3f51d629480aacd6a6eec7"
|
||||||
integrity sha512-vmCdO8Bm1ExT+FWfC9sd9r4jwqM7o97gGy2WBshkkXbf/2nLAJQUrZfIhw27yVOtLUev6kSZc4cav/46KbDd8A==
|
integrity sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==
|
||||||
|
|
||||||
"@types/pump@^1.0.1":
|
"@types/pump@^1.0.1":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@@ -328,10 +357,10 @@ ansi-wrap@0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
|
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
|
||||||
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
|
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
|
||||||
|
|
||||||
applicationinsights@1.0.6:
|
applicationinsights@1.0.8:
|
||||||
version "1.0.6"
|
version "1.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.6.tgz#bc201810de91cea910dab34e8ad35ecde488edeb"
|
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.8.tgz#db6e3d983cf9f9405fe1ee5ba30ac6e1914537b5"
|
||||||
integrity sha512-VQT3kBpJVPw5fCO5n+WUeSx0VHjxFtD7znYbILBlVgOS9/cMDuGFmV2Br3ObzFyZUDGNbEfW36fD1y2/vAiCKw==
|
integrity sha512-KzOOGdphOS/lXWMFZe5440LUdFbrLpMvh2SaRxn7BmiI550KAoSb2gIhiq6kJZ9Ir3AxRRztjhzif+e5P5IXIg==
|
||||||
dependencies:
|
dependencies:
|
||||||
diagnostic-channel "0.2.0"
|
diagnostic-channel "0.2.0"
|
||||||
diagnostic-channel-publishers "0.2.1"
|
diagnostic-channel-publishers "0.2.1"
|
||||||
@@ -344,16 +373,36 @@ argparse@^1.0.7:
|
|||||||
dependencies:
|
dependencies:
|
||||||
sprintf-js "~1.0.2"
|
sprintf-js "~1.0.2"
|
||||||
|
|
||||||
|
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@^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.2:
|
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"
|
||||||
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
|
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -481,6 +530,13 @@ brace-expansion@^1.1.7:
|
|||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
concat-map "0.0.1"
|
concat-map "0.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"
|
||||||
@@ -548,6 +604,11 @@ 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==
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
color-convert@^1.9.0:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||||
@@ -584,6 +645,16 @@ 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"
|
||||||
@@ -710,6 +781,13 @@ 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"
|
||||||
@@ -829,11 +907,30 @@ 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"
|
||||||
@@ -841,6 +938,20 @@ fd-slicer@~1.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
pend "~1.2.0"
|
pend "~1.2.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"
|
||||||
|
|
||||||
forever-agent@~0.6.1:
|
forever-agent@~0.6.1:
|
||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||||
@@ -864,6 +975,15 @@ form-data@~2.3.1:
|
|||||||
combined-stream "1.0.6"
|
combined-stream "1.0.6"
|
||||||
mime-types "^2.1.12"
|
mime-types "^2.1.12"
|
||||||
|
|
||||||
|
fs-extra@^8.1.0:
|
||||||
|
version "8.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
|
||||||
|
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
|
||||||
|
dependencies:
|
||||||
|
graceful-fs "^4.2.0"
|
||||||
|
jsonfile "^4.0.0"
|
||||||
|
universalify "^0.1.0"
|
||||||
|
|
||||||
fs.realpath@^1.0.0:
|
fs.realpath@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
@@ -886,6 +1006,13 @@ github-releases@^0.4.1:
|
|||||||
prettyjson "1.2.1"
|
prettyjson "1.2.1"
|
||||||
request "2.81.0"
|
request "2.81.0"
|
||||||
|
|
||||||
|
glob-parent@^5.0.0:
|
||||||
|
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.6, glob@^7.1.1:
|
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"
|
||||||
@@ -898,6 +1025,32 @@ 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"
|
||||||
|
|
||||||
glogg@^1.0.0:
|
glogg@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810"
|
resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810"
|
||||||
@@ -910,6 +1063,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.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==
|
||||||
|
|
||||||
gulp-bom@^1.0.0:
|
gulp-bom@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/gulp-bom/-/gulp-bom-1.0.0.tgz#38a183a07187bd57a7922d37977441f379df2abf"
|
resolved "https://registry.yarnpkg.com/gulp-bom/-/gulp-bom-1.0.0.tgz#38a183a07187bd57a7922d37977441f379df2abf"
|
||||||
@@ -1086,6 +1244,11 @@ iconv-lite@0.4.23:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safer-buffer ">= 2.1.2 < 3"
|
safer-buffer ">= 2.1.2 < 3"
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -1094,21 +1257,75 @@ inflight@^1.0.4:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
wrappy "1"
|
wrappy "1"
|
||||||
|
|
||||||
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
inherits@2:
|
||||||
|
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=
|
||||||
|
|
||||||
|
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-extglob@^2.1.1:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||||
|
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
|
||||||
|
|
||||||
|
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-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@^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-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-typedarray@~1.0.0:
|
is-typedarray@~1.0.0:
|
||||||
version "1.0.0"
|
version "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:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
|
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
||||||
|
|
||||||
isarray@0.0.1:
|
isarray@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||||
@@ -1171,6 +1388,13 @@ 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:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
|
||||||
|
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
|
||||||
|
optionalDependencies:
|
||||||
|
graceful-fs "^4.1.6"
|
||||||
|
|
||||||
jsonify@~0.0.0:
|
jsonify@~0.0.0:
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
|
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
|
||||||
@@ -1248,6 +1472,11 @@ 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"
|
||||||
@@ -1331,6 +1560,19 @@ 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@^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"
|
||||||
@@ -1382,6 +1624,17 @@ ms@2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -1480,6 +1733,11 @@ 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"
|
||||||
@@ -1495,6 +1753,11 @@ 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==
|
||||||
|
|
||||||
prettyjson@1.2.1:
|
prettyjson@1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.1.tgz#fcffab41d19cab4dfae5e575e64246619b12d289"
|
resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.1.tgz#fcffab41d19cab4dfae5e575e64246619b12d289"
|
||||||
@@ -1667,6 +1930,16 @@ resolve@^1.3.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.5"
|
path-parse "^1.0.5"
|
||||||
|
|
||||||
|
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==
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -1702,6 +1975,11 @@ semver@^5.1.0, semver@^5.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
|
||||||
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
|
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
|
||||||
|
|
||||||
|
slash@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
|
||||||
|
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
|
||||||
|
|
||||||
sntp@1.x.x:
|
sntp@1.x.x:
|
||||||
version "1.0.9"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
|
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
|
||||||
@@ -1825,6 +2103,13 @@ tmp@0.0.29:
|
|||||||
dependencies:
|
dependencies:
|
||||||
os-tmpdir "~1.0.1"
|
os-tmpdir "~1.0.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"
|
||||||
|
|
||||||
tough-cookie@~2.3.0:
|
tough-cookie@~2.3.0:
|
||||||
version "2.3.3"
|
version "2.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
|
||||||
@@ -1839,6 +2124,20 @@ 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"
|
||||||
@@ -1899,11 +2198,26 @@ typescript@3.5.2:
|
|||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c"
|
||||||
integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==
|
integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==
|
||||||
|
|
||||||
|
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"
|
||||||
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
|
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
|
||||||
integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==
|
integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==
|
||||||
|
|
||||||
|
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"
|
||||||
@@ -1914,6 +2228,11 @@ underscore@^1.8.3:
|
|||||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
|
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
|
||||||
integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
|
integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
|
||||||
|
|
||||||
|
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==
|
||||||
|
|
||||||
urix@^0.1.0:
|
urix@^0.1.0:
|
||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
|
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
|
||||||
@@ -1994,6 +2313,20 @@ 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.1:
|
||||||
|
version "1.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.1.tgz#67249e4ca9c65a21800ca53880732f8cef98d0fa"
|
||||||
|
integrity sha512-B5SnEdRiDrI4o6NMG9iHmengoaW1rxUQmS/sCaripgnchm+P79JURmKxhfXr5eRo4Mr1QSenFT/SDNaEop7aoQ==
|
||||||
|
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"
|
||||||
|
|||||||
@@ -60,12 +60,12 @@
|
|||||||
"git": {
|
"git": {
|
||||||
"name": "electron",
|
"name": "electron",
|
||||||
"repositoryUrl": "https://github.com/electron/electron",
|
"repositoryUrl": "https://github.com/electron/electron",
|
||||||
"commitHash": "5d67ec3da5376a5058990e8a9557bc9124ad59a8"
|
"commitHash": "36ea114ac0616e469e75ae94e6d53af48925e036"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"isOnlyProductionDependency": true,
|
"isOnlyProductionDependency": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"version": "4.2.5"
|
"version": "4.2.7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"component": {
|
"component": {
|
||||||
|
|||||||
@@ -63,11 +63,20 @@ function registerVariableCompletions(pattern: string): vscode.Disposable {
|
|||||||
const indexOf$ = document.lineAt(position.line).text.indexOf('$');
|
const indexOf$ = document.lineAt(position.line).text.indexOf('$');
|
||||||
const startPosition = indexOf$ >= 0 ? new vscode.Position(position.line, indexOf$) : position;
|
const startPosition = indexOf$ >= 0 ? new vscode.Position(position.line, indexOf$) : position;
|
||||||
|
|
||||||
return [{ label: 'workspaceFolder', detail: localize('workspaceFolder', "The path of the folder opened in VS Code") }, { label: 'workspaceFolderBasename', detail: localize('workspaceFolderBasename', "The name of the folder opened in VS Code without any slashes (/)") },
|
return [
|
||||||
{ label: 'relativeFile', detail: localize('relativeFile', "The current opened file relative to ${workspaceFolder}") }, { label: 'file', detail: localize('file', "The current opened file") }, { label: 'cwd', detail: localize('cwd', "The task runner's current working directory on startup") },
|
{ label: 'workspaceFolder', detail: localize('workspaceFolder', "The path of the folder opened in VS Code") },
|
||||||
{ label: 'lineNumber', detail: localize('lineNumber', "The current selected line number in the active file") }, { label: 'selectedText', detail: localize('selectedText', "The current selected text in the active file") },
|
{ label: 'workspaceFolderBasename', detail: localize('workspaceFolderBasename', "The name of the folder opened in VS Code without any slashes (/)") },
|
||||||
{ label: 'fileDirname', detail: localize('fileDirname', "The current opened file's dirname") }, { label: 'fileExtname', detail: localize('fileExtname', "The current opened file's extension") }, { label: 'fileBasename', detail: localize('fileBasename', "The current opened file's basename") },
|
{ label: 'relativeFile', detail: localize('relativeFile', "The current opened file relative to ${workspaceFolder}") },
|
||||||
{ label: 'fileBasenameNoExtension', detail: localize('fileBasenameNoExtension', "The current opened file's basename with no file extension") }].map(variable => ({
|
{ label: 'relativeFileDirname', detail: localize('relativeFileDirname', "The current opened file's dirname relative to ${workspaceFolder}") },
|
||||||
|
{ label: 'file', detail: localize('file', "The current opened file") },
|
||||||
|
{ label: 'cwd', detail: localize('cwd', "The task runner's current working directory on startup") },
|
||||||
|
{ label: 'lineNumber', detail: localize('lineNumber', "The current selected line number in the active file") },
|
||||||
|
{ label: 'selectedText', detail: localize('selectedText', "The current selected text in the active file") },
|
||||||
|
{ label: 'fileDirname', detail: localize('fileDirname', "The current opened file's dirname") },
|
||||||
|
{ label: 'fileExtname', detail: localize('fileExtname', "The current opened file's extension") },
|
||||||
|
{ label: 'fileBasename', detail: localize('fileBasename', "The current opened file's basename") },
|
||||||
|
{ label: 'fileBasenameNoExtension', detail: localize('fileBasenameNoExtension', "The current opened file's basename with no file extension") }
|
||||||
|
].map(variable => ({
|
||||||
label: '${' + variable.label + '}',
|
label: '${' + variable.label + '}',
|
||||||
range: new vscode.Range(startPosition, position),
|
range: new vscode.Range(startPosition, position),
|
||||||
detail: variable.detail
|
detail: variable.detail
|
||||||
|
|||||||
@@ -13,8 +13,7 @@
|
|||||||
{ "open": "{", "close": "}" },
|
{ "open": "{", "close": "}" },
|
||||||
{ "open": "(", "close": ")" },
|
{ "open": "(", "close": ")" },
|
||||||
{ "open": "'", "close": "'", "notIn": ["string", "comment"] },
|
{ "open": "'", "close": "'", "notIn": ["string", "comment"] },
|
||||||
{ "open": "\"", "close": "\"", "notIn": ["string"] },
|
{ "open": "\"", "close": "\"", "notIn": ["string"] }
|
||||||
{ "open": "/**", "close": " */", "notIn": ["string", "comment"] }
|
|
||||||
],
|
],
|
||||||
"surroundingPairs": [
|
"surroundingPairs": [
|
||||||
["{", "}"],
|
["{", "}"],
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import * as fs from 'fs';
|
|||||||
import * as nls from 'vscode-nls';
|
import * as nls from 'vscode-nls';
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString, workspace, TextDocument, SelectionRange } from 'vscode';
|
import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString, workspace } from 'vscode';
|
||||||
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, Disposable } from 'vscode-languageclient';
|
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, Disposable } from 'vscode-languageclient';
|
||||||
import { getCustomDataPathsInAllWorkspaces, getCustomDataPathsFromAllExtensions } from './customData';
|
import { getCustomDataPathsInAllWorkspaces, getCustomDataPathsFromAllExtensions } from './customData';
|
||||||
|
|
||||||
@@ -78,26 +78,6 @@ export function activate(context: ExtensionContext) {
|
|||||||
|
|
||||||
client.onReady().then(() => {
|
client.onReady().then(() => {
|
||||||
context.subscriptions.push(initCompletionProvider());
|
context.subscriptions.push(initCompletionProvider());
|
||||||
|
|
||||||
documentSelector.forEach(selector => {
|
|
||||||
context.subscriptions.push(languages.registerSelectionRangeProvider(selector, {
|
|
||||||
async provideSelectionRanges(document: TextDocument, positions: Position[]): Promise<SelectionRange[]> {
|
|
||||||
const textDocument = client.code2ProtocolConverter.asTextDocumentIdentifier(document);
|
|
||||||
const rawResult = await client.sendRequest<SelectionRange[][]>('$/textDocument/selectionRanges', { textDocument, positions: positions.map(client.code2ProtocolConverter.asPosition) });
|
|
||||||
if (Array.isArray(rawResult)) {
|
|
||||||
return rawResult.map(rawSelectionRanges => {
|
|
||||||
return rawSelectionRanges.reduceRight((parent: SelectionRange | undefined, selectionRange: SelectionRange) => {
|
|
||||||
return {
|
|
||||||
range: client.protocol2CodeConverter.asRange(selectionRange.range),
|
|
||||||
parent
|
|
||||||
};
|
|
||||||
}, undefined)!;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function initCompletionProvider(): Disposable {
|
function initCompletionProvider(): Disposable {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
},
|
},
|
||||||
"main": "./out/cssServerMain",
|
"main": "./out/cssServerMain",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"vscode-css-languageservice": "^4.0.2",
|
"vscode-css-languageservice": "^4.0.3-next.1",
|
||||||
"vscode-languageserver": "^5.3.0-next.8"
|
"vscode-languageserver": "^5.3.0-next.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -8,11 +8,12 @@ import {
|
|||||||
} from 'vscode-languageserver';
|
} from 'vscode-languageserver';
|
||||||
import URI from 'vscode-uri';
|
import URI from 'vscode-uri';
|
||||||
import { TextDocument, CompletionList, Position } from 'vscode-languageserver-types';
|
import { TextDocument, CompletionList, Position } from 'vscode-languageserver-types';
|
||||||
|
import { stat as fsStat } from 'fs';
|
||||||
|
|
||||||
import { getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService, LanguageSettings, LanguageService, Stylesheet } from 'vscode-css-languageservice';
|
import { getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService, LanguageSettings, LanguageService, Stylesheet, FileSystemProvider, FileType } from 'vscode-css-languageservice';
|
||||||
import { getLanguageModelCache } from './languageModelCache';
|
import { getLanguageModelCache } from './languageModelCache';
|
||||||
import { getPathCompletionParticipant } from './pathCompletion';
|
import { getPathCompletionParticipant } from './pathCompletion';
|
||||||
import { formatError, runSafe } from './utils/runner';
|
import { formatError, runSafe, runSafeAsync } from './utils/runner';
|
||||||
import { getDocumentContext } from './utils/documentContext';
|
import { getDocumentContext } from './utils/documentContext';
|
||||||
import { getDataProviders } from './customData';
|
import { getDataProviders } from './customData';
|
||||||
|
|
||||||
@@ -52,6 +53,45 @@ let workspaceFolders: WorkspaceFolder[];
|
|||||||
|
|
||||||
const languageServices: { [id: string]: LanguageService } = {};
|
const languageServices: { [id: string]: LanguageService } = {};
|
||||||
|
|
||||||
|
const fileSystemProvider: FileSystemProvider = {
|
||||||
|
stat(documentUri: string) {
|
||||||
|
const filePath = URI.parse(documentUri).fsPath;
|
||||||
|
|
||||||
|
return new Promise((c, e) => {
|
||||||
|
fsStat(filePath, (err, stats) => {
|
||||||
|
if (err) {
|
||||||
|
if (err.code === 'ENOENT') {
|
||||||
|
return c({
|
||||||
|
type: FileType.Unknown,
|
||||||
|
ctime: -1,
|
||||||
|
mtime: -1,
|
||||||
|
size: -1
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return e(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let type = FileType.Unknown;
|
||||||
|
if (stats.isFile()) {
|
||||||
|
type = FileType.File;
|
||||||
|
} else if (stats.isDirectory) {
|
||||||
|
type = FileType.Directory;
|
||||||
|
} else if (stats.isSymbolicLink) {
|
||||||
|
type = FileType.SymbolicLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
c({
|
||||||
|
type,
|
||||||
|
ctime: stats.ctime.getTime(),
|
||||||
|
mtime: stats.mtime.getTime(),
|
||||||
|
size: stats.size
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// After the server has started the client sends an initialize request. The server receives
|
// After the server has started the client sends an initialize request. The server receives
|
||||||
// in the passed params the rootPath of the workspace plus the client capabilities.
|
// in the passed params the rootPath of the workspace plus the client capabilities.
|
||||||
connection.onInitialize((params: InitializeParams): InitializeResult => {
|
connection.onInitialize((params: InitializeParams): InitializeResult => {
|
||||||
@@ -81,9 +121,9 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
|
|||||||
scopedSettingsSupport = !!getClientCapability('workspace.configuration', false);
|
scopedSettingsSupport = !!getClientCapability('workspace.configuration', false);
|
||||||
foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE);
|
foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE);
|
||||||
|
|
||||||
languageServices.css = getCSSLanguageService({ customDataProviders });
|
languageServices.css = getCSSLanguageService({ customDataProviders, fileSystemProvider, clientCapabilities: params.capabilities });
|
||||||
languageServices.scss = getSCSSLanguageService({ customDataProviders });
|
languageServices.scss = getSCSSLanguageService({ customDataProviders, fileSystemProvider, clientCapabilities: params.capabilities });
|
||||||
languageServices.less = getLESSLanguageService({ customDataProviders });
|
languageServices.less = getLESSLanguageService({ customDataProviders, fileSystemProvider, clientCapabilities: params.capabilities });
|
||||||
|
|
||||||
const capabilities: ServerCapabilities = {
|
const capabilities: ServerCapabilities = {
|
||||||
// Tell the client that the server works in FULL text document sync mode
|
// Tell the client that the server works in FULL text document sync mode
|
||||||
@@ -100,7 +140,8 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
|
|||||||
codeActionProvider: true,
|
codeActionProvider: true,
|
||||||
renameProvider: true,
|
renameProvider: true,
|
||||||
colorProvider: {},
|
colorProvider: {},
|
||||||
foldingRangeProvider: true
|
foldingRangeProvider: true,
|
||||||
|
selectionRangeProvider: true
|
||||||
};
|
};
|
||||||
return { capabilities };
|
return { capabilities };
|
||||||
});
|
});
|
||||||
@@ -256,13 +297,13 @@ connection.onDocumentHighlight((documentHighlightParams, token) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
connection.onDocumentLinks((documentLinkParams, token) => {
|
connection.onDocumentLinks(async (documentLinkParams, token) => {
|
||||||
return runSafe(() => {
|
return runSafeAsync(async () => {
|
||||||
const document = documents.get(documentLinkParams.textDocument.uri);
|
const document = documents.get(documentLinkParams.textDocument.uri);
|
||||||
if (document) {
|
if (document) {
|
||||||
const documentContext = getDocumentContext(document.uri, workspaceFolders);
|
const documentContext = getDocumentContext(document.uri, workspaceFolders);
|
||||||
const stylesheet = stylesheets.get(document);
|
const stylesheet = stylesheets.get(document);
|
||||||
return getLanguageService(document).findDocumentLinks(document, stylesheet, documentContext);
|
return await getLanguageService(document).findDocumentLinks2(document, stylesheet, documentContext);
|
||||||
}
|
}
|
||||||
return [];
|
return [];
|
||||||
}, [], `Error while computing document links for ${documentLinkParams.textDocument.uri}`, token);
|
}, [], `Error while computing document links for ${documentLinkParams.textDocument.uri}`, token);
|
||||||
@@ -334,7 +375,7 @@ connection.onFoldingRanges((params, token) => {
|
|||||||
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
|
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.onRequest('$/textDocument/selectionRanges', async (params, token) => {
|
connection.onSelectionRanges((params, token) => {
|
||||||
return runSafe(() => {
|
return runSafe(() => {
|
||||||
const document = documents.get(params.textDocument.uri);
|
const document = documents.get(params.textDocument.uri);
|
||||||
const positions: Position[] = params.positions;
|
const positions: Position[] = params.positions;
|
||||||
@@ -343,8 +384,8 @@ connection.onRequest('$/textDocument/selectionRanges', async (params, token) =>
|
|||||||
const stylesheet = stylesheets.get(document);
|
const stylesheet = stylesheets.get(document);
|
||||||
return getLanguageService(document).getSelectionRanges(document, positions, stylesheet);
|
return getLanguageService(document).getSelectionRanges(document, positions, stylesheet);
|
||||||
}
|
}
|
||||||
return Promise.resolve(null);
|
return [];
|
||||||
}, null, `Error while computing selection ranges for ${params.textDocument.uri}`, token);
|
}, [], `Error while computing selection ranges for ${params.textDocument.uri}`, token);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -154,10 +154,10 @@ function pathToReplaceRange(valueBeforeCursor: string, fullValue: string, fullVa
|
|||||||
const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1);
|
const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1);
|
||||||
const startPos = shiftPosition(fullValueRange.end, -valueAfterLastSlash.length);
|
const startPos = shiftPosition(fullValueRange.end, -valueAfterLastSlash.length);
|
||||||
// If whitespace exists, replace until it
|
// If whitespace exists, replace until it
|
||||||
const whiteSpaceIndex = valueAfterLastSlash.indexOf(' ');
|
const whitespaceIndex = valueAfterLastSlash.indexOf(' ');
|
||||||
let endPos;
|
let endPos;
|
||||||
if (whiteSpaceIndex !== -1) {
|
if (whitespaceIndex !== -1) {
|
||||||
endPos = shiftPosition(startPos, whiteSpaceIndex);
|
endPos = shiftPosition(startPos, whitespaceIndex);
|
||||||
} else {
|
} else {
|
||||||
endPos = fullValueRange.end;
|
endPos = fullValueRange.end;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,27 @@ export function formatError(message: string, err: any): string {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function runSafeAsync<T>(func: () => Thenable<T>, errorVal: T, errorMessage: string, token: CancellationToken): Thenable<T | ResponseError<any>> {
|
||||||
|
return new Promise<T | ResponseError<any>>((resolve) => {
|
||||||
|
setImmediate(() => {
|
||||||
|
if (token.isCancellationRequested) {
|
||||||
|
resolve(cancelValue());
|
||||||
|
}
|
||||||
|
return func().then(result => {
|
||||||
|
if (token.isCancellationRequested) {
|
||||||
|
resolve(cancelValue());
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
}, e => {
|
||||||
|
console.error(formatError(errorMessage, e));
|
||||||
|
resolve(errorVal);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function runSafe<T, E>(func: () => T, errorVal: T, errorMessage: string, token: CancellationToken): Thenable<T | ResponseError<E>> {
|
export function runSafe<T, E>(func: () => T, errorVal: T, errorMessage: string, token: CancellationToken): Thenable<T | ResponseError<E>> {
|
||||||
return new Promise<T | ResponseError<E>>((resolve) => {
|
return new Promise<T | ResponseError<E>>((resolve) => {
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
|
|||||||
@@ -781,13 +781,14 @@ supports-color@^5.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-flag "^3.0.0"
|
has-flag "^3.0.0"
|
||||||
|
|
||||||
vscode-css-languageservice@^4.0.2:
|
vscode-css-languageservice@^4.0.3-next.1:
|
||||||
version "4.0.2"
|
version "4.0.3-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.2.tgz#7496e538b0c151feac16d5888cc0b1b104f4c736"
|
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.3-next.1.tgz#e89d01ce0d79b3e6c2642f5e3ad73cb8160d38d9"
|
||||||
integrity sha512-pTnfXbsME3pl+yDfhUp/mtvPyIJk0Le4zqJxDn56s9GY9LqY0RmkSEh0oHH6D0HXR3Ni6wKosIaqu8a2G0+jdw==
|
integrity sha512-Zrm5TeraVUJ8vRikWhFt259dQu+WK+Ie3K5UA8BB4kqcanoM+1mcnIt8fPkTXlZLbiEWElrkJ9yuYbDNkufeBg==
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-languageserver-types "^3.15.0-next.2"
|
vscode-languageserver-types "^3.15.0-next.2"
|
||||||
vscode-nls "^4.1.1"
|
vscode-nls "^4.1.1"
|
||||||
|
vscode-uri "^2.0.3"
|
||||||
|
|
||||||
vscode-jsonrpc@^4.1.0-next.2:
|
vscode-jsonrpc@^4.1.0-next.2:
|
||||||
version "4.1.0-next.2"
|
version "4.1.0-next.2"
|
||||||
@@ -831,6 +832,11 @@ vscode-uri@^1.0.6:
|
|||||||
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d"
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d"
|
||||||
integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==
|
integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==
|
||||||
|
|
||||||
|
vscode-uri@^2.0.3:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
|
||||||
|
integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
|
||||||
|
|
||||||
which-module@^2.0.0:
|
which-module@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
test/**
|
test/**
|
||||||
cgmanifest.json
|
cgmanifest.json
|
||||||
|
.vscode
|
||||||
@@ -3,3 +3,4 @@ tsconfig.json
|
|||||||
out/**
|
out/**
|
||||||
extension.webpack.config.js
|
extension.webpack.config.js
|
||||||
yarn.lock
|
yarn.lock
|
||||||
|
.vscode
|
||||||
@@ -137,8 +137,7 @@ class ServerReadyDetector extends vscode.Disposable {
|
|||||||
break;
|
break;
|
||||||
case 'debugWithChrome':
|
case 'debugWithChrome':
|
||||||
|
|
||||||
const chrome = vscode.extensions.getExtension('msjsdiag.debugger-for-chrome');
|
if (vscode.env.remoteName === 'wsl' || !!vscode.extensions.getExtension('msjsdiag.debugger-for-chrome')) {
|
||||||
if (chrome) {
|
|
||||||
vscode.debug.startDebugging(session.workspaceFolder, {
|
vscode.debug.startDebugging(session.workspaceFolder, {
|
||||||
type: 'chrome',
|
type: 'chrome',
|
||||||
name: 'Chrome Debug',
|
name: 'Chrome Debug',
|
||||||
|
|||||||
@@ -6,3 +6,4 @@ extension.webpack.config.js
|
|||||||
CONTRIBUTING.md
|
CONTRIBUTING.md
|
||||||
cgmanifest.json
|
cgmanifest.json
|
||||||
yarn.lock
|
yarn.lock
|
||||||
|
.vscode
|
||||||
@@ -84,8 +84,8 @@ function doWrapping(individualLines: boolean, args: any) {
|
|||||||
|
|
||||||
const firstLineOfSelection = editor.document.lineAt(rangeToReplace.start).text.substr(rangeToReplace.start.character);
|
const firstLineOfSelection = editor.document.lineAt(rangeToReplace.start).text.substr(rangeToReplace.start.character);
|
||||||
const matches = firstLineOfSelection.match(/^(\s*)/);
|
const matches = firstLineOfSelection.match(/^(\s*)/);
|
||||||
const extraWhiteSpaceSelected = matches ? matches[1].length : 0;
|
const extraWhitespaceSelected = matches ? matches[1].length : 0;
|
||||||
rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + extraWhiteSpaceSelected, rangeToReplace.end.line, rangeToReplace.end.character);
|
rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + extraWhitespaceSelected, rangeToReplace.end.line, rangeToReplace.end.character);
|
||||||
|
|
||||||
let textToWrapInPreview: string[];
|
let textToWrapInPreview: string[];
|
||||||
let textToReplace = editor.document.getText(rangeToReplace);
|
let textToReplace = editor.document.getText(rangeToReplace);
|
||||||
@@ -94,8 +94,8 @@ function doWrapping(individualLines: boolean, args: any) {
|
|||||||
} else {
|
} else {
|
||||||
const wholeFirstLine = editor.document.lineAt(rangeToReplace.start).text;
|
const wholeFirstLine = editor.document.lineAt(rangeToReplace.start).text;
|
||||||
const otherMatches = wholeFirstLine.match(/^(\s*)/);
|
const otherMatches = wholeFirstLine.match(/^(\s*)/);
|
||||||
const preceedingWhiteSpace = otherMatches ? otherMatches[1] : '';
|
const preceedingWhitespace = otherMatches ? otherMatches[1] : '';
|
||||||
textToWrapInPreview = rangeToReplace.isSingleLine ? [textToReplace] : ['\n\t' + textToReplace.split('\n' + preceedingWhiteSpace).join('\n\t') + '\n'];
|
textToWrapInPreview = rangeToReplace.isSingleLine ? [textToReplace] : ['\n\t' + textToReplace.split('\n' + preceedingWhitespace).join('\n\t') + '\n'];
|
||||||
}
|
}
|
||||||
textToWrapInPreview = textToWrapInPreview.map(e => e.replace(/(\$\d)/g, '\\$1'));
|
textToWrapInPreview = textToWrapInPreview.map(e => e.replace(/(\$\d)/g, '\\$1'));
|
||||||
|
|
||||||
|
|||||||
@@ -1246,12 +1246,18 @@
|
|||||||
},
|
},
|
||||||
"git.ignoredRepositories": {
|
"git.ignoredRepositories": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"default": [],
|
"default": [],
|
||||||
"scope": "window",
|
"scope": "window",
|
||||||
"description": "%config.ignoredRepositories%"
|
"description": "%config.ignoredRepositories%"
|
||||||
},
|
},
|
||||||
"git.scanRepositories": {
|
"git.scanRepositories": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"default": [],
|
"default": [],
|
||||||
"scope": "resource",
|
"scope": "resource",
|
||||||
"description": "%config.scanRepositories%"
|
"description": "%config.scanRepositories%"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import { Model } from '../model';
|
import { Model } from '../model';
|
||||||
import { Repository as BaseRepository, Resource } from '../repository';
|
import { Repository as BaseRepository, Resource } from '../repository';
|
||||||
import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions } from './git';
|
import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState } from './git';
|
||||||
import { Event, SourceControlInputBox, Uri, SourceControl } from 'vscode';
|
import { Event, SourceControlInputBox, Uri, SourceControl } from 'vscode';
|
||||||
import { mapEvent } from '../util';
|
import { mapEvent } from '../util';
|
||||||
|
|
||||||
@@ -214,6 +214,14 @@ export class ApiImpl implements API {
|
|||||||
|
|
||||||
readonly git = new ApiGit(this._model);
|
readonly git = new ApiGit(this._model);
|
||||||
|
|
||||||
|
get state(): APIState {
|
||||||
|
return this._model.state;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidChangeState(): Event<APIState> {
|
||||||
|
return this._model.onDidChangeState;
|
||||||
|
}
|
||||||
|
|
||||||
get onDidOpenRepository(): Event<Repository> {
|
get onDidOpenRepository(): Event<Repository> {
|
||||||
return mapEvent(this._model.onDidOpenRepository, r => new ApiRepository(r));
|
return mapEvent(this._model.onDidOpenRepository, r => new ApiRepository(r));
|
||||||
}
|
}
|
||||||
|
|||||||
4
extensions/git/src/api/git.d.ts
vendored
@@ -176,7 +176,11 @@ export interface Repository {
|
|||||||
log(options?: LogOptions): Promise<Commit[]>;
|
log(options?: LogOptions): Promise<Commit[]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type APIState = 'uninitialized' | 'initialized';
|
||||||
|
|
||||||
export interface API {
|
export interface API {
|
||||||
|
readonly state: APIState;
|
||||||
|
readonly onDidChangeState: Event<APIState>;
|
||||||
readonly git: Git;
|
readonly git: Git;
|
||||||
readonly repositories: Repository[];
|
readonly repositories: Repository[];
|
||||||
readonly onDidOpenRepository: Event<Repository>;
|
readonly onDidOpenRepository: Event<Repository>;
|
||||||
|
|||||||
@@ -1115,7 +1115,7 @@ export class CommandCenter {
|
|||||||
|
|
||||||
if (scmResources.length === 1) {
|
if (scmResources.length === 1) {
|
||||||
if (untrackedCount > 0) {
|
if (untrackedCount > 0) {
|
||||||
message = localize('confirm delete', "Are you sure you want to DELETE {0}?", path.basename(scmResources[0].resourceUri.fsPath));
|
message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST.", path.basename(scmResources[0].resourceUri.fsPath));
|
||||||
yes = localize('delete file', "Delete file");
|
yes = localize('delete file', "Delete file");
|
||||||
} else {
|
} else {
|
||||||
if (scmResources[0].type === Status.DELETED) {
|
if (scmResources[0].type === Status.DELETED) {
|
||||||
@@ -1134,7 +1134,7 @@ export class CommandCenter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (untrackedCount > 0) {
|
if (untrackedCount > 0) {
|
||||||
message = `${message}\n\n${localize('warn untracked', "This will DELETE {0} untracked files!", untrackedCount)}`;
|
message = `${message}\n\n${localize('warn untracked', "This will DELETE {0} untracked files!\nThis is IRREVERSIBLE!\nThese files will be FOREVER LOST.", untrackedCount)}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1175,7 +1175,7 @@ export class CommandCenter {
|
|||||||
await repository.clean(resources.map(r => r.resourceUri));
|
await repository.clean(resources.map(r => r.resourceUri));
|
||||||
return;
|
return;
|
||||||
} else if (resources.length === 1) {
|
} else if (resources.length === 1) {
|
||||||
const message = localize('confirm delete', "Are you sure you want to DELETE {0}?", path.basename(resources[0].resourceUri.fsPath));
|
const message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST.", path.basename(resources[0].resourceUri.fsPath));
|
||||||
const yes = localize('delete file', "Delete file");
|
const yes = localize('delete file', "Delete file");
|
||||||
const pick = await window.showWarningMessage(message, { modal: true }, yes);
|
const pick = await window.showWarningMessage(message, { modal: true }, yes);
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import * as path from 'path';
|
|||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as nls from 'vscode-nls';
|
import * as nls from 'vscode-nls';
|
||||||
import { fromGitUri } from './uri';
|
import { fromGitUri } from './uri';
|
||||||
import { GitErrorCodes } from './api/git';
|
import { GitErrorCodes, APIState as State } from './api/git';
|
||||||
|
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
@@ -63,15 +63,22 @@ export class Model {
|
|||||||
|
|
||||||
private possibleGitRepositoryPaths = new Set<string>();
|
private possibleGitRepositoryPaths = new Set<string>();
|
||||||
|
|
||||||
|
private _onDidChangeState = new EventEmitter<State>();
|
||||||
|
readonly onDidChangeState = this._onDidChangeState.event;
|
||||||
|
|
||||||
|
private _state: State = 'uninitialized';
|
||||||
|
get state(): State { return this._state; }
|
||||||
|
|
||||||
|
setState(state: State): void {
|
||||||
|
this._state = state;
|
||||||
|
this._onDidChangeState.fire(state);
|
||||||
|
}
|
||||||
|
|
||||||
private disposables: Disposable[] = [];
|
private disposables: Disposable[] = [];
|
||||||
|
|
||||||
constructor(readonly git: Git, private globalState: Memento, private outputChannel: OutputChannel) {
|
constructor(readonly git: Git, private globalState: Memento, private outputChannel: OutputChannel) {
|
||||||
workspace.onDidChangeWorkspaceFolders(this.onDidChangeWorkspaceFolders, this, this.disposables);
|
workspace.onDidChangeWorkspaceFolders(this.onDidChangeWorkspaceFolders, this, this.disposables);
|
||||||
this.onDidChangeWorkspaceFolders({ added: workspace.workspaceFolders || [], removed: [] });
|
|
||||||
|
|
||||||
window.onDidChangeVisibleTextEditors(this.onDidChangeVisibleTextEditors, this, this.disposables);
|
window.onDidChangeVisibleTextEditors(this.onDidChangeVisibleTextEditors, this, this.disposables);
|
||||||
this.onDidChangeVisibleTextEditors(window.visibleTextEditors);
|
|
||||||
|
|
||||||
workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this.disposables);
|
workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this.disposables);
|
||||||
|
|
||||||
const fsWatcher = workspace.createFileSystemWatcher('**');
|
const fsWatcher = workspace.createFileSystemWatcher('**');
|
||||||
@@ -82,7 +89,15 @@ export class Model {
|
|||||||
const onPossibleGitRepositoryChange = filterEvent(onGitRepositoryChange, uri => !this.getRepository(uri));
|
const onPossibleGitRepositoryChange = filterEvent(onGitRepositoryChange, uri => !this.getRepository(uri));
|
||||||
onPossibleGitRepositoryChange(this.onPossibleGitRepositoryChange, this, this.disposables);
|
onPossibleGitRepositoryChange(this.onPossibleGitRepositoryChange, this, this.disposables);
|
||||||
|
|
||||||
this.scanWorkspaceFolders();
|
this.doInitialScan().finally(() => this.setState('initialized'));
|
||||||
|
}
|
||||||
|
|
||||||
|
private async doInitialScan(): Promise<void> {
|
||||||
|
await Promise.all([
|
||||||
|
this.onDidChangeWorkspaceFolders({ added: workspace.workspaceFolders || [], removed: [] }),
|
||||||
|
this.onDidChangeVisibleTextEditors(window.visibleTextEditors),
|
||||||
|
this.scanWorkspaceFolders()
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -157,8 +172,8 @@ export class Model {
|
|||||||
.filter(r => !activeRepositories.has(r!.repository))
|
.filter(r => !activeRepositories.has(r!.repository))
|
||||||
.filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
|
.filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
|
||||||
|
|
||||||
possibleRepositoryFolders.forEach(p => this.openRepository(p.uri.fsPath));
|
|
||||||
openRepositoriesToDispose.forEach(r => r.dispose());
|
openRepositoriesToDispose.forEach(r => r.dispose());
|
||||||
|
await Promise.all(possibleRepositoryFolders.map(p => this.openRepository(p.uri.fsPath)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private onDidChangeConfiguration(): void {
|
private onDidChangeConfiguration(): void {
|
||||||
@@ -175,7 +190,7 @@ export class Model {
|
|||||||
openRepositoriesToDispose.forEach(r => r.dispose());
|
openRepositoriesToDispose.forEach(r => r.dispose());
|
||||||
}
|
}
|
||||||
|
|
||||||
private onDidChangeVisibleTextEditors(editors: TextEditor[]): void {
|
private async onDidChangeVisibleTextEditors(editors: TextEditor[]): Promise<void> {
|
||||||
const config = workspace.getConfiguration('git');
|
const config = workspace.getConfiguration('git');
|
||||||
const autoRepositoryDetection = config.get<boolean | 'subFolders' | 'openEditors'>('autoRepositoryDetection');
|
const autoRepositoryDetection = config.get<boolean | 'subFolders' | 'openEditors'>('autoRepositoryDetection');
|
||||||
|
|
||||||
@@ -183,7 +198,7 @@ export class Model {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
editors.forEach(editor => {
|
await Promise.all(editors.map(async editor => {
|
||||||
const uri = editor.document.uri;
|
const uri = editor.document.uri;
|
||||||
|
|
||||||
if (uri.scheme !== 'file') {
|
if (uri.scheme !== 'file') {
|
||||||
@@ -196,8 +211,8 @@ export class Model {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.openRepository(path.dirname(uri.fsPath));
|
await this.openRepository(path.dirname(uri.fsPath));
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@sequentialize
|
@sequentialize
|
||||||
@@ -236,6 +251,7 @@ export class Model {
|
|||||||
const repository = new Repository(this.git.open(repositoryRoot, dotGit), this.globalState, this.outputChannel);
|
const repository = new Repository(this.git.open(repositoryRoot, dotGit), this.globalState, this.outputChannel);
|
||||||
|
|
||||||
this.open(repository);
|
this.open(repository);
|
||||||
|
await repository.status();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.gitErrorCode === GitErrorCodes.NotAGitRepository) {
|
if (err.gitErrorCode === GitErrorCodes.NotAGitRepository) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -519,8 +519,8 @@ class DotGitWatcher implements IFileWatcher {
|
|||||||
this.transientDisposables.push(upstreamWatcher);
|
this.transientDisposables.push(upstreamWatcher);
|
||||||
upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables);
|
upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (env.logLevel <= LogLevel.Info) {
|
if (env.logLevel <= LogLevel.Error) {
|
||||||
this.outputChannel.appendLine(`Failed to watch ref '${upstreamPath}'. Ref is most likely packed.`);
|
this.outputChannel.appendLine(`Failed to watch ref '${upstreamPath}', is most likely packed.\n${err.stack || err}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -651,19 +651,30 @@ export class Repository implements Disposable {
|
|||||||
const onWorkspaceRepositoryFileChange = filterEvent(onWorkspaceFileChange, uri => isDescendant(repository.root, uri.fsPath));
|
const onWorkspaceRepositoryFileChange = filterEvent(onWorkspaceFileChange, uri => isDescendant(repository.root, uri.fsPath));
|
||||||
const onWorkspaceWorkingTreeFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => !/\/\.git($|\/)/.test(uri.path));
|
const onWorkspaceWorkingTreeFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => !/\/\.git($|\/)/.test(uri.path));
|
||||||
|
|
||||||
|
let onDotGitFileChange: Event<Uri>;
|
||||||
|
|
||||||
|
try {
|
||||||
const dotGitFileWatcher = new DotGitWatcher(this, outputChannel);
|
const dotGitFileWatcher = new DotGitWatcher(this, outputChannel);
|
||||||
|
onDotGitFileChange = dotGitFileWatcher.event;
|
||||||
this.disposables.push(dotGitFileWatcher);
|
this.disposables.push(dotGitFileWatcher);
|
||||||
|
} catch (err) {
|
||||||
|
if (env.logLevel <= LogLevel.Error) {
|
||||||
|
outputChannel.appendLine(`Failed to watch '${this.dotGit}', reverting to legacy API file watched. Some events might be lost.\n${err.stack || err}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
onDotGitFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => /\/\.git($|\/)/.test(uri.path));
|
||||||
|
}
|
||||||
|
|
||||||
// FS changes should trigger `git status`:
|
// FS changes should trigger `git status`:
|
||||||
// - any change inside the repository working tree
|
// - any change inside the repository working tree
|
||||||
// - any change whithin the first level of the `.git` folder, except the folder itself and `index.lock`
|
// - any change whithin the first level of the `.git` folder, except the folder itself and `index.lock`
|
||||||
const onFileChange = anyEvent(onWorkspaceWorkingTreeFileChange, dotGitFileWatcher.event);
|
const onFileChange = anyEvent(onWorkspaceWorkingTreeFileChange, onDotGitFileChange);
|
||||||
onFileChange(this.onFileChange, this, this.disposables);
|
onFileChange(this.onFileChange, this, this.disposables);
|
||||||
|
|
||||||
// Relevate repository changes should trigger virtual document change events
|
// Relevate repository changes should trigger virtual document change events
|
||||||
dotGitFileWatcher.event(this._onDidChangeRepository.fire, this._onDidChangeRepository, this.disposables);
|
onDotGitFileChange(this._onDidChangeRepository.fire, this._onDidChangeRepository, this.disposables);
|
||||||
|
|
||||||
this.disposables.push(new FileEventLogger(onWorkspaceWorkingTreeFileChange, dotGitFileWatcher.event, outputChannel));
|
this.disposables.push(new FileEventLogger(onWorkspaceWorkingTreeFileChange, onDotGitFileChange, outputChannel));
|
||||||
|
|
||||||
const root = Uri.file(repository.root);
|
const root = Uri.file(repository.root);
|
||||||
this._sourceControl = scm.createSourceControl('git', 'Git', root);
|
this._sourceControl = scm.createSourceControl('git', 'Git', root);
|
||||||
@@ -713,7 +724,6 @@ export class Repository implements Disposable {
|
|||||||
this.disposables.push(progressManager);
|
this.disposables.push(progressManager);
|
||||||
|
|
||||||
this.updateCommitTemplate();
|
this.updateCommitTemplate();
|
||||||
this.status();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
validateInput(text: string, position: number): SourceControlInputBoxValidation | undefined {
|
validateInput(text: string, position: number): SourceControlInputBoxValidation | undefined {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import * as fs from 'fs';
|
|||||||
import * as nls from 'vscode-nls';
|
import * as nls from 'vscode-nls';
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
import { languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, workspace, SelectionRange } from 'vscode';
|
import { languages, ExtensionContext, IndentAction, Position, TextDocument, Range, CompletionItem, CompletionItemKind, SnippetString, workspace } from 'vscode';
|
||||||
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, TextDocumentPositionParams } from 'vscode-languageclient';
|
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, TextDocumentPositionParams } from 'vscode-languageclient';
|
||||||
import { EMPTY_ELEMENTS } from './htmlEmptyTagsShared';
|
import { EMPTY_ELEMENTS } from './htmlEmptyTagsShared';
|
||||||
import { activateTagClosing } from './tagClosing';
|
import { activateTagClosing } from './tagClosing';
|
||||||
@@ -87,26 +87,6 @@ export function activate(context: ExtensionContext) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
toDispose.push(disposable);
|
toDispose.push(disposable);
|
||||||
|
|
||||||
documentSelector.forEach(selector => {
|
|
||||||
context.subscriptions.push(languages.registerSelectionRangeProvider(selector, {
|
|
||||||
async provideSelectionRanges(document: TextDocument, positions: Position[]): Promise<SelectionRange[]> {
|
|
||||||
const textDocument = client.code2ProtocolConverter.asTextDocumentIdentifier(document);
|
|
||||||
const rawResult = await client.sendRequest<SelectionRange[][]>('$/textDocument/selectionRanges', { textDocument, positions: positions.map(client.code2ProtocolConverter.asPosition) });
|
|
||||||
if (Array.isArray(rawResult)) {
|
|
||||||
return rawResult.map(rawSelectionRanges => {
|
|
||||||
return rawSelectionRanges.reduceRight((parent: SelectionRange | undefined, selectionRange: SelectionRange) => {
|
|
||||||
return {
|
|
||||||
range: client.protocol2CodeConverter.asRange(selectionRange.range),
|
|
||||||
parent
|
|
||||||
};
|
|
||||||
}, undefined)!;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
languages.setLanguageConfiguration('html', {
|
languages.setLanguageConfiguration('html', {
|
||||||
|
|||||||
@@ -9,12 +9,12 @@
|
|||||||
},
|
},
|
||||||
"main": "./out/htmlServerMain",
|
"main": "./out/htmlServerMain",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"vscode-css-languageservice": "^4.0.2",
|
"vscode-css-languageservice": "^4.0.3-next.1",
|
||||||
"vscode-html-languageservice": "^3.0.0",
|
"vscode-html-languageservice": "^3.0.4-next.0",
|
||||||
"vscode-languageserver": "^5.3.0-next.8",
|
"vscode-languageserver": "^5.3.0-next.8",
|
||||||
"vscode-languageserver-types": "3.15.0-next.2",
|
"vscode-languageserver-types": "3.15.0-next.2",
|
||||||
"vscode-nls": "^4.1.1",
|
"vscode-nls": "^4.1.1",
|
||||||
"vscode-uri": "^2.0.1"
|
"vscode-uri": "^2.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/mocha": "2.2.33",
|
"@types/mocha": "2.2.33",
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
|
|||||||
get folders() { return workspaceFolders; }
|
get folders() { return workspaceFolders; }
|
||||||
};
|
};
|
||||||
|
|
||||||
languageModes = getLanguageModes(initializationOptions ? initializationOptions.embeddedLanguages : { css: true, javascript: true }, workspace, providers);
|
languageModes = getLanguageModes(initializationOptions ? initializationOptions.embeddedLanguages : { css: true, javascript: true }, workspace, params.capabilities, providers);
|
||||||
|
|
||||||
documents.onDidClose(e => {
|
documents.onDidClose(e => {
|
||||||
languageModes.onDocumentRemoved(e.document);
|
languageModes.onDocumentRemoved(e.document);
|
||||||
@@ -135,7 +135,8 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
|
|||||||
signatureHelpProvider: { triggerCharacters: ['('] },
|
signatureHelpProvider: { triggerCharacters: ['('] },
|
||||||
referencesProvider: true,
|
referencesProvider: true,
|
||||||
colorProvider: {},
|
colorProvider: {},
|
||||||
foldingRangeProvider: true
|
foldingRangeProvider: true,
|
||||||
|
selectionRangeProvider: true
|
||||||
};
|
};
|
||||||
return { capabilities };
|
return { capabilities };
|
||||||
});
|
});
|
||||||
@@ -454,7 +455,7 @@ connection.onFoldingRanges((params, token) => {
|
|||||||
}, null, `Error while computing folding regions for ${params.textDocument.uri}`, token);
|
}, null, `Error while computing folding regions for ${params.textDocument.uri}`, token);
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.onRequest('$/textDocument/selectionRanges', async (params, token) => {
|
connection.onSelectionRanges((params, token) => {
|
||||||
return runSafe(() => {
|
return runSafe(() => {
|
||||||
const document = documents.get(params.textDocument.uri);
|
const document = documents.get(params.textDocument.uri);
|
||||||
const positions: Position[] = params.positions;
|
const positions: Position[] = params.positions;
|
||||||
@@ -465,8 +466,8 @@ connection.onRequest('$/textDocument/selectionRanges', async (params, token) =>
|
|||||||
return htmlMode.getSelectionRanges(document, positions);
|
return htmlMode.getSelectionRanges(document, positions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Promise.resolve(null);
|
return [];
|
||||||
}, null, `Error while computing selection ranges for ${params.textDocument.uri}`, token);
|
}, [], `Error while computing selection ranges for ${params.textDocument.uri}`, token);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
|
|
||||||
import { LanguageModelCache, getLanguageModelCache } from '../languageModelCache';
|
import { LanguageModelCache, getLanguageModelCache } from '../languageModelCache';
|
||||||
import { TextDocument, Position, Range, CompletionList } from 'vscode-languageserver-types';
|
import { TextDocument, Position, Range, CompletionList } from 'vscode-languageserver-types';
|
||||||
import { getCSSLanguageService, Stylesheet, FoldingRange } from 'vscode-css-languageservice';
|
import { Stylesheet, FoldingRange, LanguageService as CSSLanguageService } from 'vscode-css-languageservice';
|
||||||
import { LanguageMode, Workspace } from './languageModes';
|
import { LanguageMode, Workspace } from './languageModes';
|
||||||
import { HTMLDocumentRegions, CSS_STYLE_RULE } from './embeddedSupport';
|
import { HTMLDocumentRegions, CSS_STYLE_RULE } from './embeddedSupport';
|
||||||
import { Color } from 'vscode-languageserver';
|
import { Color } from 'vscode-languageserver';
|
||||||
|
|
||||||
export function getCSSMode(documentRegions: LanguageModelCache<HTMLDocumentRegions>, workspace: Workspace): LanguageMode {
|
export function getCSSMode(cssLanguageService: CSSLanguageService, documentRegions: LanguageModelCache<HTMLDocumentRegions>, workspace: Workspace): LanguageMode {
|
||||||
let cssLanguageService = getCSSLanguageService();
|
|
||||||
let embeddedCSSDocuments = getLanguageModelCache<TextDocument>(10, 60, document => documentRegions.get(document).getEmbeddedDocument('css'));
|
let embeddedCSSDocuments = getLanguageModelCache<TextDocument>(10, 60, document => documentRegions.get(document).getEmbeddedDocument('css'));
|
||||||
let cssStylesheets = getLanguageModelCache<Stylesheet>(10, 60, document => cssLanguageService.parseStylesheet(document));
|
let cssStylesheets = getLanguageModelCache<Stylesheet>(10, 60, document => cssLanguageService.parseStylesheet(document));
|
||||||
|
|
||||||
|
|||||||
@@ -3,18 +3,15 @@
|
|||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { getLanguageService as getHTMLLanguageService, DocumentContext, IHTMLDataProvider, SelectionRange } from 'vscode-html-languageservice';
|
import { getCSSLanguageService } from 'vscode-css-languageservice';
|
||||||
import {
|
import { ClientCapabilities, DocumentContext, getLanguageService as getHTMLLanguageService, IHTMLDataProvider, SelectionRange } from 'vscode-html-languageservice';
|
||||||
CompletionItem, Location, SignatureHelp, Definition, TextEdit, TextDocument, Diagnostic, DocumentLink, Range,
|
import { Color, ColorInformation, ColorPresentation, WorkspaceFolder } from 'vscode-languageserver';
|
||||||
Hover, DocumentHighlight, CompletionList, Position, FormattingOptions, SymbolInformation, FoldingRange
|
import { CompletionItem, CompletionList, Definition, Diagnostic, DocumentHighlight, DocumentLink, FoldingRange, FormattingOptions, Hover, Location, Position, Range, SignatureHelp, SymbolInformation, TextDocument, TextEdit } from 'vscode-languageserver-types';
|
||||||
} from 'vscode-languageserver-types';
|
|
||||||
import { ColorInformation, ColorPresentation, Color, WorkspaceFolder } from 'vscode-languageserver';
|
|
||||||
|
|
||||||
import { getLanguageModelCache, LanguageModelCache } from '../languageModelCache';
|
import { getLanguageModelCache, LanguageModelCache } from '../languageModelCache';
|
||||||
import { getDocumentRegions, HTMLDocumentRegions } from './embeddedSupport';
|
|
||||||
import { getCSSMode } from './cssMode';
|
import { getCSSMode } from './cssMode';
|
||||||
import { getJavaScriptMode } from './javascriptMode';
|
import { getDocumentRegions, HTMLDocumentRegions } from './embeddedSupport';
|
||||||
import { getHTMLMode } from './htmlMode';
|
import { getHTMLMode } from './htmlMode';
|
||||||
|
import { getJavaScriptMode } from './javascriptMode';
|
||||||
|
|
||||||
export { ColorInformation, ColorPresentation, Color };
|
export { ColorInformation, ColorPresentation, Color };
|
||||||
|
|
||||||
@@ -66,8 +63,9 @@ export interface LanguageModeRange extends Range {
|
|||||||
attributeValue?: boolean;
|
attributeValue?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getLanguageModes(supportedLanguages: { [languageId: string]: boolean; }, workspace: Workspace, customDataProviders?: IHTMLDataProvider[]): LanguageModes {
|
export function getLanguageModes(supportedLanguages: { [languageId: string]: boolean; }, workspace: Workspace, clientCapabilities: ClientCapabilities, customDataProviders?: IHTMLDataProvider[]): LanguageModes {
|
||||||
const htmlLanguageService = getHTMLLanguageService({ customDataProviders });
|
const htmlLanguageService = getHTMLLanguageService({ customDataProviders, clientCapabilities });
|
||||||
|
const cssLanguageService = getCSSLanguageService({ clientCapabilities });
|
||||||
|
|
||||||
let documentRegions = getLanguageModelCache<HTMLDocumentRegions>(10, 60, document => getDocumentRegions(htmlLanguageService, document));
|
let documentRegions = getLanguageModelCache<HTMLDocumentRegions>(10, 60, document => getDocumentRegions(htmlLanguageService, document));
|
||||||
|
|
||||||
@@ -77,7 +75,7 @@ export function getLanguageModes(supportedLanguages: { [languageId: string]: boo
|
|||||||
let modes = Object.create(null);
|
let modes = Object.create(null);
|
||||||
modes['html'] = getHTMLMode(htmlLanguageService, workspace);
|
modes['html'] = getHTMLMode(htmlLanguageService, workspace);
|
||||||
if (supportedLanguages['css']) {
|
if (supportedLanguages['css']) {
|
||||||
modes['css'] = getCSSMode(documentRegions, workspace);
|
modes['css'] = getCSSMode(cssLanguageService, documentRegions, workspace);
|
||||||
}
|
}
|
||||||
if (supportedLanguages['javascript']) {
|
if (supportedLanguages['javascript']) {
|
||||||
modes['javascript'] = getJavaScriptMode(documentRegions);
|
modes['javascript'] = getJavaScriptMode(documentRegions);
|
||||||
|
|||||||
@@ -108,11 +108,12 @@ function pathToSuggestion(p: string, valueBeforeCursor: string, fullValue: strin
|
|||||||
// Find the last slash before cursor, and calculate the start of replace range from there
|
// Find the last slash before cursor, and calculate the start of replace range from there
|
||||||
const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1);
|
const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1);
|
||||||
const startPos = shiftPosition(range.end, -1 - valueAfterLastSlash.length);
|
const startPos = shiftPosition(range.end, -1 - valueAfterLastSlash.length);
|
||||||
// If whitespace exists, replace until it
|
|
||||||
const whiteSpaceIndex = valueAfterLastSlash.indexOf(' ');
|
// If whitespace exists, replace until there is no more
|
||||||
|
const whitespaceIndex = valueAfterLastSlash.indexOf(' ');
|
||||||
let endPos;
|
let endPos;
|
||||||
if (whiteSpaceIndex !== -1) {
|
if (whitespaceIndex !== -1) {
|
||||||
endPos = shiftPosition(startPos, whiteSpaceIndex);
|
endPos = shiftPosition(startPos, whitespaceIndex);
|
||||||
} else {
|
} else {
|
||||||
endPos = shiftPosition(range.end, -1);
|
endPos = shiftPosition(range.end, -1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { URI } from 'vscode-uri';
|
|||||||
import { TextDocument, CompletionList, CompletionItemKind } from 'vscode-languageserver-types';
|
import { TextDocument, CompletionList, CompletionItemKind } from 'vscode-languageserver-types';
|
||||||
import { getLanguageModes } from '../modes/languageModes';
|
import { getLanguageModes } from '../modes/languageModes';
|
||||||
import { WorkspaceFolder } from 'vscode-languageserver';
|
import { WorkspaceFolder } from 'vscode-languageserver';
|
||||||
|
import { ClientCapabilities } from 'vscode-html-languageservice';
|
||||||
|
|
||||||
export interface ItemDescription {
|
export interface ItemDescription {
|
||||||
label: string;
|
label: string;
|
||||||
@@ -58,7 +59,7 @@ export function testCompletionFor(value: string, expected: { count?: number, ite
|
|||||||
let document = TextDocument.create(uri, 'html', 0, value);
|
let document = TextDocument.create(uri, 'html', 0, value);
|
||||||
let position = document.positionAt(offset);
|
let position = document.positionAt(offset);
|
||||||
|
|
||||||
const languageModes = getLanguageModes({ css: true, javascript: true }, workspace);
|
const languageModes = getLanguageModes({ css: true, javascript: true }, workspace, ClientCapabilities.LATEST);
|
||||||
const mode = languageModes.getModeAtPosition(document, position)!;
|
const mode = languageModes.getModeAtPosition(document, position)!;
|
||||||
|
|
||||||
let list = mode.doComplete!(document, position);
|
let list = mode.doComplete!(document, position);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import * as assert from 'assert';
|
|||||||
import { TextDocument } from 'vscode-languageserver';
|
import { TextDocument } from 'vscode-languageserver';
|
||||||
import { getFoldingRanges } from '../modes/htmlFolding';
|
import { getFoldingRanges } from '../modes/htmlFolding';
|
||||||
import { getLanguageModes } from '../modes/languageModes';
|
import { getLanguageModes } from '../modes/languageModes';
|
||||||
|
import { ClientCapabilities } from 'vscode-css-languageservice';
|
||||||
|
|
||||||
interface ExpectedIndentRange {
|
interface ExpectedIndentRange {
|
||||||
startLine: number;
|
startLine: number;
|
||||||
@@ -21,7 +22,7 @@ function assertRanges(lines: string[], expected: ExpectedIndentRange[], message?
|
|||||||
settings: {},
|
settings: {},
|
||||||
folders: [{ name: 'foo', uri: 'test://foo' }]
|
folders: [{ name: 'foo', uri: 'test://foo' }]
|
||||||
};
|
};
|
||||||
let languageModes = getLanguageModes({ css: true, javascript: true }, workspace);
|
let languageModes = getLanguageModes({ css: true, javascript: true }, workspace, ClientCapabilities.LATEST);
|
||||||
let actual = getFoldingRanges(languageModes, document, nRanges, null);
|
let actual = getFoldingRanges(languageModes, document, nRanges, null);
|
||||||
|
|
||||||
let actualRanges = [];
|
let actualRanges = [];
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { getLanguageModes } from '../modes/languageModes';
|
|||||||
import { TextDocument, Range, FormattingOptions } from 'vscode-languageserver-types';
|
import { TextDocument, Range, FormattingOptions } from 'vscode-languageserver-types';
|
||||||
|
|
||||||
import { format } from '../modes/formatting';
|
import { format } from '../modes/formatting';
|
||||||
|
import { ClientCapabilities } from 'vscode-html-languageservice';
|
||||||
|
|
||||||
suite('HTML Embedded Formatting', () => {
|
suite('HTML Embedded Formatting', () => {
|
||||||
|
|
||||||
@@ -19,7 +20,7 @@ suite('HTML Embedded Formatting', () => {
|
|||||||
settings: options,
|
settings: options,
|
||||||
folders: [{ name: 'foo', uri: 'test://foo' }]
|
folders: [{ name: 'foo', uri: 'test://foo' }]
|
||||||
};
|
};
|
||||||
var languageModes = getLanguageModes({ css: true, javascript: true }, workspace);
|
var languageModes = getLanguageModes({ css: true, javascript: true }, workspace, ClientCapabilities.LATEST);
|
||||||
|
|
||||||
let rangeStartOffset = value.indexOf('|');
|
let rangeStartOffset = value.indexOf('|');
|
||||||
let rangeEndOffset;
|
let rangeEndOffset;
|
||||||
|
|||||||
@@ -32,7 +32,11 @@ export function getDocumentContext(documentUri: string, workspaceFolders: Worksp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
return url.resolve(base, ref);
|
return url.resolve(base, ref);
|
||||||
|
} catch {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -229,22 +229,23 @@ supports-color@5.4.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-flag "^3.0.0"
|
has-flag "^3.0.0"
|
||||||
|
|
||||||
vscode-css-languageservice@^4.0.2:
|
vscode-css-languageservice@^4.0.3-next.1:
|
||||||
version "4.0.2"
|
version "4.0.3-next.1"
|
||||||
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.2.tgz#7496e538b0c151feac16d5888cc0b1b104f4c736"
|
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.3-next.1.tgz#e89d01ce0d79b3e6c2642f5e3ad73cb8160d38d9"
|
||||||
integrity sha512-pTnfXbsME3pl+yDfhUp/mtvPyIJk0Le4zqJxDn56s9GY9LqY0RmkSEh0oHH6D0HXR3Ni6wKosIaqu8a2G0+jdw==
|
integrity sha512-Zrm5TeraVUJ8vRikWhFt259dQu+WK+Ie3K5UA8BB4kqcanoM+1mcnIt8fPkTXlZLbiEWElrkJ9yuYbDNkufeBg==
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-languageserver-types "^3.15.0-next.2"
|
vscode-languageserver-types "^3.15.0-next.2"
|
||||||
vscode-nls "^4.1.1"
|
vscode-nls "^4.1.1"
|
||||||
|
vscode-uri "^2.0.3"
|
||||||
|
|
||||||
vscode-html-languageservice@^3.0.0:
|
vscode-html-languageservice@^3.0.4-next.0:
|
||||||
version "3.0.0"
|
version "3.0.4-next.0"
|
||||||
resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.0.0.tgz#b9649aa0713d68665d7546bd3772dd10e4dbe200"
|
resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.0.4-next.0.tgz#d4f5a103b94753a19b374158212fe734dbe670e8"
|
||||||
integrity sha512-AgNyjaYrmgundh5gXP0bqCLeLdfUTyvNafF1moNwYdqeNh6DIpMG6RjwYwgtNChXSsVGXnaHiwGMtAUwMxkQUQ==
|
integrity sha512-5Z5ITtokWt/zuPKemKEXfC+4XHoQryBAZVAcTwpAel2qqueUwGqjd5ZrVy/2x5GZAdZAipl0BvsTTMkOBS1BFQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
vscode-languageserver-types "^3.15.0-next.2"
|
vscode-languageserver-types "^3.15.0-next.2"
|
||||||
vscode-nls "^4.1.1"
|
vscode-nls "^4.1.1"
|
||||||
vscode-uri "^2.0.1"
|
vscode-uri "^2.0.3"
|
||||||
|
|
||||||
vscode-jsonrpc@^4.1.0-next.2:
|
vscode-jsonrpc@^4.1.0-next.2:
|
||||||
version "4.1.0-next.2"
|
version "4.1.0-next.2"
|
||||||
@@ -288,10 +289,10 @@ vscode-uri@^1.0.6:
|
|||||||
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d"
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d"
|
||||||
integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==
|
integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==
|
||||||
|
|
||||||
vscode-uri@^2.0.1:
|
vscode-uri@^2.0.3:
|
||||||
version "2.0.1"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.1.tgz#5448e4f77d21d93ffa34b96f84c6c5e09e3f5a9b"
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
|
||||||
integrity sha512-s/k0zsYr6y+tsocFyxT/+G5aq8mEdpDZuph3LZ+UmCs7LNhx/xomiCy5kyP+jOAKC7RMCUvb6JbPD1/TgAvq0g==
|
integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
|
||||||
|
|
||||||
wrappy@1:
|
wrappy@1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { xhr, XHRResponse, getErrorStatusDescription } from 'request-light';
|
|||||||
|
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
import { workspace, window, languages, commands, ExtensionContext, extensions, Uri, LanguageConfiguration, Diagnostic, StatusBarAlignment, TextEditor, TextDocument, Position, SelectionRange } from 'vscode';
|
import { workspace, window, languages, commands, ExtensionContext, extensions, Uri, LanguageConfiguration, Diagnostic, StatusBarAlignment, TextEditor } from 'vscode';
|
||||||
import { LanguageClient, LanguageClientOptions, RequestType, ServerOptions, TransportKind, NotificationType, DidChangeConfigurationNotification, HandleDiagnosticsSignature, ResponseError } from 'vscode-languageclient';
|
import { LanguageClient, LanguageClientOptions, RequestType, ServerOptions, TransportKind, NotificationType, DidChangeConfigurationNotification, HandleDiagnosticsSignature, ResponseError } from 'vscode-languageclient';
|
||||||
import TelemetryReporter from 'vscode-extension-telemetry';
|
import TelemetryReporter from 'vscode-extension-telemetry';
|
||||||
|
|
||||||
@@ -216,26 +216,6 @@ export function activate(context: ExtensionContext) {
|
|||||||
extensions.onDidChange(_ => {
|
extensions.onDidChange(_ => {
|
||||||
client.sendNotification(SchemaAssociationNotification.type, getSchemaAssociation(context));
|
client.sendNotification(SchemaAssociationNotification.type, getSchemaAssociation(context));
|
||||||
});
|
});
|
||||||
|
|
||||||
documentSelector.forEach(selector => {
|
|
||||||
toDispose.push(languages.registerSelectionRangeProvider(selector, {
|
|
||||||
async provideSelectionRanges(document: TextDocument, positions: Position[]): Promise<SelectionRange[]> {
|
|
||||||
const textDocument = client.code2ProtocolConverter.asTextDocumentIdentifier(document);
|
|
||||||
const rawResult = await client.sendRequest<SelectionRange[][]>('$/textDocument/selectionRanges', { textDocument, positions: positions.map(client.code2ProtocolConverter.asPosition) });
|
|
||||||
if (Array.isArray(rawResult)) {
|
|
||||||
return rawResult.map(rawSelectionRanges => {
|
|
||||||
return rawSelectionRanges.reduceRight((parent: SelectionRange | undefined, selectionRange: SelectionRange) => {
|
|
||||||
return {
|
|
||||||
range: client.protocol2CodeConverter.asRange(selectionRange.range),
|
|
||||||
parent,
|
|
||||||
};
|
|
||||||
}, undefined)!;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,3 +5,6 @@ src/
|
|||||||
test/
|
test/
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
.gitignore
|
.gitignore
|
||||||
|
yarn.lock
|
||||||
|
extension.webpack.config.js
|
||||||
|
vscode-json-languageserver-*.tgz
|
||||||
@@ -21,6 +21,8 @@ The server implements the following capabilities of the language server protocol
|
|||||||
- [Document Symbols](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol) for quick navigation to properties in the document.
|
- [Document Symbols](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol) for quick navigation to properties in the document.
|
||||||
- [Document Colors](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentColor) for showing color decorators on values representing colors and [Color Presentation](https://microsoft.github.io/language-server-protocol/specification#textDocument_colorPresentation) for color presentation information to support color pickers. The location of colors is defined by the document's [JSON schema](http://json-schema.org/). All values marked with `"format": "color-hex"` (VSCode specific, non-standard JSON Schema extension) are considered color values. The supported color formats are `#rgb[a]` and `#rrggbb[aa]`.
|
- [Document Colors](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentColor) for showing color decorators on values representing colors and [Color Presentation](https://microsoft.github.io/language-server-protocol/specification#textDocument_colorPresentation) for color presentation information to support color pickers. The location of colors is defined by the document's [JSON schema](http://json-schema.org/). All values marked with `"format": "color-hex"` (VSCode specific, non-standard JSON Schema extension) are considered color values. The supported color formats are `#rgb[a]` and `#rrggbb[aa]`.
|
||||||
- [Code Formatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_rangeFormatting) supporting ranges and formatting the whole document.
|
- [Code Formatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_rangeFormatting) supporting ranges and formatting the whole document.
|
||||||
|
- [Folding Ranges](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange) for all folding ranges in the document.
|
||||||
|
- Semantic Selection for semantic selection for one or multiple cursor positions.
|
||||||
- [Diagnostics (Validation)](https://microsoft.github.io/language-server-protocol/specification#textDocument_publishDiagnostics) are pushed for all open documents
|
- [Diagnostics (Validation)](https://microsoft.github.io/language-server-protocol/specification#textDocument_publishDiagnostics) are pushed for all open documents
|
||||||
- syntax errors
|
- syntax errors
|
||||||
- structural validation based on the document's [JSON schema](http://json-schema.org/).
|
- structural validation based on the document's [JSON schema](http://json-schema.org/).
|
||||||
@@ -90,10 +92,39 @@ To find the schema for a given JSON document, the server uses the following mech
|
|||||||
- The settings define a schema association based on the documents URL. Settings can either associate a schema URL to a file or path pattern, and they can directly provide a schema.
|
- The settings define a schema association based on the documents URL. Settings can either associate a schema URL to a file or path pattern, and they can directly provide a schema.
|
||||||
- Additionally, schema associations can also be provided by a custom 'schemaAssociations' configuration call.
|
- Additionally, schema associations can also be provided by a custom 'schemaAssociations' configuration call.
|
||||||
|
|
||||||
Schemas are identified by URLs. To load the content of a schema, the JSON language server tries to load from that URL or path. The following URL schemas are supported:
|
Schemas are identified by URLs. To load the content of a schema, the JSON language server either tries to load from that URI or path itself, or delegates to the client.
|
||||||
|
|
||||||
|
The `initializationOptions.handledSchemaProtocols` initialization option defines which URLs are handled by the server. Requests for all other URIs are send to the client.
|
||||||
|
|
||||||
|
`handledSchemaProtocols` is part of the initialization options and can't be changed while the server is running.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
let clientOptions: LanguageClientOptions = {
|
||||||
|
initializationOptions: {
|
||||||
|
handledSchemaProtocols: ['file'] // language server should only try to load file URLs
|
||||||
|
}
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If `handledSchemaProtocols` is not set, the JSON language server will load the following URLs itself:
|
||||||
|
|
||||||
- `http`, `https`: Loaded using NodeJS's HTTP support. Proxies can be configured through the settings.
|
- `http`, `https`: Loaded using NodeJS's HTTP support. Proxies can be configured through the settings.
|
||||||
- `file`: Loaded using NodeJS's `fs` support.
|
- `file`: Loaded using NodeJS's `fs` support.
|
||||||
- `vscode`: Loaded by an LSP call to the client.
|
|
||||||
|
#### Schema content request
|
||||||
|
|
||||||
|
Requests for schemas with URLs not handled by the server are forwarded to the client through an LSP request. This request is a JSON language server specific, non-standardized, extension to the LSP.
|
||||||
|
|
||||||
|
Request:
|
||||||
|
- method: 'vscode/content'
|
||||||
|
- params: `string` - The schema URL to request.
|
||||||
|
- response: `string` - The content of the schema with the given URL
|
||||||
|
|
||||||
|
#### Schema content change notification
|
||||||
|
|
||||||
|
When the client is aware that a schema content has changed, it will notify the server through a notification. This notification is a JSON language server specific, non-standardized, extension to the LSP.
|
||||||
|
The server will, as a response, clear the schema content from the cache and reload the schema content when required again.
|
||||||
|
|
||||||
#### Schema associations notification
|
#### Schema associations notification
|
||||||
|
|
||||||
@@ -111,20 +142,6 @@ interface ISchemaAssociations {
|
|||||||
- keys: a file names or file path (separated by `/`). `*` can be used as a wildcard.
|
- keys: a file names or file path (separated by `/`). `*` can be used as a wildcard.
|
||||||
- values: An array of schema URLs
|
- values: An array of schema URLs
|
||||||
|
|
||||||
#### Schema content request
|
|
||||||
|
|
||||||
The schema content for schema URLs that start with `vscode://` will be requested from the client through an LSP request. This request is a JSON language server specific, non-standardized, extension to the LSP.
|
|
||||||
|
|
||||||
Request:
|
|
||||||
- method: 'vscode/content'
|
|
||||||
- params: `string` - The schema URL to request. The server will only ask for URLs that start with `vscode://`
|
|
||||||
- response: `string` - The content of the schema with the given URL
|
|
||||||
|
|
||||||
#### Schema content change notification
|
|
||||||
|
|
||||||
When the client is aware that a schema content has changed, it will notify the server through a notification. This notification is a JSON language server specific, non-standardized, extension to the LSP.
|
|
||||||
The server will, as a response, clear the schema content from the cache and reload the schema content when required again.
|
|
||||||
|
|
||||||
Notification:
|
Notification:
|
||||||
- method: 'json/schemaContent'
|
- method: 'json/schemaContent'
|
||||||
- params: `string` the URL of the schema that has changed.
|
- params: `string` the URL of the schema that has changed.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "vscode-json-languageserver",
|
"name": "vscode-json-languageserver",
|
||||||
"description": "JSON language server",
|
"description": "JSON language server",
|
||||||
"version": "1.0.1",
|
"version": "1.2.1",
|
||||||
"author": "Microsoft Corporation",
|
"author": "Microsoft Corporation",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -17,17 +17,16 @@
|
|||||||
"vscode-json-languageservice": "^3.3.0",
|
"vscode-json-languageservice": "^3.3.0",
|
||||||
"vscode-languageserver": "^5.3.0-next.8",
|
"vscode-languageserver": "^5.3.0-next.8",
|
||||||
"vscode-nls": "^4.1.1",
|
"vscode-nls": "^4.1.1",
|
||||||
"vscode-uri": "^2.0.1"
|
"vscode-uri": "^2.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/mocha": "2.2.33",
|
"@types/mocha": "2.2.33",
|
||||||
"@types/node": "^10.14.8"
|
"@types/node": "^10.14.8"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepublishOnly": "npm run clean && npm run test",
|
"prepublishOnly": "npm run clean && npm run compile",
|
||||||
"preversion": "npm test",
|
"compile": "npx gulp compile-extension:json-language-features-server",
|
||||||
"compile": "gulp compile-extension:json-language-features-server",
|
"watch": "npx gulp watch-extension:json-language-features-server",
|
||||||
"watch": "gulp watch-extension:json-language-features-server",
|
|
||||||
"clean": "../../../node_modules/.bin/rimraf out",
|
"clean": "../../../node_modules/.bin/rimraf out",
|
||||||
"install-service-next": "yarn add vscode-json-languageservice@next",
|
"install-service-next": "yarn add vscode-json-languageservice@next",
|
||||||
"install-service-local": "yarn link vscode-json-languageservice",
|
"install-service-local": "yarn link vscode-json-languageservice",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import * as fs from 'fs';
|
|||||||
import { URI } from 'vscode-uri';
|
import { URI } from 'vscode-uri';
|
||||||
import * as URL from 'url';
|
import * as URL from 'url';
|
||||||
import { formatError, runSafe, runSafeAsync } from './utils/runner';
|
import { formatError, runSafe, runSafeAsync } from './utils/runner';
|
||||||
import { JSONDocument, JSONSchema, getLanguageService, DocumentLanguageSettings, SchemaConfiguration } from 'vscode-json-languageservice';
|
import { JSONDocument, JSONSchema, getLanguageService, DocumentLanguageSettings, SchemaConfiguration, ClientCapabilities } from 'vscode-json-languageservice';
|
||||||
import { getLanguageModelCache } from './languageModelCache';
|
import { getLanguageModelCache } from './languageModelCache';
|
||||||
|
|
||||||
interface ISchemaAssociations {
|
interface ISchemaAssociations {
|
||||||
@@ -103,6 +103,7 @@ function getSchemaRequestService(handledSchemas: { [schema: string]: boolean })
|
|||||||
let languageService = getLanguageService({
|
let languageService = getLanguageService({
|
||||||
workspaceContext,
|
workspaceContext,
|
||||||
contributions: [],
|
contributions: [],
|
||||||
|
clientCapabilities: ClientCapabilities.LATEST
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create a text document manager.
|
// Create a text document manager.
|
||||||
@@ -154,7 +155,8 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
|
|||||||
documentSymbolProvider: true,
|
documentSymbolProvider: true,
|
||||||
documentRangeFormattingProvider: false,
|
documentRangeFormattingProvider: false,
|
||||||
colorProvider: {},
|
colorProvider: {},
|
||||||
foldingRangeProvider: true
|
foldingRangeProvider: true,
|
||||||
|
selectionRangeProvider: true
|
||||||
};
|
};
|
||||||
|
|
||||||
return { capabilities };
|
return { capabilities };
|
||||||
@@ -433,7 +435,8 @@ connection.onFoldingRanges((params, token) => {
|
|||||||
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
|
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
|
||||||
});
|
});
|
||||||
|
|
||||||
connection.onRequest('$/textDocument/selectionRanges', async (params, token) => {
|
|
||||||
|
connection.onSelectionRanges((params, token) => {
|
||||||
return runSafe(() => {
|
return runSafe(() => {
|
||||||
const document = documents.get(params.textDocument.uri);
|
const document = documents.get(params.textDocument.uri);
|
||||||
if (document) {
|
if (document) {
|
||||||
|
|||||||
@@ -134,3 +134,8 @@ vscode-uri@^2.0.1:
|
|||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.1.tgz#5448e4f77d21d93ffa34b96f84c6c5e09e3f5a9b"
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.1.tgz#5448e4f77d21d93ffa34b96f84c6c5e09e3f5a9b"
|
||||||
integrity sha512-s/k0zsYr6y+tsocFyxT/+G5aq8mEdpDZuph3LZ+UmCs7LNhx/xomiCy5kyP+jOAKC7RMCUvb6JbPD1/TgAvq0g==
|
integrity sha512-s/k0zsYr6y+tsocFyxT/+G5aq8mEdpDZuph3LZ+UmCs7LNhx/xomiCy5kyP+jOAKC7RMCUvb6JbPD1/TgAvq0g==
|
||||||
|
|
||||||
|
vscode-uri@^2.0.3:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
|
||||||
|
integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
|
||||||
|
|||||||
@@ -716,7 +716,7 @@
|
|||||||
{
|
{
|
||||||
"begin": "(^|\\G)(\\s*)(.*)",
|
"begin": "(^|\\G)(\\s*)(.*)",
|
||||||
"while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
|
"while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
|
||||||
"contentName": "meta.embedded.block.cpp",
|
"contentName": "meta.embedded.block.cpp source.cpp",
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"include": "source.cpp"
|
"include": "source.cpp"
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"registrations": [
|
|
||||||
{
|
|
||||||
"component": {
|
|
||||||
"type": "git",
|
|
||||||
"git": {
|
|
||||||
"name": "textmate/markdown.tmbundle",
|
|
||||||
"repositoryUrl": "https://github.com/textmate/markdown.tmbundle",
|
|
||||||
"commitHash": "11cf764606cb2cde54badb5d0e5a0758a8871c4b"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"licenseDetail": [
|
|
||||||
"Copyright (c) markdown.tmbundle authors",
|
|
||||||
"",
|
|
||||||
"If not otherwise specified (see below), files in this repository fall under the following license:",
|
|
||||||
"",
|
|
||||||
"Permission to copy, use, modify, sell and distribute this",
|
|
||||||
"software is granted. This software is provided \"as is\" without",
|
|
||||||
"express or implied warranty, and with no claim as to its",
|
|
||||||
"suitability for any purpose.",
|
|
||||||
"",
|
|
||||||
"An exception is made for files in readable text which contain their own license information,",
|
|
||||||
"or files where an accompanying file exists (in the same directory) with a \"-license\" suffix added",
|
|
||||||
"to the base-name name of the original file, and an extension of txt, html, or similar. For example",
|
|
||||||
"\"tidy\" is accompanied by \"tidy-license.txt\"."
|
|
||||||
],
|
|
||||||
"license": "TextMate Bundle License",
|
|
||||||
"version": "0.0.0"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": 1
|
|
||||||
}
|
|
||||||
@@ -186,6 +186,7 @@ pre.hljs code > div {
|
|||||||
|
|
||||||
pre code {
|
pre code {
|
||||||
color: var(--vscode-editor-foreground);
|
color: var(--vscode-editor-foreground);
|
||||||
|
tab-size: 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -187,6 +187,9 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"markdown.styles": {
|
"markdown.styles": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"default": [],
|
"default": [],
|
||||||
"description": "%markdown.styles.dec%",
|
"description": "%markdown.styles.dec%",
|
||||||
"scope": "resource"
|
"scope": "resource"
|
||||||
|
|||||||
@@ -15,9 +15,11 @@ export class ShowSourceCommand implements Command {
|
|||||||
) { }
|
) { }
|
||||||
|
|
||||||
public execute() {
|
public execute() {
|
||||||
if (this.previewManager.activePreviewResource) {
|
const { activePreviewResource, activePreviewResourceColumn } = this.previewManager;
|
||||||
return vscode.workspace.openTextDocument(this.previewManager.activePreviewResource)
|
if (activePreviewResource && activePreviewResourceColumn) {
|
||||||
.then(document => vscode.window.showTextDocument(document));
|
return vscode.workspace.openTextDocument(activePreviewResource).then(document => {
|
||||||
|
vscode.window.showTextDocument(document, activePreviewResourceColumn);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ export class PreviewDocumentVersion {
|
|||||||
|
|
||||||
export class MarkdownPreview extends Disposable {
|
export class MarkdownPreview extends Disposable {
|
||||||
|
|
||||||
public static viewType = 'markdown.preview';
|
public static readonly viewType = 'markdown.preview';
|
||||||
|
|
||||||
private _resource: vscode.Uri;
|
private _resource: vscode.Uri;
|
||||||
private _locked: boolean;
|
private _locked: boolean;
|
||||||
@@ -102,11 +102,13 @@ export class MarkdownPreview extends Disposable {
|
|||||||
const resource = vscode.Uri.parse(state.resource);
|
const resource = vscode.Uri.parse(state.resource);
|
||||||
const locked = state.locked;
|
const locked = state.locked;
|
||||||
const line = state.line;
|
const line = state.line;
|
||||||
|
const resourceColumn = state.resourceColumn;
|
||||||
|
|
||||||
const preview = new MarkdownPreview(
|
const preview = new MarkdownPreview(
|
||||||
webview,
|
webview,
|
||||||
resource,
|
resource,
|
||||||
locked,
|
locked,
|
||||||
|
resourceColumn,
|
||||||
contentProvider,
|
contentProvider,
|
||||||
previewConfigurations,
|
previewConfigurations,
|
||||||
logger,
|
logger,
|
||||||
@@ -125,6 +127,7 @@ export class MarkdownPreview extends Disposable {
|
|||||||
public static create(
|
public static create(
|
||||||
resource: vscode.Uri,
|
resource: vscode.Uri,
|
||||||
previewColumn: vscode.ViewColumn,
|
previewColumn: vscode.ViewColumn,
|
||||||
|
resourceColumn: vscode.ViewColumn,
|
||||||
locked: boolean,
|
locked: boolean,
|
||||||
contentProvider: MarkdownContentProvider,
|
contentProvider: MarkdownContentProvider,
|
||||||
previewConfigurations: MarkdownPreviewConfigurationManager,
|
previewConfigurations: MarkdownPreviewConfigurationManager,
|
||||||
@@ -144,6 +147,7 @@ export class MarkdownPreview extends Disposable {
|
|||||||
webview,
|
webview,
|
||||||
resource,
|
resource,
|
||||||
locked,
|
locked,
|
||||||
|
resourceColumn,
|
||||||
contentProvider,
|
contentProvider,
|
||||||
previewConfigurations,
|
previewConfigurations,
|
||||||
logger,
|
logger,
|
||||||
@@ -155,6 +159,7 @@ export class MarkdownPreview extends Disposable {
|
|||||||
webview: vscode.WebviewPanel,
|
webview: vscode.WebviewPanel,
|
||||||
resource: vscode.Uri,
|
resource: vscode.Uri,
|
||||||
locked: boolean,
|
locked: boolean,
|
||||||
|
private readonly _resourceColumn: vscode.ViewColumn,
|
||||||
private readonly _contentProvider: MarkdownContentProvider,
|
private readonly _contentProvider: MarkdownContentProvider,
|
||||||
private readonly _previewConfigurations: MarkdownPreviewConfigurationManager,
|
private readonly _previewConfigurations: MarkdownPreviewConfigurationManager,
|
||||||
private readonly _logger: Logger,
|
private readonly _logger: Logger,
|
||||||
@@ -249,11 +254,16 @@ export class MarkdownPreview extends Disposable {
|
|||||||
return this._resource;
|
return this._resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get resourceColumn(): vscode.ViewColumn {
|
||||||
|
return this._resourceColumn;
|
||||||
|
}
|
||||||
|
|
||||||
public get state() {
|
public get state() {
|
||||||
return {
|
return {
|
||||||
resource: this.resource.toString(),
|
resource: this.resource.toString(),
|
||||||
locked: this._locked,
|
locked: this._locked,
|
||||||
line: this.line,
|
line: this.line,
|
||||||
|
resourceColumn: this.resourceColumn,
|
||||||
imageInfo: this.imageInfo
|
imageInfo: this.imageInfo
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ export class MarkdownPreviewManager extends Disposable implements vscode.Webview
|
|||||||
return this._activePreview && this._activePreview.resource;
|
return this._activePreview && this._activePreview.resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get activePreviewResourceColumn() {
|
||||||
|
return this._activePreview && this._activePreview.resourceColumn;
|
||||||
|
}
|
||||||
|
|
||||||
public toggleLock() {
|
public toggleLock() {
|
||||||
const preview = this._activePreview;
|
const preview = this._activePreview;
|
||||||
if (preview) {
|
if (preview) {
|
||||||
@@ -110,6 +114,7 @@ export class MarkdownPreviewManager extends Disposable implements vscode.Webview
|
|||||||
const preview = MarkdownPreview.create(
|
const preview = MarkdownPreview.create(
|
||||||
resource,
|
resource,
|
||||||
previewSettings.previewColumn,
|
previewSettings.previewColumn,
|
||||||
|
previewSettings.resourceColumn,
|
||||||
previewSettings.locked,
|
previewSettings.locked,
|
||||||
this._contentProvider,
|
this._contentProvider,
|
||||||
this._previewConfigurations,
|
this._previewConfigurations,
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-vs-action-green{fill:#ffffff;}</style></defs><title>continue</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M14.334,8,3.667,16H3V0h.667Z"/></g><g id="iconBg"><path class="icon-vs-action-green" d="M4,1.5v13L12.667,8,4,1.5Z"/></g></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2V14.4805L12.9146 8.24024L4 2ZM11.1809 8.24024L4.995 12.5684V3.91209L11.1809 8.24024Z" fill="#C5C5C5"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 259 B |
@@ -1,7 +1,5 @@
|
|||||||
<!-- Generated by IcoMoon.io -->
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="12" height="12" style="fill:#C5C5C5;fill-opacity:1;" viewBox="0 0 512 512">
|
<path d="M3.01996 8.50166L3.01725 8.46085C3.01812 8.47446 3.01903 8.48807 3.01996 8.50166Z" fill="#C5C5C5"/>
|
||||||
<title></title>
|
<path d="M7.2577 8.90466L5.4876 7.12558L6.07922 6.53397L7.95097 8.41518L9.79605 6.57011L10.3877 7.16171L8.61769 8.93167L10.3878 10.7108L9.79619 11.3024L7.92445 9.42114L6.07936 11.2662L5.48775 10.6746L7.2577 8.90466Z" fill="#C5C5C5"/>
|
||||||
<g id="icomoon-ignore">
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.8775 3.91833V4.5H11.6624L13.3203 2.8421L13.9119 3.43371L12.3421 5.00354L12.361 5.05303C12.6914 5.91515 12.8775 6.88815 12.8775 7.91833C12.8775 8.11403 12.8708 8.30766 12.8576 8.49886L12.8546 8.5425H14.92V9.37916H12.7495L12.7434 9.41265C12.567 10.3771 12.2239 11.2564 11.7565 11.9964L11.7218 12.0515L13.7182 14.058L13.1251 14.6481L11.2153 12.7287L11.1576 12.7932C10.2949 13.7582 9.17697 14.3367 7.95917 14.3367C6.72251 14.3367 5.58881 13.7401 4.72075 12.748L4.66326 12.6823L2.79157 14.554L2.19995 13.9624L4.16317 11.9992L4.12918 11.9442C3.6785 11.2152 3.34718 10.3545 3.17494 9.41265L3.16882 9.37916H1V8.5425H3.0637L3.0607 8.49886C3.04755 8.30766 3.04084 8.11403 3.04084 7.91833C3.04084 6.90159 3.22212 5.94055 3.54446 5.08683L3.56303 5.03764L1.95216 3.41862L2.54527 2.8285L4.20835 4.5H5.04084V3.91833C5.04084 2.30658 6.34742 1 7.95917 1C9.57092 1 10.8775 2.30658 10.8775 3.91833ZM5.87751 3.91833V4.5H10.0408V3.91833C10.0408 2.76866 9.10884 1.83667 7.95917 1.83667C6.8095 1.83667 5.87751 2.76866 5.87751 3.91833ZM11.5938 5.38957L11.5739 5.33667H4.34441L4.32451 5.38957C4.0411 6.1427 3.8775 7.00011 3.8775 7.91833C3.8775 9.52826 4.38048 10.9522 5.15153 11.9546C5.9219 12.9561 6.9225 13.5 7.95917 13.5C8.99584 13.5 9.99644 12.9561 10.7668 11.9546C11.5379 10.9522 12.0408 9.52826 12.0408 7.91833C12.0408 7.00011 11.8772 6.14269 11.5938 5.38957Z" fill="#C5C5C5"/>
|
||||||
</g>
|
|
||||||
<path d="M512 288v-32h-96.645c-2.931-36.343-15.893-69.513-35.835-96.125h80.972l35.030-140.12-31.045-7.761-28.97 115.88h-87.34c-0.446-0.347-0.898-0.687-1.349-1.028 3.355-9.751 5.181-20.211 5.181-31.097 0.001-52.88-42.979-95.749-95.999-95.749s-96 42.869-96 95.75c0 10.886 1.825 21.346 5.181 31.097-0.45 0.342-0.902 0.681-1.349 1.028h-87.34l-28.97-115.88-31.045 7.761 35.030 140.12h80.972c-19.942 26.611-32.903 59.781-35.834 96.124h-96.645v32h96.685c1.901 22.832 7.754 44.406 16.819 63.875h-61.996l-35.030 140.119 31.045 7.762 28.97-115.881h56.177c29.346 39.016 73.698 63.875 123.33 63.875s93.983-24.859 123.331-63.875h56.177l28.97 115.881 31.045-7.762-35.030-140.119h-61.996c9.065-19.469 14.918-41.043 16.818-63.875h96.685z"></path>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 953 B After Width: | Height: | Size: 1.8 KiB |
@@ -1 +1,5 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.icon-canvas-transparent{opacity:0;fill:#2d2d30}.icon-vs-out{fill:#2d2d30}.icon-vs-bg{fill:#696969}</style><path class="icon-canvas-transparent" d="M16 16H0V0h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 5.5a5.5 5.5 0 0 1-5.5 5.5c-.275 0-.543-.027-.807-.066l-.079-.012a5.429 5.429 0 0 1-.81-.192l-4.537 4.537c-.472.473-1.1.733-1.767.733s-1.295-.26-1.768-.732a2.502 2.502 0 0 1 0-3.535l4.537-4.537a5.452 5.452 0 0 1-.191-.812c-.005-.025-.008-.051-.012-.077A5.503 5.503 0 0 1 5 5.5a5.5 5.5 0 1 1 11 0z" id="outline"/><path class="icon-vs-bg" d="M15 5.5a4.5 4.5 0 0 1-4.5 4.5c-.693 0-1.342-.17-1.929-.45l-5.01 5.01c-.293.294-.677.44-1.061.44s-.768-.146-1.061-.439a1.5 1.5 0 0 1 0-2.121l5.01-5.01A4.483 4.483 0 0 1 6 5.5 4.5 4.5 0 0 1 10.5 1c.693 0 1.342.17 1.929.45L9.636 4.243l2.121 2.121 2.793-2.793c.28.587.45 1.236.45 1.929z" id="iconBg"/></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g opacity="0.5">
|
||||||
|
<path d="M2.80723 14.9754C2.57119 14.9721 2.33826 14.9211 2.12247 14.8254C1.90667 14.7297 1.71248 14.5913 1.55158 14.4186C1.2385 14.1334 1.04433 13.7408 1.00775 13.3189C0.966225 12.8828 1.09269 12.4473 1.36133 12.1013C2.56779 10.8289 4.9473 8.4494 6.67811 6.75479C6.30983 5.75887 6.32704 4.66127 6.72637 3.67739C7.05474 2.85876 7.63869 2.16805 8.39129 1.70807C8.9817 1.31706 9.66031 1.07944 10.3657 1.01673C11.0711 0.954022 11.7809 1.06819 12.4311 1.34892L13.0482 1.6162L10.1824 4.56738L11.4371 5.82582L14.3809 2.94887L14.6482 3.56788C14.8735 4.08976 14.993 4.65119 14.9997 5.21961C15.0064 5.78802 14.9002 6.35211 14.6872 6.87915C14.476 7.40029 14.1623 7.87368 13.7647 8.27122C13.5394 8.49169 13.2904 8.68653 13.0222 8.85218C12.4673 9.22275 11.8324 9.45636 11.1697 9.5338C10.5069 9.61124 9.83521 9.5303 9.20982 9.29764C8.11194 10.4113 5.37142 13.1704 3.89119 14.5522C3.59426 14.8219 3.20832 14.9726 2.80723 14.9754ZM10.7448 1.92802C10.087 1.92637 9.44359 2.12018 8.89614 2.48485C8.68265 2.6152 8.48437 2.76897 8.30498 2.9433C7.82789 3.42423 7.50926 4.03953 7.39182 4.70669C7.27437 5.37385 7.36374 6.06098 7.64792 6.67591L7.78342 6.97288L7.55048 7.20025C5.81224 8.89672 3.28146 11.4201 2.06479 12.7045C1.95646 12.8658 1.91012 13.0608 1.93435 13.2535C1.95857 13.4463 2.05171 13.6238 2.19657 13.7532C2.28005 13.8462 2.38177 13.9211 2.49541 13.9731C2.59557 14.0184 2.70383 14.043 2.81373 14.0455C2.98064 14.0413 3.14044 13.977 3.26383 13.8646C4.83687 12.3964 7.87622 9.32641 8.76807 8.42435L8.9973 8.19326L9.29242 8.32783C9.80618 8.56732 10.3731 8.66985 10.9382 8.62545C11.5033 8.58106 12.0473 8.39125 12.5174 8.07447C12.7313 7.9426 12.9296 7.78694 13.1085 7.61045C13.4183 7.30153 13.6631 6.93374 13.8286 6.52874C13.994 6.12375 14.0767 5.68974 14.0719 5.25228C14.0719 5.03662 14.0505 4.82148 14.0078 4.61007L11.4306 7.12508L8.87944 4.57759L11.3944 1.98834C11.1804 1.94674 10.9628 1.92653 10.7448 1.92802Z" fill="#C5C5C5"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 922 B After Width: | Height: | Size: 2.0 KiB |
@@ -1 +1,4 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.451 5.609l-.579-.939-1.068.812-.076.094c-.335.415-.927 1.341-1.124 2.876l-.021.165.033.163.071.345c0 1.654-1.346 3-3 3-.795 0-1.545-.311-2.107-.868-.563-.567-.873-1.317-.873-2.111 0-1.431 1.007-2.632 2.351-2.929v2.926s2.528-2.087 2.984-2.461h.012l3.061-2.582-4.919-4.1h-1.137v2.404c-3.429.318-6.121 3.211-6.121 6.721 0 1.809.707 3.508 1.986 4.782 1.277 1.282 2.976 1.988 4.784 1.988 3.722 0 6.75-3.028 6.75-6.75 0-1.245-.349-2.468-1.007-3.536z" fill="#2D2D30"/><path d="M12.6 6.134l-.094.071c-.269.333-.746 1.096-.91 2.375.057.277.092.495.092.545 0 2.206-1.794 4-4 4-1.098 0-2.093-.445-2.817-1.164-.718-.724-1.163-1.718-1.163-2.815 0-2.206 1.794-4 4-4l.351.025v1.85s1.626-1.342 1.631-1.339l1.869-1.577-3.5-2.917v2.218l-.371-.03c-3.176 0-5.75 2.574-5.75 5.75 0 1.593.648 3.034 1.695 4.076 1.042 1.046 2.482 1.694 4.076 1.694 3.176 0 5.75-2.574 5.75-5.75-.001-1.106-.318-2.135-.859-3.012z" fill="#C5C5C5"/></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.56253 2.51574C3.46348 3.45007 2 5.55411 2 7.99996C2 11.3137 4.68629 14 8 14C11.3137 14 14 11.3137 14 7.99996C14 5.32516 12.2497 3.05916 9.83199 2.28479L9.52968 3.23829C11.5429 3.88451 13 5.77207 13 7.99996C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 7.99996C3 6.31101 3.83742 4.81764 5.11969 3.91242L5.56253 2.51574Z" fill="#C5C5C5"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5 3H2V2H5.5L6 2.5V6H5V3Z" fill="#C5C5C5"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 986 B After Width: | Height: | Size: 589 B |
@@ -1 +1,3 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.icon-canvas-transparent{opacity:0;fill:#2d2d30}.icon-vs-out{fill:#2d2d30}.icon-vs-bg{fill:#c5c5c5}</style><path class="icon-canvas-transparent" d="M16 16H0V0h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 5.5a5.5 5.5 0 0 1-5.5 5.5c-.275 0-.543-.027-.807-.066l-.079-.012a5.429 5.429 0 0 1-.81-.192l-4.537 4.537c-.472.473-1.1.733-1.767.733s-1.295-.26-1.768-.732a2.502 2.502 0 0 1 0-3.535l4.537-4.537a5.452 5.452 0 0 1-.191-.812c-.005-.025-.008-.051-.012-.077A5.503 5.503 0 0 1 5 5.5a5.5 5.5 0 1 1 11 0z" id="outline"/><path class="icon-vs-bg" d="M15 5.5a4.5 4.5 0 0 1-4.5 4.5c-.693 0-1.342-.17-1.929-.45l-5.01 5.01c-.293.294-.677.44-1.061.44s-.768-.146-1.061-.439a1.5 1.5 0 0 1 0-2.121l5.01-5.01A4.483 4.483 0 0 1 6 5.5 4.5 4.5 0 0 1 10.5 1c.693 0 1.342.17 1.929.45L9.636 4.243l2.121 2.121 2.793-2.793c.28.587.45 1.236.45 1.929z" id="iconBg"/></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M2.80723 14.9754C2.57119 14.9721 2.33826 14.9211 2.12247 14.8254C1.90667 14.7297 1.71248 14.5913 1.55158 14.4186C1.2385 14.1334 1.04433 13.7408 1.00775 13.3189C0.966225 12.8828 1.09269 12.4473 1.36133 12.1013C2.56779 10.8289 4.9473 8.4494 6.67811 6.75479C6.30983 5.75887 6.32704 4.66127 6.72637 3.67739C7.05474 2.85876 7.63869 2.16805 8.39129 1.70807C8.9817 1.31706 9.66031 1.07944 10.3657 1.01673C11.0711 0.954022 11.7809 1.06819 12.4311 1.34892L13.0482 1.6162L10.1824 4.56738L11.4371 5.82582L14.3809 2.94887L14.6482 3.56788C14.8735 4.08976 14.993 4.65119 14.9997 5.21961C15.0064 5.78802 14.9002 6.35211 14.6872 6.87915C14.476 7.40029 14.1623 7.87368 13.7647 8.27122C13.5394 8.49169 13.2904 8.68653 13.0222 8.85218C12.4673 9.22275 11.8324 9.45636 11.1697 9.5338C10.5069 9.61124 9.83521 9.5303 9.20982 9.29764C8.11194 10.4113 5.37142 13.1704 3.89119 14.5522C3.59426 14.8219 3.20832 14.9726 2.80723 14.9754ZM10.7448 1.92802C10.087 1.92637 9.44359 2.12018 8.89614 2.48485C8.68265 2.6152 8.48437 2.76897 8.30498 2.9433C7.82789 3.42423 7.50926 4.03953 7.39182 4.70669C7.27438 5.37385 7.36374 6.06098 7.64792 6.67591L7.78342 6.97288L7.55048 7.20025C5.81224 8.89672 3.28146 11.4201 2.06479 12.7045C1.95646 12.8658 1.91012 13.0608 1.93435 13.2535C1.95857 13.4463 2.05171 13.6238 2.19657 13.7532C2.28005 13.8462 2.38177 13.9211 2.49541 13.9731C2.59557 14.0184 2.70383 14.043 2.81373 14.0455C2.98064 14.0413 3.14044 13.977 3.26383 13.8646C4.83687 12.3964 7.87622 9.32641 8.76807 8.42435L8.9973 8.19326L9.29242 8.32783C9.80617 8.56732 10.3731 8.66985 10.9382 8.62545C11.5033 8.58106 12.0473 8.39125 12.5174 8.07447C12.7313 7.9426 12.9296 7.78694 13.1085 7.61045C13.4183 7.30153 13.6631 6.93374 13.8286 6.52874C13.994 6.12375 14.0767 5.68974 14.0719 5.25228C14.0719 5.03662 14.0505 4.82148 14.0078 4.61007L11.4306 7.12508L8.87944 4.57759L11.3944 1.98834C11.1804 1.94674 10.9628 1.92653 10.7448 1.92802Z" fill="#C5C5C5"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 922 B After Width: | Height: | Size: 2.0 KiB |
@@ -1 +1,3 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-vs-action-green{fill:#000000;}</style></defs><title>continue</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M14.334,8,3.667,16H3V0h.667Z"/></g><g id="iconBg"><path class="icon-vs-action-green" d="M4,1.5v13L12.667,8,4,1.5Z"/></g></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2V14.4805L12.9146 8.24024L4 2ZM11.1809 8.24024L4.995 12.5684V3.91209L11.1809 8.24024Z" fill="#424242"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 259 B |
@@ -1,7 +1,5 @@
|
|||||||
<!-- Generated by IcoMoon.io -->
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="12" height="12" style="fill:#464D46;fill-opacity:1;" viewBox="0 0 512 512">
|
<path d="M3.01996 8.50166L3.01725 8.46085C3.01812 8.47446 3.01903 8.48807 3.01996 8.50166Z" fill="#424242"/>
|
||||||
<title></title>
|
<path d="M7.2577 8.90466L5.4876 7.12558L6.07922 6.53397L7.95097 8.41518L9.79605 6.57011L10.3877 7.16171L8.61769 8.93167L10.3878 10.7108L9.79619 11.3024L7.92445 9.42114L6.07936 11.2662L5.48775 10.6746L7.2577 8.90466Z" fill="#424242"/>
|
||||||
<g id="icomoon-ignore">
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.8775 3.91833V4.5H11.6624L13.3203 2.8421L13.9119 3.43371L12.3421 5.00354L12.361 5.05303C12.6914 5.91515 12.8775 6.88815 12.8775 7.91833C12.8775 8.11403 12.8708 8.30766 12.8576 8.49886L12.8546 8.5425H14.92V9.37916H12.7495L12.7434 9.41265C12.567 10.3771 12.2239 11.2564 11.7565 11.9964L11.7218 12.0515L13.7182 14.058L13.1251 14.6481L11.2153 12.7287L11.1576 12.7932C10.2949 13.7582 9.17697 14.3367 7.95917 14.3367C6.72251 14.3367 5.58881 13.7401 4.72075 12.748L4.66326 12.6823L2.79157 14.554L2.19995 13.9624L4.16317 11.9992L4.12918 11.9442C3.6785 11.2152 3.34718 10.3545 3.17494 9.41265L3.16882 9.37916H1V8.5425H3.0637L3.0607 8.49886C3.04755 8.30766 3.04084 8.11403 3.04084 7.91833C3.04084 6.90159 3.22212 5.94055 3.54446 5.08683L3.56303 5.03764L1.95216 3.41862L2.54527 2.8285L4.20835 4.5H5.04084V3.91833C5.04084 2.30658 6.34742 1 7.95917 1C9.57092 1 10.8775 2.30658 10.8775 3.91833ZM5.87751 3.91833V4.5H10.0408V3.91833C10.0408 2.76866 9.10884 1.83667 7.95917 1.83667C6.8095 1.83667 5.87751 2.76866 5.87751 3.91833ZM11.5938 5.38957L11.5739 5.33667H4.34441L4.32451 5.38957C4.0411 6.1427 3.8775 7.00011 3.8775 7.91833C3.8775 9.52826 4.38048 10.9522 5.15153 11.9546C5.9219 12.9561 6.9225 13.5 7.95917 13.5C8.99584 13.5 9.99644 12.9561 10.7668 11.9546C11.5379 10.9522 12.0408 9.52826 12.0408 7.91833C12.0408 7.00011 11.8772 6.14269 11.5938 5.38957Z" fill="#424242"/>
|
||||||
</g>
|
|
||||||
<path d="M512 288v-32h-96.645c-2.931-36.343-15.893-69.513-35.835-96.125h80.972l35.030-140.12-31.045-7.761-28.97 115.88h-87.34c-0.446-0.347-0.898-0.687-1.349-1.028 3.355-9.751 5.181-20.211 5.181-31.097 0.001-52.88-42.979-95.749-95.999-95.749s-96 42.869-96 95.75c0 10.886 1.825 21.346 5.181 31.097-0.45 0.342-0.902 0.681-1.349 1.028h-87.34l-28.97-115.88-31.045 7.761 35.030 140.12h80.972c-19.942 26.611-32.903 59.781-35.834 96.124h-96.645v32h96.685c1.901 22.832 7.754 44.406 16.819 63.875h-61.996l-35.030 140.119 31.045 7.762 28.97-115.881h56.177c29.346 39.016 73.698 63.875 123.33 63.875s93.983-24.859 123.331-63.875h56.177l28.97 115.881 31.045-7.762-35.030-140.119h-61.996c9.065-19.469 14.918-41.043 16.818-63.875h96.685z"></path>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 953 B After Width: | Height: | Size: 1.8 KiB |
@@ -1 +1,5 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vs-out{fill:#f6f6f6}.icon-vs-bg{fill:#D3D3D3}</style><path class="icon-canvas-transparent" d="M16 16H0V0h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 5.5a5.5 5.5 0 0 1-5.5 5.5c-.275 0-.543-.027-.807-.066l-.079-.012a5.429 5.429 0 0 1-.81-.192l-4.537 4.537c-.472.473-1.1.733-1.767.733s-1.295-.26-1.768-.732a2.502 2.502 0 0 1 0-3.535l4.537-4.537a5.452 5.452 0 0 1-.191-.812c-.005-.025-.008-.051-.012-.077A5.503 5.503 0 0 1 5 5.5a5.5 5.5 0 1 1 11 0z" id="outline"/><path class="icon-vs-bg" d="M15 5.5a4.5 4.5 0 0 1-4.5 4.5c-.693 0-1.342-.17-1.929-.45l-5.01 5.01c-.293.294-.677.44-1.061.44s-.768-.146-1.061-.439a1.5 1.5 0 0 1 0-2.121l5.01-5.01A4.483 4.483 0 0 1 6 5.5 4.5 4.5 0 0 1 10.5 1c.693 0 1.342.17 1.929.45L9.636 4.243l2.121 2.121 2.793-2.793c.28.587.45 1.236.45 1.929z" id="iconBg"/></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g opacity="0.5">
|
||||||
|
<path d="M2.80723 14.9754C2.57119 14.9721 2.33826 14.9211 2.12247 14.8254C1.90667 14.7297 1.71248 14.5913 1.55158 14.4186C1.2385 14.1334 1.04433 13.7408 1.00775 13.3189C0.966225 12.8828 1.09269 12.4473 1.36133 12.1013C2.56779 10.8289 4.9473 8.4494 6.67811 6.75479C6.30983 5.75887 6.32704 4.66127 6.72637 3.67739C7.05474 2.85876 7.63869 2.16805 8.39129 1.70807C8.9817 1.31706 9.66031 1.07944 10.3657 1.01673C11.0711 0.954022 11.7809 1.06819 12.4311 1.34892L13.0482 1.6162L10.1824 4.56738L11.4371 5.82582L14.3809 2.94887L14.6482 3.56788C14.8735 4.08976 14.993 4.65119 14.9997 5.21961C15.0064 5.78802 14.9002 6.35211 14.6872 6.87915C14.476 7.40029 14.1623 7.87368 13.7647 8.27122C13.5394 8.49169 13.2904 8.68653 13.0222 8.85218C12.4673 9.22275 11.8324 9.45636 11.1697 9.5338C10.5069 9.61124 9.83521 9.5303 9.20982 9.29764C8.11194 10.4113 5.37142 13.1704 3.89119 14.5522C3.59426 14.8219 3.20832 14.9726 2.80723 14.9754ZM10.7448 1.92802C10.087 1.92637 9.44359 2.12018 8.89614 2.48485C8.68265 2.6152 8.48437 2.76897 8.30498 2.9433C7.82789 3.42423 7.50926 4.03953 7.39182 4.70669C7.27437 5.37385 7.36374 6.06098 7.64792 6.67591L7.78342 6.97288L7.55048 7.20025C5.81224 8.89672 3.28146 11.4201 2.06479 12.7045C1.95646 12.8658 1.91012 13.0608 1.93435 13.2535C1.95857 13.4463 2.05171 13.6238 2.19657 13.7532C2.28005 13.8462 2.38177 13.9211 2.49541 13.9731C2.59557 14.0184 2.70383 14.043 2.81373 14.0455C2.98064 14.0413 3.14044 13.977 3.26383 13.8646C4.83687 12.3964 7.87622 9.32641 8.76807 8.42435L8.9973 8.19326L9.29242 8.32783C9.80618 8.56732 10.3731 8.66985 10.9382 8.62545C11.5033 8.58106 12.0473 8.39125 12.5174 8.07447C12.7313 7.9426 12.9296 7.78694 13.1085 7.61045C13.4183 7.30153 13.6631 6.93374 13.8286 6.52874C13.994 6.12375 14.0767 5.68974 14.0719 5.25228C14.0719 5.03662 14.0505 4.82148 14.0078 4.61007L11.4306 7.12508L8.87944 4.57759L11.3944 1.98834C11.1804 1.94674 10.9628 1.92653 10.7448 1.92802Z" fill="#424242"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 922 B After Width: | Height: | Size: 2.0 KiB |
@@ -1 +1,4 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.451 5.609l-.579-.939-1.068.812-.076.094c-.335.415-.927 1.341-1.124 2.876l-.021.165.033.163.071.345c0 1.654-1.346 3-3 3-.795 0-1.545-.311-2.107-.868-.563-.567-.873-1.317-.873-2.111 0-1.431 1.007-2.632 2.351-2.929v2.926s2.528-2.087 2.984-2.461h.012l3.061-2.582-4.919-4.1h-1.137v2.404c-3.429.318-6.121 3.211-6.121 6.721 0 1.809.707 3.508 1.986 4.782 1.277 1.282 2.976 1.988 4.784 1.988 3.722 0 6.75-3.028 6.75-6.75 0-1.245-.349-2.468-1.007-3.536z" fill="#F6F6F6"/><path d="M12.6 6.134l-.094.071c-.269.333-.746 1.096-.91 2.375.057.277.092.495.092.545 0 2.206-1.794 4-4 4-1.098 0-2.093-.445-2.817-1.164-.718-.724-1.163-1.718-1.163-2.815 0-2.206 1.794-4 4-4l.351.025v1.85s1.626-1.342 1.631-1.339l1.869-1.577-3.5-2.917v2.218l-.371-.03c-3.176 0-5.75 2.574-5.75 5.75 0 1.593.648 3.034 1.695 4.076 1.042 1.046 2.482 1.694 4.076 1.694 3.176 0 5.75-2.574 5.75-5.75-.001-1.106-.318-2.135-.859-3.012z" fill="#424242"/></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.56253 2.51574C3.46348 3.45007 2 5.55411 2 7.99996C2 11.3137 4.68629 14 8 14C11.3137 14 14 11.3137 14 7.99996C14 5.32516 12.2497 3.05916 9.83199 2.28479L9.52968 3.23829C11.5429 3.88451 13 5.77207 13 7.99996C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 7.99996C3 6.31101 3.83742 4.81764 5.11969 3.91242L5.56253 2.51574Z" fill="#424242"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5 3H2V2H5.5L6 2.5V6H5V3Z" fill="#424242"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 986 B After Width: | Height: | Size: 589 B |
@@ -1 +1,3 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.icon-canvas-transparent{opacity:0;fill:#f6f6f6}.icon-vs-out{fill:#f6f6f6}.icon-vs-bg{fill:#424242}</style><path class="icon-canvas-transparent" d="M16 16H0V0h16v16z" id="canvas"/><path class="icon-vs-out" d="M16 5.5a5.5 5.5 0 0 1-5.5 5.5c-.275 0-.543-.027-.807-.066l-.079-.012a5.429 5.429 0 0 1-.81-.192l-4.537 4.537c-.472.473-1.1.733-1.767.733s-1.295-.26-1.768-.732a2.502 2.502 0 0 1 0-3.535l4.537-4.537a5.452 5.452 0 0 1-.191-.812c-.005-.025-.008-.051-.012-.077A5.503 5.503 0 0 1 5 5.5a5.5 5.5 0 1 1 11 0z" id="outline"/><path class="icon-vs-bg" d="M15 5.5a4.5 4.5 0 0 1-4.5 4.5c-.693 0-1.342-.17-1.929-.45l-5.01 5.01c-.293.294-.677.44-1.061.44s-.768-.146-1.061-.439a1.5 1.5 0 0 1 0-2.121l5.01-5.01A4.483 4.483 0 0 1 6 5.5 4.5 4.5 0 0 1 10.5 1c.693 0 1.342.17 1.929.45L9.636 4.243l2.121 2.121 2.793-2.793c.28.587.45 1.236.45 1.929z" id="iconBg"/></svg>
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M2.80723 14.9754C2.57119 14.9721 2.33826 14.9211 2.12247 14.8254C1.90667 14.7297 1.71248 14.5913 1.55158 14.4186C1.2385 14.1334 1.04433 13.7408 1.00775 13.3189C0.966225 12.8828 1.09269 12.4473 1.36133 12.1013C2.56779 10.8289 4.9473 8.4494 6.67811 6.75479C6.30983 5.75887 6.32704 4.66127 6.72637 3.67739C7.05474 2.85876 7.63869 2.16805 8.39129 1.70807C8.9817 1.31706 9.66031 1.07944 10.3657 1.01673C11.0711 0.954022 11.7809 1.06819 12.4311 1.34892L13.0482 1.6162L10.1824 4.56738L11.4371 5.82582L14.3809 2.94887L14.6482 3.56788C14.8735 4.08976 14.993 4.65119 14.9997 5.21961C15.0064 5.78802 14.9002 6.35211 14.6872 6.87915C14.476 7.40029 14.1623 7.87368 13.7647 8.27122C13.5394 8.49169 13.2904 8.68653 13.0222 8.85218C12.4673 9.22275 11.8324 9.45636 11.1697 9.5338C10.5069 9.61124 9.83521 9.5303 9.20982 9.29764C8.11194 10.4113 5.37142 13.1704 3.89119 14.5522C3.59426 14.8219 3.20832 14.9726 2.80723 14.9754ZM10.7448 1.92802C10.087 1.92637 9.44359 2.12018 8.89614 2.48485C8.68265 2.6152 8.48437 2.76897 8.30498 2.9433C7.82789 3.42423 7.50926 4.03953 7.39182 4.70669C7.27438 5.37385 7.36374 6.06098 7.64792 6.67591L7.78342 6.97288L7.55048 7.20025C5.81224 8.89672 3.28146 11.4201 2.06479 12.7045C1.95646 12.8658 1.91012 13.0608 1.93435 13.2535C1.95857 13.4463 2.05171 13.6238 2.19657 13.7532C2.28005 13.8462 2.38177 13.9211 2.49541 13.9731C2.59557 14.0184 2.70383 14.043 2.81373 14.0455C2.98064 14.0413 3.14044 13.977 3.26383 13.8646C4.83687 12.3964 7.87622 9.32641 8.76807 8.42435L8.9973 8.19326L9.29242 8.32783C9.80617 8.56732 10.3731 8.66985 10.9382 8.62545C11.5033 8.58106 12.0473 8.39125 12.5174 8.07447C12.7313 7.9426 12.9296 7.78694 13.1085 7.61045C13.4183 7.30153 13.6631 6.93374 13.8286 6.52874C13.994 6.12375 14.0767 5.68974 14.0719 5.25228C14.0719 5.03662 14.0505 4.82148 14.0078 4.61007L11.4306 7.12508L8.87944 4.57759L11.3944 1.98834C11.1804 1.94674 10.9628 1.92653 10.7448 1.92802Z" fill="#424242"/>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 922 B After Width: | Height: | Size: 2.0 KiB |
@@ -4,3 +4,4 @@ out/test/**
|
|||||||
src/**
|
src/**
|
||||||
tsconfig.json
|
tsconfig.json
|
||||||
cgmanifest.json
|
cgmanifest.json
|
||||||
|
.vscode
|
||||||
@@ -3,3 +3,4 @@ src/**
|
|||||||
tsconfig.json
|
tsconfig.json
|
||||||
extension.webpack.config.js
|
extension.webpack.config.js
|
||||||
cgmanifest.json
|
cgmanifest.json
|
||||||
|
.vscode
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"contributes": {
|
"contributes": {
|
||||||
"languages": [{
|
"languages": [{
|
||||||
"id": "ruby",
|
"id": "ruby",
|
||||||
"extensions": [ ".rb", ".rbx", ".rjs", ".gemspec", ".rake", ".ru", ".erb",".podspec" ],
|
"extensions": [ ".rb", ".rbx", ".rjs", ".gemspec", ".rake", ".ru", ".erb", ".podspec", ".rbi" ],
|
||||||
"filenames": [ "rakefile", "gemfile", "guardfile", "podfile", "capfile" ],
|
"filenames": [ "rakefile", "gemfile", "guardfile", "podfile", "capfile" ],
|
||||||
"aliases": [ "Ruby", "rb" ],
|
"aliases": [ "Ruby", "rb" ],
|
||||||
"firstLine": "^#!\\s*/.*\\bruby\\b",
|
"firstLine": "^#!\\s*/.*\\bruby\\b",
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{opacity:0;fill:#F6F6F6;} .icon-vs-bg{fill:#656565;} .icon-vs-fg{fill:#F0EFF1;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M4 15c-.97 0-2-.701-2-2v-10c0-1.299 1.03-2 2-2h6.061l3.939 3.556v8.444c0 .97-.701 2-2 2h-8z" id="outline"/><path class="icon-vs-bg" d="M9.641,2H3.964C3.964,2,3,2,3,3c0,0.805,0,7.442,0,10c0,1,0.965,1,0.965,1s7,0,8,0S13,13,13,13V5L9.641,2zM12,13H4V3h5v3h3V13z" id="iconBg"/><path class="icon-vs-fg" d="M4 3h5v3h3v7h-8v-10z" id="iconFg"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 682 B |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{opacity:0;fill:#F6F6F6;} .icon-vs-bg{fill:#C5C5C5;} .icon-vs-fg{opacity:0;fill:#F0EFF1;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M4 15c-.97 0-2-.701-2-2v-10c0-1.299 1.03-2 2-2h6.061l3.939 3.556v8.444c0 .97-.701 2-2 2h-8z" id="outline"/><path class="icon-vs-bg" d="M9.641,2H3.964C3.964,2,3,2,3,3c0,0.805,0,7.442,0,10c0,1,0.965,1,0.965,1s7,0,8,0S13,13,13,13V5L9.641,2zM12,13H4V3h5v3h3V13z" id="iconBg"/><path class="icon-vs-fg" d="M4 3h5v3h3v7h-8v-10z" id="iconFg"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 692 B |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><style type="text/css">.icon-canvas-transparent{opacity:0;fill:#F6F6F6;} .icon-vs-out{opacity:0;fill:#F6F6F6;} .icon-vs-fg{fill:#F0EFF1;} .icon-folder{fill:#656565;}</style><path class="icon-canvas-transparent" d="M16 16h-16v-16h16v16z" id="canvas"/><path class="icon-vs-out" d="M14 .969h-7.116l-1 2h-2.884c-.97 0-2 .701-2 2v2h-1v1.196l2.323 5.804h11.677s.86-.021 1.43-.565c.344-.332.57-.817.57-1.435v-9c0-1.303-1.005-2-2-2z" id="outline"/><path class="icon-folder" d="M14,2c0,0,1,0,1,1c0,2.36,0,8.205,0,9c0,1-1,0.984-1,0.984V3H8L7,5H3v3h8l3,5H3L1,8h1c0,0,0-2,0-3s1.236-1,1-1h3.5l1-2H14z" id="iconBg"/><path class="icon-vs-fg" d="M3 7.969v-3h4l1-2h6v10l-3-5h-8z" id="iconFg"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 745 B |