From 2e76a86b1cce3bda9445593ad336179fc0d8c344 Mon Sep 17 00:00:00 2001 From: Andy Edwards Date: Fri, 31 Jan 2020 12:19:30 -0600 Subject: [PATCH 01/70] fix: use ignore npm package instead of half-baked custom code for .vscodeignore --- package.json | 3 +-- src/package.ts | 20 ++------------------ yarn.lock | 9 +++++++-- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index c6b2e1a3..035e887b 100644 --- a/package.json +++ b/package.json @@ -42,10 +42,10 @@ "denodeify": "^1.2.1", "didyoumean": "^1.2.1", "glob": "^7.0.6", + "ignore": "^5.1.4", "lodash": "^4.17.10", "markdown-it": "^8.3.1", "mime": "^1.3.4", - "minimatch": "^3.0.3", "osenv": "^0.1.3", "parse-semver": "^1.1.1", "read": "^1.0.7", @@ -64,7 +64,6 @@ "@types/lodash": "^4.14.123", "@types/markdown-it": "0.0.2", "@types/mime": "^1", - "@types/minimatch": "^3.0.3", "@types/mocha": "^5.2.6", "@types/node": "^8", "@types/read": "^0.0.28", diff --git a/src/package.ts b/src/package.ts index f84d78a7..5efa2407 100644 --- a/src/package.ts +++ b/src/package.ts @@ -7,7 +7,6 @@ import { Manifest } from './manifest'; import { ITranslations, patchNLS } from './nls'; import * as util from './util'; import * as _glob from 'glob'; -import * as minimatch from 'minimatch'; import * as denodeify from 'denodeify'; import * as markdownit from 'markdown-it'; import * as cheerio from 'cheerio'; @@ -16,6 +15,7 @@ import { lookup } from 'mime'; import * as urljoin from 'url-join'; import { validatePublisher, validateExtensionName, validateVersion, validateEngineCompatibility, validateVSCodeTypesCompatibility } from './validation'; import { getDependencies } from './npm'; +import ignore from 'ignore' const readFile = denodeify(fs.readFile); const unlink = denodeify(fs.unlink as any); @@ -27,8 +27,6 @@ const resourcesPath = path.join(path.dirname(__dirname), 'resources'); const vsixManifestTemplatePath = path.join(resourcesPath, 'extension.vsixmanifest'); const contentTypesTemplatePath = path.join(resourcesPath, '[Content_Types].xml'); -const MinimatchOptions: minimatch.IOptions = { dot: true }; - export interface IFile { path: string; contents?: Buffer | string; @@ -834,21 +832,7 @@ function collectFiles(cwd: string, useYarn = false, dependencyEntryPoints?: stri return readFile(ignoreFile ? ignoreFile : path.join(cwd, '.vscodeignore'), 'utf8') .catch(err => err.code !== 'ENOENT' ? Promise.reject(err) : ignoreFile ? Promise.reject(err) : Promise.resolve('')) - // Parse raw ignore by splitting output into lines and filtering out empty lines and comments - .then(rawIgnore => rawIgnore.split(/[\n\r]/).map(s => s.trim()).filter(s => !!s).filter(i => !/^\s*#/.test(i))) - - // Add '/**' to possible folder names - .then(ignore => [...ignore, ...ignore.filter(i => !/(^|\/)[^/]*\*[^/]*$/.test(i)).map(i => /\/$/.test(i) ? `${i}**` : `${i}/**`)]) - - // Combine with default ignore list - .then(ignore => [...defaultIgnore, ...ignore, '!package.json']) - - // Split into ignore and negate list - .then(ignore => _.partition(ignore, i => !/^\s*!/.test(i))) - .then(r => ({ ignore: r[0], negate: r[1] })) - - // Filter out files - .then(({ ignore, negate }) => files.filter(f => !ignore.some(i => minimatch(f, i, MinimatchOptions)) || negate.some(i => minimatch(f, i.substr(1), MinimatchOptions)))); + .then(rawIgnore => ignore().add(defaultIgnore).add(rawIgnore).filter(files)) }); } diff --git a/yarn.lock b/yarn.lock index 483a9b3f..552f79d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,7 +46,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.1.tgz#2cf42972d0931c1060c7d5fa6627fce6bd876f2f" integrity sha512-rek8twk9C58gHYqIrUlJsx8NQMhlxqHzln9Z9ODqiNgv3/s+ZwIrfr+djqzsnVM12xe9hL98iJ20lj2RvCBv6A== -"@types/minimatch@*", "@types/minimatch@^3.0.3": +"@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== @@ -460,6 +460,11 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.0.6" +ignore@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -579,7 +584,7 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== From c0b8adda4ee90eddf2eb1682ce1bdc7931e03596 Mon Sep 17 00:00:00 2001 From: Shaun Tabone Date: Sat, 20 Jun 2020 10:59:45 +0200 Subject: [PATCH 02/70] Added Dockerfile for docker support --- .dockerignore | 6 ++++++ Dockerfile | 10 ++++++++++ README.md | 20 +++++++++++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..2711dc52 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules/ +out/ +npm-debug.log +!src/test/**/node_modules +package-lock.json +Dockerfile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..2a111dfc --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM node:12-alpine +VOLUME /usr/share/vsce +WORKDIR /src +COPY package.json . +COPY yarn.lock . +RUN yarn +COPY . . +RUN yarn compile +WORKDIR /usr/share/vsce +ENTRYPOINT ["/src/out/vsce"] \ No newline at end of file diff --git a/README.md b/README.md index 03d2bdfc..87b5d6e6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ ## Requirements -- [Node.js](https://nodejs.org/en/) at least `8.x.x` +- [Node.js](https://nodejs.org/en/) at least `8.x.x` or +- [Docker](https://docker.com/) ## Usage @@ -14,6 +15,23 @@ > **Warning:** When using vsce as a library be sure to sanitize any user input used in API calls, as a security measurement. +### via Node.js + +To install vsce globally, you can use the following command: + +```sh +npm install -g vsce +``` + +### via Docker + +To build your own Docker image, first clone this repository and then run the following commands: + +```sh +docker build -t vsce . +docker run -it -v /host/path/extension:/usr/share/vsce vsce # change /host/path/extension to your actual vsce extension path +``` + ## Development First clone this repository, then: From 850bae2aeb7450c4441afe851f2a0eb9fbc54a2f Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Thu, 4 Mar 2021 10:32:46 -0300 Subject: [PATCH 03/70] Use HEAD as default branch rather than master --- README.md | 4 +- src/package.ts | 2 +- src/test/fixtures/readme/readme.default.md | 48 +++++++++++++++++++ .../fixtures/readme/readme.images.expected.md | 4 +- src/test/package.test.ts | 4 +- 5 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 src/test/fixtures/readme/readme.default.md diff --git a/README.md b/README.md index b287d73a..11378aa7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > _The Visual Studio Code Extension Manager_ -[![Build Status](https://dev.azure.com/vscode/VSCE/_apis/build/status/VSCE?branchName=master)](https://dev.azure.com/vscode/VSCE/_build/latest?definitionId=16&branchName=master) [![npm version](https://badge.fury.io/js/vsce.svg)](https://badge.fury.io/js/vsce) +[![Build Status](https://dev.azure.com/vscode/VSCE/_apis/build/status/VSCE?branchName=main)](https://dev.azure.com/vscode/VSCE/_build/latest?definitionId=16&branchName=main) [![npm version](https://badge.fury.io/js/vsce.svg)](https://badge.fury.io/js/vsce) ## Requirements @@ -10,7 +10,7 @@ ## Usage -`vsce` is meant to be mainly used as a command line tool. It can also be used a library since it exposes a small [API](https://github.com/microsoft/vscode-vsce/blob/master/src/api.ts). +`vsce` is meant to be mainly used as a command line tool. It can also be used a library since it exposes a small [API](https://github.com/microsoft/vscode-vsce/blob/main/src/api.ts). > **Warning:** When using vsce as a library be sure to sanitize any user input used in API calls, as a security measure. diff --git a/src/package.ts b/src/package.ts index 75e51ff2..2e825c99 100644 --- a/src/package.ts +++ b/src/package.ts @@ -592,7 +592,7 @@ export class MarkdownProcessor extends BaseProcessor { const account = match[1]; const repositoryName = match[2].replace(/\.git$/i, ''); - const branchName = githubBranch ? githubBranch : 'master'; + const branchName = githubBranch ? githubBranch : 'HEAD'; return { content: `https://github.com/${account}/${repositoryName}/blob/${branchName}`, diff --git a/src/test/fixtures/readme/readme.default.md b/src/test/fixtures/readme/readme.default.md new file mode 100644 index 00000000..311ed321 --- /dev/null +++ b/src/test/fixtures/readme/readme.default.md @@ -0,0 +1,48 @@ +# README + +>**Important:** Once installed the checker will only update if you add the setting `"spellMD.enable": true` to your `.vscode\settings.json` file. + +This README covers off: +* [Functionality](#functionality) +* [Install](#install) +* [Run and Configure](#run-and-configure) +* [Known Issues/Bugs](#known-issuesbugs) +* [Backlog](#backlog) +* [How to Debug](#how-to-debug) + +# Functionality + +Load up a Markdown file and get highlights and hovers for existing issues. Checking will occur as you type in the document. + +![Underscores and hovers](https://github.com/username/repository/raw/HEAD/images/SpellMDDemo1.gif) + +The status bar lets you quickly navigate to any issue and you can see all positions in the gutter. + +[![Jump to issues](https://github.com/username/repository/raw/HEAD/images/SpellMDDemo2.gif)](http://shouldnottouchthis/) +[![Jump to issues](https://github.com/username/repository/raw/HEAD/images/SpellMDDemo2.gif)](https://github.com/username/repository/blob/HEAD/monkey) +![](https://github.com/username/repository/raw/HEAD/images/SpellMDDemo2.gif) + + +The `spellMD.json` config file is watched so you can add more ignores or change mappings at will. + +![Add to dictionary](https://github.com/username/repository/raw/HEAD/images/SpellMDDemo3.gif) + +![issue](https://github.com/username/repository/raw/HEAD/issue) + +[mono](https://github.com/username/repository/blob/HEAD/monkey) +[not](http://shouldnottouchthis/) +[Email me](mailto:example@example.com) + +# Install +This extension is published in the VS Code Gallery. So simply hit 'F1' and type 'ext inst' from there select `SpellMD` and follow instructions. + + +To clone the extension and load locally... + +``` +git clone https://github.com/Microsoft/vscode-SpellMD.git +npm install +tsc +``` + +>**Note:** TypeScript 1.6 or higher is required you can check with `tsc -v` and if you need to upgrade then run `npm install -g typescript`. diff --git a/src/test/fixtures/readme/readme.images.expected.md b/src/test/fixtures/readme/readme.images.expected.md index 19dc6d7f..c0f6ec21 100644 --- a/src/test/fixtures/readme/readme.images.expected.md +++ b/src/test/fixtures/readme/readme.images.expected.md @@ -19,7 +19,7 @@ Load up a Markdown file and get highlights and hovers for existing issues. Chec The status bar lets you quickly navigate to any issue and you can see all positions in the gutter. [![Jump to issues](https://github.com/username/repository/path/to/images/SpellMDDemo2.gif)](http://shouldnottouchthis/) -[![Jump to issues](https://github.com/username/repository/path/to/images/SpellMDDemo2.gif)](https://github.com/username/repository/blob/master/monkey) +[![Jump to issues](https://github.com/username/repository/path/to/images/SpellMDDemo2.gif)](https://github.com/username/repository/blob/HEAD/monkey) ![](https://github.com/username/repository/path/to/images/SpellMDDemo2.gif) @@ -29,7 +29,7 @@ The `spellMD.json` config file is watched so you can add more ignores or change ![issue](https://github.com/username/repository/path/to/issue) -[mono](https://github.com/username/repository/blob/master/monkey) +[mono](https://github.com/username/repository/blob/HEAD/monkey) [not](http://shouldnottouchthis/) [Email me](mailto:example@example.com) diff --git a/src/test/package.test.ts b/src/test/package.test.ts index e86d5a5f..1e10ebed 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -1807,7 +1807,7 @@ describe('MarkdownProcessor', () => { .onFile(readme) .then(file => read(file)) .then(actual => { - return readFile(path.join(root, 'readme.expected.md'), 'utf8').then(expected => { + return readFile(path.join(root, 'readme.default.md'), 'utf8').then(expected => { assert.equal(actual, expected); }); }); @@ -1924,7 +1924,7 @@ describe('MarkdownProcessor', () => { .onFile(readme) .then(file => read(file)) .then(actual => { - return readFile(path.join(root, 'readme.expected.md'), 'utf8').then(expected => { + return readFile(path.join(root, 'readme.default.md'), 'utf8').then(expected => { assert.equal(actual, expected); }); }); From c0e077093a7c442f8526d17a3cbd4c0a49c6267e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 5 Mar 2021 15:29:52 +0100 Subject: [PATCH 04/70] :lipstick: Docker --- .dockerignore | 6 +++++- .npmignore | 4 +++- Dockerfile | 8 ++++---- README.md | 38 +++++++++++++++++++++++++++----------- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/.dockerignore b/.dockerignore index 2711dc52..978c0570 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,4 +3,8 @@ out/ npm-debug.log !src/test/**/node_modules package-lock.json -Dockerfile \ No newline at end of file +Dockerfile +.gitignore +LICENSE +README.md +ThirdPartyNotices.txt \ No newline at end of file diff --git a/.npmignore b/.npmignore index b5f48676..9ddb2ce1 100644 --- a/.npmignore +++ b/.npmignore @@ -9,4 +9,6 @@ yarn.lock .travis.yml .vscode/ out/**/*.d.ts -!out/api.d.ts \ No newline at end of file +!out/api.d.ts +.dockerignore +Dockerfile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2a111dfc..e6330543 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ FROM node:12-alpine -VOLUME /usr/share/vsce -WORKDIR /src +WORKDIR /opt/vsce COPY package.json . COPY yarn.lock . RUN yarn COPY . . RUN yarn compile -WORKDIR /usr/share/vsce -ENTRYPOINT ["/src/out/vsce"] \ No newline at end of file +VOLUME /workspace +WORKDIR /workspace +ENTRYPOINT ["/opt/vsce/out/vsce"] \ No newline at end of file diff --git a/README.md b/README.md index 87b5d6e6..bc71e979 100644 --- a/README.md +++ b/README.md @@ -6,30 +6,46 @@ ## Requirements -- [Node.js](https://nodejs.org/en/) at least `8.x.x` or -- [Docker](https://docker.com/) +- [Node.js](https://nodejs.org/en/) at least `8.x.x` -## Usage +Or simply [Docker](#via-docker). -`vsce` is meant to be mainly used as a command line tool. It can also be used a library since it exposes a small [API](https://github.com/microsoft/vscode-vsce/blob/master/src/api.ts). +## Usage -> **Warning:** When using vsce as a library be sure to sanitize any user input used in API calls, as a security measurement. +Install vsce globally: -### via Node.js +```sh +npm install -g vsce +``` -To install vsce globally, you can use the following command: +Verify the installation: ```sh -npm install -g vsce +vsce --version ``` -### via Docker +`vsce` is meant to be mainly used as a command line tool. It can also be used a library since it exposes a small [API](https://github.com/microsoft/vscode-vsce/blob/master/src/api.ts). When using vsce as a library be sure to sanitize any user input used in API calls, as a security measurement. -To build your own Docker image, first clone this repository and then run the following commands: +## Usage via Docker + +You can also build a container for running vsce: ```sh +git clone https://github.com/microsoft/vscode-vsce +cd vscode-vsce docker build -t vsce . -docker run -it -v /host/path/extension:/usr/share/vsce vsce # change /host/path/extension to your actual vsce extension path +``` + +Validate the container: + +```sh +docker run -it vsce --version +``` + +Publish your local extension: + +```sh +docker run -it -v $(pwd):/workspace vsce publish ``` ## Development From 26d1acf7bbb22f3d378600a2566d80c6a1babe62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 10 Mar 2021 14:47:09 +0100 Subject: [PATCH 05/70] 1.86.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2b748762..55c33316 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.85.1", + "version": "1.86.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 88c77f5d4b4c9d0ce0c9820799325c44b4922e87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 10 Mar 2021 05:49:15 -0800 Subject: [PATCH 06/70] Create SECURITY.md --- SECURITY.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..a050f362 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd). + + From 83163ed09e26b2218832f60acbe7aad215c77a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 12 Mar 2021 10:11:34 +0100 Subject: [PATCH 07/70] fixes #542 --- src/main.ts | 6 +++--- src/package.ts | 27 +++++++++++++-------------- src/test/package.test.ts | 2 +- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main.ts b/src/main.ts index 79a980e5..8215a8cd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -87,12 +87,12 @@ module.exports = function (argv: string[]): void { .option('--yarn', 'Use yarn instead of npm (default inferred from presence of yarn.lock or .yarnrc)') .option('--no-yarn', 'Use npm instead of yarn (default inferred from lack of yarn.lock or .yarnrc)') .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') - .option('--noGitHubIssueLinking', 'Prevent automatic expansion of GitHub-style issue syntax into links') + .option('--no-gitHubIssueLinking', 'Disable automatic expansion of GitHub-style issue syntax into links') .option( '--web', 'Experimental flag to enable publishing web extensions. Note: This is supported only for selected extensions.' ) - .action(({ out, githubBranch, baseContentUrl, baseImagesUrl, yarn, ignoreFile, noGitHubIssueLinking, web }) => + .action(({ out, githubBranch, baseContentUrl, baseImagesUrl, yarn, ignoreFile, gitHubIssueLinking, web }) => main( packageCommand({ packagePath: out, @@ -101,7 +101,7 @@ module.exports = function (argv: string[]): void { baseImagesUrl, useYarn: yarn, ignoreFile, - expandGitHubIssueLinks: noGitHubIssueLinking, + gitHubIssueLinking, web, }) ) diff --git a/src/package.ts b/src/package.ts index 2e825c99..0b35d858 100644 --- a/src/package.ts +++ b/src/package.ts @@ -76,16 +76,16 @@ export interface IAsset { } export interface IPackageOptions { - cwd?: string; - packagePath?: string; - githubBranch?: string; - baseContentUrl?: string; - baseImagesUrl?: string; - useYarn?: boolean; - dependencyEntryPoints?: string[]; - ignoreFile?: string; - expandGitHubIssueLinks?: boolean; - web?: boolean; + readonly cwd?: string; + readonly packagePath?: string; + readonly githubBranch?: string; + readonly baseContentUrl?: string; + readonly baseImagesUrl?: string; + readonly useYarn?: boolean; + readonly dependencyEntryPoints?: string[]; + readonly ignoreFile?: string; + readonly gitHubIssueLinking?: boolean; + readonly web?: boolean; } export interface IProcessor { @@ -421,7 +421,7 @@ export class MarkdownProcessor extends BaseProcessor { private baseImagesUrl: string; private isGitHub: boolean; private repositoryUrl: string; - private expandGitHubIssueLinks: boolean; + private gitHubIssueLinking: boolean; constructor( manifest: Manifest, @@ -438,8 +438,7 @@ export class MarkdownProcessor extends BaseProcessor { this.baseImagesUrl = options.baseImagesUrl || options.baseContentUrl || (guess && guess.images); this.repositoryUrl = guess && guess.repository; this.isGitHub = isGitHubRepository(this.repositoryUrl); - this.expandGitHubIssueLinks = - typeof options.expandGitHubIssueLinks === 'boolean' ? options.expandGitHubIssueLinks : true; + this.gitHubIssueLinking = typeof options.gitHubIssueLinking === 'boolean' ? options.gitHubIssueLinking : true; } async onFile(file: IFile): Promise { @@ -506,7 +505,7 @@ export class MarkdownProcessor extends BaseProcessor { return all.replace(link, urljoin(prefix, link)); }); - if (this.isGitHub && this.expandGitHubIssueLinks) { + if (this.gitHubIssueLinking && this.isGitHub) { const markdownIssueRegex = /(\s|\n)([\w\d_-]+\/[\w\d_-]+)?#(\d+)\b/g; const issueReplace = ( all: string, diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 1e10ebed..957f35b0 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -1999,7 +1999,7 @@ describe('MarkdownProcessor', () => { }; const root = fixture('readme'); - const processor = new ReadmeProcessor(manifest, { expandGitHubIssueLinks: false }); + const processor = new ReadmeProcessor(manifest, { gitHubIssueLinking: false }); const readme = { path: 'extension/readme.md', localPath: path.join(root, 'readme.github.md'), From e55275a757b1125a42db014f0da365aa18d9403e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 12 Mar 2021 10:12:25 +0100 Subject: [PATCH 08/70] 1.87.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 55c33316..0e157bc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.86.0", + "version": "1.87.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From e06fee16dc78949f92e0746c6204f08740b41016 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Fri, 12 Mar 2021 17:21:28 +0530 Subject: [PATCH 09/70] chore: improve error message --- src/store.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store.ts b/src/store.ts index 0e3960ed..1ec2035d 100644 --- a/src/store.ts +++ b/src/store.ts @@ -64,7 +64,7 @@ export async function verifyPat(pat: string, publisherName?: string): Promise Date: Fri, 12 Mar 2021 17:24:21 +0530 Subject: [PATCH 10/70] refactor: leverage template literals --- src/store.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/store.ts b/src/store.ts index 1ec2035d..52640d85 100644 --- a/src/store.ts +++ b/src/store.ts @@ -64,8 +64,7 @@ export async function verifyPat(pat: string, publisherName?: string): Promise Date: Tue, 30 Mar 2021 15:28:49 +0000 Subject: [PATCH 11/70] Bump y18n from 4.0.0 to 4.0.1 Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1. - [Release notes](https://github.com/yargs/y18n/releases) - [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/yargs/y18n/commits) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9318b5e9..4c773a3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1658,9 +1658,9 @@ xmlbuilder@~9.0.1: integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yaml@^1.10.0: version "1.10.0" From a2275de1c54fd197d5d88202d59f187578966abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 31 Mar 2021 14:27:59 +0200 Subject: [PATCH 12/70] add footer --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1b294e6a..aac7cd01 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,5 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. + +Microsoft \ No newline at end of file From 4f8d7e84c8798c393aa6d88a463b9d565c5b4b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 31 Mar 2021 14:29:13 +0200 Subject: [PATCH 13/70] remove footer --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index aac7cd01..fa1bc867 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,4 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. - -Microsoft \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file From 05b3a2770dd7711efa6fb932a7846decc08f3454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 31 Mar 2021 16:24:37 +0200 Subject: [PATCH 14/70] Revert "fixes #509" This reverts commit 1530b64f573b5d2ecfb53f58f13d54561181b580. --- src/package.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/package.ts b/src/package.ts index 0b35d858..1029436e 100644 --- a/src/package.ts +++ b/src/package.ts @@ -995,6 +995,7 @@ const defaultIgnore = [ '.editorconfig', '.npmrc', '.yarnrc', + '.gitattributes', '*.todo', 'tslint.yaml', '.eslintrc*', @@ -1007,9 +1008,7 @@ const defaultIgnore = [ '.github', '.travis.yml', 'appveyor.yml', - '**/.git', '**/.git/**', - '**/{.gitignore,.gitattributes,.gitmodules}', '**/*.vsix', '**/.DS_Store', '**/*.vsixmanifest', From f0cc23c5c7c8ef2e539da302e688639f6ef348a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 31 Mar 2021 16:24:50 +0200 Subject: [PATCH 15/70] 1.87.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e157bc3..e18b7491 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.87.0", + "version": "1.87.1", "description": "VSCode Extension Manager", "repository": { "type": "git", From be59ca2de6f5f8564020b3c575580ecff6c49cef Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 9 Apr 2021 00:57:56 +0000 Subject: [PATCH 16/70] Do not ignore README.md --- src/package.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/package.ts b/src/package.ts index 1029436e..d6b04f46 100644 --- a/src/package.ts +++ b/src/package.ts @@ -1015,6 +1015,8 @@ const defaultIgnore = [ '**/.vscode-test/**', ]; +const notIgnored = ['!package.json', '!README.md']; + function collectAllFiles(cwd: string, useYarn?: boolean, dependencyEntryPoints?: string[]): Promise { return getDependencies(cwd, useYarn, dependencyEntryPoints).then(deps => { const promises: Promise[] = deps.map(dep => { @@ -1058,7 +1060,7 @@ function collectFiles( ]) // Combine with default ignore list - .then(ignore => [...defaultIgnore, ...ignore, '!package.json']) + .then(ignore => [...defaultIgnore, ...ignore, ...notIgnored]) // Split into ignore and negate list .then(ignore => _.partition(ignore, i => !/^\s*!/.test(i))) From fcdfb1f4b69a1efa5aef71965137f23e974bb36c Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Tue, 13 Apr 2021 09:58:58 -0300 Subject: [PATCH 17/70] Add npm-shrinkwrap and webpack config to ignore list --- src/package.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/package.ts b/src/package.ts index d6b04f46..a99eb5ed 100644 --- a/src/package.ts +++ b/src/package.ts @@ -992,6 +992,7 @@ const defaultIgnore = [ '.vscodeignore', 'package-lock.json', 'yarn.lock', + 'npm-shrinkwrap.json', '.editorconfig', '.npmrc', '.yarnrc', @@ -1001,6 +1002,7 @@ const defaultIgnore = [ '.eslintrc*', '.babelrc*', '.prettierrc', + 'webpack.config.js', 'ISSUE_TEMPLATE.md', 'CONTRIBUTING.md', 'PULL_REQUEST_TEMPLATE.md', From 8e5ff166014b1e550456e851cf915251c12b2c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 19 Apr 2021 14:46:52 +0200 Subject: [PATCH 18/70] update deps --- package.json | 4 +-- yarn.lock | 86 +++++++++++++++++++++++++++++++++++----------------- 2 files changed, 61 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index e18b7491..e4e15e20 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "node": ">= 10" }, "dependencies": { - "azure-devops-node-api": "^7.2.0", + "azure-devops-node-api": "^10.2.2", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.1", "commander": "^6.1.0", @@ -52,7 +52,7 @@ "read": "^1.0.7", "semver": "^5.1.0", "tmp": "0.0.29", - "typed-rest-client": "1.2.0", + "typed-rest-client": "^1.8.4", "url-join": "^1.1.0", "yauzl": "^2.3.1", "yazl": "^2.2.2" diff --git a/yarn.lock b/yarn.lock index 4c773a3c..75d7baec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -174,15 +174,13 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -azure-devops-node-api@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-7.2.0.tgz#131d4e01cf12ebc6e45569b5e0c5c249e4114d6d" - integrity sha512-pMfGJ6gAQ7LRKTHgiRF+8iaUUeGAI0c8puLaqHLc7B8AR7W6GJLozK9RFeUHFjEGybC9/EB3r67WPd7e46zQ8w== +azure-devops-node-api@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz#9f557e622dd07bbaa9bd5e7e84e17c761e2151b2" + integrity sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow== dependencies: - os "0.1.1" - tunnel "0.0.4" - typed-rest-client "1.2.0" - underscore "1.8.3" + tunnel "0.0.6" + typed-rest-client "^1.8.4" balanced-match@^1.0.0: version "1.0.0" @@ -224,6 +222,14 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -607,6 +613,15 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -1027,6 +1042,11 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-inspect@^1.9.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" + integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -1079,11 +1099,6 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -os@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/os/-/os-0.1.1.tgz#208845e89e193ad4d971474b93947736a56d13f3" - integrity sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M= - osenv@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" @@ -1248,6 +1263,13 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +qs@^6.9.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" + read-pkg@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" @@ -1361,6 +1383,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -1553,18 +1584,19 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== -tunnel@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.4.tgz#2d3785a158c174c9a16dc2c046ec5fc5f1742213" - integrity sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM= +tunnel@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== -typed-rest-client@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.2.0.tgz#723085d203f38d7d147271e5ed3a75488eb44a02" - integrity sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw== +typed-rest-client@^1.8.4: + version "1.8.4" + resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" + integrity sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg== dependencies: - tunnel "0.0.4" - underscore "1.8.3" + qs "^6.9.1" + tunnel "0.0.6" + underscore "^1.12.1" typescript@^3.4.3: version "3.4.3" @@ -1576,10 +1608,10 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== -underscore@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= +underscore@^1.12.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== url-join@^1.1.0: version "1.1.0" From 06c8d3be7ea3d3f39ac58a54cde9a6c59726305b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 20 Apr 2021 14:20:18 +0200 Subject: [PATCH 19/70] test --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fa1bc867..aac7cd01 100644 --- a/README.md +++ b/README.md @@ -76,4 +76,6 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. + +Microsoft \ No newline at end of file From 7e1dd2db973ff37a69d1310dc5964122ff0fec46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 20 Apr 2021 14:20:44 +0200 Subject: [PATCH 20/70] revert --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index aac7cd01..fa1bc867 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,4 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. - -Microsoft \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file From ad2cdcd3d1560a574666a0e9a3387d642e1e0183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 28 Apr 2021 09:20:18 +0200 Subject: [PATCH 21/70] test commit --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fa1bc867..c59695c6 100644 --- a/README.md +++ b/README.md @@ -76,4 +76,6 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. + +Microsoft 2021 \ No newline at end of file From 635e84987d3c938cd4610a13e000ecf2e1fdcb6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 28 Apr 2021 09:23:21 +0200 Subject: [PATCH 22/70] revert --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index c59695c6..fa1bc867 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,4 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. - -Microsoft 2021 \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file From 62a80dc514b20866271d021528d8184641dfb6f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 30 Apr 2021 10:42:32 +0200 Subject: [PATCH 23/70] add copyright --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fa1bc867..be23da85 100644 --- a/README.md +++ b/README.md @@ -76,4 +76,6 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. + +Microsoft 2020 \ No newline at end of file From 94477176795eae5af0d8ce4cc706825b62aa9d5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 30 Apr 2021 10:43:16 +0200 Subject: [PATCH 24/70] remote footer --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index be23da85..fa1bc867 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,4 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. - -Microsoft 2020 \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file From c1db3cc98a5283b27ee7c35cfedd642590182166 Mon Sep 17 00:00:00 2001 From: Abhijit Hota Date: Fri, 30 Apr 2021 17:43:28 +0530 Subject: [PATCH 25/70] update regex to support repository shorthand (#561) --- src/package.ts | 6 +++--- src/test/package.test.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/package.ts b/src/package.ts index a99eb5ed..65964589 100644 --- a/src/package.ts +++ b/src/package.ts @@ -582,15 +582,15 @@ export class MarkdownProcessor extends BaseProcessor { return null; } - const regex = /github\.com\/([^/]+)\/([^/]+)(\/|$)/; + const regex = /github(\.com\/|:)([^/]+)\/([^/]+)(\/|$)/; const match = regex.exec(repository); if (!match) { return null; } - const account = match[1]; - const repositoryName = match[2].replace(/\.git$/i, ''); + const account = match[2]; + const repositoryName = match[3].replace(/\.git$/i, ''); const branchName = githubBranch ? githubBranch : 'HEAD'; return { diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 957f35b0..c8812461 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -1930,6 +1930,33 @@ describe('MarkdownProcessor', () => { }); }); + it('should infer baseContentUrl if its a github repo (short format)', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'github:username/repository', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, {}); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.default.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + it('should replace img urls with baseImagesUrl', () => { const manifest = { name: 'test', From b0c820449b7df5e34d0ebc5bd80cb3a6ecc90ea0 Mon Sep 17 00:00:00 2001 From: Ethan Reesor Date: Fri, 30 Apr 2021 06:34:22 -0600 Subject: [PATCH 26/70] Add support for GitLab.com (#558) --- src/main.ts | 64 +++-- src/package.ts | 64 +++-- src/publish.ts | 4 +- .../readme.gitlab.branch.main.expected.md | 48 ++++ ...gitlab.branch.override.content.expected.md | 48 ++++ ....gitlab.branch.override.images.expected.md | 48 ++++ .../fixtures/readme/readme.gitlab.default.md | 48 ++++ .../fixtures/readme/readme.gitlab.expected.md | 15 ++ src/test/fixtures/readme/readme.gitlab.md | 15 ++ src/test/package.test.ts | 225 ++++++++++++++++++ 10 files changed, 547 insertions(+), 32 deletions(-) create mode 100644 src/test/fixtures/readme/readme.gitlab.branch.main.expected.md create mode 100644 src/test/fixtures/readme/readme.gitlab.branch.override.content.expected.md create mode 100644 src/test/fixtures/readme/readme.gitlab.branch.override.images.expected.md create mode 100644 src/test/fixtures/readme/readme.gitlab.default.md create mode 100644 src/test/fixtures/readme/readme.gitlab.expected.md create mode 100644 src/test/fixtures/readme/readme.gitlab.md diff --git a/src/main.ts b/src/main.ts index 8215a8cd..dafa2a06 100644 --- a/src/main.ts +++ b/src/main.ts @@ -82,29 +82,48 @@ module.exports = function (argv: string[]): void { '--githubBranch [branch]', 'The GitHub branch used to infer relative links in README.md. Can be overriden by --baseContentUrl and --baseImagesUrl.' ) + .option( + '--gitlabBranch [branch]', + 'The GitLab branch used to infer relative links in README.md. Can be overriden by --baseContentUrl and --baseImagesUrl.' + ) .option('--baseContentUrl [url]', 'Prepend all relative links in README.md with this url.') .option('--baseImagesUrl [url]', 'Prepend all relative image links in README.md with this url.') .option('--yarn', 'Use yarn instead of npm (default inferred from presence of yarn.lock or .yarnrc)') .option('--no-yarn', 'Use npm instead of yarn (default inferred from lack of yarn.lock or .yarnrc)') .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') .option('--no-gitHubIssueLinking', 'Disable automatic expansion of GitHub-style issue syntax into links') + .option('--no-gitLabIssueLinking', 'Disable automatic expansion of GitLab-style issue syntax into links') .option( '--web', 'Experimental flag to enable publishing web extensions. Note: This is supported only for selected extensions.' ) - .action(({ out, githubBranch, baseContentUrl, baseImagesUrl, yarn, ignoreFile, gitHubIssueLinking, web }) => - main( - packageCommand({ - packagePath: out, - githubBranch, - baseContentUrl, - baseImagesUrl, - useYarn: yarn, - ignoreFile, - gitHubIssueLinking, - web, - }) - ) + .action( + ({ + out, + githubBranch, + gitlabBranch, + baseContentUrl, + baseImagesUrl, + yarn, + ignoreFile, + gitHubIssueLinking, + gitLabIssueLinking, + web, + }) => + main( + packageCommand({ + packagePath: out, + githubBranch, + gitlabBranch, + baseContentUrl, + baseImagesUrl, + useYarn: yarn, + ignoreFile, + gitHubIssueLinking, + gitLabIssueLinking, + web, + }) + ) ); program @@ -121,6 +140,10 @@ module.exports = function (argv: string[]): void { '--githubBranch [branch]', 'The GitHub branch used to infer relative links in README.md. Can be overriden by --baseContentUrl and --baseImagesUrl.' ) + .option( + '--gitlabBranch [branch]', + 'The GitLab branch used to infer relative links in README.md. Can be overriden by --baseContentUrl and --baseImagesUrl.' + ) .option('--baseContentUrl [url]', 'Prepend all relative links in README.md with this url.') .option('--baseImagesUrl [url]', 'Prepend all relative image links in README.md with this url.') .option('--yarn', 'Use yarn instead of npm (default inferred from presence of yarn.lock or .yarnrc)') @@ -134,7 +157,19 @@ module.exports = function (argv: string[]): void { .action( ( version, - { pat, message, packagePath, githubBranch, baseContentUrl, baseImagesUrl, yarn, noVerify, ignoreFile, web } + { + pat, + message, + packagePath, + githubBranch, + gitlabBranch, + baseContentUrl, + baseImagesUrl, + yarn, + noVerify, + ignoreFile, + web, + } ) => main( publish({ @@ -143,6 +178,7 @@ module.exports = function (argv: string[]): void { version, packagePath, githubBranch, + gitlabBranch, baseContentUrl, baseImagesUrl, useYarn: yarn, diff --git a/src/package.ts b/src/package.ts index 65964589..ebac8b61 100644 --- a/src/package.ts +++ b/src/package.ts @@ -79,12 +79,14 @@ export interface IPackageOptions { readonly cwd?: string; readonly packagePath?: string; readonly githubBranch?: string; + readonly gitlabBranch?: string; readonly baseContentUrl?: string; readonly baseImagesUrl?: string; readonly useYarn?: boolean; readonly dependencyEntryPoints?: string[]; readonly ignoreFile?: string; readonly gitHubIssueLinking?: boolean; + readonly gitLabIssueLinking?: boolean; readonly web?: boolean; } @@ -202,6 +204,10 @@ function isGitHubRepository(repository: string): boolean { return /^https:\/\/github\.com\/|^git@github\.com:/.test(repository || ''); } +function isGitLabRepository(repository: string): boolean { + return /^https:\/\/gitlab\.com\/|^git@gitlab\.com:/.test(repository || ''); +} + function isGitHubBadge(href: string): boolean { return /^https:\/\/github\.com\/[^/]+\/[^/]+\/workflows\/.*badge\.svg/.test(href || ''); } @@ -420,8 +426,10 @@ export class MarkdownProcessor extends BaseProcessor { private baseContentUrl: string; private baseImagesUrl: string; private isGitHub: boolean; + private isGitLab: boolean; private repositoryUrl: string; private gitHubIssueLinking: boolean; + private gitLabIssueLinking: boolean; constructor( manifest: Manifest, @@ -432,13 +440,15 @@ export class MarkdownProcessor extends BaseProcessor { ) { super(manifest); - const guess = this.guessBaseUrls(options.githubBranch); + const guess = this.guessBaseUrls(options.githubBranch || options.gitlabBranch); this.baseContentUrl = options.baseContentUrl || (guess && guess.content); this.baseImagesUrl = options.baseImagesUrl || options.baseContentUrl || (guess && guess.images); this.repositoryUrl = guess && guess.repository; this.isGitHub = isGitHubRepository(this.repositoryUrl); + this.isGitLab = isGitLabRepository(this.repositoryUrl); this.gitHubIssueLinking = typeof options.gitHubIssueLinking === 'boolean' ? options.gitHubIssueLinking : true; + this.gitLabIssueLinking = typeof options.gitLabIssueLinking === 'boolean' ? options.gitLabIssueLinking : true; } async onFile(file: IFile): Promise { @@ -469,7 +479,7 @@ export class MarkdownProcessor extends BaseProcessor { if (isLinkRelative) { throw new Error( - `Couldn't detect the repository where this extension is published. The ${asset} '${link}' will be broken in ${this.name}. GitHub repositories will be automatically detected. Otherwise, please provide the repository URL in package.json or use the --baseContentUrl and --baseImagesUrl options.` + `Couldn't detect the repository where this extension is published. The ${asset} '${link}' will be broken in ${this.name}. GitHub/GitLab repositories will be automatically detected. Otherwise, please provide the repository URL in package.json or use the --baseContentUrl and --baseImagesUrl options.` ); } } @@ -493,7 +503,7 @@ export class MarkdownProcessor extends BaseProcessor { if (!this.baseImagesUrl && isLinkRelative) { throw new Error( - `Couldn't detect the repository where this extension is published. The image will be broken in ${this.name}. GitHub repositories will be automatically detected. Otherwise, please provide the repository URL in package.json or use the --baseContentUrl and --baseImagesUrl options.` + `Couldn't detect the repository where this extension is published. The image will be broken in ${this.name}. GitHub/GitLab repositories will be automatically detected. Otherwise, please provide the repository URL in package.json or use the --baseContentUrl and --baseImagesUrl options.` ); } const prefix = this.baseImagesUrl; @@ -505,7 +515,7 @@ export class MarkdownProcessor extends BaseProcessor { return all.replace(link, urljoin(prefix, link)); }); - if (this.gitHubIssueLinking && this.isGitHub) { + if ((this.gitHubIssueLinking && this.isGitHub) || (this.gitLabIssueLinking && this.isGitLab)) { const markdownIssueRegex = /(\s|\n)([\w\d_-]+\/[\w\d_-]+)?#(\d+)\b/g; const issueReplace = ( all: string, @@ -523,11 +533,19 @@ export class MarkdownProcessor extends BaseProcessor { if (owner && repositoryName && issueNumber) { // Issue in external repository - const issueUrl = urljoin('https://github.com', owner, repositoryName, 'issues', issueNumber); + const issueUrl = this.isGitHub + ? urljoin('https://github.com', owner, repositoryName, 'issues', issueNumber) + : urljoin('https://gitlab.com', owner, repositoryName, '-', 'issues', issueNumber); result = prefix + `[${owner}/${repositoryName}#${issueNumber}](${issueUrl})`; } else if (!owner && !repositoryName && issueNumber) { // Issue in own repository - result = prefix + `[#${issueNumber}](${urljoin(this.repositoryUrl, 'issues', issueNumber)})`; + result = + prefix + + `[#${issueNumber}](${ + this.isGitHub + ? urljoin(this.repositoryUrl, 'issues', issueNumber) + : urljoin(this.repositoryUrl, '-', 'issues', issueNumber) + })`; } return result; @@ -569,7 +587,7 @@ export class MarkdownProcessor extends BaseProcessor { } // GitHub heuristics - private guessBaseUrls(githubBranch: string | undefined): { content: string; images: string; repository: string } { + private guessBaseUrls(githostBranch: string | undefined): { content: string; images: string; repository: string } { let repository = null; if (typeof this.manifest.repository === 'string') { @@ -582,22 +600,34 @@ export class MarkdownProcessor extends BaseProcessor { return null; } - const regex = /github(\.com\/|:)([^/]+)\/([^/]+)(\/|$)/; - const match = regex.exec(repository); + const gitHubRegex = /(?github(\.com\/|:))(?(?:[^/]+)\/(?:[^/]+))(\/|$)/; + const gitLabRegex = /(?gitlab(\.com\/|:))(?(?:[^/]+)(\/(?:[^/]+))+)(\/|$)/; + const match = ((gitHubRegex.exec(repository) || gitLabRegex.exec(repository)) as unknown) as { + groups: Record; + }; if (!match) { return null; } - const account = match[2]; - const repositoryName = match[3].replace(/\.git$/i, ''); - const branchName = githubBranch ? githubBranch : 'HEAD'; + const project = match.groups.project.replace(/\.git$/i, ''); + const branchName = githostBranch ? githostBranch : 'HEAD'; - return { - content: `https://github.com/${account}/${repositoryName}/blob/${branchName}`, - images: `https://github.com/${account}/${repositoryName}/raw/${branchName}`, - repository: `https://github.com/${account}/${repositoryName}`, - }; + if (/^github/.test(match.groups.domain)) { + return { + content: `https://github.com/${project}/blob/${branchName}`, + images: `https://github.com/${project}/raw/${branchName}`, + repository: `https://github.com/${project}`, + }; + } else if (/^gitlab/.test(match.groups.domain)) { + return { + content: `https://gitlab.com/${project}/-/blob/${branchName}`, + images: `https://gitlab.com/${project}/-/raw/${branchName}`, + repository: `https://gitlab.com/${project}`, + }; + } + + return null; } } diff --git a/src/publish.ts b/src/publish.ts index 070616cc..d1056984 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -119,6 +119,7 @@ export interface IPublishOptions { cwd?: string; pat?: string; githubBranch?: string; + gitlabBranch?: string; baseContentUrl?: string; baseImagesUrl?: string; useYarn?: boolean; @@ -190,6 +191,7 @@ export function publish(options: IPublishOptions = {}): Promise { } else { const cwd = options.cwd; const githubBranch = options.githubBranch; + const gitlabBranch = options.gitlabBranch; const baseContentUrl = options.baseContentUrl; const baseImagesUrl = options.baseImagesUrl; const useYarn = options.useYarn; @@ -199,7 +201,7 @@ export function publish(options: IPublishOptions = {}): Promise { promise = versionBump(options.cwd, options.version, options.commitMessage) .then(() => tmpName()) .then(packagePath => - pack({ packagePath, cwd, githubBranch, baseContentUrl, baseImagesUrl, useYarn, ignoreFile, web }) + pack({ packagePath, cwd, githubBranch, gitlabBranch, baseContentUrl, baseImagesUrl, useYarn, ignoreFile, web }) ); } diff --git a/src/test/fixtures/readme/readme.gitlab.branch.main.expected.md b/src/test/fixtures/readme/readme.gitlab.branch.main.expected.md new file mode 100644 index 00000000..6bcde929 --- /dev/null +++ b/src/test/fixtures/readme/readme.gitlab.branch.main.expected.md @@ -0,0 +1,48 @@ +# README + +>**Important:** Once installed the checker will only update if you add the setting `"spellMD.enable": true` to your `.vscode\settings.json` file. + +This README covers off: +* [Functionality](#functionality) +* [Install](#install) +* [Run and Configure](#run-and-configure) +* [Known Issues/Bugs](#known-issuesbugs) +* [Backlog](#backlog) +* [How to Debug](#how-to-debug) + +# Functionality + +Load up a Markdown file and get highlights and hovers for existing issues. Checking will occur as you type in the document. + +![Underscores and hovers](https://gitlab.com/username/repository/-/raw/main/images/SpellMDDemo1.gif) + +The status bar lets you quickly navigate to any issue and you can see all positions in the gutter. + +[![Jump to issues](https://gitlab.com/username/repository/-/raw/main/images/SpellMDDemo2.gif)](http://shouldnottouchthis/) +[![Jump to issues](https://gitlab.com/username/repository/-/raw/main/images/SpellMDDemo2.gif)](https://gitlab.com/username/repository/-/blob/main/monkey) +![](https://gitlab.com/username/repository/-/raw/main/images/SpellMDDemo2.gif) + + +The `spellMD.json` config file is watched so you can add more ignores or change mappings at will. + +![Add to dictionary](https://gitlab.com/username/repository/-/raw/main/images/SpellMDDemo3.gif) + +![issue](https://gitlab.com/username/repository/-/raw/main/issue) + +[mono](https://gitlab.com/username/repository/-/blob/main/monkey) +[not](http://shouldnottouchthis/) +[Email me](mailto:example@example.com) + +# Install +This extension is published in the VS Code Gallery. So simply hit 'F1' and type 'ext inst' from there select `SpellMD` and follow instructions. + + +To clone the extension and load locally... + +``` +git clone https://github.com/Microsoft/vscode-SpellMD.git +npm install +tsc +``` + +>**Note:** TypeScript 1.6 or higher is required you can check with `tsc -v` and if you need to upgrade then run `npm install -g typescript`. diff --git a/src/test/fixtures/readme/readme.gitlab.branch.override.content.expected.md b/src/test/fixtures/readme/readme.gitlab.branch.override.content.expected.md new file mode 100644 index 00000000..6bb9682e --- /dev/null +++ b/src/test/fixtures/readme/readme.gitlab.branch.override.content.expected.md @@ -0,0 +1,48 @@ +# README + +>**Important:** Once installed the checker will only update if you add the setting `"spellMD.enable": true` to your `.vscode\settings.json` file. + +This README covers off: +* [Functionality](#functionality) +* [Install](#install) +* [Run and Configure](#run-and-configure) +* [Known Issues/Bugs](#known-issuesbugs) +* [Backlog](#backlog) +* [How to Debug](#how-to-debug) + +# Functionality + +Load up a Markdown file and get highlights and hovers for existing issues. Checking will occur as you type in the document. + +![Underscores and hovers](https://gitlab.com/base/images/SpellMDDemo1.gif) + +The status bar lets you quickly navigate to any issue and you can see all positions in the gutter. + +[![Jump to issues](https://gitlab.com/base/images/SpellMDDemo2.gif)](http://shouldnottouchthis/) +[![Jump to issues](https://gitlab.com/base/images/SpellMDDemo2.gif)](https://gitlab.com/base/monkey) +![](https://gitlab.com/base/images/SpellMDDemo2.gif) + + +The `spellMD.json` config file is watched so you can add more ignores or change mappings at will. + +![Add to dictionary](https://gitlab.com/base/images/SpellMDDemo3.gif) + +![issue](https://gitlab.com/base/issue) + +[mono](https://gitlab.com/base/monkey) +[not](http://shouldnottouchthis/) +[Email me](mailto:example@example.com) + +# Install +This extension is published in the VS Code Gallery. So simply hit 'F1' and type 'ext inst' from there select `SpellMD` and follow instructions. + + +To clone the extension and load locally... + +``` +git clone https://github.com/Microsoft/vscode-SpellMD.git +npm install +tsc +``` + +>**Note:** TypeScript 1.6 or higher is required you can check with `tsc -v` and if you need to upgrade then run `npm install -g typescript`. diff --git a/src/test/fixtures/readme/readme.gitlab.branch.override.images.expected.md b/src/test/fixtures/readme/readme.gitlab.branch.override.images.expected.md new file mode 100644 index 00000000..c0ec04d9 --- /dev/null +++ b/src/test/fixtures/readme/readme.gitlab.branch.override.images.expected.md @@ -0,0 +1,48 @@ +# README + +>**Important:** Once installed the checker will only update if you add the setting `"spellMD.enable": true` to your `.vscode\settings.json` file. + +This README covers off: +* [Functionality](#functionality) +* [Install](#install) +* [Run and Configure](#run-and-configure) +* [Known Issues/Bugs](#known-issuesbugs) +* [Backlog](#backlog) +* [How to Debug](#how-to-debug) + +# Functionality + +Load up a Markdown file and get highlights and hovers for existing issues. Checking will occur as you type in the document. + +![Underscores and hovers](https://gitlab.com/base/images/SpellMDDemo1.gif) + +The status bar lets you quickly navigate to any issue and you can see all positions in the gutter. + +[![Jump to issues](https://gitlab.com/base/images/SpellMDDemo2.gif)](http://shouldnottouchthis/) +[![Jump to issues](https://gitlab.com/base/images/SpellMDDemo2.gif)](https://gitlab.com/username/repository/-/blob/main/monkey) +![](https://gitlab.com/base/images/SpellMDDemo2.gif) + + +The `spellMD.json` config file is watched so you can add more ignores or change mappings at will. + +![Add to dictionary](https://gitlab.com/base/images/SpellMDDemo3.gif) + +![issue](https://gitlab.com/base/issue) + +[mono](https://gitlab.com/username/repository/-/blob/main/monkey) +[not](http://shouldnottouchthis/) +[Email me](mailto:example@example.com) + +# Install +This extension is published in the VS Code Gallery. So simply hit 'F1' and type 'ext inst' from there select `SpellMD` and follow instructions. + + +To clone the extension and load locally... + +``` +git clone https://github.com/Microsoft/vscode-SpellMD.git +npm install +tsc +``` + +>**Note:** TypeScript 1.6 or higher is required you can check with `tsc -v` and if you need to upgrade then run `npm install -g typescript`. diff --git a/src/test/fixtures/readme/readme.gitlab.default.md b/src/test/fixtures/readme/readme.gitlab.default.md new file mode 100644 index 00000000..314b2365 --- /dev/null +++ b/src/test/fixtures/readme/readme.gitlab.default.md @@ -0,0 +1,48 @@ +# README + +>**Important:** Once installed the checker will only update if you add the setting `"spellMD.enable": true` to your `.vscode\settings.json` file. + +This README covers off: +* [Functionality](#functionality) +* [Install](#install) +* [Run and Configure](#run-and-configure) +* [Known Issues/Bugs](#known-issuesbugs) +* [Backlog](#backlog) +* [How to Debug](#how-to-debug) + +# Functionality + +Load up a Markdown file and get highlights and hovers for existing issues. Checking will occur as you type in the document. + +![Underscores and hovers](https://gitlab.com/username/repository/-/raw/HEAD/images/SpellMDDemo1.gif) + +The status bar lets you quickly navigate to any issue and you can see all positions in the gutter. + +[![Jump to issues](https://gitlab.com/username/repository/-/raw/HEAD/images/SpellMDDemo2.gif)](http://shouldnottouchthis/) +[![Jump to issues](https://gitlab.com/username/repository/-/raw/HEAD/images/SpellMDDemo2.gif)](https://gitlab.com/username/repository/-/blob/HEAD/monkey) +![](https://gitlab.com/username/repository/-/raw/HEAD/images/SpellMDDemo2.gif) + + +The `spellMD.json` config file is watched so you can add more ignores or change mappings at will. + +![Add to dictionary](https://gitlab.com/username/repository/-/raw/HEAD/images/SpellMDDemo3.gif) + +![issue](https://gitlab.com/username/repository/-/raw/HEAD/issue) + +[mono](https://gitlab.com/username/repository/-/blob/HEAD/monkey) +[not](http://shouldnottouchthis/) +[Email me](mailto:example@example.com) + +# Install +This extension is published in the VS Code Gallery. So simply hit 'F1' and type 'ext inst' from there select `SpellMD` and follow instructions. + + +To clone the extension and load locally... + +``` +git clone https://github.com/Microsoft/vscode-SpellMD.git +npm install +tsc +``` + +>**Note:** TypeScript 1.6 or higher is required you can check with `tsc -v` and if you need to upgrade then run `npm install -g typescript`. diff --git a/src/test/fixtures/readme/readme.gitlab.expected.md b/src/test/fixtures/readme/readme.gitlab.expected.md new file mode 100644 index 00000000..6d24c294 --- /dev/null +++ b/src/test/fixtures/readme/readme.gitlab.expected.md @@ -0,0 +1,15 @@ +# Replace + +[#8](https://gitlab.com/username/repository/-/issues/8) + +* Some issue in same repository: [#7](https://gitlab.com/username/repository/-/issues/7) +* Some issue in other repository: [other/repositoryName#8](https://gitlab.com/other/repositoryName/-/issues/8) +* Some issue in other repository with fancy name: [my_user-name/my-rep_o12#6](https://gitlab.com/my_user-name/my-rep_o12/-/issues/6) + +# Do not touch this: + * username#4 (no valid gitlab link) + * /#7 + * foo/$234/#7 + * [#7](http://shouldnottouchthis/) + * [other/repositoryName#8](http://shouldnottouchthis/) + * [Email me](MAILTO:example@example.com) diff --git a/src/test/fixtures/readme/readme.gitlab.md b/src/test/fixtures/readme/readme.gitlab.md new file mode 100644 index 00000000..b3caa4e4 --- /dev/null +++ b/src/test/fixtures/readme/readme.gitlab.md @@ -0,0 +1,15 @@ +# Replace + +#8 + +* Some issue in same repository: #7 +* Some issue in other repository: other/repositoryName#8 +* Some issue in other repository with fancy name: my_user-name/my-rep_o12#6 + +# Do not touch this: + * username#4 (no valid gitlab link) + * /#7 + * foo/$234/#7 + * [#7](http://shouldnottouchthis/) + * [other/repositoryName#8](http://shouldnottouchthis/) + * [Email me](MAILTO:example@example.com) diff --git a/src/test/package.test.ts b/src/test/package.test.ts index c8812461..4896c097 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -1957,6 +1957,177 @@ describe('MarkdownProcessor', () => { }); }); + it('should infer baseContentUrl if its a gitlab repo', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, {}); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.default.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + + it('should infer baseContentUrl if its a gitlab repo (.git)', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository.git', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, {}); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.default.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + + it('should infer baseContentUrl if its a gitlab repo (short format)', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'gitlab:username/repository', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, {}); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.default.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + + it('should replace relative links with GitLab URLs while respecting gitlabBranch', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, { + gitlabBranch: 'main', + }); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.branch.main.expected.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + + it('should override image URLs with baseImagesUrl while also respecting gitlabBranch', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, { + gitlabBranch: 'main', + // Override image relative links to point to different base URL + baseImagesUrl: 'https://gitlab.com/base', + }); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.branch.override.images.expected.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + + it('should override gitlabBranch setting with baseContentUrl', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, { + gitlabBranch: 'main', + baseContentUrl: 'https://gitlab.com/base', + }); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.branch.override.content.expected.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + it('should replace img urls with baseImagesUrl', () => { const manifest = { name: 'test', @@ -2069,6 +2240,60 @@ describe('MarkdownProcessor', () => { }); }); + it('should replace issue links with urls if its a gitlab repo.', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository.git', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, {}); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.gitlab.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.expected.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + + it('should not replace issue links with urls if its a gitlab repo but issue link expansion is disabled.', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + description: 'test extension', + engines: Object.create(null), + repository: 'https://gitlab.com/username/repository.git', + }; + + const root = fixture('readme'); + const processor = new ReadmeProcessor(manifest, { gitLabIssueLinking: false }); + const readme = { + path: 'extension/readme.md', + localPath: path.join(root, 'readme.gitlab.md'), + }; + + return processor + .onFile(readme) + .then(file => read(file)) + .then(actual => { + return readFile(path.join(root, 'readme.gitlab.md'), 'utf8').then(expected => { + assert.equal(actual, expected); + }); + }); + }); + it('should prevent non-HTTPS images', async () => { const manifest = { name: 'test', From 2356041bfce796fdf749de14266d16484eea2c4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 30 Apr 2021 14:36:43 +0200 Subject: [PATCH 27/70] 1.88.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e4e15e20..90cf99f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.87.1", + "version": "1.88.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 65600e2fba3d77945e5351c7b2dc7b5ac1dcdd9f Mon Sep 17 00:00:00 2001 From: Oliver Salzburg Date: Tue, 4 May 2021 16:43:18 +0200 Subject: [PATCH 28/70] fix: Missing error response handling Fixes #563 --- src/publicgalleryapi.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/publicgalleryapi.ts b/src/publicgalleryapi.ts index 89a3ca8f..92b28a17 100644 --- a/src/publicgalleryapi.ts +++ b/src/publicgalleryapi.ts @@ -54,6 +54,10 @@ export class PublicGalleryAPI { }); const raw = JSON.parse(await res.readBody()); + if (raw.errorCode !== undefined) { + throw new Error(raw.message); + } + return ContractSerializer.deserialize(raw.results[0].extensions, TypeInfo.PublishedExtension, false, false); } From a0f032e38a8740d2a61e5a45f064f4290437760a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Thu, 6 May 2021 17:51:37 +0200 Subject: [PATCH 29/70] move to npm --- .gitignore | 2 +- package-lock.json | 2197 +++++++++++++++++++++++++++++++++++++++++++++ yarn.lock | 1764 ------------------------------------ 3 files changed, 2198 insertions(+), 1765 deletions(-) create mode 100644 package-lock.json delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index f5217e9c..b0911f55 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ node_modules/ out/ npm-debug.log !src/test/**/node_modules -package-lock.json \ No newline at end of file +yarn.lock \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..08c8812e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2197 @@ +{ + "name": "vsce", + "version": "1.88.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo= sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI= sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM= sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@types/cheerio": { + "version": "0.22.10", + "resolved": "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.10.tgz", + "integrity": "sha1-eA1VJGeCS+SiQbKVEKeHOnQyxKY= sha512-fOM/Jhv51iyugY7KOBZz2ThfT1gwvsGCfWxpLpZDgkGjpEO4Le9cld07OdskikLjDUQJ43dzDaVRSFwQlpdqVg==", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA= sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/denodeify": { + "version": "1.2.31", + "resolved": "https://registry.yarnpkg.com/@types/denodeify/-/denodeify-1.2.31.tgz", + "integrity": "sha1-mnN7BjvxqOOmPMAGy7sN5gHONYQ= sha512-Jgy3dvCyIxhNb5RstVJkubeHZifw8KJXca13ov8OO4IqhDLPRHiJJ6VArJbZZ4HuEMJEB83yCuABodNMlYylzQ==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc= sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU= sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "10.12.15", + "resolved": "https://registry.yarnpkg.com/@types/node/-/node-10.12.15.tgz", + "integrity": "sha1-IOhWUbYv2GZW5Xycm8dxqxVwvFk= sha512-9kROxduaN98QghwwHmxXO2Xz3MaWf+I1sLVAA6KJDF5xix+IyXVhds0MAfdNwtcpSrzhaTsNB0/jnL86fgUhqA==", + "dev": true + } + } + }, + "@types/lodash": { + "version": "4.14.123", + "resolved": "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.123.tgz", + "integrity": "sha1-Ob5dIRR4yN072umO51u37+Sr/k0= sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q==", + "dev": true + }, + "@types/markdown-it": { + "version": "0.0.2", + "resolved": "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.2.tgz", + "integrity": "sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA=", + "dev": true + }, + "@types/mime": { + "version": "1.3.1", + "resolved": "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.1.tgz", + "integrity": "sha1-LPQpctCTHBBgx9X6Zif85r2Hby8= sha512-rek8twk9C58gHYqIrUlJsx8NQMhlxqHzln9Z9ODqiNgv3/s+ZwIrfr+djqzsnVM12xe9hL98iJ20lj2RvCBv6A==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0= sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/mocha": { + "version": "7.0.2", + "resolved": "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz", + "integrity": "sha1-sX8Wz5M1l+ENbXjq4yUeaSzosM4= sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "dev": true + }, + "@types/node": { + "version": "8.10.38", + "resolved": "https://registry.yarnpkg.com/@types/node/-/node-8.10.38.tgz", + "integrity": "sha1-4FwgGmaEkuU0tIECrKApSJj0SfY= sha512-EibsnbJerd0hBFaDjJStFrVbVBAtOy4dgL8zZFw0uOvPqzBAX59Ci8cgjg3+RgJIWhsB5A4c+pi+D4P9tQQh/A==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA= sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/read": { + "version": "0.0.28", + "resolved": "https://registry.yarnpkg.com/@types/read/-/read-0.0.28.tgz", + "integrity": "sha1-zQvkCbGSxhGfF+Z9Q09MbpQY8bU=", + "dev": true + }, + "@types/semver": { + "version": "6.0.0", + "resolved": "https://registry.yarnpkg.com/@types/semver/-/semver-6.0.0.tgz", + "integrity": "sha1-hrqJ8CpBTjnGjQKzUYcuTtMb13M= sha512-OO0srjOGH99a4LUN2its3+r6CBYcplhJ466yLqs+zvAWgphCpS8hYZEZ797tRDP/QKcqTdb/YCN6ifASoAWkrQ==", + "dev": true + }, + "@types/tmp": { + "version": "0.1.0", + "resolved": "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha1-Gc9zp7z2QZZUhRGXJjl6CW8ASb0= sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA==", + "dev": true + }, + "@types/xml2js": { + "version": "0.4.4", + "resolved": "https://registry.yarnpkg.com/@types/xml2js/-/xml2js-0.4.4.tgz", + "integrity": "sha1-IJPZQ1miAYBtmX3M78gBU9sxHGY= sha512-O6Xgai01b9PB3IGA0lRIp1Ex3JBcxGDhdO0n3NIIpCyDOAjxcIGQFmkvgJpP8anTrthxOUQjBfLdRRi0Zn/TXA==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "10.12.15", + "resolved": "https://registry.yarnpkg.com/@types/node/-/node-10.12.15.tgz", + "integrity": "sha1-IOhWUbYv2GZW5Xycm8dxqxVwvFk= sha512-9kROxduaN98QghwwHmxXO2Xz3MaWf+I1sLVAA6KJDF5xix+IyXVhds0MAfdNwtcpSrzhaTsNB0/jnL86fgUhqA==", + "dev": true + } + } + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha1-V9NbhoboUeLMBMQD8cACA5dqGBM= sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI= sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha1-PLs9DzFoEOr8xHYkc0I31q7krms= sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha1-t5hCCtvrHego2ErNii4j0+/oXo0= sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha1-yWVekzHgq81YjSp8rX6ZVvZnAfo= sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "azure-devops-node-api": { + "version": "10.2.2", + "resolved": "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz", + "integrity": "sha1-n1V+Yi3Qe7qpvV5+hOF8dh4hUbI= sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow==", + "requires": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w= sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc= sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA= sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw= sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks= sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + } + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha1-EsBxRmjFWAD2WeJi1JYql/r1VKY= sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "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.2.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha1-Z6npZL4xpR4V5QENWObxKDQAL0Y= sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U= sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "commander": { + "version": "6.1.0", + "resolved": "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz", + "integrity": "sha1-+Ncit4EDFBAGtm9Me6HpcxW6dbw= sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==" + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha1-GlaJkTaF5ah2N7jT/8p1UU7EHWI= sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concurrently": { + "version": "5.1.0", + "resolved": "https://registry.yarnpkg.com/concurrently/-/concurrently-5.1.0.tgz", + "integrity": "sha1-BVI5hrp6r0tYpJ3dZY+riPp4MTI= sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM= sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha1-75tE13OVnK5j3ezRIt4jhTtg+NM= sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "dependencies": { + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha1-+WCIzfJKj6qa6poAny2dlCyZlkY= sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY= sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE= sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha1-wIdtnQSAkn19SSDc1yrzWVZJVU0= sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + }, + "date-fns": { + "version": "2.9.0", + "resolved": "https://registry.yarnpkg.com/date-fns/-/date-fns-2.9.0.tgz", + "integrity": "sha1-0LF1pcN+1fF7l+InK7wfpa7Gd9I= sha512-khbFLu/MlzLjEzy9Gh8oY1hNt/Dvxw3J6Rbc28cVoYWQaC1S3YI4xwkF9ZWcjDLscbZlY9hISMr66RFzZagLsA==", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps= sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI= sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8= sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM= sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA= sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY= sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8= sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk= sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc= sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo= sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "execa": { + "version": "4.0.3", + "resolved": "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz", + "integrity": "sha1-CjTau61tZhAL1vLFdshmlAPzF/I= sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA= sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M= sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha1-ECl/mAMKeGgpaBaQVF72We0dJU4= sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz", + "integrity": "sha1-CQvsiwXjnLowl0fx1YjwTbr5jbI= sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y= sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM= sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE= sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik= sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4= sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8= sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc= sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.0", + "resolved": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz", + "integrity": "sha1-X15CLc9hGcDZg+02Jgzp3tC+5GQ= sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.0.6" + }, + "dependencies": { + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo= sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M= sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "husky": { + "version": "4.3.0", + "resolved": "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz", + "integrity": "sha1-Cy7B1mQk6SGdNZ4mpRxY7FJ48N4= sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^7.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k= sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo= sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc= sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY= sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk= sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM= sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs= sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4= sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss= sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4= sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM= sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc= sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk= sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk= sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0= sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz", + "integrity": "sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I= sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "linkify-it": { + "version": "2.1.0", + "resolved": "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz", + "integrity": "sha1-xMrzimzXrCIS7zx9K94wqRVh+ds= sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4= sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q= sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha1-q/xk8UGxci1mNAIETkOSfx9QqNw= sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q= sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" + } + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A= sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha1-WlFLcXklkoeVKIHpRBDsVGVln4w= sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.yarnpkg.com/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha1-ifuzDQlCmEWxu4k6gwv1dxBJpEE= sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha1-ds/nQs8fQbubHCmtAwaMBbTA5Ao= sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0= sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } + }, + "mri": { + "version": "1.1.6", + "resolved": "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz", + "integrity": "sha1-SZUuEETbIdv5D2zZK8nJp3fUFaY= sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha1-jDwPbj6ESa2grz3SnvtJGjdRkbM= sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha1-owrBNiH299Z0JgpU3t4EjDmCwIg= sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg= sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz", + "integrity": "sha1-eQp89v6lRZuslhELKbYEEtyP+Ws= sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo= sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw= sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "object-inspect": { + "version": "1.10.2", + "resolved": "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz", + "integrity": "sha1-tjhaPit8rgter8+Qzd+F0Sh2fzA= sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4= sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk= sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4= sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha1-eg//l49tv6TQBiOPusmO1BmMMlk= sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA= sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha1-QXyZQeYCepq8ulCS3SkE4lW1+8I= sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ= sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY= sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI= sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", + "requires": { + "semver": "^5.1.0" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha1-BC95L/3TaFFVHPTp4Gazh0q0W1w= sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "10.12.15", + "resolved": "https://registry.yarnpkg.com/@types/node/-/node-10.12.15.tgz", + "integrity": "sha1-IOhWUbYv2GZW5Xycm8dxqxVwvFk= sha512-9kROxduaN98QghwwHmxXO2Xz3MaWf+I1sLVAA6KJDF5xix+IyXVhds0MAfdNwtcpSrzhaTsNB0/jnL86fgUhqA==" + } + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U= sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs= sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0= sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM= sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk= sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA= sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE= sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc= sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM= sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI= sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "prettier": { + "version": "2.1.2", + "resolved": "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha1-MFBwDa4uTItnxMP2Zs24r0BeHOU= sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true + }, + "pretty-quick": { + "version": "3.0.2", + "resolved": "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.0.2.tgz", + "integrity": "sha1-ftRg9+Q6ZHsQRK2Lf0GgyKfxxRw= sha512-4rWOs/Ifdkg7G/YX7Xbco4jZkuXPx445KdhuMI6REnl3nXRDb9+zysb29c76R59jsJzcnkcpAaGi8D/RjAVfSQ==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k= sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ= sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk= sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA= sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE= sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc= sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM= sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz", + "integrity": "sha1-STFIL6jWR6Wqt5nFJx0hM7mB+2o= sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + }, + "readable-stream": { + "version": "3.1.0", + "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.0.tgz", + "integrity": "sha1-GcLpwc5DUHxT9u77zx7j1KqnhvU= sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha1-wwwzNSsSyW37S4lUIaSf1alZODk= sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs= sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha1-O9qur0XMB/N1ZW39LlTtCBCxAbo= sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha1-4Hd/4NGEzseHLfFH8wNXLUFOIRw= sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0= sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk= sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz", + "integrity": "sha1-fnQlb7qknHWqfHogXMInmcrIAAQ= sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha1-qTwsWERTmncCMzeRB7OMe0rJ0zg= sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo= sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI= sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha1-785cj9wQTudRslxY1CkAEfpeos8= sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw= sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ= sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8= sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ= sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc= sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA= sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha1-dezRqI3owYTvAV6vtRtbSL/RG7E= sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE= sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", + "integrity": "sha1-7kl/0pdoZG2EviybgZ4pJDlhQ3M= sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha1-RAiqLl1t3QyagHObCH+8BnwDs8w= sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha1-x28c7zDyG7rYr+uNsVEUls+w8qM= sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz", + "integrity": "sha1-r+WWp86d6QVJaRlAbJc0hF8BovI= sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha1-/obnOLGVRK/nBGkkOyoe6SQOro0= sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0= sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + } + } + }, + "tmp": { + "version": "0.0.29", + "resolved": "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz", + "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", + "requires": { + "os-tmpdir": "~1.0.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ= sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha1-TKCakJLIi3OnzcXooBtQeweQoMw= sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY= sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw= sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "typed-rest-client": { + "version": "1.8.4", + "resolved": "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.4.tgz", + "integrity": "sha1-uj+3iOW5MiVHQGOSUz8S1mClztY= sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg==", + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "typescript": { + "version": "3.4.3", + "resolved": "https://registry.yarnpkg.com/typescript/-/typescript-3.4.3.tgz", + "integrity": "sha1-DrMg5KzpsQ6t9bxhAyhrD4t8Ik8= sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", + "dev": true + }, + "uc.micro": { + "version": "1.0.5", + "resolved": "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz", + "integrity": "sha1-DGXxX4FaoItWCmHOi023/8P0U3Y= sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==" + }, + "underscore": { + "version": "1.13.1", + "resolved": "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha1-DBxr0t9UtrafIxQGbWW2zeb8+dE= sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + }, + "url-join": { + "version": "1.1.0", + "resolved": "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz", + "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo= sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk= sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c= sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha1-jbK4PDHF11CZu4kLI/MJSJHiR9Q= sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha1-O1k63ZRIdgd9TWg/7gEIG9n/8x4= sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha1-TGV6VeB+Xyz5R/ijZlZ8BKDe3IM= sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg= sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha1-7yXCx2n/a9CeSw+dfGBfsnhG6p8= sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU= sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "requires": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 75d7baec..00000000 --- a/yarn.lock +++ /dev/null @@ -1,1764 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@types/cheerio@^0.22.1": - version "0.22.10" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.10.tgz#780d552467824be4a241b29510a7873a7432c4a6" - integrity sha512-fOM/Jhv51iyugY7KOBZz2ThfT1gwvsGCfWxpLpZDgkGjpEO4Le9cld07OdskikLjDUQJ43dzDaVRSFwQlpdqVg== - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/denodeify@^1.2.31": - version "1.2.31" - resolved "https://registry.yarnpkg.com/@types/denodeify/-/denodeify-1.2.31.tgz#9a737b063bf1a8e3a63cc006cbbb0de601ce3584" - integrity sha512-Jgy3dvCyIxhNb5RstVJkubeHZifw8KJXca13ov8OO4IqhDLPRHiJJ6VArJbZZ4HuEMJEB83yCuABodNMlYylzQ== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/lodash@^4.14.123": - version "4.14.123" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.123.tgz#39be5d211478c8dd3bdae98ee75bb7efe4abfe4d" - integrity sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q== - -"@types/markdown-it@0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.2.tgz#5d9ad19e6e6508cdd2f2596df86fd0aade598660" - integrity sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA= - -"@types/mime@^1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.1.tgz#2cf42972d0931c1060c7d5fa6627fce6bd876f2f" - integrity sha512-rek8twk9C58gHYqIrUlJsx8NQMhlxqHzln9Z9ODqiNgv3/s+ZwIrfr+djqzsnVM12xe9hL98iJ20lj2RvCBv6A== - -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/mocha@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce" - integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== - -"@types/node@*": - version "10.12.15" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.15.tgz#20e85651b62fd86656e57c9c9bc771ab1570bc59" - integrity sha512-9kROxduaN98QghwwHmxXO2Xz3MaWf+I1sLVAA6KJDF5xix+IyXVhds0MAfdNwtcpSrzhaTsNB0/jnL86fgUhqA== - -"@types/node@^8": - version "8.10.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.38.tgz#e05c201a668492e534b48102aca0294898f449f6" - integrity sha512-EibsnbJerd0hBFaDjJStFrVbVBAtOy4dgL8zZFw0uOvPqzBAX59Ci8cgjg3+RgJIWhsB5A4c+pi+D4P9tQQh/A== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/read@^0.0.28": - version "0.0.28" - resolved "https://registry.yarnpkg.com/@types/read/-/read-0.0.28.tgz#cd0be409b192c6119f17e67d434f4c6e9418f1b5" - integrity sha1-zQvkCbGSxhGfF+Z9Q09MbpQY8bU= - -"@types/semver@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.0.0.tgz#86ba89f02a414e39c68d02b351872e4ed31bd773" - integrity sha512-OO0srjOGH99a4LUN2its3+r6CBYcplhJ466yLqs+zvAWgphCpS8hYZEZ797tRDP/QKcqTdb/YCN6ifASoAWkrQ== - -"@types/tmp@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd" - integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== - -"@types/xml2js@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@types/xml2js/-/xml2js-0.4.4.tgz#2093d94359a201806d997dccefc80153db311c66" - integrity sha512-O6Xgai01b9PB3IGA0lRIp1Ex3JBcxGDhdO0n3NIIpCyDOAjxcIGQFmkvgJpP8anTrthxOUQjBfLdRRi0Zn/TXA== - dependencies: - "@types/node" "*" - -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.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" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -azure-devops-node-api@^10.2.2: - version "10.2.2" - resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz#9f557e622dd07bbaa9bd5e7e84e17c761e2151b2" - integrity sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow== - dependencies: - tunnel "0.0.6" - typed-rest-client "^1.8.4" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -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== - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~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" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -cheerio@^1.0.0-rc.1: - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" - integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" - -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - 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.2.0" - optionalDependencies: - fsevents "~2.1.1" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" - integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== - -compare-versions@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concurrently@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.1.0.tgz#05523986ba7aaf4b58a49ddd658fab88fa783132" - integrity sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA== - dependencies: - chalk "^2.4.2" - date-fns "^2.0.1" - lodash "^4.17.15" - read-pkg "^4.0.1" - rxjs "^6.5.2" - spawn-command "^0.0.2-1" - supports-color "^6.1.0" - tree-kill "^1.2.2" - yargs "^13.3.0" - -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-what@2.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" - integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== - -date-fns@^2.0.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.9.0.tgz#d0b175a5c37ed5f17b97e2272bbc1fa5aec677d2" - integrity sha512-khbFLu/MlzLjEzy9Gh8oY1hNt/Dvxw3J6Rbc28cVoYWQaC1S3YI4xwkF9ZWcjDLscbZlY9hISMr66RFzZagLsA== - -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= - -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -dom-serializer@0, dom-serializer@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -domelementtype@1, domelementtype@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-versions@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" - integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== - dependencies: - semver-regex "^2.0.0" - -flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== - dependencies: - is-buffer "~2.0.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -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== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob@7.1.3, glob@^7.0.6: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== - -htmlparser2@^3.9.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" - integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== - dependencies: - domelementtype "^1.3.0" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.0.6" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -husky@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" - integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== - dependencies: - chalk "^4.0.0" - ci-info "^2.0.0" - compare-versions "^3.6.0" - cosmiconfig "^7.0.0" - find-versions "^3.2.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^4.2.0" - please-upgrade-node "^3.2.0" - slash "^3.0.0" - which-pm-runs "^1.0.0" - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -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-buffer@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -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-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -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-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -linkify-it@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" - integrity sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg== - dependencies: - uc.micro "^1.0.1" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash@^4.15.0: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -markdown-it@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" - integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== - dependencies: - argparse "^1.0.7" - entities "~2.0.0" - linkify-it "^2.0.0" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" - integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== - dependencies: - minimist "^1.2.5" - -mocha@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.1.tgz#89fbb30d09429845b1bb893a830bf5771049a441" - integrity sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.3" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.0" - -mri@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" - integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mute-stream@~0.0.4: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -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== - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-inspect@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" - integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@4.1.0, object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== - dependencies: - p-try "^2.0.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-semver@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" - integrity sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg= - dependencies: - semver "^5.1.0" - -parse5@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" - integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== - dependencies: - "@types/node" "*" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -picomatch@^2.0.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -prettier@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== - -pretty-quick@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.0.2.tgz#7ed460f7e43a647b1044ad8b7f41a0c8a7f1c51c" - integrity sha512-4rWOs/Ifdkg7G/YX7Xbco4jZkuXPx445KdhuMI6REnl3nXRDb9+zysb29c76R59jsJzcnkcpAaGi8D/RjAVfSQ== - dependencies: - chalk "^3.0.0" - execa "^4.0.0" - find-up "^4.1.0" - ignore "^5.1.4" - mri "^1.1.5" - multimatch "^4.0.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -qs@^6.9.1: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== - dependencies: - side-channel "^1.0.4" - -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= - dependencies: - normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" - -read@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - -readable-stream@^3.0.6: - version "3.1.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.0.tgz#19c2e9c1ce43507c53f6eefbcf1ee3d4aaa786f5" - integrity sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - -rxjs@^6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== - dependencies: - tslib "^1.9.0" - -safe-buffer@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== - -"semver@2 || 3 || 4 || 5": - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -semver@^5.1.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -semver@^5.7.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -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" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@^0.4.2: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" - integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" - integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -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= - -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== - dependencies: - has-flag "^3.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -tmp@0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" - integrity sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA= - dependencies: - os-tmpdir "~1.0.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tunnel@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -typed-rest-client@^1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" - integrity sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg== - dependencies: - qs "^6.9.1" - tunnel "0.0.6" - underscore "^1.12.1" - -typescript@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.3.tgz#0eb320e4ace9b10eadf5bc6103286b0f8b7c224f" - integrity sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ== - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" - integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== - -underscore@^1.12.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== - -url-join@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" - integrity sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg= - -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= - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - -which@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xml2js@^0.4.12: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - -y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - -yaml@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-unparser@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" - integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== - dependencies: - flat "^4.1.0" - lodash "^4.17.15" - yargs "^13.3.0" - -yargs@13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.1" - -yauzl@^2.3.1: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yazl@^2.2.2: - version "2.5.1" - resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" - integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== - dependencies: - buffer-crc32 "~0.2.3" From da1e574dfe631371ffd3092cff84c2385c82a7de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Thu, 6 May 2021 17:52:02 +0200 Subject: [PATCH 30/70] update docs --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fa1bc867..6af547cd 100644 --- a/README.md +++ b/README.md @@ -53,14 +53,14 @@ docker run -it -v $(pwd):/workspace vsce publish First clone this repository, then: ```sh -yarn -yarn watch # or `watch-test` to also run tests +npm i +npm run watch # or `watch-test` to also run tests ``` Once the watcher is up and running, you can run out of sources with: ```sh -yarn vsce +npm run vsce ``` ### Publish to NPM @@ -76,4 +76,4 @@ git push --follow-tags This tool assists in packaging and publishing Visual Studio Code extensions. -Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. \ No newline at end of file +Read the [**Documentation**](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code website. From 2c7b7092e121b3ca535fd73b1c138160ec335ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Thu, 6 May 2021 17:52:06 +0200 Subject: [PATCH 31/70] 1.89.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 08c8812e..ab513db8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.88.0", + "version": "1.89.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 90cf99f6..2daadc7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.88.0", + "version": "1.89.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 6b2fa7b7dd471dc0823b5fcca5dc5bc0d4fd1eec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 May 2021 23:56:26 +0000 Subject: [PATCH 32/70] Bump hosted-git-info from 2.7.1 to 2.8.9 Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.7.1 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.7.1...v2.8.9) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab513db8..ec97efe3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -789,9 +789,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc= sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "htmlparser2": { From 60aee6756eccc1d514e7c8c64b96c799c04b4be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 12 May 2021 09:36:12 +0200 Subject: [PATCH 33/70] fixes #553 --- src/package.ts | 2 +- src/test/package.test.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/package.ts b/src/package.ts index ebac8b61..499b81f4 100644 --- a/src/package.ts +++ b/src/package.ts @@ -209,7 +209,7 @@ function isGitLabRepository(repository: string): boolean { } function isGitHubBadge(href: string): boolean { - return /^https:\/\/github\.com\/[^/]+\/[^/]+\/workflows\/.*badge\.svg/.test(href || ''); + return /^https:\/\/github\.com\/[^/]+\/[^/]+\/(actions\/)?workflows\/.*badge\.svg/.test(href || ''); } function isHostTrusted(url: url.UrlWithStringQuery): boolean { diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 4896c097..d1f0c628 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -2355,7 +2355,7 @@ describe('MarkdownProcessor', () => { assert(file); }); - it('should allow SVG from GitHub actions in image tag', async () => { + it('should allow SVG from GitHub actions in image tag (old url format)', async () => { const manifest = { name: 'test', publisher: 'mocha', @@ -2371,6 +2371,22 @@ describe('MarkdownProcessor', () => { assert(file); }); + it('should allow SVG from GitHub actions in image tag', async () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + engines: Object.create(null), + repository: 'https://github.com/username/repository', + }; + const contents = `![title](https://github.com/fakeuser/fakerepo/actions/workflows/fakeworkflowname/badge.svg)`; + const processor = new ReadmeProcessor(manifest, {}); + const readme = { path: 'extension/readme.md', contents }; + + const file = await processor.onFile(readme); + assert(file); + }); + it('should prevent SVG from a GitHub repo in image tag', async () => { const manifest = { name: 'test', From 22a3e7fe4f216341247459ca982d090c3d8e6799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 12 May 2021 09:44:12 +0200 Subject: [PATCH 34/70] 1.90.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec97efe3..03363373 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.89.0", + "version": "1.90.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2daadc7b..3c43622d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.89.0", + "version": "1.90.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 63362ea17ef47a29638d3e34dc05243d15e7a136 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Fri, 14 May 2021 15:58:16 +0000 Subject: [PATCH 35/70] add remote-menu tag --- src/package.ts | 13 ++++++++++++- src/test/package.test.ts | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/package.ts b/src/package.ts index 499b81f4..18da7338 100644 --- a/src/package.ts +++ b/src/package.ts @@ -361,7 +361,16 @@ export class TagsProcessor extends BaseProcessor { const keywords = this.manifest.keywords || []; const contributes = this.manifest.contributes; const activationEvents = this.manifest.activationEvents || []; - const doesContribute = name => contributes && contributes[name] && contributes[name].length > 0; + const doesContribute = (...properties: string[]) => { + let obj = contributes; + for (const property of properties) { + if (!obj) { + return false; + } + obj = obj[property]; + } + return obj && obj.length > 0; + }; const colorThemes = doesContribute('themes') ? ['theme', 'color-theme'] : []; const iconThemes = doesContribute('iconThemes') ? ['theme', 'icon-theme'] : []; @@ -370,6 +379,7 @@ export class TagsProcessor extends BaseProcessor { const keybindings = doesContribute('keybindings') ? ['keybindings'] : []; const debuggers = doesContribute('debuggers') ? ['debuggers'] : []; const json = doesContribute('jsonValidation') ? ['json'] : []; + const remoteMenu = doesContribute('menus', 'statusBar/remoteIndicator') ? ['remote-menu'] : []; const localizationContributions = ((contributes && contributes['localizations']) || []).reduce( (r, l) => [...r, `lp-${l.languageId}`, ...toLanguagePackTags(l.translations, l.languageId)], @@ -406,6 +416,7 @@ export class TagsProcessor extends BaseProcessor { ...keybindings, ...debuggers, ...json, + ...remoteMenu, ...localizationContributions, ...languageContributions, ...languageActivations, diff --git a/src/test/package.test.ts b/src/test/package.test.ts index d1f0c628..23315f5a 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -945,6 +945,31 @@ describe('toVsixManifest', () => { }); }); + it('should automatically add remote-menu tag', () => { + const manifest = { + name: 'test', + publisher: 'mocha', + version: '0.0.1', + engines: Object.create(null), + contributes: { + menus: { + 'statusBar/remoteIndicator': [ + { + command: 'remote-wsl.newWindow', + }, + ], + }, + }, + }; + + return _toVsixManifest(manifest, []) + .then(parseXmlManifest) + .then(result => { + const tags = result.PackageManifest.Metadata[0].Tags[0].split(',') as string[]; + assert(tags.some(tag => tag === 'remote-menu')); + }); + }); + it('should automatically add language tag with activationEvent', () => { const manifest = { name: 'test', From ddf46709a8b9b8d6c5067ed6f2b3aa1008e494a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 1 Jun 2021 11:30:53 +0200 Subject: [PATCH 36/70] fix compilation errors, update ts --- package-lock.json | 227 +++++++++++++++++++++------------------------- package.json | 8 +- src/package.ts | 2 +- 3 files changed, 107 insertions(+), 130 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03363373..45143b00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,10 +31,13 @@ } }, "@types/cheerio": { - "version": "0.22.10", - "resolved": "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.10.tgz", - "integrity": "sha1-eA1VJGeCS+SiQbKVEKeHOnQyxKY= sha512-fOM/Jhv51iyugY7KOBZz2ThfT1gwvsGCfWxpLpZDgkGjpEO4Le9cld07OdskikLjDUQJ43dzDaVRSFwQlpdqVg==", - "dev": true + "version": "0.22.29", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.29.tgz", + "integrity": "sha512-rNX1PsrDPxiNiyLnRKiW2NXHJFHqx0Fl3J2WsZq0MTBspa/FgwlqhXJE2crIcc+/2IglLHtSWw7g053oUR8fOg==", + "dev": true, + "requires": { + "@types/node": "*" + } }, "@types/color-name": { "version": "1.1.1", @@ -104,9 +107,9 @@ "dev": true }, "@types/node": { - "version": "8.10.38", - "resolved": "https://registry.yarnpkg.com/@types/node/-/node-8.10.38.tgz", - "integrity": "sha1-4FwgGmaEkuU0tIECrKApSJj0SfY= sha512-EibsnbJerd0hBFaDjJStFrVbVBAtOy4dgL8zZFw0uOvPqzBAX59Ci8cgjg3+RgJIWhsB5A4c+pi+D4P9tQQh/A==", + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", "dev": true }, "@types/parse-json": { @@ -302,25 +305,38 @@ } }, "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.9.tgz", + "integrity": "sha512-QF6XVdrLONO6DXRF5iaolY+odmhj2CLj+xzNod7INPWMi/x9X4SOylH0S/vaPpX+AUU6t04s34SQNh7DbkuCng==", + "requires": { + "cheerio-select": "^1.4.0", + "dom-serializer": "^1.3.1", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" }, "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks= sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" } } }, + "cheerio-select": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.4.0.tgz", + "integrity": "sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew==", + "requires": { + "css-select": "^4.1.2", + "css-what": "^5.0.0", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0" + } + }, "chokidar": { "version": "3.3.0", "resolved": "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz", @@ -329,6 +345,7 @@ "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", + "fsevents": "~2.1.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -460,20 +477,21 @@ } }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.2.tgz", + "integrity": "sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw==", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" } }, "css-what": { - "version": "2.1.2", - "resolved": "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha1-wIdtnQSAkn19SSDc1yrzWVZJVU0= sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" }, "date-fns": { "version": "2.9.0", @@ -525,41 +543,36 @@ "dev": true }, "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8= sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM= sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, "emoji-regex": { @@ -578,9 +591,9 @@ } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz", - "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY= sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, "error-ex": { "version": "1.3.2", @@ -706,6 +719,13 @@ "resolved": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz", @@ -795,27 +815,14 @@ "dev": true }, "htmlparser2": { - "version": "3.10.0", - "resolved": "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz", - "integrity": "sha1-X15CLc9hGcDZg+02Jgzp3tC+5GQ= sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.0.6" - }, - "dependencies": { - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo= sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - } + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, "human-signals": { @@ -1279,11 +1286,11 @@ } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw= sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "object-inspect": { @@ -1413,18 +1420,16 @@ } }, "parse5": { - "version": "3.0.3", - "resolved": "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha1-BC95L/3TaFFVHPTp4Gazh0q0W1w= sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "requires": { - "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "10.12.15", - "resolved": "https://registry.yarnpkg.com/@types/node/-/node-10.12.15.tgz", - "integrity": "sha1-IOhWUbYv2GZW5Xycm8dxqxVwvFk= sha512-9kROxduaN98QghwwHmxXO2Xz3MaWf+I1sLVAA6KJDF5xix+IyXVhds0MAfdNwtcpSrzhaTsNB0/jnL86fgUhqA==" - } + "parse5": "^6.0.1" } }, "path-exists": { @@ -1673,16 +1678,6 @@ "pify": "^3.0.0" } }, - "readable-stream": { - "version": "3.1.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.0.tgz", - "integrity": "sha1-GcLpwc5DUHxT9u77zx7j1KqnhvU= sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "readdirp": { "version": "3.2.0", "resolved": "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz", @@ -1728,11 +1723,6 @@ "tslib": "^1.9.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0= sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "sax": { "version": "1.2.4", "resolved": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz", @@ -1910,14 +1900,6 @@ "es-abstract": "^1.17.5" } }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha1-/obnOLGVRK/nBGkkOyoe6SQOro0= sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -2001,9 +1983,9 @@ } }, "typescript": { - "version": "3.4.3", - "resolved": "https://registry.yarnpkg.com/typescript/-/typescript-3.4.3.tgz", - "integrity": "sha1-DrMg5KzpsQ6t9bxhAyhrD4t8Ik8= sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", + "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", "dev": true }, "uc.micro": { @@ -2021,11 +2003,6 @@ "resolved": "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz", "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 3c43622d..a9992cf6 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "dependencies": { "azure-devops-node-api": "^10.2.2", "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.1", + "cheerio": "^1.0.0-rc.9", "commander": "^6.1.0", "denodeify": "^1.2.1", "glob": "^7.0.6", @@ -58,7 +58,7 @@ "yazl": "^2.2.2" }, "devDependencies": { - "@types/cheerio": "^0.22.1", + "@types/cheerio": "^0.22.29", "@types/denodeify": "^1.2.31", "@types/glob": "^7.1.1", "@types/lodash": "^4.14.123", @@ -66,7 +66,7 @@ "@types/mime": "^1", "@types/minimatch": "^3.0.3", "@types/mocha": "^7.0.2", - "@types/node": "^8", + "@types/node": "^10.17.60", "@types/read": "^0.0.28", "@types/semver": "^6.0.0", "@types/tmp": "^0.1.0", @@ -77,7 +77,7 @@ "prettier": "2.1.2", "pretty-quick": "^3.0.2", "source-map-support": "^0.4.2", - "typescript": "^3.4.3", + "typescript": "^4.3.2", "xml2js": "^0.4.12" }, "mocha": { diff --git a/src/package.ts b/src/package.ts index 18da7338..d82130d5 100644 --- a/src/package.ts +++ b/src/package.ts @@ -569,7 +569,7 @@ export class MarkdownProcessor extends BaseProcessor { const $ = cheerio.load(html); $('img').each((_, img) => { - const src = decodeURI(img.attribs.src); + const src = decodeURI($(img).attr('src')); const srcUrl = url.parse(src); if (/^data:$/i.test(srcUrl.protocol) && /^image$/i.test(srcUrl.host) && /\/svg/i.test(srcUrl.path)) { From e2a7ae77fe337a318ada54428f64d4c721c5bb9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 1 Jun 2021 11:32:48 +0200 Subject: [PATCH 37/70] 1.91.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 45143b00..b252c65f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.90.0", + "version": "1.91.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a9992cf6..60f598e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.90.0", + "version": "1.91.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 2fdb94aa799d744c46c36a2dc9e15a40334d636d Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 9 Apr 2021 00:41:23 +0000 Subject: [PATCH 38/70] Allow version bump in package command And also adds the --no-git-tag-version option to disable the creation of version commit and tag when calling npm version. --- .vscode/extensions.json | 2 +- .vscode/settings.json | 11 ++++++- src/main.ts | 43 +++++++++++++++++---------- src/package.ts | 66 ++++++++++++++++++++++++++++++++++++++++- src/publish.ts | 37 ++++++++++------------- 5 files changed, 120 insertions(+), 39 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 78bd74f6..f58bff1e 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,7 +2,7 @@ // See http://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp // List of extensions which should be recommended for users of this workspace. - "recommendations": ["hbenl.vscode-mocha-test-adapter"], + "recommendations": ["hbenl.vscode-mocha-test-adapter", "esbenp.prettier-vscode"], // List of extensions recommended by VS Code that should not be recommended for users of this workspace. "unwantedRecommendations": [] } diff --git a/.vscode/settings.json b/.vscode/settings.json index be273011..bf97a3da 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,14 @@ "out": true }, "typescript.tsdk": "./node_modules/typescript/lib", - "mochaExplorer.files": "out/**/test/*.test.js" + "mochaExplorer.files": "out/**/test/*.test.js", + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } diff --git a/src/main.ts b/src/main.ts index dafa2a06..3e67d244 100644 --- a/src/main.ts +++ b/src/main.ts @@ -75,9 +75,11 @@ module.exports = function (argv: string[]): void { ); program - .command('package') + .command('package []') .description('Packages an extension') - .option('-o, --out [path]', 'Output .vsix extension file to [path] location') + .option('-o, --out [path]', 'Output .vsix extension file to [path] location (defaults to -.vsix)') + .option('-m, --message ', 'Commit message used when calling `npm version`.') + .option('--no-git-tag-version', 'Do not create a version commit and tag when calling `npm version`.') .option( '--githubBranch [branch]', 'The GitHub branch used to infer relative links in README.md. Can be overriden by --baseContentUrl and --baseImagesUrl.' @@ -98,21 +100,29 @@ module.exports = function (argv: string[]): void { 'Experimental flag to enable publishing web extensions. Note: This is supported only for selected extensions.' ) .action( - ({ - out, - githubBranch, - gitlabBranch, - baseContentUrl, - baseImagesUrl, - yarn, - ignoreFile, - gitHubIssueLinking, - gitLabIssueLinking, - web, - }) => + ( + version, + { + out, + message, + gitTagVersion, + githubBranch, + gitlabBranch, + baseContentUrl, + baseImagesUrl, + yarn, + ignoreFile, + gitHubIssueLinking, + gitLabIssueLinking, + web, + } + ) => main( packageCommand({ packagePath: out, + version, + commitMessage: message, + gitTagVersion, githubBranch, gitlabBranch, baseContentUrl, @@ -135,6 +145,7 @@ module.exports = function (argv: string[]): void { process.env['VSCE_PAT'] ) .option('-m, --message ', 'Commit message used when calling `npm version`.') + .option('--no-git-tag-version', 'Do not create a version commit and tag when calling `npm version`.') .option('--packagePath [path]', 'Publish the VSIX package located at the specified path.') .option( '--githubBranch [branch]', @@ -160,6 +171,7 @@ module.exports = function (argv: string[]): void { { pat, message, + gitTagVersion, packagePath, githubBranch, gitlabBranch, @@ -174,8 +186,9 @@ module.exports = function (argv: string[]): void { main( publish({ pat, - commitMessage: message, version, + commitMessage: message, + gitTagVersion, packagePath, githubBranch, gitlabBranch, diff --git a/src/package.ts b/src/package.ts index d82130d5..03ecfa1e 100644 --- a/src/package.ts +++ b/src/package.ts @@ -13,6 +13,7 @@ import * as markdownit from 'markdown-it'; import * as cheerio from 'cheerio'; import * as url from 'url'; import { lookup } from 'mime'; +import * as semver from 'semver'; import * as urljoin from 'url-join'; import { validatePublisher, @@ -28,6 +29,10 @@ const readFile = denodeify(fs.readFile); const unlink = denodeify(fs.unlink as any); const stat = denodeify(fs.stat); const glob = denodeify(_glob); +const exec = denodeify( + cp.exec as any, + (err, stdout, stderr) => [err, { stdout, stderr }] +); const resourcesPath = path.join(path.dirname(__dirname), 'resources'); const vsixManifestTemplatePath = path.join(resourcesPath, 'extension.vsixmanifest'); @@ -76,8 +81,11 @@ export interface IAsset { } export interface IPackageOptions { - readonly cwd?: string; readonly packagePath?: string; + readonly version?: string; + readonly commitMessage?: string; + readonly gitTagVersion?: boolean; + readonly cwd?: string; readonly githubBranch?: string; readonly gitlabBranch?: string; readonly baseContentUrl?: string; @@ -216,6 +224,60 @@ function isHostTrusted(url: url.UrlWithStringQuery): boolean { return TrustedSVGSources.indexOf(url.host.toLowerCase()) > -1 || isGitHubBadge(url.href); } +export async function versionBump( + cwd: string = process.cwd(), + version?: string, + commitMessage?: string, + gitTagVersion?: boolean +): Promise { + if (!version) { + return Promise.resolve(null); + } + + const manifest = await readManifest(cwd); + + if (manifest.version === version) { + return null; + } + + switch (version) { + case 'major': + case 'minor': + case 'patch': + break; + case 'premajor': + case 'preminor': + case 'prepatch': + case 'prerelease': + case 'from-git': + return Promise.reject(`Not supported: ${version}`); + default: + if (!semver.valid(version)) { + return Promise.reject(`Invalid version ${version}`); + } + } + + let command = `npm version ${version}`; + + if (commitMessage) { + command = `${command} -m "${commitMessage}"`; + } + + if (!gitTagVersion) { + command = `${command} --no-git-tag-version`; + } + + try { + // call `npm version` to do our dirty work + const { stdout, stderr } = await exec(command, { cwd }); + process.stdout.write(stdout); + process.stderr.write(stderr); + return null; + } catch (err) { + throw err.message; + } +} + export class ManifestProcessor extends BaseProcessor { constructor(manifest: Manifest) { super(manifest); @@ -1261,6 +1323,8 @@ export async function pack(options: IPackageOptions = {}): Promise { + await versionBump(options.cwd, options.version, options.commitMessage, options.gitTagVersion); + const { packagePath, files } = await pack(options); const stats = await stat(packagePath); diff --git a/src/publish.ts b/src/publish.ts index d1056984..4756db0d 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -1,19 +1,13 @@ import * as fs from 'fs'; import { ExtensionQueryFlags, PublishedExtension } from 'azure-devops-node-api/interfaces/GalleryInterfaces'; -import { pack, readManifest, IPackage, isWebKind, isSupportedWebExtension } from './package'; +import { pack, readManifest, IPackage, isWebKind, isSupportedWebExtension, versionBump } from './package'; import * as tmp from 'tmp'; import { getPublisher } from './store'; import { getGalleryAPI, read, getPublishedUrl, log, getPublicGalleryAPI, getHubUrl } from './util'; import { Manifest } from './manifest'; import * as denodeify from 'denodeify'; import * as yauzl from 'yauzl'; -import * as semver from 'semver'; -import * as cp from 'child_process'; -const exec = denodeify( - cp.exec as any, - (err, stdout, stderr) => [err, { stdout, stderr }] -); const tmpName = denodeify(tmp.tmpName); function readManifestFromPackage(packagePath: string): Promise { @@ -113,19 +107,20 @@ async function _publish(packagePath: string, pat: string, manifest: Manifest): P } export interface IPublishOptions { - packagePath?: string; - version?: string; - commitMessage?: string; - cwd?: string; - pat?: string; - githubBranch?: string; - gitlabBranch?: string; - baseContentUrl?: string; - baseImagesUrl?: string; - useYarn?: boolean; - noVerify?: boolean; - ignoreFile?: string; - web?: boolean; + readonly packagePath?: string; + readonly version?: string; + readonly commitMessage?: string; + readonly gitTagVersion?: boolean; + readonly cwd?: string; + readonly pat?: string; + readonly githubBranch?: string; + readonly gitlabBranch?: string; + readonly baseContentUrl?: string; + readonly baseImagesUrl?: string; + readonly useYarn?: boolean; + readonly noVerify?: boolean; + readonly ignoreFile?: string; + readonly web?: boolean; } async function versionBump(cwd: string = process.cwd(), version?: string, commitMessage?: string): Promise { @@ -198,7 +193,7 @@ export function publish(options: IPublishOptions = {}): Promise { const ignoreFile = options.ignoreFile; const web = options.web; - promise = versionBump(options.cwd, options.version, options.commitMessage) + promise = versionBump(options.cwd, options.version, options.commitMessage, options.gitTagVersion) .then(() => tmpName()) .then(packagePath => pack({ packagePath, cwd, githubBranch, gitlabBranch, baseContentUrl, baseImagesUrl, useYarn, ignoreFile, web }) From 967adec1a8e9c1fb1e4b88e3f05f967703417842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 4 Jun 2021 16:20:30 +0200 Subject: [PATCH 39/70] 1.92.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c9c3a681..cdfb5c33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.91.0", + "version": "1.92.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index dbdfca93..c6ce5791 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.91.0", + "version": "1.92.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 929b29172ba474afc067b841a0e8e64dc59a7a46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 4 Jun 2021 16:31:51 +0200 Subject: [PATCH 40/70] fix docker files --- .dockerignore | 5 ++++- Dockerfile | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.dockerignore b/.dockerignore index 978c0570..6e4afa7c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,9 +2,12 @@ node_modules/ out/ npm-debug.log !src/test/**/node_modules -package-lock.json Dockerfile .gitignore +.npmignore +.prettierignore LICENSE README.md +SECURITY.md +azure-pipelines.yml ThirdPartyNotices.txt \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index e6330543..89854bfc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ FROM node:12-alpine WORKDIR /opt/vsce -COPY package.json . -COPY yarn.lock . -RUN yarn +COPY package.json package-lock.json . +RUN npm install COPY . . -RUN yarn compile +RUN npm run compile +RUN rm package-lock.json tsconfig.json VOLUME /workspace WORKDIR /workspace ENTRYPOINT ["/opt/vsce/out/vsce"] \ No newline at end of file From 75708f4a6ed5e223b001d86193a97b1959051772 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:15:36 -0300 Subject: [PATCH 41/70] Remove dupe versionBump from publish --- src/publish.ts | 45 --------------------------------------------- 1 file changed, 45 deletions(-) diff --git a/src/publish.ts b/src/publish.ts index 4756db0d..735a5030 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -123,51 +123,6 @@ export interface IPublishOptions { readonly web?: boolean; } -async function versionBump(cwd: string = process.cwd(), version?: string, commitMessage?: string): Promise { - if (!version) { - return Promise.resolve(null); - } - - const manifest = await readManifest(cwd); - - if (manifest.version === version) { - return null; - } - - switch (version) { - case 'major': - case 'minor': - case 'patch': - break; - case 'premajor': - case 'preminor': - case 'prepatch': - case 'prerelease': - case 'from-git': - return Promise.reject(`Not supported: ${version}`); - default: - if (!semver.valid(version)) { - return Promise.reject(`Invalid version ${version}`); - } - } - - let command = `npm version ${version}`; - - if (commitMessage) { - command = `${command} -m "${commitMessage}"`; - } - - try { - // call `npm version` to do our dirty work - const { stdout, stderr } = await exec(command, { cwd }); - process.stdout.write(stdout); - process.stderr.write(stderr); - return null; - } catch (err) { - throw err.message; - } -} - export function publish(options: IPublishOptions = {}): Promise { let promise: Promise; From 8e3e8667742cfced8b15d9a695edf60fc3999754 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:15:58 -0300 Subject: [PATCH 42/70] Make gitTagVersion default to true --- src/package.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.ts b/src/package.ts index 03ecfa1e..fed70951 100644 --- a/src/package.ts +++ b/src/package.ts @@ -228,7 +228,7 @@ export async function versionBump( cwd: string = process.cwd(), version?: string, commitMessage?: string, - gitTagVersion?: boolean + gitTagVersion: boolean = true ): Promise { if (!version) { return Promise.resolve(null); From 6a793d13e731598b5f354841be7554293c03cbb3 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:16:07 -0300 Subject: [PATCH 43/70] Add test cases --- .vscode/settings.json | 1 - package.json | 17 +++--- src/test/fixtures/version/package.json | 8 +++ src/test/package.test.ts | 83 ++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 9 deletions(-) create mode 100644 src/test/fixtures/version/package.json diff --git a/.vscode/settings.json b/.vscode/settings.json index bf97a3da..dd7a48ba 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,7 +6,6 @@ "out": true }, "typescript.tsdk": "./node_modules/typescript/lib", - "mochaExplorer.files": "out/**/test/*.test.js", "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, diff --git a/package.json b/package.json index 60f598e8..99aca404 100644 --- a/package.json +++ b/package.json @@ -24,12 +24,12 @@ "vsce": "out/vsce" }, "scripts": { - "copy-vsce": "mkdir -p out && cp src/vsce out/vsce", - "compile": "tsc && yarn copy-vsce", - "watch": "yarn copy-vsce && tsc --watch", - "watch-test": "yarn copy-vsce && concurrently \"tsc --watch\" \"mocha --watch\"", + "copy-vsce": "mkdir -p out && cp -f src/vsce out/vsce", + "build": "yarn copy-vsce && tsc", + "build:watch": "yarn compile -- --watch", "test": "mocha", - "prepublishOnly": "tsc && yarn copy-vsce && mocha", + "test:watch": "yarn copy-vsce && yarn test -- --watch", + "prepublishOnly": "yarn compile && yarn test", "vsce": "out/vsce" }, "engines": { @@ -51,7 +51,7 @@ "parse-semver": "^1.1.1", "read": "^1.0.7", "semver": "^5.1.0", - "tmp": "0.0.29", + "tmp": "^0.2.1", "typed-rest-client": "^1.8.4", "url-join": "^1.1.0", "yauzl": "^2.3.1", @@ -77,14 +77,15 @@ "prettier": "2.1.2", "pretty-quick": "^3.0.2", "source-map-support": "^0.4.2", + "ts-node": "^10.0.0", "typescript": "^4.3.2", "xml2js": "^0.4.12" }, "mocha": { "require": [ - "source-map-support/register" + "ts-node/register" ], - "spec": "out/test" + "spec": "src/test/**/*.ts" }, "husky": { "hooks": { diff --git a/src/test/fixtures/version/package.json b/src/test/fixtures/version/package.json new file mode 100644 index 00000000..95beb112 --- /dev/null +++ b/src/test/fixtures/version/package.json @@ -0,0 +1,8 @@ +{ + "name": "version", + "publisher": "felipecrs", + "version": "1.0.0", + "engines": { + "vscode": "*" + } +} diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 23315f5a..f000c563 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -14,15 +14,18 @@ import { IAsset, IPackageOptions, ManifestProcessor, + versionBump, } from '../package'; import { Manifest } from '../manifest'; import * as path from 'path'; import * as fs from 'fs'; import * as assert from 'assert'; +import * as tmp from 'tmp'; import { parseString } from 'xml2js'; import * as denodeify from 'denodeify'; import * as _ from 'lodash'; import { IExtensionsReport } from '../publicgalleryapi'; +import { spawnSync } from 'child_process'; // don't warn in tests console.warn = () => null; @@ -2671,3 +2674,83 @@ describe('WebExtensionProcessor', () => { assert.deepEqual(processor.tags, []); }); }); + +describe('version', () => { + let dir: tmp.DirResult; + const fixtureFolder = fixture('vsixmanifest'); + let cwd; + + const git = (args: string[]) => spawnSync('git', args, { cwd, encoding: 'utf-8' }); + + beforeEach(() => { + dir = tmp.dirSync({ unsafeCleanup: true }); + cwd = dir.name; + fs.copyFileSync(path.join(fixtureFolder, 'package.json'), path.join(cwd, 'package.json')); + git(['init']); + }); + + afterEach(() => { + dir.removeCallback(); + }); + + it('should bump patch version', async () => { + await versionBump(cwd, 'patch'); + + const newManifest = await readManifest(cwd); + + assert.strictEqual(newManifest.version, '1.0.1'); + }); + + it('should bump minor version', async () => { + await versionBump(cwd, 'minor'); + + const newManifest = await readManifest(cwd); + + assert.strictEqual(newManifest.version, '1.1.0'); + }); + + it('should bump major version', async () => { + await versionBump(cwd, 'major'); + + const newManifest = await readManifest(cwd); + + assert.strictEqual(newManifest.version, '2.0.0'); + }); + + it('should not fail with same version', async () => { + await versionBump(cwd, '1.0.0'); + + const newManifest = await readManifest(cwd); + + assert.strictEqual(newManifest.version, '1.0.0'); + }); + + it('should set custom version', async () => { + await versionBump(cwd, '1.1.1'); + + const newManifest = await readManifest(cwd); + + assert.strictEqual(newManifest.version, '1.1.1'); + }); + + it('should create git tag and commit', async () => { + await versionBump(cwd, '1.1.1'); + + assert.strictEqual(git(['rev-parse', 'v1.1.1']).status, 0); + assert.strictEqual(git(['rev-parse', 'HEAD']).status, 0); + }); + + it('should not create git tag and commit', async () => { + await versionBump(cwd, '1.1.1', undefined, false); + + assert.notDeepStrictEqual(git(['rev-parse', 'v1.1.1']).status, 0); + assert.notDeepStrictEqual(git(['rev-parse', 'HEAD']).status, 0); + }); + + it('should use custom commit message', async () => { + const commitMessage = 'test commit message'; + await versionBump(cwd, '1.1.1', commitMessage); + + assert.deepStrictEqual(git(['show', '-s', '--format=%B', 'HEAD']).stdout, `${commitMessage}\n\n`); + }); +}); From 14796e8883e95f904d30b430892c3bfdcd5fe0d0 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:24:09 -0300 Subject: [PATCH 44/70] Rename yarn script on azure pipeline --- azure-pipelines.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d61c8119..9006a1f4 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -16,12 +16,12 @@ steps: - script: yarn displayName: Install Dependencies - - script: yarn compile - displayName: Compile - - script: yarn test displayName: Run Tests + - script: yarn build + displayName: Build + - task: Npm@1 displayName: 'Publish to NPM' inputs: From 6bafe72d7566ed600e9c7518ae50a6b7c05f1e40 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:36:37 -0300 Subject: [PATCH 45/70] Add some negative tests --- src/test/package.test.ts | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/test/package.test.ts b/src/test/package.test.ts index f000c563..8130d639 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -2717,14 +2717,6 @@ describe('version', () => { assert.strictEqual(newManifest.version, '2.0.0'); }); - it('should not fail with same version', async () => { - await versionBump(cwd, '1.0.0'); - - const newManifest = await readManifest(cwd); - - assert.strictEqual(newManifest.version, '1.0.0'); - }); - it('should set custom version', async () => { await versionBump(cwd, '1.1.1'); @@ -2733,6 +2725,18 @@ describe('version', () => { assert.strictEqual(newManifest.version, '1.1.1'); }); + it('should fail with not allowed version bump', () => { + assert.rejects(versionBump(cwd, 'prepatch')); + assert.rejects(versionBump(cwd, 'preminor')); + assert.rejects(versionBump(cwd, 'premajor')); + assert.rejects(versionBump(cwd, 'prerelease')); + assert.rejects(versionBump(cwd, 'from-git')); + }); + + it('should fail with invalid version', () => { + assert.rejects(versionBump(cwd, 'a1.a.2')); + }); + it('should create git tag and commit', async () => { await versionBump(cwd, '1.1.1'); @@ -2740,17 +2744,17 @@ describe('version', () => { assert.strictEqual(git(['rev-parse', 'HEAD']).status, 0); }); - it('should not create git tag and commit', async () => { - await versionBump(cwd, '1.1.1', undefined, false); - - assert.notDeepStrictEqual(git(['rev-parse', 'v1.1.1']).status, 0); - assert.notDeepStrictEqual(git(['rev-parse', 'HEAD']).status, 0); - }); - it('should use custom commit message', async () => { const commitMessage = 'test commit message'; await versionBump(cwd, '1.1.1', commitMessage); assert.deepStrictEqual(git(['show', '-s', '--format=%B', 'HEAD']).stdout, `${commitMessage}\n\n`); }); + + it('should not create git tag and commit', async () => { + await versionBump(cwd, '1.1.1', undefined, false); + + assert.notDeepStrictEqual(git(['rev-parse', 'v1.1.1']).status, 0); + assert.notDeepStrictEqual(git(['rev-parse', 'HEAD']).status, 0); + }); }); From 6b7922f0da95febfe8806f8304e507e15e6f2732 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:42:40 -0300 Subject: [PATCH 46/70] Downgrade ts-node to 9 since it supports node 10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 99aca404..d0925ade 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "prettier": "2.1.2", "pretty-quick": "^3.0.2", "source-map-support": "^0.4.2", - "ts-node": "^10.0.0", + "ts-node": "9", "typescript": "^4.3.2", "xml2js": "^0.4.12" }, From dc133c4d3311f2c86a809d055b797177bad1fad9 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Fri, 4 Jun 2021 14:58:12 -0300 Subject: [PATCH 47/70] Initialize git identity in the temp repo --- src/test/package.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 8130d639..d145fc60 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -2687,6 +2687,8 @@ describe('version', () => { cwd = dir.name; fs.copyFileSync(path.join(fixtureFolder, 'package.json'), path.join(cwd, 'package.json')); git(['init']); + git(['config', '--local', 'user.name', 'Sample Name']); + git(['config', '--local', 'user.email', 'sample@email.com']); }); afterEach(() => { From 38e1f13a06b67d3c4dce75a454a3eeafb7b1bb6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 7 Jun 2021 11:30:47 +0200 Subject: [PATCH 48/70] use npm instead of yarn, cleanup scripts --- .vscode/tasks.json | 2 +- azure-pipelines.yml | 10 +- package-lock.json | 402 +++++++++++++++++++++++++++++++++++++++++++- package.json | 13 +- 4 files changed, 410 insertions(+), 17 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 6f6d84e2..71da63e8 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -5,7 +5,7 @@ "tasks": [ { "type": "npm", - "script": "watch", + "script": "watch:build", "problemMatcher": ["$tsc-watch"], "group": { "kind": "build", diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 9006a1f4..d2de4e80 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,17 +9,13 @@ steps: inputs: versionSpec: '10.x' - - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 - inputs: - versionSpec: '1.x' - - - script: yarn + - script: npm install displayName: Install Dependencies - - script: yarn test + - script: npm run test displayName: Run Tests - - script: yarn build + - script: npm run build displayName: Build - task: Npm@1 diff --git a/package-lock.json b/package-lock.json index cdfb5c33..da0a5b95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,30 @@ "js-tokens": "^4.0.0" } }, + "@tsconfig/node10": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.7.tgz", + "integrity": "sha512-aBvUmXLQbayM4w3A8TrjwrXs4DZ8iduJnuJLLRGdkWlyakCf1q6uHZJBzXoRA/huAEknG5tcUyQxN3A+In5euQ==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.7.tgz", + "integrity": "sha512-dgasobK/Y0wVMswcipr3k0HpevxFJLijN03A8mYfEPvWvOs14v0ZlYTR4kIgMx8g4+fTyTFv8/jLCIfRqLDJ4A==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.0.tgz", + "integrity": "sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", + "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", + "dev": true + }, "@types/cheerio": { "version": "0.22.29", "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.29.tgz", @@ -183,6 +207,12 @@ "picomatch": "^2.0.4" } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz", @@ -263,6 +293,12 @@ "resolved": "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz", @@ -454,6 +490,12 @@ } } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -778,6 +820,12 @@ "is-glob": "^4.0.1" } }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, "growl": { "version": "1.10.5", "resolved": "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz", @@ -792,6 +840,12 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz", @@ -921,6 +975,12 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -930,6 +990,15 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz", @@ -969,12 +1038,24 @@ "is-extglob": "^2.1.1" } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz", "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss= sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true + }, "is-regex": { "version": "1.0.5", "resolved": "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz", @@ -990,6 +1071,12 @@ "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM= sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz", @@ -1052,6 +1139,18 @@ "uc.micro": "^1.0.1" } }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz", @@ -1076,6 +1175,12 @@ "chalk": "^2.4.2" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "markdown-it": { "version": "10.0.0", "resolved": "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz", @@ -1100,6 +1205,12 @@ "resolved": "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz", "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz", @@ -1231,6 +1342,12 @@ "resolved": "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -1275,6 +1392,79 @@ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + } + } + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -1471,6 +1661,12 @@ "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0= sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz", @@ -1713,6 +1909,14 @@ "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz", @@ -1766,6 +1970,12 @@ "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI= sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz", @@ -1857,6 +2067,103 @@ "strip-ansi": "^5.1.0" } }, + "string.prototype.padend": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", + "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } + } + }, "string.prototype.trimend": { "version": "1.0.0", "resolved": "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz", @@ -1908,6 +2215,12 @@ "ansi-regex": "^4.1.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -1938,11 +2251,11 @@ } }, "tmp": { - "version": "0.0.29", - "resolved": "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz", - "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "requires": { - "os-tmpdir": "~1.0.1" + "rimraf": "^3.0.0" } }, "to-regex-range": { @@ -1960,6 +2273,48 @@ "integrity": "sha1-TKCakJLIi3OnzcXooBtQeweQoMw= sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "ts-node": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.0.0.tgz", + "integrity": "sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==", + "dev": true, + "requires": { + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz", @@ -1992,6 +2347,26 @@ "resolved": "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz", "integrity": "sha1-DGXxX4FaoItWCmHOi023/8P0U3Y= sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==" }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } + } + }, "underscore": { "version": "1.13.1", "resolved": "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz", @@ -2021,6 +2396,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz", @@ -2168,6 +2556,12 @@ "requires": { "buffer-crc32": "~0.2.3" } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true } } } diff --git a/package.json b/package.json index c49fbb45..7004c267 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,12 @@ }, "scripts": { "copy-vsce": "mkdir -p out && cp -f src/vsce out/vsce", - "build": "yarn copy-vsce && tsc", - "build:watch": "yarn compile -- --watch", + "compile": "tsc", + "build": "run-s copy-vsce compile", + "watch:build": "run-s copy-vsce \"compile -- --watch\"", "test": "mocha", - "test:watch": "yarn copy-vsce && yarn test -- --watch", - "prepublishOnly": "yarn compile && yarn test", + "watch:test": "run-s copy-vsce \"test -- --watch\"", + "prepublishOnly": "run-s compile test", "vsce": "out/vsce" }, "engines": { @@ -73,10 +74,11 @@ "concurrently": "^5.1.0", "husky": "^4.3.0", "mocha": "^7.1.1", + "npm-run-all": "^4.1.5", "prettier": "2.1.2", "pretty-quick": "^3.0.2", "source-map-support": "^0.4.2", - "ts-node": "9", + "ts-node": "^10.0.0", "typescript": "^4.3.2", "xml2js": "^0.4.12" }, @@ -84,6 +86,7 @@ "require": [ "ts-node/register" ], + "watch-files": "src/**,resources/**", "spec": "src/test/**/*.ts" }, "husky": { From 78d2dad8967340a3ac7b22eee793fc5f76ace1f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 7 Jun 2021 11:31:00 +0200 Subject: [PATCH 49/70] omit version output in tests --- src/package.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/package.ts b/src/package.ts index 0020ffde..76afb401 100644 --- a/src/package.ts +++ b/src/package.ts @@ -268,8 +268,11 @@ export async function versionBump( try { // call `npm version` to do our dirty work const { stdout, stderr } = await exec(command, { cwd }); - process.stdout.write(stdout); - process.stderr.write(stderr); + + if (!process.env['VSCE_TESTS']) { + process.stdout.write(stdout); + process.stderr.write(stderr); + } return null; } catch (err) { throw err.message; From 5fe3c8f6825be2135dab824077e6dec5c5fd6223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 7 Jun 2021 11:35:53 +0200 Subject: [PATCH 50/70] build before test --- azure-pipelines.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d2de4e80..b2ee02b8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -12,12 +12,12 @@ steps: - script: npm install displayName: Install Dependencies - - script: npm run test - displayName: Run Tests - - script: npm run build displayName: Build + - script: npm run test + displayName: Run Tests + - task: Npm@1 displayName: 'Publish to NPM' inputs: From b3bc730bf657355054fcea5540134d2488146a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 7 Jun 2021 11:37:43 +0200 Subject: [PATCH 51/70] 1.93.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index da0a5b95..2cc72ee6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.92.0", + "version": "1.93.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 7004c267..2ac9c740 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.92.0", + "version": "1.93.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From 47505072cb2ddf8cd14d7a085fd9957d4617af74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 7 Jun 2021 21:28:26 +0200 Subject: [PATCH 52/70] remove prepublishOnly script --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 2ac9c740..151b2c58 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "watch:build": "run-s copy-vsce \"compile -- --watch\"", "test": "mocha", "watch:test": "run-s copy-vsce \"test -- --watch\"", - "prepublishOnly": "run-s compile test", "vsce": "out/vsce" }, "engines": { From db080b738e17a3168b37f3ba6591bff5cb902a32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Jun 2021 19:24:29 +0000 Subject: [PATCH 53/70] Bump glob-parent from 5.1.1 to 5.1.2 Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/gulpjs/glob-parent/releases) - [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md) - [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2) --- updated-dependencies: - dependency-name: glob-parent dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2cc72ee6..9bd333c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -812,9 +812,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik= sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" From ef21eadc190af8d3b6493dd9686f9f5c90fc0f49 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 22 Jun 2021 18:49:54 +0200 Subject: [PATCH 54/70] Improve extension kind computation rules --- src/package.ts | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/package.ts b/src/package.ts index 76afb401..6c957da0 100644 --- a/src/package.ts +++ b/src/package.ts @@ -804,18 +804,35 @@ export function isWebKind(manifest: Manifest): boolean { return extensionKind.some(kind => kind === 'web'); } -const workspaceExtensionPoints: string[] = ['terminal', 'debuggers', 'jsonValidation']; +const extensionPointExtensionKindsMap = new Map(); +extensionPointExtensionKindsMap.set('jsonValidation', ['workspace', 'web']); +extensionPointExtensionKindsMap.set('debuggers', ['workspace']); +extensionPointExtensionKindsMap.set('terminal', ['workspace']); function getExtensionKind(manifest: Manifest): ExtensionKind[] { + + const deducedExtensionKind = deduceExtensionKind(manifest); + // check the manifest if (manifest.extensionKind) { - return Array.isArray(manifest.extensionKind) + const result: ExtensionKind[] = Array.isArray(manifest.extensionKind) ? manifest.extensionKind : manifest.extensionKind === 'ui' ? ['ui', 'workspace'] - : [manifest.extensionKind]; + : [manifest.extensionKind]; + + // Add web kind if the extension can run as web extension + if (deducedExtensionKind.indexOf('web') !== -1 && result.indexOf('web') === -1) { + result.push('web'); + } + + return result; } + return deducedExtensionKind; +} + +function deduceExtensionKind(manifest: Manifest): ExtensionKind[] { // Not an UI extension if it has main if (manifest.main) { if (manifest.browser) { @@ -828,22 +845,24 @@ function getExtensionKind(manifest: Manifest): ExtensionKind[] { return ['web']; } + let result: ExtensionKind[] = ['ui', 'workspace', 'web']; + const isNonEmptyArray = obj => Array.isArray(obj) && obj.length > 0; - // Not an UI nor web extension if it has dependencies or an extension pack + // Not an UI extension if extension has dependencies or an extension pack if (isNonEmptyArray(manifest.extensionDependencies) || isNonEmptyArray(manifest.extensionPack)) { - return ['workspace']; + result = ['workspace', 'web']; } if (manifest.contributes) { - // Not an UI nor web extension if it has workspace contributions for (const contribution of Object.keys(manifest.contributes)) { - if (workspaceExtensionPoints.indexOf(contribution) !== -1) { - return ['workspace']; + const supportedExtensionKinds = extensionPointExtensionKindsMap.get(contribution); + if (supportedExtensionKinds) { + result = result.filter(extensionKind => supportedExtensionKinds.indexOf(extensionKind) !== -1); } } } - return ['ui', 'workspace', 'web']; + return result; } export class WebExtensionProcessor extends BaseProcessor { From 5b79e0171793e9aee1482dc5aa9b3552e1ee9487 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 23 Jun 2021 08:55:17 +0200 Subject: [PATCH 55/70] - remove experimental web support - create web extension tag for web extensions --- src/main.ts | 12 -- src/package.ts | 58 ++------- src/publicgalleryapi.ts | 18 --- src/publish.ts | 21 +--- src/test/package.test.ts | 266 ++------------------------------------- 5 files changed, 22 insertions(+), 353 deletions(-) diff --git a/src/main.ts b/src/main.ts index 3e67d244..d58a3e60 100644 --- a/src/main.ts +++ b/src/main.ts @@ -95,10 +95,6 @@ module.exports = function (argv: string[]): void { .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') .option('--no-gitHubIssueLinking', 'Disable automatic expansion of GitHub-style issue syntax into links') .option('--no-gitLabIssueLinking', 'Disable automatic expansion of GitLab-style issue syntax into links') - .option( - '--web', - 'Experimental flag to enable publishing web extensions. Note: This is supported only for selected extensions.' - ) .action( ( version, @@ -114,7 +110,6 @@ module.exports = function (argv: string[]): void { ignoreFile, gitHubIssueLinking, gitLabIssueLinking, - web, } ) => main( @@ -131,7 +126,6 @@ module.exports = function (argv: string[]): void { ignoreFile, gitHubIssueLinking, gitLabIssueLinking, - web, }) ) ); @@ -161,10 +155,6 @@ module.exports = function (argv: string[]): void { .option('--no-yarn', 'Use npm instead of yarn (default inferred from lack of yarn.lock or .yarnrc)') .option('--noVerify') .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') - .option( - '--web', - 'Experimental flag to enable publishing web extensions. Note: This is supported only for selected extensions.' - ) .action( ( version, @@ -180,7 +170,6 @@ module.exports = function (argv: string[]): void { yarn, noVerify, ignoreFile, - web, } ) => main( @@ -197,7 +186,6 @@ module.exports = function (argv: string[]): void { useYarn: yarn, noVerify, ignoreFile, - web, }) ) ); diff --git a/src/package.ts b/src/package.ts index 6c957da0..bcb75708 100644 --- a/src/package.ts +++ b/src/package.ts @@ -22,7 +22,6 @@ import { validateVSCodeTypesCompatibility, } from './validation'; import { detectYarn, getDependencies } from './npm'; -import { IExtensionsReport } from './publicgalleryapi'; import ignore from 'ignore'; const readFile = denodeify(fs.readFile); @@ -93,7 +92,6 @@ export interface IPackageOptions { readonly ignoreFile?: string; readonly gitHubIssueLinking?: boolean; readonly gitLabIssueLinking?: boolean; - readonly web?: boolean; } export interface IProcessor { @@ -470,6 +468,8 @@ export class TagsProcessor extends BaseProcessor { [] ); + const webExensionTags = isWebKind(this.manifest) ? ['__web_extension'] : []; + const tags = [ ...keywords, ...colorThemes, @@ -485,6 +485,7 @@ export class TagsProcessor extends BaseProcessor { ...languageActivations, ...grammars, ...descriptionKeywords, + ...webExensionTags, ]; this.tags = _(tags) @@ -791,14 +792,6 @@ class IconProcessor extends BaseProcessor { } } -export function isSupportedWebExtension(manifest: Manifest, extensionsReport: IExtensionsReport): boolean { - const id = `${manifest.publisher}.${manifest.name}`; - return ( - extensionsReport.web.publishers.some(publisher => manifest.publisher === publisher) || - extensionsReport.web.extensions.some(extension => extension === id) - ); -} - export function isWebKind(manifest: Manifest): boolean { const extensionKind = getExtensionKind(manifest); return extensionKind.some(kind => kind === 'web'); @@ -810,17 +803,16 @@ extensionPointExtensionKindsMap.set('debuggers', ['workspace']); extensionPointExtensionKindsMap.set('terminal', ['workspace']); function getExtensionKind(manifest: Manifest): ExtensionKind[] { - const deducedExtensionKind = deduceExtensionKind(manifest); - + // check the manifest if (manifest.extensionKind) { const result: ExtensionKind[] = Array.isArray(manifest.extensionKind) ? manifest.extensionKind : manifest.extensionKind === 'ui' ? ['ui', 'workspace'] - : [manifest.extensionKind]; - + : [manifest.extensionKind]; + // Add web kind if the extension can run as web extension if (deducedExtensionKind.indexOf('web') !== -1 && result.indexOf('web') === -1) { result.push('web'); @@ -846,7 +838,7 @@ function deduceExtensionKind(manifest: Manifest): ExtensionKind[] { } let result: ExtensionKind[] = ['ui', 'workspace', 'web']; - + const isNonEmptyArray = obj => Array.isArray(obj) && obj.length > 0; // Not an UI extension if extension has dependencies or an extension pack if (isNonEmptyArray(manifest.extensionDependencies) || isNonEmptyArray(manifest.extensionPack)) { @@ -865,41 +857,6 @@ function deduceExtensionKind(manifest: Manifest): ExtensionKind[] { return result; } -export class WebExtensionProcessor extends BaseProcessor { - private readonly isWebKind: boolean = false; - - constructor(manifest: Manifest, options: IPackageOptions) { - super(manifest); - this.isWebKind = options.web && isWebKind(manifest); - } - - onFile(file: IFile): Promise { - if (this.isWebKind) { - const path = util.normalize(file.path); - if (/\.svg$/i.test(path)) { - throw new Error(`SVGs can't be used in a web extension: ${path}`); - } - this.assets.push({ type: `Microsoft.VisualStudio.Code.WebResources/${path}`, path }); - } - return Promise.resolve(file); - } - - async onEnd(): Promise { - if (this.assets.length > 25) { - throw new Error( - 'Cannot pack more than 25 files in a web extension. Use `vsce ls` to see all the files that will be packed and exclude those which are not needed in .vscodeignore.' - ); - } - if (this.isWebKind) { - this.vsix = { - ...this.vsix, - webExtension: true, - }; - this.tags = ['__web_extension']; - } - } -} - export class NLSProcessor extends BaseProcessor { private translations: { [path: string]: string } = Object.create(null); @@ -1210,7 +1167,6 @@ export function createDefaultProcessors(manifest: Manifest, options: IPackageOpt new LicenseProcessor(manifest), new IconProcessor(manifest), new NLSProcessor(manifest), - new WebExtensionProcessor(manifest, options), new ValidationProcessor(manifest), ]; } diff --git a/src/publicgalleryapi.ts b/src/publicgalleryapi.ts index 92b28a17..beed4471 100644 --- a/src/publicgalleryapi.ts +++ b/src/publicgalleryapi.ts @@ -17,16 +17,7 @@ export interface ExtensionQuery { readonly assetTypes?: string[]; } -export interface IExtensionsReport { - malicious: string[]; - web: { - publishers: string[]; - extensions: string[]; - }; -} - export class PublicGalleryAPI { - private readonly extensionsReportUrl = 'https://az764295.vo.msecnd.net/extensions/marketplace.json'; private readonly client = new HttpClient('vsce'); constructor(private baseUrl: string, private apiVersion = '3.0-preview.1') {} @@ -69,13 +60,4 @@ export class PublicGalleryAPI { extensionId.toLowerCase() === `${publisher}.${name}`.toLowerCase() )[0]; } - - async getExtensionsReport(): Promise { - const res = await this.client.get(this.extensionsReportUrl); - const raw = >JSON.parse(await res.readBody()); - return { - malicious: raw.malicious || [], - web: raw.web || { publishers: [], extensions: [] }, - }; - } } diff --git a/src/publish.ts b/src/publish.ts index 735a5030..e42383b1 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -1,9 +1,9 @@ import * as fs from 'fs'; import { ExtensionQueryFlags, PublishedExtension } from 'azure-devops-node-api/interfaces/GalleryInterfaces'; -import { pack, readManifest, IPackage, isWebKind, isSupportedWebExtension, versionBump } from './package'; +import { pack, readManifest, IPackage, versionBump } from './package'; import * as tmp from 'tmp'; import { getPublisher } from './store'; -import { getGalleryAPI, read, getPublishedUrl, log, getPublicGalleryAPI, getHubUrl } from './util'; +import { getGalleryAPI, read, getPublishedUrl, log, getHubUrl } from './util'; import { Manifest } from './manifest'; import * as denodeify from 'denodeify'; import * as yauzl from 'yauzl'; @@ -120,7 +120,6 @@ export interface IPublishOptions { readonly useYarn?: boolean; readonly noVerify?: boolean; readonly ignoreFile?: string; - readonly web?: boolean; } export function publish(options: IPublishOptions = {}): Promise { @@ -130,9 +129,6 @@ export function publish(options: IPublishOptions = {}): Promise { if (options.version) { return Promise.reject(`Not supported: packagePath and version.`); } - if (options.web) { - return Promise.reject(`Not supported: packagePath and web.`); - } promise = readManifestFromPackage(options.packagePath).then(manifest => ({ manifest, @@ -146,12 +142,11 @@ export function publish(options: IPublishOptions = {}): Promise { const baseImagesUrl = options.baseImagesUrl; const useYarn = options.useYarn; const ignoreFile = options.ignoreFile; - const web = options.web; promise = versionBump(options.cwd, options.version, options.commitMessage, options.gitTagVersion) .then(() => tmpName()) .then(packagePath => - pack({ packagePath, cwd, githubBranch, gitlabBranch, baseContentUrl, baseImagesUrl, useYarn, ignoreFile, web }) + pack({ packagePath, cwd, githubBranch, gitlabBranch, baseContentUrl, baseImagesUrl, useYarn, ignoreFile }) ); } @@ -160,16 +155,6 @@ export function publish(options: IPublishOptions = {}): Promise { throw new Error("Extensions using proposed API (enableProposedApi: true) can't be published to the Marketplace"); } - if (options.web) { - if (!isWebKind(manifest)) { - throw new Error("Extensions which are not web kind can't be published to the Marketpalce as a web extension"); - } - const extensionsReport = await getPublicGalleryAPI().getExtensionsReport(); - if (!isSupportedWebExtension(manifest, extensionsReport)) { - throw new Error("Extensions which are not supported can't be published to the Marketpalce as a web extension"); - } - } - const patPromise = options.pat ? Promise.resolve(options.pat) : getPublisher(manifest.publisher).then(p => p.pat); return patPromise.then(pat => _publish(packagePath, pat, manifest)); diff --git a/src/test/package.test.ts b/src/test/package.test.ts index d145fc60..a09218e5 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -9,9 +9,6 @@ import { toVsixManifest, IFile, validateManifest, - isSupportedWebExtension, - WebExtensionProcessor, - IAsset, IPackageOptions, ManifestProcessor, versionBump, @@ -24,7 +21,6 @@ import * as tmp from 'tmp'; import { parseString } from 'xml2js'; import * as denodeify from 'denodeify'; import * as _ from 'lodash'; -import { IExtensionsReport } from '../publicgalleryapi'; import { spawnSync } from 'child_process'; // don't warn in tests @@ -421,7 +417,7 @@ describe('toVsixManifest', () => { assert.equal(result.PackageManifest.Metadata[0].Identity[0].$.Id, 'test'); assert.equal(result.PackageManifest.Metadata[0].Identity[0].$.Version, '0.0.1'); assert.equal(result.PackageManifest.Metadata[0].Identity[0].$.Publisher, 'mocha'); - assert.deepEqual(result.PackageManifest.Metadata[0].Tags, ['']); + assert.deepEqual(result.PackageManifest.Metadata[0].Tags, ['__web_extension']); assert.deepEqual(result.PackageManifest.Metadata[0].GalleryFlags, ['Public']); assert.equal(result.PackageManifest.Installation.length, 1); assert.equal(result.PackageManifest.Installation[0].InstallationTarget.length, 1); @@ -869,7 +865,7 @@ describe('toVsixManifest', () => { return _toVsixManifest(manifest, []) .then(parseXmlManifest) - .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], '')); + .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], '__web_extension')); }); it('should automatically add color-theme tag', () => { @@ -984,7 +980,7 @@ describe('toVsixManifest', () => { return _toVsixManifest(manifest, []) .then(parseXmlManifest) - .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'go')); + .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'go,__web_extension')); }); it('should automatically add language tag with language contribution', () => { @@ -1000,7 +996,7 @@ describe('toVsixManifest', () => { return _toVsixManifest(manifest, []) .then(parseXmlManifest) - .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'go')); + .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'go,__web_extension')); }); it('should automatically add snippets tag', () => { @@ -1016,7 +1012,7 @@ describe('toVsixManifest', () => { return _toVsixManifest(manifest, []) .then(parseXmlManifest) - .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'snippet')); + .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'snippet,__web_extension')); }); it('should remove duplicate tags', () => { @@ -1030,7 +1026,7 @@ describe('toVsixManifest', () => { return _toVsixManifest(manifest, []) .then(parseXmlManifest) - .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'theme')); + .then(result => assert.deepEqual(result.PackageManifest.Metadata[0].Tags[0], 'theme,__web_extension')); }); it('should detect keybindings', () => { @@ -1512,93 +1508,23 @@ describe('toVsixManifest', () => { throw new Error('Should not reach here'); }); - it('should expose web extension assets and properties', async () => { - const manifest = createManifest({ - browser: 'browser.js', - extensionKind: ['web'], - }); - const files = [{ path: 'extension/browser.js', contents: Buffer.from('') }]; - - const vsixManifest = await _toVsixManifest(manifest, files, { web: true }); - const result = await parseXmlManifest(vsixManifest); - const assets = result.PackageManifest.Assets[0].Asset; - assert( - assets.some( - asset => - asset.$.Type === 'Microsoft.VisualStudio.Code.WebResources/extension/browser.js' && - asset.$.Path === 'extension/browser.js' - ) - ); - - const properties = result.PackageManifest.Metadata[0].Properties[0].Property; - const webExtensionProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.WebExtension'); - assert.equal(webExtensionProps.length, 1); - assert.equal(webExtensionProps[0].$.Value, 'true'); - }); - - it('should expose web extension assets and properties when extension kind is not provided', async () => { - const manifest = createManifest({ - browser: 'browser.js', - }); - const files = [{ path: 'extension/browser.js', contents: Buffer.from('') }]; - - const vsixManifest = await _toVsixManifest(manifest, files, { web: true }); - const result = await parseXmlManifest(vsixManifest); - const assets = result.PackageManifest.Assets[0].Asset; - assert( - assets.some( - asset => - asset.$.Type === 'Microsoft.VisualStudio.Code.WebResources/extension/browser.js' && - asset.$.Path === 'extension/browser.js' - ) - ); - - const properties = result.PackageManifest.Metadata[0].Properties[0].Property; - const webExtensionProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.WebExtension'); - assert.equal(webExtensionProps.length, 1); - assert.equal(webExtensionProps[0].$.Value, 'true'); - }); - - it('should not expose web extension assets and properties for web extension when not asked for', async () => { - const manifest = createManifest({ - browser: 'browser.js', - extensionKind: ['web'], - }); + it('should automatically add web tag for web extensions', async () => { + const manifest = createManifest({ browser: 'browser.js' }); const files = [{ path: 'extension/browser.js', contents: Buffer.from('') }]; const vsixManifest = await _toVsixManifest(manifest, files); const result = await parseXmlManifest(vsixManifest); - const assets = result.PackageManifest.Assets[0].Asset; - assert(assets.every(asset => !asset.$.Type.startsWith('Microsoft.VisualStudio.Code.WebResources'))); - const properties = result.PackageManifest.Metadata[0].Properties[0].Property; - const webExtensionProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.WebExtension'); - assert.equal(webExtensionProps.length, 0); + assert.strictEqual(result.PackageManifest.Metadata[0].Tags[0], '__web_extension'); }); - it('should not expose web extension assets and properties for non web extension', async () => { - const manifest = createManifest({ - main: 'main.js', - }); - const files = [{ path: 'extension/main.js', contents: Buffer.from('') }]; - - const vsixManifest = await _toVsixManifest(manifest, files, { web: true }); - const result = await parseXmlManifest(vsixManifest); - const assets = result.PackageManifest.Assets[0].Asset; - assert(assets.every(asset => !asset.$.Type.startsWith('Microsoft.VisualStudio.Code.WebResources'))); - - const properties = result.PackageManifest.Metadata[0].Properties[0].Property; - const webExtensionProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.WebExtension'); - assert.equal(webExtensionProps.length, 0); - }); - - it('should expose extension kind properties when providedd', async () => { + it('should expose extension kind properties when provided', async () => { const manifest = createManifest({ extensionKind: ['ui', 'workspace', 'web'], }); const files = [{ path: 'extension/main.js', contents: Buffer.from('') }]; - const vsixManifest = await _toVsixManifest(manifest, files, { web: true }); + const vsixManifest = await _toVsixManifest(manifest, files); const result = await parseXmlManifest(vsixManifest); const properties = result.PackageManifest.Metadata[0].Properties[0].Property; const extensionKindProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.ExtensionKind'); @@ -1611,7 +1537,7 @@ describe('toVsixManifest', () => { }); const files = [{ path: 'extension/main.js', contents: Buffer.from('') }]; - const vsixManifest = await _toVsixManifest(manifest, files, { web: true }); + const vsixManifest = await _toVsixManifest(manifest, files); const result = await parseXmlManifest(vsixManifest); const properties = result.PackageManifest.Metadata[0].Properties[0].Property; const extensionKindProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.ExtensionKind'); @@ -2507,174 +2433,6 @@ describe('MarkdownProcessor', () => { }); }); -describe('isSupportedWebExtension', () => { - it('should return true if extension report has extension', () => { - const manifest = createManifest({ name: 'test', publisher: 'mocha' }); - const extensionReport: IExtensionsReport = { malicious: [], web: { extensions: ['mocha.test'], publishers: [] } }; - assert.ok(isSupportedWebExtension(manifest, extensionReport)); - }); - - it('should return true if extension report has publisher', () => { - const manifest = createManifest({ name: 'test', publisher: 'mocha' }); - const extensionReport: IExtensionsReport = { malicious: [], web: { extensions: [], publishers: ['mocha'] } }; - assert.ok(isSupportedWebExtension(manifest, extensionReport)); - }); - - it('should return false if extension report does not has extension', () => { - const manifest = createManifest({ name: 'test', publisher: 'mocha' }); - const extensionReport: IExtensionsReport = { malicious: [], web: { extensions: [], publishers: [] } }; - assert.ok(!isSupportedWebExtension(manifest, extensionReport)); - }); -}); - -describe('WebExtensionProcessor', () => { - it('should include file', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - const file = { path: 'extension/browser.js', contents: '' }; - - await processor.onFile(file); - await processor.onEnd(); - - const expected: IAsset[] = [{ type: `Microsoft.VisualStudio.Code.WebResources/${file.path}`, path: file.path }]; - assert.deepEqual(processor.assets, expected); - }); - - it('should include file when extension kind is not specified', async () => { - const manifest = createManifest({ browser: 'browser.js' }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - const file = { path: 'extension/browser.js', contents: '' }; - - await processor.onFile(file); - await processor.onEnd(); - - const expected: IAsset[] = [{ type: `Microsoft.VisualStudio.Code.WebResources/${file.path}`, path: file.path }]; - assert.deepEqual(processor.assets, expected); - }); - - it('should not include file when not asked for', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: false }); - const file = { path: 'extension/browser.js', contents: '' }; - - await processor.onFile(file); - await processor.onEnd(); - - assert.deepEqual(processor.assets, []); - }); - - it('should not include file for non web extension', async () => { - const manifest = createManifest({ extensionKind: ['ui'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - const file = { path: 'extension/browser.js', contents: '' }; - - await processor.onFile(file); - await processor.onEnd(); - - assert.deepEqual(processor.assets, []); - }); - - it('should include manifest', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - const manifestFile = { path: 'extension/package.json', contents: JSON.stringify(manifest) }; - - await processor.onFile(manifestFile); - await processor.onEnd(); - - const expected: IAsset[] = [ - { type: `Microsoft.VisualStudio.Code.WebResources/${manifestFile.path}`, path: manifestFile.path }, - ]; - assert.deepEqual(processor.assets, expected); - }); - - it('should fail for svg file', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - - try { - await processor.onFile({ path: 'extension/sample.svg', contents: '' }); - } catch (error) { - return; // expected - } - - assert.fail('Should fail'); - }); - - it('should include max 25 files', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - - const expected: IAsset[] = []; - for (let i = 1; i <= 25; i++) { - const file = { path: `extension/${i}.json`, contents: `${i}` }; - await processor.onFile(file); - expected.push({ type: `Microsoft.VisualStudio.Code.WebResources/${file.path}`, path: file.path }); - } - - await processor.onEnd(); - - assert.deepEqual(processor.assets.length, 25); - assert.deepEqual(processor.assets, expected); - }); - - it('should throw an error if there are more than 25 files', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - - for (let i = 1; i <= 26; i++) { - await processor.onFile({ path: `extension/${i}.json`, contents: `${i}` }); - } - - try { - await processor.onEnd(); - } catch (error) { - return; // expected error - } - assert.fail('Should fail'); - }); - - it('should include web extension property & tag', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - - await processor.onEnd(); - - assert.equal(processor.vsix.webExtension, true); - assert.deepEqual(processor.tags, ['__web_extension']); - }); - - it('should include web extension property & tag when extension kind is not provided', async () => { - const manifest = createManifest({ browser: 'browser.js' }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - - await processor.onEnd(); - - assert.equal(processor.vsix.webExtension, true); - assert.deepEqual(processor.tags, ['__web_extension']); - }); - - it('should not include web extension property & tag when not asked for', async () => { - const manifest = createManifest({ extensionKind: ['web'] }); - const processor = new WebExtensionProcessor(manifest, { web: false }); - - await processor.onEnd(); - - assert.equal(processor.vsix.webExtension, undefined); - assert.deepEqual(processor.tags, []); - }); - - it('should not include web extension property & tag for non web extension', async () => { - const manifest = createManifest({ extensionKind: ['ui'] }); - const processor = new WebExtensionProcessor(manifest, { web: true }); - - await processor.onEnd(); - - assert.equal(processor.vsix.webExtension, undefined); - assert.deepEqual(processor.tags, []); - }); -}); - describe('version', () => { let dir: tmp.DirResult; const fixtureFolder = fixture('vsixmanifest'); From 43de9d429206500275c41b4643ca5c0f6049e3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 23 Jun 2021 13:14:50 +0200 Subject: [PATCH 56/70] :lipstick: --- src/package.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/package.ts b/src/package.ts index bcb75708..119d709f 100644 --- a/src/package.ts +++ b/src/package.ts @@ -803,7 +803,7 @@ extensionPointExtensionKindsMap.set('debuggers', ['workspace']); extensionPointExtensionKindsMap.set('terminal', ['workspace']); function getExtensionKind(manifest: Manifest): ExtensionKind[] { - const deducedExtensionKind = deduceExtensionKind(manifest); + const deduced = deduceExtensionKinds(manifest); // check the manifest if (manifest.extensionKind) { @@ -814,17 +814,17 @@ function getExtensionKind(manifest: Manifest): ExtensionKind[] { : [manifest.extensionKind]; // Add web kind if the extension can run as web extension - if (deducedExtensionKind.indexOf('web') !== -1 && result.indexOf('web') === -1) { + if (deduced.includes('web') && !result.includes('web')) { result.push('web'); } return result; } - return deducedExtensionKind; + return deduced; } -function deduceExtensionKind(manifest: Manifest): ExtensionKind[] { +function deduceExtensionKinds(manifest: Manifest): ExtensionKind[] { // Not an UI extension if it has main if (manifest.main) { if (manifest.browser) { From 3ce04ef93d0b02719b3f2f02626e1df65a655781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 23 Jun 2021 13:15:06 +0200 Subject: [PATCH 57/70] 1.94.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9bd333c4..d01cf083 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.93.0", + "version": "1.94.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 151b2c58..1ee1df7a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.93.0", + "version": "1.94.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From b1c85a0116d1e4382ea29a69782a30397ffaede3 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 23 Jun 2021 14:31:22 +0200 Subject: [PATCH 58/70] - update contribution point supported kinds - update extension kind rules --- src/package.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/package.ts b/src/package.ts index 119d709f..782153c3 100644 --- a/src/package.ts +++ b/src/package.ts @@ -799,8 +799,15 @@ export function isWebKind(manifest: Manifest): boolean { const extensionPointExtensionKindsMap = new Map(); extensionPointExtensionKindsMap.set('jsonValidation', ['workspace', 'web']); +extensionPointExtensionKindsMap.set('localizations', ['ui', 'workspace']); extensionPointExtensionKindsMap.set('debuggers', ['workspace']); extensionPointExtensionKindsMap.set('terminal', ['workspace']); +extensionPointExtensionKindsMap.set('typescriptServerPlugins', ['workspace']); +extensionPointExtensionKindsMap.set('markdown.previewStyles', ['workspace']); +extensionPointExtensionKindsMap.set('markdown.previewScripts', ['workspace']); +extensionPointExtensionKindsMap.set('markdown.markdownItPlugins', ['workspace']); +extensionPointExtensionKindsMap.set('html.customData', ['workspace']); +extensionPointExtensionKindsMap.set('css.customData', ['workspace']); function getExtensionKind(manifest: Manifest): ExtensionKind[] { const deduced = deduceExtensionKinds(manifest); @@ -840,9 +847,9 @@ function deduceExtensionKinds(manifest: Manifest): ExtensionKind[] { let result: ExtensionKind[] = ['ui', 'workspace', 'web']; const isNonEmptyArray = obj => Array.isArray(obj) && obj.length > 0; - // Not an UI extension if extension has dependencies or an extension pack - if (isNonEmptyArray(manifest.extensionDependencies) || isNonEmptyArray(manifest.extensionPack)) { - result = ['workspace', 'web']; + // Extension pack defaults to workspace extensionKind + if (isNonEmptyArray(manifest.extensionPack) || isNonEmptyArray(manifest.extensionDependencies)) { + result = ['workspace']; } if (manifest.contributes) { From 9d7c1bd43c823c77be58828cd684210ac2e16468 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 24 Jun 2021 15:52:31 +0200 Subject: [PATCH 59/70] update web extension kind rules --- src/package.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/package.ts b/src/package.ts index 782153c3..d54d8ebc 100644 --- a/src/package.ts +++ b/src/package.ts @@ -803,11 +803,11 @@ extensionPointExtensionKindsMap.set('localizations', ['ui', 'workspace']); extensionPointExtensionKindsMap.set('debuggers', ['workspace']); extensionPointExtensionKindsMap.set('terminal', ['workspace']); extensionPointExtensionKindsMap.set('typescriptServerPlugins', ['workspace']); -extensionPointExtensionKindsMap.set('markdown.previewStyles', ['workspace']); -extensionPointExtensionKindsMap.set('markdown.previewScripts', ['workspace']); -extensionPointExtensionKindsMap.set('markdown.markdownItPlugins', ['workspace']); -extensionPointExtensionKindsMap.set('html.customData', ['workspace']); -extensionPointExtensionKindsMap.set('css.customData', ['workspace']); +extensionPointExtensionKindsMap.set('markdown.previewStyles', ['workspace', 'web']); +extensionPointExtensionKindsMap.set('markdown.previewScripts', ['workspace', 'web']); +extensionPointExtensionKindsMap.set('markdown.markdownItPlugins', ['workspace', 'web']); +extensionPointExtensionKindsMap.set('html.customData', ['workspace', 'web']); +extensionPointExtensionKindsMap.set('css.customData', ['workspace', 'web']); function getExtensionKind(manifest: Manifest): ExtensionKind[] { const deduced = deduceExtensionKinds(manifest); From edd70e3f74233a9ca2816b1d718451e766d64c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 25 Jun 2021 09:51:25 +0200 Subject: [PATCH 60/70] update ignore tests --- src/test/fixtures/vscodeignore/.vscodeignore | 6 +++++- src/test/fixtures/vscodeignore/foo/bar/hello.txt | 1 + src/test/package.test.ts | 11 +++++------ 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 src/test/fixtures/vscodeignore/foo/bar/hello.txt diff --git a/src/test/fixtures/vscodeignore/.vscodeignore b/src/test/fixtures/vscodeignore/.vscodeignore index 6c1be845..bd30504d 100644 --- a/src/test/fixtures/vscodeignore/.vscodeignore +++ b/src/test/fixtures/vscodeignore/.vscodeignore @@ -5,4 +5,8 @@ out/ # pattern of file name -*.log \ No newline at end of file +*.log + +# https://github.com/microsoft/vscode-vsce/issues/588 +foo +!foo/bar/hello.txt \ No newline at end of file diff --git a/src/test/fixtures/vscodeignore/foo/bar/hello.txt b/src/test/fixtures/vscodeignore/foo/bar/hello.txt new file mode 100644 index 00000000..6d20e91b --- /dev/null +++ b/src/test/fixtures/vscodeignore/foo/bar/hello.txt @@ -0,0 +1 @@ +hi there \ No newline at end of file diff --git a/src/test/package.test.ts b/src/test/package.test.ts index a09218e5..fe31ec76 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -150,14 +150,13 @@ describe('collect', function () { }); }); - it('should ignore content of .vscodeignore', () => { + it('should ignore content of .vscodeignore', async () => { const cwd = fixture('vscodeignore'); + const manifest = await readManifest(cwd); + const files = await collect(manifest, { cwd }); + const names = files.map(f => f.path).sort(); - return readManifest(cwd) - .then(manifest => collect(manifest, { cwd })) - .then(files => { - assert.equal(files.length, 3); - }); + assert.deepStrictEqual(names, ['[Content_Types].xml', 'extension.vsixmanifest', 'extension/package.json']); }); it('should ignore devDependencies', () => { From 599cea7eb50ef43548c253633fd3dbabd4289c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 25 Jun 2021 10:09:30 +0200 Subject: [PATCH 61/70] revert ignore module, add tests fixes #588 --- package-lock.json | 5 ++-- package.json | 3 +- src/package.ts | 63 ++++++++++++++++++++++++++++------------ src/test/package.test.ts | 7 ++++- 4 files changed, 56 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index d01cf083..9bee93a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -942,8 +942,9 @@ }, "ignore": { "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "resolved": "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc= sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true }, "import-fresh": { "version": "3.2.1", diff --git a/package.json b/package.json index 1ee1df7a..b9682c4c 100644 --- a/package.json +++ b/package.json @@ -42,11 +42,11 @@ "commander": "^6.1.0", "denodeify": "^1.2.1", "glob": "^7.0.6", - "ignore": "^5.1.8", "leven": "^3.1.0", "lodash": "^4.17.15", "markdown-it": "^10.0.0", "mime": "^1.3.4", + "minimatch": "^3.0.3", "osenv": "^0.1.3", "parse-semver": "^1.1.1", "read": "^1.0.7", @@ -64,6 +64,7 @@ "@types/lodash": "^4.14.123", "@types/markdown-it": "0.0.2", "@types/mime": "^1", + "@types/minimatch": "^3.0.3", "@types/mocha": "^7.0.2", "@types/node": "^10.17.60", "@types/read": "^0.0.28", diff --git a/src/package.ts b/src/package.ts index d54d8ebc..84963c18 100644 --- a/src/package.ts +++ b/src/package.ts @@ -7,6 +7,7 @@ import { ExtensionKind, Manifest } from './manifest'; import { ITranslations, patchNLS } from './nls'; import * as util from './util'; import * as _glob from 'glob'; +import * as minimatch from 'minimatch'; import * as denodeify from 'denodeify'; import * as markdownit from 'markdown-it'; import * as cheerio from 'cheerio'; @@ -22,7 +23,6 @@ import { validateVSCodeTypesCompatibility, } from './validation'; import { detectYarn, getDependencies } from './npm'; -import ignore from 'ignore'; const readFile = denodeify(fs.readFile); const unlink = denodeify(fs.unlink as any); @@ -37,6 +37,8 @@ const resourcesPath = path.join(path.dirname(__dirname), 'resources'); const vsixManifestTemplatePath = path.join(resourcesPath, 'extension.vsixmanifest'); const contentTypesTemplatePath = path.join(resourcesPath, '[Content_Types].xml'); +const MinimatchOptions: minimatch.IOptions = { dot: true }; + export interface IInMemoryFile { path: string; mode?: number; @@ -1118,28 +1120,53 @@ function collectAllFiles(cwd: string, useYarn?: boolean, dependencyEntryPoints?: }); } -async function readIgnoreFile(cwd: string, ignoreFile?: string): Promise { - try { - return await readFile(ignoreFile ? ignoreFile : path.join(cwd, '.vscodeignore'), 'utf8'); - } catch (err) { - if (err.code !== 'ENOENT' || ignoreFile) { - throw err; - } - - return ''; - } -} - -async function collectFiles( +function collectFiles( cwd: string, useYarn?: boolean, dependencyEntryPoints?: string[], ignoreFile?: string ): Promise { - const files = (await collectAllFiles(cwd, useYarn, dependencyEntryPoints)).filter(f => !/\r$/m.test(f)); - const rawIgnore = await readIgnoreFile(cwd, ignoreFile); - - return ignore().add(defaultIgnore).add(rawIgnore).add(notIgnored).filter(files); + return collectAllFiles(cwd, useYarn, dependencyEntryPoints).then(files => { + files = files.filter(f => !/\r$/m.test(f)); + + return ( + readFile(ignoreFile ? ignoreFile : path.join(cwd, '.vscodeignore'), 'utf8') + .catch(err => + err.code !== 'ENOENT' ? Promise.reject(err) : ignoreFile ? Promise.reject(err) : Promise.resolve('') + ) + + // Parse raw ignore by splitting output into lines and filtering out empty lines and comments + .then(rawIgnore => + rawIgnore + .split(/[\n\r]/) + .map(s => s.trim()) + .filter(s => !!s) + .filter(i => !/^\s*#/.test(i)) + ) + + // Add '/**' to possible folder names + .then(ignore => [ + ...ignore, + ...ignore.filter(i => !/(^|\/)[^/]*\*[^/]*$/.test(i)).map(i => (/\/$/.test(i) ? `${i}**` : `${i}/**`)), + ]) + + // Combine with default ignore list + .then(ignore => [...defaultIgnore, ...ignore, ...notIgnored]) + + // Split into ignore and negate list + .then(ignore => _.partition(ignore, i => !/^\s*!/.test(i))) + .then(r => ({ ignore: r[0], negate: r[1] })) + + // Filter out files + .then(({ ignore, negate }) => + files.filter( + f => + !ignore.some(i => minimatch(f, i, MinimatchOptions)) || + negate.some(i => minimatch(f, i.substr(1), MinimatchOptions)) + ) + ) + ); + }); } export function processFiles(processors: IProcessor[], files: IFile[]): Promise { diff --git a/src/test/package.test.ts b/src/test/package.test.ts index fe31ec76..8f199b81 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -156,7 +156,12 @@ describe('collect', function () { const files = await collect(manifest, { cwd }); const names = files.map(f => f.path).sort(); - assert.deepStrictEqual(names, ['[Content_Types].xml', 'extension.vsixmanifest', 'extension/package.json']); + assert.deepStrictEqual(names, [ + '[Content_Types].xml', + 'extension.vsixmanifest', + 'extension/foo/bar/hello.txt', + 'extension/package.json', + ]); }); it('should ignore devDependencies', () => { From e304b7f7670a4d67703dabc4fec544f6f2be9f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 25 Jun 2021 10:14:21 +0200 Subject: [PATCH 62/70] 1.95.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9bee93a3..9cd492fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.94.0", + "version": "1.95.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b9682c4c..da423690 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.94.0", + "version": "1.95.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From cebaff95dc8d32d753539432f1a3b82eee789126 Mon Sep 17 00:00:00 2001 From: Oleg Solomka Date: Thu, 8 Jul 2021 17:09:17 +0000 Subject: [PATCH 63/70] update azure-devops-node-api version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da423690..a462fc12 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "node": ">= 10" }, "dependencies": { - "azure-devops-node-api": "^10.2.2", + "azure-devops-node-api": "^11.0.1", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", "commander": "^6.1.0", From 98ae2d1d92ae0c4fe6ab734850460535fb631512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 9 Jul 2021 10:31:51 +0200 Subject: [PATCH 64/70] update package-lock.json --- package-lock.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9cd492fd..88794374 100644 --- a/package-lock.json +++ b/package-lock.json @@ -240,9 +240,9 @@ "dev": true }, "azure-devops-node-api": { - "version": "10.2.2", - "resolved": "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz", - "integrity": "sha1-n1V+Yi3Qe7qpvV5+hOF8dh4hUbI= sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz", + "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==", "requires": { "tunnel": "0.0.6", "typed-rest-client": "^1.8.4" @@ -942,8 +942,8 @@ }, "ignore": { "version": "5.1.8", - "resolved": "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha1-8VCotQo0KJsz4i9YiavU2AFvDlc= sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "import-fresh": { From c56741f99f1197b59c361fe48ee6a912cd64d7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Fri, 9 Jul 2021 10:32:29 +0200 Subject: [PATCH 65/70] 1.95.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88794374..a2243459 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.95.0", + "version": "1.95.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a462fc12..c7a80634 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.95.0", + "version": "1.95.1", "description": "VSCode Extension Manager", "repository": { "type": "git", From 2d6d4889192a57cfcfa15db9b8e0e9131ac2fb3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Mon, 19 Jul 2021 17:37:07 +0200 Subject: [PATCH 66/70] cleaner interfaces --- src/publish.ts | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/src/publish.ts b/src/publish.ts index e42383b1..d8a774c1 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import { ExtensionQueryFlags, PublishedExtension } from 'azure-devops-node-api/interfaces/GalleryInterfaces'; -import { pack, readManifest, IPackage, versionBump } from './package'; +import { pack, readManifest, IPackage, versionBump, IPackageOptions } from './package'; import * as tmp from 'tmp'; import { getPublisher } from './store'; import { getGalleryAPI, read, getPublishedUrl, log, getHubUrl } from './util'; @@ -106,20 +106,9 @@ async function _publish(packagePath: string, pat: string, manifest: Manifest): P log.done(`Published ${fullName}.`); } -export interface IPublishOptions { - readonly packagePath?: string; - readonly version?: string; - readonly commitMessage?: string; - readonly gitTagVersion?: boolean; - readonly cwd?: string; +export interface IPublishOptions extends IPackageOptions { readonly pat?: string; - readonly githubBranch?: string; - readonly gitlabBranch?: string; - readonly baseContentUrl?: string; - readonly baseImagesUrl?: string; - readonly useYarn?: boolean; readonly noVerify?: boolean; - readonly ignoreFile?: string; } export function publish(options: IPublishOptions = {}): Promise { @@ -135,19 +124,9 @@ export function publish(options: IPublishOptions = {}): Promise { packagePath: options.packagePath, })); } else { - const cwd = options.cwd; - const githubBranch = options.githubBranch; - const gitlabBranch = options.gitlabBranch; - const baseContentUrl = options.baseContentUrl; - const baseImagesUrl = options.baseImagesUrl; - const useYarn = options.useYarn; - const ignoreFile = options.ignoreFile; - promise = versionBump(options.cwd, options.version, options.commitMessage, options.gitTagVersion) .then(() => tmpName()) - .then(packagePath => - pack({ packagePath, cwd, githubBranch, gitlabBranch, baseContentUrl, baseImagesUrl, useYarn, ignoreFile }) - ); + .then(packagePath => pack({ ...options, packagePath })); } return promise.then(async ({ manifest, packagePath }) => { From 5b4795340602a97b16397328f71bc77e54f2bd6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 20 Jul 2021 10:00:31 +0200 Subject: [PATCH 67/70] support target --- resources/extension.vsixmanifest | 2 +- src/main.ts | 6 ++++++ src/package.ts | 23 ++++++++++++++++++-- src/test/package.test.ts | 37 ++++++++++++++++++++++++++++++-- 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/resources/extension.vsixmanifest b/resources/extension.vsixmanifest index a110f72d..8a2e669b 100644 --- a/resources/extension.vsixmanifest +++ b/resources/extension.vsixmanifest @@ -1,7 +1,7 @@ - + TargetPlatform="<%- target %>" <% } %> /> <%- displayName %> <%- description %> <%- tags %> diff --git a/src/main.ts b/src/main.ts index d58a3e60..a886f154 100644 --- a/src/main.ts +++ b/src/main.ts @@ -78,6 +78,7 @@ module.exports = function (argv: string[]): void { .command('package []') .description('Packages an extension') .option('-o, --out [path]', 'Output .vsix extension file to [path] location (defaults to -.vsix)') + .option('-t, --target ', 'Target architecture') .option('-m, --message ', 'Commit message used when calling `npm version`.') .option('--no-git-tag-version', 'Do not create a version commit and tag when calling `npm version`.') .option( @@ -100,6 +101,7 @@ module.exports = function (argv: string[]): void { version, { out, + target, message, gitTagVersion, githubBranch, @@ -116,6 +118,7 @@ module.exports = function (argv: string[]): void { packageCommand({ packagePath: out, version, + target, commitMessage: message, gitTagVersion, githubBranch, @@ -138,6 +141,7 @@ module.exports = function (argv: string[]): void { 'Personal Access Token (defaults to VSCE_PAT environment variable)', process.env['VSCE_PAT'] ) + .option('-t, --target ', 'Target architecture') .option('-m, --message ', 'Commit message used when calling `npm version`.') .option('--no-git-tag-version', 'Do not create a version commit and tag when calling `npm version`.') .option('--packagePath [path]', 'Publish the VSIX package located at the specified path.') @@ -160,6 +164,7 @@ module.exports = function (argv: string[]): void { version, { pat, + target, message, gitTagVersion, packagePath, @@ -176,6 +181,7 @@ module.exports = function (argv: string[]): void { publish({ pat, version, + target, commitMessage: message, gitTagVersion, packagePath, diff --git a/src/package.ts b/src/package.ts index 84963c18..3583a4d8 100644 --- a/src/package.ts +++ b/src/package.ts @@ -82,6 +82,7 @@ export interface IAsset { export interface IPackageOptions { readonly packagePath?: string; readonly version?: string; + readonly target?: string; readonly commitMessage?: string; readonly gitTagVersion?: boolean; readonly cwd?: string; @@ -279,8 +280,20 @@ export async function versionBump( } } +const Targets = new Set([ + 'win32-x64', + 'win32-ia32', + 'win32-arm64', + 'linux-x64', + 'linux-arm64', + 'linux-armhf', + 'darwin-x64', + 'darwin-arm64', + 'alpine-x64', +]); + export class ManifestProcessor extends BaseProcessor { - constructor(manifest: Manifest) { + constructor(manifest: Manifest, options: IPackageOptions = {}) { super(manifest); const flags = ['Public']; @@ -304,6 +317,11 @@ export class ManifestProcessor extends BaseProcessor { } const extensionKind = getExtensionKind(manifest); + const target = options.target; + + if (typeof target === 'string' && !Targets.has(target)) { + throw new Error(`'${target}' is not a valid VS Code target. Valid targets: ${[...Targets].join(', ')}`); + } this.vsix = { ...this.vsix, @@ -311,6 +329,7 @@ export class ManifestProcessor extends BaseProcessor { displayName: manifest.displayName || manifest.name, version: manifest.version, publisher: manifest.publisher, + target, engine: manifest.engines['vscode'], description: manifest.description || '', categories: (manifest.categories || []).join(','), @@ -1194,7 +1213,7 @@ export function processFiles(processors: IProcessor[], files: IFile[]): Promise< export function createDefaultProcessors(manifest: Manifest, options: IPackageOptions = {}): IProcessor[] { return [ - new ManifestProcessor(manifest), + new ManifestProcessor(manifest, options), new TagsProcessor(manifest), new ReadmeProcessor(manifest, options), new ChangelogProcessor(manifest, options), diff --git a/src/test/package.test.ts b/src/test/package.test.ts index 8f199b81..1793c4b0 100644 --- a/src/test/package.test.ts +++ b/src/test/package.test.ts @@ -55,7 +55,7 @@ type XMLManifest = { Metadata: { Description: { _: string }[]; DisplayName: string[]; - Identity: { $: { Id: string; Version: string; Publisher: string } }[]; + Identity: { $: { Id: string; Version: string; Publisher: string; TargetPlatform?: string } }[]; Tags: string[]; GalleryFlags: string[]; License: string[]; @@ -108,7 +108,7 @@ function assertMissingProperty(manifest: XMLManifest, name: string): void { assert.equal(property.length, 0, `Property '${name}' should not exist`); } -function createManifest(extra: Partial): Manifest { +function createManifest(extra: Partial = {}): Manifest { return { name: 'test', publisher: 'mocha', @@ -1547,6 +1547,39 @@ describe('toVsixManifest', () => { const extensionKindProps = properties.filter(p => p.$.Id === 'Microsoft.VisualStudio.Code.ExtensionKind'); assert.equal(extensionKindProps[0].$.Value, 'workspace'); }); + + it('should not have target platform by default', async () => { + const manifest = createManifest(); + const raw = await _toVsixManifest(manifest, []); + const dom = await parseXmlManifest(raw); + + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Id, 'test'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Version, '0.0.1'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Publisher, 'mocha'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.TargetPlatform, undefined); + }); + + it('should set the right target platform by default', async () => { + const manifest = createManifest(); + const raw = await _toVsixManifest(manifest, [], { target: 'win32-x64' }); + const dom = await parseXmlManifest(raw); + + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Id, 'test'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Version, '0.0.1'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.Publisher, 'mocha'); + assert.strictEqual(dom.PackageManifest.Metadata[0].Identity[0].$.TargetPlatform, 'win32-x64'); + }); + + it('should throw when using an invalid target platform', async () => { + const manifest = createManifest(); + + try { + await _toVsixManifest(manifest, [], { target: 'linux-ia32' }); + throw new Error('oops'); + } catch (err) { + assert(/not a valid VS Code target/.test(err.message)); + } + }); }); describe('qna', () => { From a924c9e988c7e0d2bb4b214d4b3e8e55aeccc245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Tue, 20 Jul 2021 10:01:04 +0200 Subject: [PATCH 68/70] 1.96.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2243459..bd2cea80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.95.1", + "version": "1.96.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c7a80634..26061cdc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.95.1", + "version": "1.96.0", "description": "VSCode Extension Manager", "repository": { "type": "git", From d3eb08a05dcbeb186789599106d9717315e69b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 21 Jul 2021 14:12:37 +0200 Subject: [PATCH 69/70] fix bad check wrt platform specific extensions --- src/publish.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/publish.ts b/src/publish.ts index d8a774c1..eefb220f 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -48,7 +48,7 @@ function readManifestFromPackage(packagePath: string): Promise { }); } -async function _publish(packagePath: string, pat: string, manifest: Manifest): Promise { +async function _publish(packagePath: string, pat: string, manifest: Manifest, options: IPublishOptions): Promise { const api = await getGalleryAPI(pat); const packageStream = fs.createReadStream(packagePath); @@ -74,7 +74,7 @@ async function _publish(packagePath: string, pat: string, manifest: Manifest): P } } - if (extension && extension.versions.some(v => v.version === manifest.version)) { + if (!options.target && extension && extension.versions.some(v => v.version === manifest.version)) { throw new Error(`${fullName} already exists. Version number cannot be the same.`); } @@ -136,7 +136,7 @@ export function publish(options: IPublishOptions = {}): Promise { const patPromise = options.pat ? Promise.resolve(options.pat) : getPublisher(manifest.publisher).then(p => p.pat); - return patPromise.then(pat => _publish(packagePath, pat, manifest)); + return patPromise.then(pat => _publish(packagePath, pat, manifest, options)); }); } From 7efd3a2bfcfc9a1396826beeae41b6e8579370fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 21 Jul 2021 14:13:10 +0200 Subject: [PATCH 70/70] 1.96.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd2cea80..34d15f7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.96.0", + "version": "1.96.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 26061cdc..e5bffa42 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vsce", - "version": "1.96.0", + "version": "1.96.1", "description": "VSCode Extension Manager", "repository": { "type": "git",