Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoyce Er <joyce.er@microsoft.com>2022-05-11 02:30:34 +0300
committerGitHub <noreply@github.com>2022-05-11 02:30:34 +0300
commitba8ced85c51569bbc2c51a24398c15ed6b61d8d3 (patch)
treec3584f86e2a76cd7f61e84b497c81f8d660b6c6b
parente7a0eac4dd66dfd012f3eb199c1011c85f231991 (diff)
Revert "Generate ADMX/ADML policy declaration files from static analysis" (#149194)
This reverts commit dcfe6b3b84665efb3b15ec4a718ee32f2101a333.
-rw-r--r--build/.cachesalt2
-rw-r--r--build/.gitignore1
-rw-r--r--build/azure-pipelines/win32/product-build-win32.yml7
-rw-r--r--build/gulpfile.vscode.js4
-rw-r--r--build/lib/policies.js476
-rw-r--r--build/lib/policies.ts674
-rw-r--r--build/lib/tsb/builder.js2
-rw-r--r--build/lib/tsb/builder.ts2
-rw-r--r--build/lib/watch/.gitignore1
-rw-r--r--build/lib/watch/package.json12
-rw-r--r--build/lib/watch/yarn.lock400
-rw-r--r--build/npm/dirs.js1
-rw-r--r--build/npm/postinstall.js13
-rw-r--r--build/package.json4
-rw-r--r--build/yarn.lock465
-rw-r--r--resources/win32/policies/Code.admx48
-rw-r--r--resources/win32/policies/en-US/Code.adml23
-rw-r--r--src/vs/platform/configuration/common/configurationRegistry.ts19
-rw-r--r--src/vs/platform/update/common/update.config.contribution.ts6
19 files changed, 512 insertions, 1648 deletions
diff --git a/build/.cachesalt b/build/.cachesalt
index 30d07f23725..5eb7ff93bd8 100644
--- a/build/.cachesalt
+++ b/build/.cachesalt
@@ -1 +1 @@
-2022-05-10T08:20:50.162Z
+2022-03-02T05:48:19.264Z
diff --git a/build/.gitignore b/build/.gitignore
deleted file mode 100644
index 5a8136bb884..00000000000
--- a/build/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.yarnrc
diff --git a/build/azure-pipelines/win32/product-build-win32.yml b/build/azure-pipelines/win32/product-build-win32.yml
index 0d1c8e5cf1b..78367983406 100644
--- a/build/azure-pipelines/win32/product-build-win32.yml
+++ b/build/azure-pipelines/win32/product-build-win32.yml
@@ -129,13 +129,6 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { node build\lib\policies }
- displayName: Generate Group Policy definitions
- condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false'))
-
- - powershell: |
- . build/azure-pipelines/win32/exec.ps1
- $ErrorActionPreference = "Stop"
$env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
exec { yarn gulp "vscode-win32-$(VSCODE_ARCH)-min-ci" }
echo "##vso[task.setvariable variable=CodeSigningFolderPath]$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)"
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
index 7b3a5043154..e6c30fec111 100644
--- a/build/gulpfile.vscode.js
+++ b/build/gulpfile.vscode.js
@@ -331,9 +331,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' })
.pipe(rename(product.nameShort + '.VisualElementsManifest.xml')));
- result = es.merge(result, gulp.src('.build/policies/win32/**', { base: '.build/policies/win32' })
- .pipe(rename(f => f.dirname = `policies/${f.dirname}`)));
-
+ result = es.merge(result, gulp.src('resources/win32/policies/**', { base: 'resources/win32' }));
} else if (platform === 'linux') {
result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' })
.pipe(replace('@@PRODNAME@@', product.nameLong))
diff --git a/build/lib/policies.js b/build/lib/policies.js
deleted file mode 100644
index 3e2a10df350..00000000000
--- a/build/lib/policies.js
+++ /dev/null
@@ -1,476 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-Object.defineProperty(exports, "__esModule", { value: true });
-const child_process_1 = require("child_process");
-const fs_1 = require("fs");
-const path = require("path");
-const byline = require("byline");
-const ripgrep_1 = require("@vscode/ripgrep");
-const Parser = require("tree-sitter");
-const node_fetch_1 = require("node-fetch");
-const { typescript } = require('tree-sitter-typescript');
-const product = require('../../product.json');
-function isNlsString(value) {
- return value ? typeof value !== 'string' : false;
-}
-function isStringArray(value) {
- return !value.some(s => isNlsString(s));
-}
-function isNlsStringArray(value) {
- return value.every(s => isNlsString(s));
-}
-var PolicyType;
-(function (PolicyType) {
- PolicyType[PolicyType["StringEnum"] = 0] = "StringEnum";
-})(PolicyType || (PolicyType = {}));
-function renderADMLString(prefix, moduleName, nlsString, translations) {
- let value;
- if (translations) {
- const moduleTranslations = translations[moduleName];
- if (moduleTranslations) {
- value = moduleTranslations[nlsString.nlsKey];
- }
- }
- if (!value) {
- value = nlsString.value;
- }
- return `<string id="${prefix}_${nlsString.nlsKey}">${value}</string>`;
-}
-class BasePolicy {
- constructor(policyType, name, category, minimumVersion, description, moduleName) {
- this.policyType = policyType;
- this.name = name;
- this.category = category;
- this.minimumVersion = minimumVersion;
- this.description = description;
- this.moduleName = moduleName;
- }
- renderADMLString(nlsString, translations) {
- return renderADMLString(this.name, this.moduleName, nlsString, translations);
- }
- renderADMX(regKey) {
- return [
- `<policy name="${this.name}" class="Both" displayName="$(string.${this.name})" explainText="$(string.${this.name}_${this.description.nlsKey})" key="Software\\Policies\\Microsoft\\${regKey}" presentation="$(presentation.${this.name})">`,
- ` <parentCategory ref="${this.category.name.nlsKey}" />`,
- ` <supportedOn ref="Supported_${this.minimumVersion.replace(/\./g, '_')}" />`,
- ` <elements>`,
- ...this.renderADMXElements(),
- ` </elements>`,
- `</policy>`
- ];
- }
- renderADMLStrings(translations) {
- return [
- `<string id="${this.name}">${this.name}</string>`,
- this.renderADMLString(this.description, translations)
- ];
- }
- renderADMLPresentation() {
- return `<presentation id="${this.name}">${this.renderADMLPresentationContents()}</presentation>`;
- }
-}
-class BooleanPolicy extends BasePolicy {
- static from(name, category, minimumVersion, description, moduleName, settingNode) {
- const type = getStringProperty(settingNode, 'type');
- if (type !== 'boolean') {
- return undefined;
- }
- return new BooleanPolicy(name, category, minimumVersion, description, moduleName);
- }
- constructor(name, category, minimumVersion, description, moduleName) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- }
- renderADMXElements() {
- return [
- `<boolean id="${this.name}" valueName="${this.name}">`,
- ` <trueValue><decimal value="1" /></trueValue><falseValue><decimal value="0" /></falseValue>`,
- `</boolean>`
- ];
- }
- renderADMLPresentationContents() {
- return `<checkBox refId="${this.name}">${this.name}</checkBox>`;
- }
-}
-class IntPolicy extends BasePolicy {
- constructor(name, category, minimumVersion, description, moduleName, defaultValue) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- this.defaultValue = defaultValue;
- }
- static from(name, category, minimumVersion, description, moduleName, settingNode) {
- const type = getStringProperty(settingNode, 'type');
- if (type !== 'number') {
- return undefined;
- }
- const defaultValue = getIntProperty(settingNode, 'default');
- if (typeof defaultValue === 'undefined') {
- throw new Error(`Missing required 'default' property.`);
- }
- return new IntPolicy(name, category, minimumVersion, description, moduleName, defaultValue);
- }
- renderADMXElements() {
- return [
- `<decimal id="${this.name}" valueName="${this.name}" />`
- // `<decimal id="Quarantine_PurgeItemsAfterDelay" valueName="PurgeItemsAfterDelay" minValue="0" maxValue="10000000" />`
- ];
- }
- renderADMLPresentationContents() {
- return `<decimalTextBox refId="${this.name}" defaultValue="${this.defaultValue}">${this.name}</decimalTextBox>`;
- }
-}
-class StringPolicy extends BasePolicy {
- static from(name, category, minimumVersion, description, moduleName, settingNode) {
- const type = getStringProperty(settingNode, 'type');
- if (type !== 'string') {
- return undefined;
- }
- return new StringPolicy(name, category, minimumVersion, description, moduleName);
- }
- constructor(name, category, minimumVersion, description, moduleName) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- }
- renderADMXElements() {
- return [`<text id="${this.name}" valueName="${this.name}" required="true" />`];
- }
- renderADMLPresentationContents() {
- return `<textBox refId="${this.name}"><label>${this.name}:</label></textBox>`;
- }
-}
-class StringEnumPolicy extends BasePolicy {
- constructor(name, category, minimumVersion, description, moduleName, enum_, enumDescriptions) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- this.enum_ = enum_;
- this.enumDescriptions = enumDescriptions;
- }
- static from(name, category, minimumVersion, description, moduleName, settingNode) {
- const type = getStringProperty(settingNode, 'type');
- if (type !== 'string') {
- return undefined;
- }
- const enum_ = getStringArrayProperty(settingNode, 'enum');
- if (!enum_) {
- return undefined;
- }
- if (!isStringArray(enum_)) {
- throw new Error(`Property 'enum' should not be localized.`);
- }
- const enumDescriptions = getStringArrayProperty(settingNode, 'enumDescriptions');
- if (!enumDescriptions) {
- throw new Error(`Missing required 'enumDescriptions' property.`);
- }
- else if (!isNlsStringArray(enumDescriptions)) {
- throw new Error(`Property 'enumDescriptions' should be localized.`);
- }
- return new StringEnumPolicy(name, category, minimumVersion, description, moduleName, enum_, enumDescriptions);
- }
- renderADMXElements() {
- return [
- `<enum id="${this.name}" valueName="${this.name}">`,
- ...this.enum_.map((value, index) => ` <item displayName="$(string.${this.name}_${this.enumDescriptions[index].nlsKey})"><value><string>${value}</string></value></item>`),
- `</enum>`
- ];
- }
- renderADMLStrings(translations) {
- return [
- ...super.renderADMLStrings(translations),
- ...this.enumDescriptions.map(e => this.renderADMLString(e, translations))
- ];
- }
- renderADMLPresentationContents() {
- return `<dropdownList refId="${this.name}" />`;
- }
-}
-const IntQ = {
- Q: `(number) @value`,
- value(matches) {
- const match = matches[0];
- if (!match) {
- return undefined;
- }
- const value = match.captures.filter(c => c.name === 'value')[0]?.node.text;
- if (!value) {
- throw new Error(`Missing required 'value' property.`);
- }
- return parseInt(value);
- }
-};
-const StringQ = {
- Q: `[
- (string (string_fragment) @value)
- (call_expression function: (identifier) @localizeFn arguments: (arguments (string (string_fragment) @nlsKey) (string (string_fragment) @value)) (#eq? @localizeFn localize))
- ]`,
- value(matches) {
- const match = matches[0];
- if (!match) {
- return undefined;
- }
- const value = match.captures.filter(c => c.name === 'value')[0]?.node.text;
- if (!value) {
- throw new Error(`Missing required 'value' property.`);
- }
- const nlsKey = match.captures.filter(c => c.name === 'nlsKey')[0]?.node.text;
- if (nlsKey) {
- return { value, nlsKey };
- }
- else {
- return value;
- }
- }
-};
-const StringArrayQ = {
- Q: `(array ${StringQ.Q})`,
- value(matches) {
- if (matches.length === 0) {
- return undefined;
- }
- return matches.map(match => {
- return StringQ.value([match]);
- });
- }
-};
-function getProperty(qtype, node, key) {
- const query = new Parser.Query(typescript, `(
- (pair
- key: [(property_identifier)(string)] @key
- value: ${qtype.Q}
- )
- (#eq? @key ${key})
- )`);
- return qtype.value(query.matches(node));
-}
-function getIntProperty(node, key) {
- return getProperty(IntQ, node, key);
-}
-function getStringProperty(node, key) {
- return getProperty(StringQ, node, key);
-}
-function getStringArrayProperty(node, key) {
- return getProperty(StringArrayQ, node, key);
-}
-// TODO: add more policy types
-const PolicyTypes = [
- BooleanPolicy,
- IntPolicy,
- StringEnumPolicy,
- StringPolicy,
-];
-function getPolicy(moduleName, configurationNode, settingNode, policyNode, categories) {
- const name = getStringProperty(policyNode, 'name');
- if (!name) {
- throw new Error(`Missing required 'name' property.`);
- }
- else if (isNlsString(name)) {
- throw new Error(`Property 'name' should be a literal string.`);
- }
- const categoryName = getStringProperty(configurationNode, 'title');
- if (!categoryName) {
- throw new Error(`Missing required 'title' property.`);
- }
- else if (!isNlsString(categoryName)) {
- throw new Error(`Property 'title' should be localized.`);
- }
- const categoryKey = `${categoryName.nlsKey}:${categoryName.value}`;
- let category = categories.get(categoryKey);
- if (!category) {
- category = { moduleName, name: categoryName };
- categories.set(categoryKey, category);
- }
- const minimumVersion = getStringProperty(policyNode, 'minimumVersion');
- if (!minimumVersion) {
- throw new Error(`Missing required 'minimumVersion' property.`);
- }
- else if (isNlsString(minimumVersion)) {
- throw new Error(`Property 'minimumVersion' should be a literal string.`);
- }
- const description = getStringProperty(settingNode, 'description');
- if (!description) {
- throw new Error(`Missing required 'description' property.`);
- }
- if (!isNlsString(description)) {
- throw new Error(`Property 'description' should be localized.`);
- }
- let result;
- for (const policyType of PolicyTypes) {
- if (result = policyType.from(name, category, minimumVersion, description, moduleName, settingNode)) {
- break;
- }
- }
- if (!result) {
- throw new Error(`Failed to parse policy '${name}'.`);
- }
- return result;
-}
-function getPolicies(moduleName, node) {
- const query = new Parser.Query(typescript, `
- (
- (call_expression
- function: (member_expression property: (property_identifier) @registerConfigurationFn) (#eq? @registerConfigurationFn registerConfiguration)
- arguments: (arguments (object (pair
- key: [(property_identifier)(string)] @propertiesKey (#eq? @propertiesKey properties)
- value: (object (pair
- key: [(property_identifier)(string)]
- value: (object (pair
- key: [(property_identifier)(string)] @policyKey (#eq? @policyKey policy)
- value: (object) @policy
- )) @setting
- ))
- )) @configuration)
- )
- )
- `);
- const categories = new Map();
- return query.matches(node).map(m => {
- const configurationNode = m.captures.filter(c => c.name === 'configuration')[0].node;
- const settingNode = m.captures.filter(c => c.name === 'setting')[0].node;
- const policyNode = m.captures.filter(c => c.name === 'policy')[0].node;
- return getPolicy(moduleName, configurationNode, settingNode, policyNode, categories);
- });
-}
-async function getFiles(root) {
- return new Promise((c, e) => {
- const result = [];
- const rg = (0, child_process_1.spawn)(ripgrep_1.rgPath, ['-l', 'registerConfiguration\\(', '-g', 'src/**/*.ts', '-g', '!src/**/test/**', root]);
- const stream = byline(rg.stdout.setEncoding('utf8'));
- stream.on('data', path => result.push(path));
- stream.on('error', err => e(err));
- stream.on('end', () => c(result));
- });
-}
-function renderADMX(regKey, versions, categories, policies) {
- versions = versions.map(v => v.replace(/\./g, '_'));
- return `<?xml version="1.0" encoding="utf-8"?>
-<policyDefinitions revision="1.1" schemaVersion="1.0">
- <policyNamespaces>
- <target prefix="${regKey}" namespace="Microsoft.Policies.${regKey}" />
- </policyNamespaces>
- <resources minRequiredRevision="1.0" />
- <supportedOn>
- <definitions>
- ${versions.map(v => `<definition name="Supported_${v}" displayName="$(string.Supported_${v})" />`).join(`\n `)}
- </definitions>
- </supportedOn>
- <categories>
- <category displayName="$(string.Application)" name="Application" />
- ${categories.map(c => `<category displayName="$(string.Category_${c.name.nlsKey})" name="${c.name.nlsKey}"><parentCategory ref="Application" /></category>`).join(`\n `)}
- </categories>
- <policies>
- ${policies.map(p => p.renderADMX(regKey)).flat().join(`\n `)}
- </policies>
-</policyDefinitions>
-`;
-}
-function renderADML(appName, versions, categories, policies, translations) {
- return `<?xml version="1.0" encoding="utf-8"?>
-<policyDefinitionResources revision="1.0" schemaVersion="1.0">
- <displayName />
- <description />
- <resources>
- <stringTable>
- <string id="Application">${appName}</string>
- ${versions.map(v => `<string id="Supported_${v.replace(/\./g, '_')}">${appName} &gt;= ${v}</string>`)}
- ${categories.map(c => renderADMLString('Category', c.moduleName, c.name, translations))}
- ${policies.map(p => p.renderADMLStrings(translations)).flat().join(`\n `)}
- </stringTable>
- <presentationTable>
- ${policies.map(p => p.renderADMLPresentation()).join(`\n `)}
- </presentationTable>
- </resources>
-</policyDefinitionResources>
-`;
-}
-function renderGP(policies, translations) {
- const appName = product.nameLong;
- const regKey = product.win32RegValueName;
- const versions = [...new Set(policies.map(p => p.minimumVersion)).values()].sort();
- const categories = [...new Set(policies.map(p => p.category))];
- return {
- admx: renderADMX(regKey, versions, categories, policies),
- adml: [
- { languageId: 'en-us', contents: renderADML(appName, versions, categories, policies) },
- ...translations.map(({ languageId, languageTranslations }) => ({ languageId, contents: renderADML(appName, versions, categories, policies, languageTranslations) }))
- ]
- };
-}
-const Languages = {
- 'fr': 'fr-fr',
- 'it': 'it-it',
- 'de': 'de-de',
- 'es': 'es-es',
- 'ru': 'ru-ru',
- 'zh-hans': 'zh-cn',
- 'zh-hant': 'zh-tw',
- 'ja': 'ja-jp',
- 'ko': 'ko-kr',
- 'cs': 'cs-cz',
- 'pt-br': 'pt-br',
- 'tr': 'tr-tr',
- 'pl': 'pl-pl',
-};
-async function getLatestStableVersion(updateUrl) {
- const res = await (0, node_fetch_1.default)(`${updateUrl}/api/update/darwin/stable/latest`);
- const { name: version } = await res.json();
- return version;
-}
-async function getNLS(resourceUrlTemplate, languageId, version) {
- const resource = {
- publisher: 'ms-ceintl',
- name: `vscode-language-pack-${languageId}`,
- version,
- path: 'extension/translations/main.i18n.json'
- };
- const url = resourceUrlTemplate.replace(/\{([^}]+)\}/g, (_, key) => resource[key]);
- const res = await (0, node_fetch_1.default)(url);
- const { contents: result } = await res.json();
- return result;
-}
-async function parsePolicies() {
- const parser = new Parser();
- parser.setLanguage(typescript);
- const files = await getFiles(process.cwd());
- const base = path.join(process.cwd(), 'src');
- const policies = [];
- for (const file of files) {
- const moduleName = path.relative(base, file).replace(/\.ts$/i, '').replace(/\\/g, '/');
- const contents = await fs_1.promises.readFile(file, { encoding: 'utf8' });
- const tree = parser.parse(contents);
- policies.push(...getPolicies(moduleName, tree.rootNode));
- }
- return policies;
-}
-async function getTranslations() {
- const updateUrl = product.updateUrl;
- if (!updateUrl) {
- console.warn(`Skipping policy localization: No 'updateUrl' found in 'product.json'.`);
- return [];
- }
- const resourceUrlTemplate = product.extensionsGallery?.resourceUrlTemplate;
- if (!resourceUrlTemplate) {
- console.warn(`Skipping policy localization: No 'resourceUrlTemplate' found in 'product.json'.`);
- return [];
- }
- const version = await getLatestStableVersion(updateUrl);
- const languageIds = Object.keys(Languages);
- return await Promise.all(languageIds.map(languageId => getNLS(resourceUrlTemplate, languageId, version)
- .then(languageTranslations => ({ languageId, languageTranslations }))));
-}
-async function main() {
- const [policies, translations] = await Promise.all([parsePolicies(), getTranslations()]);
- const { admx, adml } = await renderGP(policies, translations);
- const root = '.build/policies/win32';
- await fs_1.promises.rm(root, { recursive: true, force: true });
- await fs_1.promises.mkdir(root, { recursive: true });
- await fs_1.promises.writeFile(path.join(root, `${product.win32RegValueName}.admx`), admx.replace(/\r?\n/g, '\n'));
- for (const { languageId, contents } of adml) {
- const languagePath = path.join(root, languageId === 'en-us' ? 'en-us' : Languages[languageId]);
- await fs_1.promises.mkdir(languagePath, { recursive: true });
- await fs_1.promises.writeFile(path.join(languagePath, `${product.win32RegValueName}.adml`), contents.replace(/\r?\n/g, '\n'));
- }
-}
-if (require.main === module) {
- main().catch(err => {
- console.error(err);
- process.exit(1);
- });
-}
diff --git a/build/lib/policies.ts b/build/lib/policies.ts
deleted file mode 100644
index 62ea4d561e5..00000000000
--- a/build/lib/policies.ts
+++ /dev/null
@@ -1,674 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import { spawn } from 'child_process';
-import { promises as fs } from 'fs';
-import * as path from 'path';
-import * as byline from 'byline';
-import { rgPath } from '@vscode/ripgrep';
-import * as Parser from 'tree-sitter';
-import fetch from 'node-fetch';
-const { typescript } = require('tree-sitter-typescript');
-const product = require('../../product.json');
-
-type NlsString = { value: string; nlsKey: string };
-
-function isNlsString(value: string | NlsString | undefined): value is NlsString {
- return value ? typeof value !== 'string' : false;
-}
-
-function isStringArray(value: (string | NlsString)[]): value is string[] {
- return !value.some(s => isNlsString(s));
-}
-
-function isNlsStringArray(value: (string | NlsString)[]): value is NlsString[] {
- return value.every(s => isNlsString(s));
-}
-
-interface Category {
- readonly moduleName: string;
- readonly name: NlsString;
-}
-
-enum PolicyType {
- StringEnum
-}
-
-interface Policy {
- readonly category: Category;
- readonly minimumVersion: string;
- renderADMX(regKey: string): string[];
- renderADMLStrings(translations?: LanguageTranslations): string[];
- renderADMLPresentation(): string;
-}
-
-function renderADMLString(prefix: string, moduleName: string, nlsString: NlsString, translations?: LanguageTranslations): string {
- let value: string | undefined;
-
- if (translations) {
- const moduleTranslations = translations[moduleName];
-
- if (moduleTranslations) {
- value = moduleTranslations[nlsString.nlsKey];
- }
- }
-
- if (!value) {
- value = nlsString.value;
- }
-
- return `<string id="${prefix}_${nlsString.nlsKey}">${value}</string>`;
-}
-
-abstract class BasePolicy implements Policy {
- constructor(
- protected policyType: PolicyType,
- protected name: string,
- readonly category: Category,
- readonly minimumVersion: string,
- protected description: NlsString,
- protected moduleName: string,
- ) { }
-
- protected renderADMLString(nlsString: NlsString, translations?: LanguageTranslations): string {
- return renderADMLString(this.name, this.moduleName, nlsString, translations);
- }
-
- renderADMX(regKey: string) {
- return [
- `<policy name="${this.name}" class="Both" displayName="$(string.${this.name})" explainText="$(string.${this.name}_${this.description.nlsKey})" key="Software\\Policies\\Microsoft\\${regKey}" presentation="$(presentation.${this.name})">`,
- ` <parentCategory ref="${this.category.name.nlsKey}" />`,
- ` <supportedOn ref="Supported_${this.minimumVersion.replace(/\./g, '_')}" />`,
- ` <elements>`,
- ...this.renderADMXElements(),
- ` </elements>`,
- `</policy>`
- ];
- }
-
- protected abstract renderADMXElements(): string[];
-
- renderADMLStrings(translations?: LanguageTranslations) {
- return [
- `<string id="${this.name}">${this.name}</string>`,
- this.renderADMLString(this.description, translations)
- ];
- }
-
- renderADMLPresentation(): string {
- return `<presentation id="${this.name}">${this.renderADMLPresentationContents()}</presentation>`;
- }
-
- protected abstract renderADMLPresentationContents(): string;
-}
-
-class BooleanPolicy extends BasePolicy {
-
- static from(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- settingNode: Parser.SyntaxNode
- ): BooleanPolicy | undefined {
- const type = getStringProperty(settingNode, 'type');
-
- if (type !== 'boolean') {
- return undefined;
- }
-
- return new BooleanPolicy(name, category, minimumVersion, description, moduleName);
- }
-
- private constructor(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- ) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- }
-
- protected renderADMXElements(): string[] {
- return [
- `<boolean id="${this.name}" valueName="${this.name}">`,
- ` <trueValue><decimal value="1" /></trueValue><falseValue><decimal value="0" /></falseValue>`,
- `</boolean>`
- ];
- }
-
- renderADMLPresentationContents() {
- return `<checkBox refId="${this.name}">${this.name}</checkBox>`;
- }
-}
-
-class IntPolicy extends BasePolicy {
-
- static from(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- settingNode: Parser.SyntaxNode
- ): IntPolicy | undefined {
- const type = getStringProperty(settingNode, 'type');
-
- if (type !== 'number') {
- return undefined;
- }
-
- const defaultValue = getIntProperty(settingNode, 'default');
-
- if (typeof defaultValue === 'undefined') {
- throw new Error(`Missing required 'default' property.`);
- }
-
- return new IntPolicy(name, category, minimumVersion, description, moduleName, defaultValue);
- }
-
- private constructor(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- protected readonly defaultValue: number,
- ) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- }
-
- protected renderADMXElements(): string[] {
- return [
- `<decimal id="${this.name}" valueName="${this.name}" />`
- // `<decimal id="Quarantine_PurgeItemsAfterDelay" valueName="PurgeItemsAfterDelay" minValue="0" maxValue="10000000" />`
- ];
- }
-
- renderADMLPresentationContents() {
- return `<decimalTextBox refId="${this.name}" defaultValue="${this.defaultValue}">${this.name}</decimalTextBox>`;
- }
-}
-
-class StringPolicy extends BasePolicy {
-
- static from(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- settingNode: Parser.SyntaxNode
- ): StringPolicy | undefined {
- const type = getStringProperty(settingNode, 'type');
-
- if (type !== 'string') {
- return undefined;
- }
-
- return new StringPolicy(name, category, minimumVersion, description, moduleName);
- }
-
- private constructor(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- ) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- }
-
- protected renderADMXElements(): string[] {
- return [`<text id="${this.name}" valueName="${this.name}" required="true" />`];
- }
-
- renderADMLPresentationContents() {
- return `<textBox refId="${this.name}"><label>${this.name}:</label></textBox>`;
- }
-}
-
-class StringEnumPolicy extends BasePolicy {
-
- static from(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- settingNode: Parser.SyntaxNode
- ): StringEnumPolicy | undefined {
- const type = getStringProperty(settingNode, 'type');
-
- if (type !== 'string') {
- return undefined;
- }
-
- const enum_ = getStringArrayProperty(settingNode, 'enum');
-
- if (!enum_) {
- return undefined;
- }
-
- if (!isStringArray(enum_)) {
- throw new Error(`Property 'enum' should not be localized.`);
- }
-
- const enumDescriptions = getStringArrayProperty(settingNode, 'enumDescriptions');
-
- if (!enumDescriptions) {
- throw new Error(`Missing required 'enumDescriptions' property.`);
- } else if (!isNlsStringArray(enumDescriptions)) {
- throw new Error(`Property 'enumDescriptions' should be localized.`);
- }
-
- return new StringEnumPolicy(name, category, minimumVersion, description, moduleName, enum_, enumDescriptions);
- }
-
- private constructor(
- name: string,
- category: Category,
- minimumVersion: string,
- description: NlsString,
- moduleName: string,
- protected enum_: string[],
- protected enumDescriptions: NlsString[],
- ) {
- super(PolicyType.StringEnum, name, category, minimumVersion, description, moduleName);
- }
-
- protected renderADMXElements(): string[] {
- return [
- `<enum id="${this.name}" valueName="${this.name}">`,
- ...this.enum_.map((value, index) => ` <item displayName="$(string.${this.name}_${this.enumDescriptions[index].nlsKey})"><value><string>${value}</string></value></item>`),
- `</enum>`
- ];
- }
-
- renderADMLStrings(translations?: LanguageTranslations) {
- return [
- ...super.renderADMLStrings(translations),
- ...this.enumDescriptions.map(e => this.renderADMLString(e, translations))
- ];
- }
-
- renderADMLPresentationContents() {
- return `<dropdownList refId="${this.name}" />`;
- }
-}
-
-interface QType<T> {
- Q: string;
- value(matches: Parser.QueryMatch[]): T | undefined;
-}
-
-const IntQ: QType<number> = {
- Q: `(number) @value`,
-
- value(matches: Parser.QueryMatch[]): number | undefined {
- const match = matches[0];
-
- if (!match) {
- return undefined;
- }
-
- const value = match.captures.filter(c => c.name === 'value')[0]?.node.text;
-
- if (!value) {
- throw new Error(`Missing required 'value' property.`);
- }
-
- return parseInt(value);
- }
-};
-
-const StringQ: QType<string | NlsString> = {
- Q: `[
- (string (string_fragment) @value)
- (call_expression function: (identifier) @localizeFn arguments: (arguments (string (string_fragment) @nlsKey) (string (string_fragment) @value)) (#eq? @localizeFn localize))
- ]`,
-
- value(matches: Parser.QueryMatch[]): string | NlsString | undefined {
- const match = matches[0];
-
- if (!match) {
- return undefined;
- }
-
- const value = match.captures.filter(c => c.name === 'value')[0]?.node.text;
-
- if (!value) {
- throw new Error(`Missing required 'value' property.`);
- }
-
- const nlsKey = match.captures.filter(c => c.name === 'nlsKey')[0]?.node.text;
-
- if (nlsKey) {
- return { value, nlsKey };
- } else {
- return value;
- }
- }
-};
-
-const StringArrayQ: QType<(string | NlsString)[]> = {
- Q: `(array ${StringQ.Q})`,
-
- value(matches: Parser.QueryMatch[]): (string | NlsString)[] | undefined {
- if (matches.length === 0) {
- return undefined;
- }
-
- return matches.map(match => {
- return StringQ.value([match]) as string | NlsString;
- });
- }
-};
-
-function getProperty<T>(qtype: QType<T>, node: Parser.SyntaxNode, key: string): T | undefined {
- const query = new Parser.Query(
- typescript,
- `(
- (pair
- key: [(property_identifier)(string)] @key
- value: ${qtype.Q}
- )
- (#eq? @key ${key})
- )`
- );
-
- return qtype.value(query.matches(node));
-}
-
-function getIntProperty(node: Parser.SyntaxNode, key: string): number | undefined {
- return getProperty(IntQ, node, key);
-}
-
-function getStringProperty(node: Parser.SyntaxNode, key: string): string | NlsString | undefined {
- return getProperty(StringQ, node, key);
-}
-
-function getStringArrayProperty(node: Parser.SyntaxNode, key: string): (string | NlsString)[] | undefined {
- return getProperty(StringArrayQ, node, key);
-}
-
-// TODO: add more policy types
-const PolicyTypes = [
- BooleanPolicy,
- IntPolicy,
- StringEnumPolicy,
- StringPolicy,
-];
-
-function getPolicy(
- moduleName: string,
- configurationNode: Parser.SyntaxNode,
- settingNode: Parser.SyntaxNode,
- policyNode: Parser.SyntaxNode,
- categories: Map<string, Category>
-): Policy {
- const name = getStringProperty(policyNode, 'name');
-
- if (!name) {
- throw new Error(`Missing required 'name' property.`);
- } else if (isNlsString(name)) {
- throw new Error(`Property 'name' should be a literal string.`);
- }
-
- const categoryName = getStringProperty(configurationNode, 'title');
-
- if (!categoryName) {
- throw new Error(`Missing required 'title' property.`);
- } else if (!isNlsString(categoryName)) {
- throw new Error(`Property 'title' should be localized.`);
- }
-
- const categoryKey = `${categoryName.nlsKey}:${categoryName.value}`;
- let category = categories.get(categoryKey);
-
- if (!category) {
- category = { moduleName, name: categoryName };
- categories.set(categoryKey, category);
- }
-
- const minimumVersion = getStringProperty(policyNode, 'minimumVersion');
-
- if (!minimumVersion) {
- throw new Error(`Missing required 'minimumVersion' property.`);
- } else if (isNlsString(minimumVersion)) {
- throw new Error(`Property 'minimumVersion' should be a literal string.`);
- }
-
- const description = getStringProperty(settingNode, 'description');
-
- if (!description) {
- throw new Error(`Missing required 'description' property.`);
- } if (!isNlsString(description)) {
- throw new Error(`Property 'description' should be localized.`);
- }
-
- let result: Policy | undefined;
-
- for (const policyType of PolicyTypes) {
- if (result = policyType.from(name, category, minimumVersion, description, moduleName, settingNode)) {
- break;
- }
- }
-
- if (!result) {
- throw new Error(`Failed to parse policy '${name}'.`);
- }
-
- return result;
-}
-
-function getPolicies(moduleName: string, node: Parser.SyntaxNode): Policy[] {
- const query = new Parser.Query(typescript, `
- (
- (call_expression
- function: (member_expression property: (property_identifier) @registerConfigurationFn) (#eq? @registerConfigurationFn registerConfiguration)
- arguments: (arguments (object (pair
- key: [(property_identifier)(string)] @propertiesKey (#eq? @propertiesKey properties)
- value: (object (pair
- key: [(property_identifier)(string)]
- value: (object (pair
- key: [(property_identifier)(string)] @policyKey (#eq? @policyKey policy)
- value: (object) @policy
- )) @setting
- ))
- )) @configuration)
- )
- )
- `);
-
- const categories = new Map<string, Category>();
-
- return query.matches(node).map(m => {
- const configurationNode = m.captures.filter(c => c.name === 'configuration')[0].node;
- const settingNode = m.captures.filter(c => c.name === 'setting')[0].node;
- const policyNode = m.captures.filter(c => c.name === 'policy')[0].node;
- return getPolicy(moduleName, configurationNode, settingNode, policyNode, categories);
- });
-}
-
-async function getFiles(root: string): Promise<string[]> {
- return new Promise((c, e) => {
- const result: string[] = [];
- const rg = spawn(rgPath, ['-l', 'registerConfiguration\\(', '-g', 'src/**/*.ts', '-g', '!src/**/test/**', root]);
- const stream = byline(rg.stdout.setEncoding('utf8'));
- stream.on('data', path => result.push(path));
- stream.on('error', err => e(err));
- stream.on('end', () => c(result));
- });
-}
-
-function renderADMX(regKey: string, versions: string[], categories: Category[], policies: Policy[]) {
- versions = versions.map(v => v.replace(/\./g, '_'));
-
- return `<?xml version="1.0" encoding="utf-8"?>
-<policyDefinitions revision="1.1" schemaVersion="1.0">
- <policyNamespaces>
- <target prefix="${regKey}" namespace="Microsoft.Policies.${regKey}" />
- </policyNamespaces>
- <resources minRequiredRevision="1.0" />
- <supportedOn>
- <definitions>
- ${versions.map(v => `<definition name="Supported_${v}" displayName="$(string.Supported_${v})" />`).join(`\n `)}
- </definitions>
- </supportedOn>
- <categories>
- <category displayName="$(string.Application)" name="Application" />
- ${categories.map(c => `<category displayName="$(string.Category_${c.name.nlsKey})" name="${c.name.nlsKey}"><parentCategory ref="Application" /></category>`).join(`\n `)}
- </categories>
- <policies>
- ${policies.map(p => p.renderADMX(regKey)).flat().join(`\n `)}
- </policies>
-</policyDefinitions>
-`;
-}
-
-function renderADML(appName: string, versions: string[], categories: Category[], policies: Policy[], translations?: LanguageTranslations) {
- return `<?xml version="1.0" encoding="utf-8"?>
-<policyDefinitionResources revision="1.0" schemaVersion="1.0">
- <displayName />
- <description />
- <resources>
- <stringTable>
- <string id="Application">${appName}</string>
- ${versions.map(v => `<string id="Supported_${v.replace(/\./g, '_')}">${appName} &gt;= ${v}</string>`)}
- ${categories.map(c => renderADMLString('Category', c.moduleName, c.name, translations))}
- ${policies.map(p => p.renderADMLStrings(translations)).flat().join(`\n `)}
- </stringTable>
- <presentationTable>
- ${policies.map(p => p.renderADMLPresentation()).join(`\n `)}
- </presentationTable>
- </resources>
-</policyDefinitionResources>
-`;
-}
-
-function renderGP(policies: Policy[], translations: Translations) {
- const appName = product.nameLong;
- const regKey = product.win32RegValueName;
-
- const versions = [...new Set(policies.map(p => p.minimumVersion)).values()].sort();
- const categories = [...new Set(policies.map(p => p.category))];
-
- return {
- admx: renderADMX(regKey, versions, categories, policies),
- adml: [
- { languageId: 'en-us', contents: renderADML(appName, versions, categories, policies) },
- ...translations.map(({ languageId, languageTranslations }) =>
- ({ languageId, contents: renderADML(appName, versions, categories, policies, languageTranslations) }))
- ]
- };
-}
-
-const Languages = {
- 'fr': 'fr-fr',
- 'it': 'it-it',
- 'de': 'de-de',
- 'es': 'es-es',
- 'ru': 'ru-ru',
- 'zh-hans': 'zh-cn',
- 'zh-hant': 'zh-tw',
- 'ja': 'ja-jp',
- 'ko': 'ko-kr',
- 'cs': 'cs-cz',
- 'pt-br': 'pt-br',
- 'tr': 'tr-tr',
- 'pl': 'pl-pl',
-};
-
-type LanguageTranslations = { [moduleName: string]: { [nlsKey: string]: string } };
-type Translations = { languageId: string; languageTranslations: LanguageTranslations }[];
-
-async function getLatestStableVersion(updateUrl: string) {
- const res = await fetch(`${updateUrl}/api/update/darwin/stable/latest`);
- const { name: version } = await res.json() as { name: string };
- return version;
-}
-
-async function getNLS(resourceUrlTemplate: string, languageId: string, version: string) {
- const resource = {
- publisher: 'ms-ceintl',
- name: `vscode-language-pack-${languageId}`,
- version,
- path: 'extension/translations/main.i18n.json'
- };
-
- const url = resourceUrlTemplate.replace(/\{([^}]+)\}/g, (_, key) => resource[key as keyof typeof resource]);
- const res = await fetch(url);
- const { contents: result } = await res.json() as { contents: LanguageTranslations };
- return result;
-}
-
-async function parsePolicies(): Promise<Policy[]> {
- const parser = new Parser();
- parser.setLanguage(typescript);
-
- const files = await getFiles(process.cwd());
- const base = path.join(process.cwd(), 'src');
- const policies = [];
-
- for (const file of files) {
- const moduleName = path.relative(base, file).replace(/\.ts$/i, '').replace(/\\/g, '/');
- const contents = await fs.readFile(file, { encoding: 'utf8' });
- const tree = parser.parse(contents);
- policies.push(...getPolicies(moduleName, tree.rootNode));
- }
-
- return policies;
-}
-
-async function getTranslations(): Promise<Translations> {
- const updateUrl = product.updateUrl;
-
- if (!updateUrl) {
- console.warn(`Skipping policy localization: No 'updateUrl' found in 'product.json'.`);
- return [];
- }
-
- const resourceUrlTemplate = product.extensionsGallery?.resourceUrlTemplate;
-
- if (!resourceUrlTemplate) {
- console.warn(`Skipping policy localization: No 'resourceUrlTemplate' found in 'product.json'.`);
- return [];
- }
-
- const version = await getLatestStableVersion(updateUrl);
- const languageIds = Object.keys(Languages);
-
- return await Promise.all(languageIds.map(
- languageId => getNLS(resourceUrlTemplate, languageId, version)
- .then(languageTranslations => ({ languageId, languageTranslations }))
- ));
-}
-
-async function main() {
- const [policies, translations] = await Promise.all([parsePolicies(), getTranslations()]);
- const { admx, adml } = await renderGP(policies, translations);
-
- const root = '.build/policies/win32';
- await fs.rm(root, { recursive: true, force: true });
- await fs.mkdir(root, { recursive: true });
-
- await fs.writeFile(path.join(root, `${product.win32RegValueName}.admx`), admx.replace(/\r?\n/g, '\n'));
-
- for (const { languageId, contents } of adml) {
- const languagePath = path.join(root, languageId === 'en-us' ? 'en-us' : Languages[languageId as keyof typeof Languages]);
- await fs.mkdir(languagePath, { recursive: true });
- await fs.writeFile(path.join(languagePath, `${product.win32RegValueName}.adml`), contents.replace(/\r?\n/g, '\n'));
- }
-}
-
-if (require.main === module) {
- main().catch(err => {
- console.error(err);
- process.exit(1);
- });
-}
diff --git a/build/lib/tsb/builder.js b/build/lib/tsb/builder.js
index cb700a54077..f0e1958df7e 100644
--- a/build/lib/tsb/builder.js
+++ b/build/lib/tsb/builder.js
@@ -286,7 +286,7 @@ function createTypeScriptBuilder(config, projectFile, cmd) {
if (config.verbose) {
const headNow = process.memoryUsage().heapUsed;
const MB = 1024 * 1024;
- log('[tsb]', 'time:', colors.yellow((Date.now() - t1) + 'ms'), 'mem:', colors.cyan(Math.ceil(headNow / MB) + 'MB'), colors.bgCyan('delta: ' + Math.ceil((headNow - headUsed) / MB)));
+ log('[tsb]', 'time:', colors.yellow((Date.now() - t1) + 'ms'), 'mem:', colors.cyan(Math.ceil(headNow / MB) + 'MB'), colors.bgcyan('delta: ' + Math.ceil((headNow - headUsed) / MB)));
headUsed = headNow;
}
});
diff --git a/build/lib/tsb/builder.ts b/build/lib/tsb/builder.ts
index d5bec6ee97b..2f8753dd119 100644
--- a/build/lib/tsb/builder.ts
+++ b/build/lib/tsb/builder.ts
@@ -360,7 +360,7 @@ export function createTypeScriptBuilder(config: IConfiguration, projectFile: str
const MB = 1024 * 1024;
log('[tsb]',
'time:', colors.yellow((Date.now() - t1) + 'ms'),
- 'mem:', colors.cyan(Math.ceil(headNow / MB) + 'MB'), colors.bgCyan('delta: ' + Math.ceil((headNow - headUsed) / MB))
+ 'mem:', colors.cyan(Math.ceil(headNow / MB) + 'MB'), colors.bgcyan('delta: ' + Math.ceil((headNow - headUsed) / MB))
);
headUsed = headNow;
}
diff --git a/build/lib/watch/.gitignore b/build/lib/watch/.gitignore
new file mode 100644
index 00000000000..d777dcaa9d6
--- /dev/null
+++ b/build/lib/watch/.gitignore
@@ -0,0 +1 @@
+.yarnrc \ No newline at end of file
diff --git a/build/lib/watch/package.json b/build/lib/watch/package.json
new file mode 100644
index 00000000000..e2e4f552025
--- /dev/null
+++ b/build/lib/watch/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "watch",
+ "version": "1.0.0",
+ "description": "",
+ "author": "Microsoft ",
+ "private": true,
+ "license": "MIT",
+ "devDependencies": {},
+ "dependencies": {
+ "vscode-gulp-watch": "^5.0.3"
+ }
+}
diff --git a/build/lib/watch/yarn.lock b/build/lib/watch/yarn.lock
new file mode 100644
index 00000000000..258c0edadad
--- /dev/null
+++ b/build/lib/watch/yarn.lock
@@ -0,0 +1,400 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+ansi-colors@4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-colors@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
+ integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
+ dependencies:
+ ansi-wrap "^0.1.0"
+
+ansi-gray@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
+ integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
+ dependencies:
+ ansi-wrap "0.1.0"
+
+ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
+ integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
+
+anymatch@^3.1.1, anymatch@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+binary-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
+ integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==
+
+braces@~3.0.2:
+ 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"
+
+chokidar@3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
+ integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.5.0"
+ optionalDependencies:
+ fsevents "~2.3.1"
+
+clone-buffer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
+ integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
+
+clone-stats@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
+ integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
+
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+
+cloneable-readable@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
+ integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
+ dependencies:
+ inherits "^2.0.1"
+ process-nextick-args "^2.0.0"
+ readable-stream "^2.3.5"
+
+color-support@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+fancy-log@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
+ integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
+ dependencies:
+ ansi-gray "^0.1.1"
+ color-support "^1.1.3"
+ parse-node-version "^1.0.0"
+ time-stamp "^1.0.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"
+
+first-chunk-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
+ integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=
+ dependencies:
+ readable-stream "^2.0.2"
+
+fsevents@~2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f"
+ integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==
+
+glob-parent@^5.1.1, glob-parent@~5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+graceful-fs@^4.1.2:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
+ integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
+
+inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+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, 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-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-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-utf8@^0.2.0, is-utf8@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+parse-node-version@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+picomatch@^2.0.4, picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+plugin-error@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
+ integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
+ dependencies:
+ ansi-colors "^1.0.1"
+ arr-diff "^4.0.0"
+ arr-union "^3.1.0"
+ extend-shallow "^3.0.2"
+
+process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+readable-stream@^2.0.2, readable-stream@^2.3.5:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@~3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
+ integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
+ dependencies:
+ picomatch "^2.2.1"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+replace-ext@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+ integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+strip-bom-buf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
+ integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=
+ dependencies:
+ is-utf8 "^0.2.1"
+
+strip-bom-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
+ integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco=
+ dependencies:
+ first-chunk-stream "^2.0.0"
+ strip-bom "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+time-stamp@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
+ integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
+
+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"
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+vinyl-file@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
+ integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.3.0"
+ strip-bom-buf "^1.0.0"
+ strip-bom-stream "^2.0.0"
+ vinyl "^2.0.1"
+
+vinyl@^2.0.1, vinyl@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
+ integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
+ dependencies:
+ clone "^2.1.1"
+ clone-buffer "^1.0.0"
+ clone-stats "^1.0.0"
+ cloneable-readable "^1.0.0"
+ remove-trailing-separator "^1.0.1"
+ replace-ext "^1.0.0"
+
+vscode-gulp-watch@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/vscode-gulp-watch/-/vscode-gulp-watch-5.0.3.tgz#1ca1c03581d43692ecb1fe0b9afd4256faeb701b"
+ integrity sha512-MTUp2yLE9CshhkNSNV58EQNxQSeF8lIj3mkXZX9a1vAk+EQNM2PAYdPUDSd/P/08W3PMHGznEiZyfK7JAjLosg==
+ dependencies:
+ ansi-colors "4.1.1"
+ anymatch "^3.1.1"
+ chokidar "3.5.1"
+ fancy-log "^1.3.3"
+ glob-parent "^5.1.1"
+ normalize-path "^3.0.0"
+ object-assign "^4.1.1"
+ plugin-error "1.0.1"
+ readable-stream "^3.6.0"
+ vinyl "^2.2.0"
+ vinyl-file "^3.0.0"
diff --git a/build/npm/dirs.js b/build/npm/dirs.js
index 23f57323e45..c6a4f38e59f 100644
--- a/build/npm/dirs.js
+++ b/build/npm/dirs.js
@@ -7,6 +7,7 @@
exports.dirs = [
'',
'build',
+ 'build/lib/watch',
'extensions',
'extensions/configuration-editing',
'extensions/css-language-features',
diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js
index 2718ff9fad9..4fad92fd60b 100644
--- a/build/npm/postinstall.js
+++ b/build/npm/postinstall.js
@@ -47,9 +47,9 @@ for (let dir of dirs) {
continue;
}
- if (dir === 'build') {
+ if (dir === 'build/lib/watch') {
// node modules for watching, specific to host node version, not electron
- yarnInstallBuildDependencies(dir);
+ yarnInstallBuildDependencies();
continue;
}
@@ -73,10 +73,11 @@ for (let dir of dirs) {
yarnInstall(dir, opts);
}
-function yarnInstallBuildDependencies(dir) {
- // make sure we install the deps of build for the system installed
+function yarnInstallBuildDependencies() {
+ // make sure we install the deps of build/lib/watch for the system installed
// node, since that is the driver of gulp
- const yarnrcPath = path.join(dir, '.yarnrc');
+ const watchPath = path.join(path.dirname(__dirname), 'lib', 'watch');
+ const yarnrcPath = path.join(watchPath, '.yarnrc');
const disturl = 'https://nodejs.org/download/release';
const target = process.versions.node;
@@ -87,7 +88,7 @@ target "${target}"
runtime "${runtime}"`;
fs.writeFileSync(yarnrcPath, yarnrc, 'utf8');
- yarnInstall(dir);
+ yarnInstall(watchPath);
}
cp.execSync('git config pull.rebase merges');
diff --git a/build/package.json b/build/package.json
index 9d9674e1af4..92a57a68b62 100644
--- a/build/package.json
+++ b/build/package.json
@@ -58,15 +58,11 @@
"jsonc-parser": "^2.3.0",
"mime": "^1.4.1",
"mkdirp": "^1.0.4",
- "node-fetch": "2",
"p-limit": "^3.1.0",
"source-map": "0.6.1",
"through2": "^4.0.2",
"tmp": "^0.2.1",
- "tree-sitter": "https://github.com/joaomoreno/node-tree-sitter/releases/download/v0.20.0/tree-sitter-0.20.0.tgz",
- "tree-sitter-typescript": "^0.20.1",
"vsce": "^1.100.0",
- "vscode-gulp-watch": "^5.0.3",
"vscode-universal-bundler": "^0.0.2"
},
"scripts": {
diff --git a/build/yarn.lock b/build/yarn.lock
index d65a62ebce3..aaec2cf1a4d 100644
--- a/build/yarn.lock
+++ b/build/yarn.lock
@@ -791,11 +791,6 @@ agent-base@6:
dependencies:
debug "4"
-ansi-colors@4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
- integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
ansi-colors@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
@@ -810,16 +805,6 @@ ansi-gray@^0.1.1:
dependencies:
ansi-wrap "0.1.0"
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
- integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -839,7 +824,7 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
-anymatch@^3.0.0, anymatch@^3.1.1, anymatch@~3.1.1:
+anymatch@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
@@ -857,19 +842,6 @@ applicationinsights@1.4.2:
diagnostic-channel "0.2.0"
diagnostic-channel-publishers "^0.3.3"
-aproba@^1.0.3:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
- integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
-are-we-there-yet@~1.1.2:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
- integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -954,25 +926,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-base64-js@^1.3.1, base64-js@^1.5.1:
+base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-binary-extensions@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-
-bl@^4.0.3:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
- integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
- dependencies:
- buffer "^5.5.0"
- inherits "^2.0.4"
- readable-stream "^3.4.0"
-
bluebird@^3.5.0:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@@ -996,7 +954,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^3.0.1, braces@~3.0.2:
+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==
@@ -1036,14 +994,6 @@ buffer-fill@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
-buffer@^5.5.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
- integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.1.13"
-
byline@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
@@ -1129,26 +1079,6 @@ cheerio@^1.0.0-rc.9:
parse5-htmlparser2-tree-adapter "^6.0.1"
tslib "^2.2.0"
-chokidar@3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
- integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
- dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.5.0"
- optionalDependencies:
- fsevents "~2.3.1"
-
-chownr@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
- integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
-
chromium-pickle-js@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
@@ -1194,11 +1124,6 @@ cls-hooked@^4.2.2:
emitter-listener "^1.0.1"
semver "^5.4.1"
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -1285,11 +1210,6 @@ config-chain@^1.1.11:
ini "^1.3.4"
proto-list "~1.2.1"
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
continuation-local-storage@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb"
@@ -1361,13 +1281,6 @@ decompress-response@^3.3.0:
dependencies:
mimic-response "^1.0.0"
-decompress-response@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986"
- integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==
- dependencies:
- mimic-response "^2.0.0"
-
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
@@ -1375,11 +1288,6 @@ decompress-response@^6.0.0:
dependencies:
mimic-response "^3.1.0"
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
defer-to-connect@^1.0.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
@@ -1407,21 +1315,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
denodeify@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631"
integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE=
-detect-libc@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
-
detect-node@^2.0.4:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@@ -1517,17 +1415,12 @@ emitter-listener@^1.0.1, emitter-listener@^1.1.1:
dependencies:
shimmer "^1.2.0"
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
encodeurl@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -1719,11 +1612,6 @@ events@^3.0.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
-expand-template@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
- integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
-
extend-shallow@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
@@ -1790,13 +1678,6 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
-first-chunk-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
- integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=
- dependencies:
- readable-stream "^2.0.2"
-
follow-redirects@^1.14.0:
version "1.14.8"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
@@ -1820,11 +1701,6 @@ form-data@^4.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
-fs-constants@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
- integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -1849,30 +1725,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@~2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
- dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
-
get-intrinsic@^1.0.2:
version "1.1.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
@@ -1896,12 +1753,7 @@ get-stream@^5.1.0:
dependencies:
pump "^3.0.0"
-github-from-package@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
- integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
-
-glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0:
+glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -2008,11 +1860,6 @@ got@^9.6.0:
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
-graceful-fs@^4.1.2:
- version "4.2.10"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
- integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
-
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.8"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
@@ -2061,11 +1908,6 @@ has-symbols@^1.0.1:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -2120,11 +1962,6 @@ https-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
-ieee754@^1.1.13:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
ignore@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
@@ -2143,18 +1980,11 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-ini@^1.3.4, ini@~1.3.0:
+ini@^1.3.4:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
is-docker@^2.0.0, is-docker@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
@@ -2172,18 +2002,6 @@ is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
is-glob@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
@@ -2191,7 +2009,7 @@ is-glob@^4.0.1:
dependencies:
is-extglob "^2.1.1"
-is-glob@^4.0.3, is-glob@~4.0.1:
+is-glob@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
@@ -2210,11 +2028,6 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
-is-utf8@^0.2.0, is-utf8@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
is-wsl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
@@ -2513,11 +2326,6 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
-mimic-response@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
- integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
-
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
@@ -2530,16 +2338,11 @@ minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
+minimist@^1.2.0, minimist@^1.2.5:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
-mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
- integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-
mkdirp@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
@@ -2565,36 +2368,19 @@ mute-stream@~0.0.4:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
-nan@^2.14.0:
- version "2.15.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
- integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
-
-napi-build-utils@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
- integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
-
-node-abi@^2.21.0:
- version "2.30.1"
- resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf"
- integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==
- dependencies:
- semver "^5.4.1"
-
node-abort-controller@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-1.2.1.tgz#1eddb57eb8fea734198b11b28857596dc6165708"
integrity sha512-79PYeJuj6S9+yOHirR0JBLFOgjB6sQCir10uN6xRx25iD+ZD4ULqgRn3MwWBRaQGB0vEgReJzWwJo42T1R6YbQ==
-node-fetch@2, node-fetch@^2.6.0:
+node-fetch@^2.6.0:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
-normalize-path@^3.0.0, normalize-path@~3.0.0:
+normalize-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
@@ -2612,16 +2398,6 @@ npm-conf@^1.1.3:
config-chain "^1.1.11"
pify "^3.0.0"
-npmlog@^4.0.1:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
nth-check@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
@@ -2629,16 +2405,6 @@ nth-check@^2.0.0:
dependencies:
boolbase "^1.0.0"
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-object-assign@^4.1.0, object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
object-inspect@^1.9.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
@@ -2749,16 +2515,11 @@ picomatch@^2.0.4:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
-picomatch@^2.2.1, picomatch@^2.2.3:
+picomatch@^2.2.3:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
@@ -2772,7 +2533,7 @@ plist@^3.0.1:
base64-js "^1.5.1"
xmlbuilder "^9.0.7"
-plugin-error@1.0.1, plugin-error@^1.0.1:
+plugin-error@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
@@ -2791,25 +2552,6 @@ plugin-error@1.0.1, plugin-error@^1.0.1:
source-map "^0.6.1"
supports-color "^6.1.0"
-prebuild-install@^6.0.1:
- version "6.1.4"
- resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f"
- integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==
- dependencies:
- detect-libc "^1.0.3"
- expand-template "^2.0.3"
- github-from-package "0.0.0"
- minimist "^1.2.3"
- mkdirp-classic "^0.5.3"
- napi-build-utils "^1.0.1"
- node-abi "^2.21.0"
- npmlog "^4.0.1"
- pump "^3.0.0"
- rc "^1.2.7"
- simple-get "^3.0.3"
- tar-fs "^2.0.0"
- tunnel-agent "^0.6.0"
-
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
@@ -2875,16 +2617,6 @@ quick-lru@^5.1.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
read@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
@@ -2892,7 +2624,7 @@ read@^1.0.7:
dependencies:
mute-stream "~0.0.4"
-"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
+"readable-stream@2 || 3", readable-stream@3:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -2901,7 +2633,7 @@ read@^1.0.7:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5:
+readable-stream@^2.3.5:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -2914,13 +2646,6 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readdirp@~3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
- integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
- dependencies:
- picomatch "^2.2.1"
-
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -3042,11 +2767,6 @@ serialize-error@^7.0.1:
dependencies:
type-fest "^0.13.1"
-set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -3073,25 +2793,6 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
-signal-exit@^3.0.0:
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
- integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-
-simple-concat@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
- integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
-
-simple-get@^3.0.3:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55"
- integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==
- dependencies:
- decompress-response "^4.2.0"
- once "^1.3.1"
- simple-concat "^1.0.0"
-
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
@@ -3127,24 +2828,6 @@ stoppable@^1.1.0:
resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b"
integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2 || 3 || 4":
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -3159,47 +2842,6 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-bom-buf@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
- integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=
- dependencies:
- is-utf8 "^0.2.1"
-
-strip-bom-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
- integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco=
- dependencies:
- first-chunk-stream "^2.0.0"
- strip-bom "^2.0.0"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-
sumchecker@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42"
@@ -3228,27 +2870,6 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-tar-fs@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
- integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
- dependencies:
- chownr "^1.1.1"
- mkdirp-classic "^0.5.2"
- pump "^3.0.0"
- tar-stream "^2.1.4"
-
-tar-stream@^2.1.4:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
- integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
- dependencies:
- bl "^4.0.3"
- end-of-stream "^1.4.1"
- fs-constants "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^3.1.1"
-
through2@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4"
@@ -3307,20 +2928,6 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-tree-sitter-typescript@^0.20.1:
- version "0.20.1"
- resolved "https://registry.yarnpkg.com/tree-sitter-typescript/-/tree-sitter-typescript-0.20.1.tgz#6b338a1414f5ed13cc39e60275ddeaa0f25870a9"
- integrity sha512-wqpnhdVYX26ATNXeZtprib4+mF2GlYQB1cjRPibYGxDRiugx5OfjWwLE4qPPxEGdp2ZLSmZVesGUjLWzfKo6rA==
- dependencies:
- nan "^2.14.0"
-
-"tree-sitter@https://github.com/joaomoreno/node-tree-sitter/releases/download/v0.20.0/tree-sitter-0.20.0.tgz":
- version "0.20.0"
- resolved "https://github.com/joaomoreno/node-tree-sitter/releases/download/v0.20.0/tree-sitter-0.20.0.tgz#5679001aaa698c7cddc38ea23b49b9361b69215f"
- dependencies:
- nan "^2.14.0"
- prebuild-install "^6.0.1"
-
tslib@^1.10.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
@@ -3348,13 +2955,6 @@ tsutils@^3.21.0:
dependencies:
tslib "^1.8.1"
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
- dependencies:
- safe-buffer "^5.0.1"
-
tunnel@0.0.6, tunnel@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
@@ -3421,18 +3021,7 @@ uuid@^8.3.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31"
integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==
-vinyl-file@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
- integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U=
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.3.0"
- strip-bom-buf "^1.0.0"
- strip-bom-stream "^2.0.0"
- vinyl "^2.0.1"
-
-vinyl@^2.0.1, vinyl@^2.1.0, vinyl@^2.2.0:
+vinyl@^2.1.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
@@ -3472,23 +3061,6 @@ vsce@^1.100.0:
yauzl "^2.3.1"
yazl "^2.2.2"
-vscode-gulp-watch@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/vscode-gulp-watch/-/vscode-gulp-watch-5.0.3.tgz#1ca1c03581d43692ecb1fe0b9afd4256faeb701b"
- integrity sha512-MTUp2yLE9CshhkNSNV58EQNxQSeF8lIj3mkXZX9a1vAk+EQNM2PAYdPUDSd/P/08W3PMHGznEiZyfK7JAjLosg==
- dependencies:
- ansi-colors "4.1.1"
- anymatch "^3.1.1"
- chokidar "3.5.1"
- fancy-log "^1.3.3"
- glob-parent "^5.1.1"
- normalize-path "^3.0.0"
- object-assign "^4.1.1"
- plugin-error "1.0.1"
- readable-stream "^3.6.0"
- vinyl "^2.2.0"
- vinyl-file "^3.0.0"
-
vscode-universal-bundler@^0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/vscode-universal-bundler/-/vscode-universal-bundler-0.0.2.tgz#2c988dac681d3ffe6baec6defac0995cb833c55a"
@@ -3520,13 +3092,6 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-wide-align@^1.1.0:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
- integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
- dependencies:
- string-width "^1.0.2 || 2 || 3 || 4"
-
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
diff --git a/resources/win32/policies/Code.admx b/resources/win32/policies/Code.admx
new file mode 100644
index 00000000000..916f503b782
--- /dev/null
+++ b/resources/win32/policies/Code.admx
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<policyDefinitions revision="1.1" schemaVersion="1.0">
+ <policyNamespaces>
+ <target prefix="CodeOSS" namespace="Microsoft.Policies.CodeOSS" />
+ </policyNamespaces>
+ <resources minRequiredRevision="1.0" />
+ <supportedOn>
+ <definitions>
+ <definition name="SUPPORTED_1_67" displayName="$(string.SUPPORTED_1_67)" />
+ </definitions>
+ </supportedOn>
+ <categories>
+ <category displayName="$(string.Application)" name="Application" />
+ <category displayName="$(string.Update_group)" name="Update">
+ <parentCategory ref="Application" />
+ </category>
+ </categories>
+ <policies>
+ <policy name="UpdateMode" class="Both" displayName="$(string.UpdateMode)" explainText="$(string.UpdateMode_Explain)" key="Software\Policies\Microsoft\CodeOSS" presentation="$(presentation.UpdateMode)">
+ <parentCategory ref="Update" />
+ <supportedOn ref="SUPPORTED_1_67" />
+ <elements>
+ <enum id="UpdateMode" valueName="UpdateMode">
+ <item displayName="$(string.UpdateMode_None)">
+ <value>
+ <string>none</string>
+ </value>
+ </item>
+ <item displayName="$(string.UpdateMode_Manual)">
+ <value>
+ <string>manual</string>
+ </value>
+ </item>
+ <item displayName="$(string.UpdateMode_Start)">
+ <value>
+ <string>start</string>
+ </value>
+ </item>
+ <item displayName="$(string.UpdateMode_Default)">
+ <value>
+ <string>default</string>
+ </value>
+ </item>
+ </enum>
+ </elements>
+ </policy>
+ </policies>
+</policyDefinitions>
diff --git a/resources/win32/policies/en-US/Code.adml b/resources/win32/policies/en-US/Code.adml
new file mode 100644
index 00000000000..f79b1778ec4
--- /dev/null
+++ b/resources/win32/policies/en-US/Code.adml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<policyDefinitionResources revision="1.0" schemaVersion="1.0">
+ <displayName />
+ <description />
+ <resources>
+ <stringTable>
+ <string id="SUPPORTED_1_67">Code - OSS 1.67 or later</string>
+ <string id="Application">Code - OSS</string>
+ <string id="Update_group">Update</string>
+ <string id="UpdateMode">Update Mode</string>
+ <string id="UpdateMode_Explain">Configure whether you receive automatic updates. Requires a restart after change. The updates are fetched from a Microsoft online service.</string>
+ <string id="UpdateMode_None">Disable updates.</string>
+ <string id="UpdateMode_Manual">Disable automatic background update checks. Updates will be available if you manually check for updates.</string>
+ <string id="UpdateMode_Start">Check for updates only on startup. Disable automatic background update checks.</string>
+ <string id="UpdateMode_Default">Enable automatic update checks. Code will check for updates automatically and periodically.</string>
+ </stringTable>
+ <presentationTable>
+ <presentation id="UpdateMode">
+ <dropdownList refId="UpdateMode" />
+ </presentation>
+ </presentationTable>
+ </resources>
+</policyDefinitionResources>
diff --git a/src/vs/platform/configuration/common/configurationRegistry.ts b/src/vs/platform/configuration/common/configurationRegistry.ts
index 4cf74ba2ff8..e911ed45923 100644
--- a/src/vs/platform/configuration/common/configurationRegistry.ts
+++ b/src/vs/platform/configuration/common/configurationRegistry.ts
@@ -127,19 +127,6 @@ export const enum ConfigurationScope {
MACHINE_OVERRIDABLE,
}
-export interface PolicyConfiguration {
-
- /**
- * The policy name.
- */
- readonly name: string;
-
- /**
- * The Code version in which this policy was introduced.
- */
- readonly minimumVersion: `${number}.${number}`;
-}
-
export interface IConfigurationPropertySchema extends IJSONSchema {
scope?: ConfigurationScope;
@@ -188,12 +175,6 @@ export interface IConfigurationPropertySchema extends IJSONSchema {
* within the settings editor. Otherwise, the setting is placed at the end.
*/
order?: number;
-
- /**
- * When specified, this setting's value can always be overwritten by
- * a system-wide policy.
- */
- policy?: PolicyConfiguration;
}
export interface IExtensionInfo {
diff --git a/src/vs/platform/update/common/update.config.contribution.ts b/src/vs/platform/update/common/update.config.contribution.ts
index 4134233def6..5ceb95727b5 100644
--- a/src/vs/platform/update/common/update.config.contribution.ts
+++ b/src/vs/platform/update/common/update.config.contribution.ts
@@ -27,11 +27,7 @@ configurationRegistry.registerConfiguration({
localize('manual', "Disable automatic background update checks. Updates will be available if you manually check for updates."),
localize('start', "Check for updates only on startup. Disable automatic background update checks."),
localize('default', "Enable automatic update checks. Code will check for updates automatically and periodically.")
- ],
- policy: {
- name: 'UpdateMode',
- minimumVersion: '1.67',
- }
+ ]
},
'update.channel': {
type: 'string',