Add tests

This commit is contained in:
OpportunityLiu
2020-03-31 18:38:26 +08:00
Unverified
parent a46e0b8b8a
commit b54ee46fac
24 changed files with 1290 additions and 809 deletions
+3
View File
@@ -13,6 +13,9 @@ jobs:
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: xmake-io/github-action-setup-xmake@master
with:
xmake-version: branch@master
- uses: xmake-io/github-action-setup-xmake@master - uses: xmake-io/github-action-setup-xmake@master
with: with:
xmake-version: latest xmake-version: latest
Vendored
+17 -5
View File
@@ -5,21 +5,33 @@ const io = require("@actions/io");
const os = require("os"); const os = require("os");
const path = require("path"); const path = require("path");
function makeOpt(ref) { function makeOpt(ref) {
return { cwd: path.join(os.tmpdir(), `xmake-${ref}`) }; return { cwd: path.join(os.tmpdir(), `xmake-git-${ref}`) };
} }
async function lsRemote() { async function lsRemote() {
let out = ''; let out = '';
await exec_1.exec('git', ['ls-remote', '--tags', 'https://github.com/xmake-io/xmake.git'], { await exec_1.exec('git', ['ls-remote', 'https://github.com/xmake-io/xmake.git'], {
silent: true, silent: true,
listeners: { listeners: {
stdout: d => (out += d.toString()), stdout: d => (out += d.toString()),
}, },
}); });
const data = {}; const data = { heads: {}, tags: {}, pull: {} };
out.split('\n').forEach(line => { out.split('\n').forEach(line => {
const [ref, tag] = line.trim().split('\t'); const [ref, tag] = line.trim().split('\t');
if (ref && tag && tag.startsWith('refs/tags/v')) { if (ref && tag && tag.startsWith('refs/')) {
data[tag.substring('refs/tags/v'.length)] = ref; const tagPath = tag.split('/').splice(1);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let ldata = data;
for (let i = 0; i < tagPath.length - 1; i++) {
const seg = tagPath[i];
if (typeof ldata[seg] === 'object') {
ldata = ldata[seg];
}
else {
ldata = ldata[seg] = {};
}
}
ldata[tagPath[tagPath.length - 1]] = ref;
} }
}); });
return data; return data;
+5 -67
View File
@@ -2,79 +2,17 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const core = require("@actions/core"); const core = require("@actions/core");
const exec_1 = require("@actions/exec"); const exec_1 = require("@actions/exec");
const io = require("@actions/io");
const toolCache = require("@actions/tool-cache");
const os = require("os"); const os = require("os");
const path = require("path");
const semver = require("semver");
const git = require("./git");
const versions_1 = require("./versions"); const versions_1 = require("./versions");
async function winInstall(version, sha) { const win_install_1 = require("./win-install");
let toolDir = toolCache.find('xmake', version); const unix_install_1 = require("./unix-install");
if (!toolDir) {
const installer = await core.group(`download xmake ${version}`, async () => {
let url = "";
if (version.startsWith("branch@")) {
// we only use appveyor ci artifacts for branch version
const arch = os.arch() === 'x64' ? 'x64' : 'x86';
url = `https://ci.appveyor.com/api/projects/waruqi/xmake/artifacts/xmake-installer.exe?branch=${sha}&pr=false&job=Image%3A+Visual+Studio+2017%3B+Platform%3A+${arch}`;
}
else {
// we cannot use appveyor ci artifacts, the old version links may be broken.
const arch = os.arch() === 'x64' ? 'win64' : 'win32';
url = semver.gt(version, '2.2.6')
? `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.${arch}.exe`
: `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.exe`;
}
core.info(`downloading from ${url}`);
const file = await toolCache.downloadTool(url);
const exe = path.format({ ...path.parse(file), ext: '.exe', base: undefined });
await io.mv(file, exe);
core.info(`downloaded to ${exe}`);
return exe;
});
toolDir = await core.group(`install xmake ${version}`, async () => {
const binDir = path.join(os.tmpdir(), `xmake-${version}`);
core.info(`installing to ${binDir}`);
await exec_1.exec(`"${installer}" /NOADMIN /S /D=${binDir}`);
core.info(`installed to ${binDir}`);
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version);
await io.rmRF(binDir);
await io.rmRF(installer);
return cacheDir;
});
}
core.addPath(toolDir);
}
async function unixInstall(version, sha) {
let toolDir = toolCache.find('xmake', version);
if (!toolDir) {
const sourceDir = await core.group(`download xmake ${version}`, () => git.create(sha));
toolDir = await core.group(`install xmake ${version}`, async () => {
await exec_1.exec('make', ['build'], { cwd: sourceDir });
const binDir = path.join(os.tmpdir(), `xmake-${version}-${sha}`);
await exec_1.exec('make', ['install', `prefix=${binDir}`], { cwd: sourceDir });
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version);
await io.rmRF(binDir);
await git.cleanup(sha);
return cacheDir;
});
}
// for versions 2.3.2 and above, xmake will be installed directly into the bin directory, and no script will be used to wrap it.
if (version.startsWith("branch@") || semver.gt(version, '2.3.1')) {
core.addPath(path.join(toolDir, 'bin'));
}
else {
core.addPath(path.join(toolDir, 'share', 'xmake')); // only for <= 2.3.1
}
}
async function run() { async function run() {
try { try {
const { version, sha } = await versions_1.selectVersion(); const version = await versions_1.selectVersion();
if (os.platform() === 'win32' || os.platform() === 'cygwin') if (os.platform() === 'win32' || os.platform() === 'cygwin')
await winInstall(version, sha); await win_install_1.winInstall(version);
else else
await unixInstall(version, sha); await unix_install_1.unixInstall(version);
await exec_1.exec('xmake --version'); await exec_1.exec('xmake --version');
} }
catch (error) { catch (error) {
+33
View File
@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const core = require("@actions/core");
const exec_1 = require("@actions/exec");
const io = require("@actions/io");
const toolCache = require("@actions/tool-cache");
const os = require("os");
const path = require("path");
const semver = require("semver");
const git = require("./git");
async function unixInstall(version) {
let toolDir = toolCache.find('xmake', version.version);
if (!toolDir) {
const sourceDir = await core.group(`download xmake ${version}`, () => git.create(version.sha));
toolDir = await core.group(`install xmake ${version}`, async () => {
await exec_1.exec('make', ['build'], { cwd: sourceDir });
const binDir = path.join(os.tmpdir(), `xmake-${version.sha}`);
await exec_1.exec('make', ['install', `prefix=${binDir}`], { cwd: sourceDir });
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version.version);
await io.rmRF(binDir);
await git.cleanup(version.sha);
return cacheDir;
});
}
// for versions 2.3.2 and above, xmake will be installed directly into the bin directory, and no script will be used to wrap it.
if (version.type !== 'tags' || semver.gt(version.version, '2.3.1')) {
core.addPath(path.join(toolDir, 'bin'));
}
else {
core.addPath(path.join(toolDir, 'share', 'xmake')); // only for <= 2.3.1
}
}
exports.unixInstall = unixInstall;
+77 -13
View File
@@ -1,31 +1,95 @@
"use strict"; "use strict";
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _string;
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const core = require("@actions/core"); const core = require("@actions/core");
const semver = require("semver"); const semver = require("semver");
const git_1 = require("./git"); const git_1 = require("./git");
class VersionImpl {
constructor(version, sha, type, toString) {
this.version = version;
this.sha = sha;
this.type = type;
_string.set(this, void 0);
__classPrivateFieldSet(this, _string, toString);
}
toString() {
return __classPrivateFieldGet(this, _string);
}
}
_string = new WeakMap();
async function selectBranch(branch) {
const versions = await git_1.lsRemote();
if (branch in versions.heads) {
return new VersionImpl(branch, versions.heads[branch], 'heads', `branch ${branch}`);
}
throw new Error(`Branch ${branch} not found`);
}
async function selectPr(pr) {
var _a;
const versions = await git_1.lsRemote();
if (pr in versions.pull) {
const prheads = versions.pull[pr];
const sha = (_a = prheads.merge) !== null && _a !== void 0 ? _a : prheads.head;
if (sha) {
return new VersionImpl(`#${pr}`, sha, 'pull', `pull request #${pr}`);
}
}
throw new Error(`Pull requrest #${pr} not found`);
}
async function selectSemver(version) {
// check version valid
const v = new semver.Range(version);
if (!v) {
throw new Error(`Invalid semver`);
}
const versions = await git_1.lsRemote();
const ver = semver.maxSatisfying(Object.keys(versions.tags), v);
if (!ver) {
throw new Error(`No matched releases of xmake-version ${v.format()}`);
}
const sha = versions.tags[ver];
return new VersionImpl(ver, sha, 'tags', ver);
}
async function selectVersion(version) { async function selectVersion(version) {
// get version string // get version string
version = (version !== null && version !== void 0 ? version : core.getInput('xmake-version')) || 'latest'; version = (version !== null && version !== void 0 ? version : core.getInput('xmake-version')) || 'latest';
if (version.toLowerCase() === 'latest') if (version.toLowerCase() === 'latest')
version = ''; version = '';
let ret;
// select branch // select branch
if (version.startsWith('branch@')) { if (version.startsWith('branch@')) {
const branch = version.substr(7); const branch = version.substr('branch@'.length);
core.info(`Selected xmake branch: ${branch}`); ret = await selectBranch(branch);
return { version: version, sha: branch }; }
// select pr
if (version.startsWith('pr@')) {
const pr = Number.parseInt(version.substr('pr@'.length));
if (Number.isNaN(pr) || pr <= 0) {
throw new Error(`Invalid pull requrest ${version.substr('pr@'.length)}, should be a positive integer`);
}
ret = await selectPr(pr);
} }
// select version // select version
version = semver.validRange(version); if (semver.validRange(version)) {
if (!version) { ret = await selectSemver(version);
throw new Error(`Invalid input xmake-version: ${core.getInput('xmake-version')}`);
} }
const versions = await git_1.lsRemote(); if (!ret) {
const ver = semver.maxSatisfying(Object.keys(versions), version); throw new Error(`Invalid input xmake-version ${core.getInput('xmake-version')}`);
if (!ver) {
throw new Error(`No matched releases of xmake-version: ${version}`);
} }
const sha = versions[ver]; core.info(`Selected xmake ${ret} (commit: ${ret.sha.substr(0, 8)})`);
core.info(`Selected xmake v${ver} (commit: ${sha.substr(0, 8)})`); return ret;
return { version: ver, sha };
} }
exports.selectVersion = selectVersion; exports.selectVersion = selectVersion;
+50
View File
@@ -0,0 +1,50 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const core = require("@actions/core");
const exec_1 = require("@actions/exec");
const io = require("@actions/io");
const toolCache = require("@actions/tool-cache");
const os = require("os");
const path = require("path");
const semver = require("semver");
async function winInstall(version) {
let toolDir = toolCache.find('xmake', version.version);
if (!toolDir) {
const installer = await core.group(`download xmake ${version}`, async () => {
let url = '';
if (version.type === 'heads') {
// we only use appveyor ci artifacts for branch version
const arch = os.arch() === 'x64' ? 'x64' : 'x86';
url = `https://ci.appveyor.com/api/projects/waruqi/xmake/artifacts/xmake-installer.exe?branch=${version.version}&pr=false&job=Image%3A+Visual+Studio+2017%3B+Platform%3A+${arch}`;
}
else if (version.type === 'pull') {
throw new Error('PR builds for windows is not supported');
}
else {
// we cannot use appveyor ci artifacts, the old version links may be broken.
const arch = os.arch() === 'x64' ? 'win64' : 'win32';
url = semver.gt(version.version, '2.2.6')
? `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.${arch}.exe`
: `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.exe`;
}
core.info(`downloading from ${url}`);
const file = await toolCache.downloadTool(url);
const exe = path.format({ ...path.parse(file), ext: '.exe', base: undefined });
await io.mv(file, exe);
core.info(`downloaded to ${exe}`);
return exe;
});
toolDir = await core.group(`install xmake ${version}`, async () => {
const binDir = path.join(os.tmpdir(), `xmake-${version.sha}`);
core.info(`installing to ${binDir}`);
await exec_1.exec(`"${installer}" /NOADMIN /S /D=${binDir}`);
core.info(`installed to ${binDir}`);
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version.version);
await io.rmRF(binDir);
await io.rmRF(installer);
return cacheDir;
});
}
core.addPath(toolDir);
}
exports.winInstall = winInstall;
Generated Vendored
+15 -1
View File
@@ -1 +1,15 @@
../semver/bin/semver.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
ret=$?
else
node "$basedir/../semver/bin/semver.js" "$@"
ret=$?
fi
exit $ret
+7
View File
@@ -0,0 +1,7 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\semver\bin\semver.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\semver\bin\semver.js" %*
)
Generated Vendored
+15 -1
View File
@@ -1 +1,15 @@
../uuid/bin/uuid #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../uuid/bin/uuid" "$@"
ret=$?
else
node "$basedir/../uuid/bin/uuid" "$@"
ret=$?
fi
exit $ret
Generated Vendored
+7
View File
@@ -0,0 +1,7 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\uuid\bin\uuid" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\uuid\bin\uuid" %*
)
+72 -85
View File
@@ -1,9 +1,11 @@
{ {
"systemParams": "darwin-x64-72", "systemParams": "win32-x64-72",
"modulesFolders": [ "modulesFolders": [
"node_modules" "node_modules"
], ],
"flags": [], "flags": [
"production"
],
"linkedModules": [], "linkedModules": [],
"topLevelPatterns": [ "topLevelPatterns": [
"@actions/core@^1.1.3", "@actions/core@^1.1.3",
@@ -11,18 +13,18 @@
"@actions/io@^1.0.1", "@actions/io@^1.0.1",
"@actions/tool-cache@^1.1.2", "@actions/tool-cache@^1.1.2",
"@types/jest@^25.1.4", "@types/jest@^25.1.4",
"@types/node@^13.9.2", "@types/node@^13.9.8",
"@types/semver@^7.1.0", "@types/semver@^7.1.0",
"@typescript-eslint/eslint-plugin@^2.23.0", "@typescript-eslint/eslint-plugin@^2.26.0",
"@typescript-eslint/parser@^2.23.0", "@typescript-eslint/parser@^2.26.0",
"eslint-config-prettier@^6.10.0", "eslint-config-prettier@^6.10.1",
"eslint-plugin-prettier@^3.1.2", "eslint-plugin-prettier@^3.1.2",
"eslint@^6.8.0", "eslint@^6.8.0",
"jest@^25.1.0", "jest@^25.2.4",
"prettier@^1.19.1", "prettier@^2.0.2",
"rimraf@^3.0.2", "rimraf@^3.0.2",
"semver@^7.1.3", "semver@^7.1.3",
"ts-jest@^25.2.1", "ts-jest@^25.3.0",
"typescript@^3.8.3" "typescript@^3.8.3"
], ],
"lockfileEntries": { "lockfileEntries": {
@@ -68,16 +70,17 @@
"@cnakazawa/watch@^1.0.3": "https://registry.npm.taobao.org/@cnakazawa/watch/download/@cnakazawa/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a", "@cnakazawa/watch@^1.0.3": "https://registry.npm.taobao.org/@cnakazawa/watch/download/@cnakazawa/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a",
"@istanbuljs/load-nyc-config@^1.0.0": "https://registry.npm.taobao.org/@istanbuljs/load-nyc-config/download/@istanbuljs/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b", "@istanbuljs/load-nyc-config@^1.0.0": "https://registry.npm.taobao.org/@istanbuljs/load-nyc-config/download/@istanbuljs/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b",
"@istanbuljs/schema@^0.1.2": "https://registry.npm.taobao.org/@istanbuljs/schema/download/@istanbuljs/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd", "@istanbuljs/schema@^0.1.2": "https://registry.npm.taobao.org/@istanbuljs/schema/download/@istanbuljs/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd",
"@jest/console@^25.1.0": "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.1.0.tgz#1fc765d44a1e11aec5029c08e798246bd37075ab", "@jest/console@^25.2.3": "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.2.3.tgz#38ac19b916ff61457173799239472659e1a67c39",
"@jest/core@^25.1.0": "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.1.0.tgz#3d4634fc3348bb2d7532915d67781cdac0869e47", "@jest/core@^25.2.4": "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.2.4.tgz#382ef80369d3311f1df79db1ee19e958ae95cdad",
"@jest/environment@^25.1.0": "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.1.0.tgz#4a97f64770c9d075f5d2b662b5169207f0a3f787", "@jest/environment@^25.2.4": "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.2.4.tgz#74f4d8dd87b427434d0b822cde37bc0e78f3e28b",
"@jest/fake-timers@^25.1.0": "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.1.0.tgz#a1e0eff51ffdbb13ee81f35b52e0c1c11a350ce8", "@jest/fake-timers@^25.2.4": "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.2.4.tgz#6821b6edde74fda2a42467ae92cc93095d4c9527",
"@jest/reporters@^25.1.0": "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-25.1.0.tgz#9178ecf136c48f125674ac328f82ddea46e482b0", "@jest/reporters@^25.2.4": "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-25.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Freporters%2Fdownload%2F%40jest%2Freporters-25.2.4.tgz#aa01c20aab217150d3a6080d5c98ce0bf34b17ed",
"@jest/source-map@^25.1.0": "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-25.1.0.tgz#b012e6c469ccdbc379413f5c1b1ffb7ba7034fb0", "@jest/source-map@^25.2.1": "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-25.2.1.tgz?cache=0&sync_timestamp=1585215407328&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fsource-map%2Fdownload%2F%40jest%2Fsource-map-25.2.1.tgz#b62ecf8ae76170b08eff8859b56eb7576df34ab8",
"@jest/test-result@^25.1.0": "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-25.1.0.tgz#847af2972c1df9822a8200457e64be4ff62821f7", "@jest/test-result@^25.2.4": "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-25.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftest-result%2Fdownload%2F%40jest%2Ftest-result-25.2.4.tgz#8fc9eac58e82eb2a82e4058e68c3814f98f59cf5",
"@jest/test-sequencer@^25.1.0": "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.1.0.tgz#4df47208542f0065f356fcdb80026e3c042851ab", "@jest/test-sequencer@^25.2.4": "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.2.4.tgz#28364aeddec140c696324114f63570f3de536c87",
"@jest/transform@^25.1.0": "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.1.0.tgz#221f354f512b4628d88ce776d5b9e601028ea9da", "@jest/transform@^25.2.4": "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.2.4.tgz#34336f37f13f62f7d1f5b93d5d150ba9eb3e11b9",
"@jest/types@^25.1.0": "https://registry.npm.taobao.org/@jest/types/download/@jest/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395", "@jest/types@^25.1.0": "https://registry.npm.taobao.org/@jest/types/download/@jest/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395",
"@jest/types@^25.2.3": "https://registry.npm.taobao.org/@jest/types/download/@jest/types-25.2.3.tgz#035c4fb94e2da472f359ff9a211915d59987f6b6",
"@sinonjs/commons@^1.7.0": "https://registry.npm.taobao.org/@sinonjs/commons/download/@sinonjs/commons-1.7.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40sinonjs%2Fcommons%2Fdownload%2F%40sinonjs%2Fcommons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1", "@sinonjs/commons@^1.7.0": "https://registry.npm.taobao.org/@sinonjs/commons/download/@sinonjs/commons-1.7.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40sinonjs%2Fcommons%2Fdownload%2F%40sinonjs%2Fcommons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1",
"@types/babel__core@^7.1.0": "https://registry.npm.taobao.org/@types/babel__core/download/@types/babel__core-7.1.6.tgz?cache=0&sync_timestamp=1582707998251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbabel__core%2Fdownload%2F%40types%2Fbabel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610", "@types/babel__core@^7.1.0": "https://registry.npm.taobao.org/@types/babel__core/download/@types/babel__core-7.1.6.tgz?cache=0&sync_timestamp=1582707998251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbabel__core%2Fdownload%2F%40types%2Fbabel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610",
"@types/babel__generator@*": "https://registry.npm.taobao.org/@types/babel__generator/download/@types/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04", "@types/babel__generator@*": "https://registry.npm.taobao.org/@types/babel__generator/download/@types/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04",
@@ -94,15 +97,16 @@
"@types/jest@^25.1.4": "https://registry.npm.taobao.org/@types/jest/download/@types/jest-25.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fjest%2Fdownload%2F%40types%2Fjest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760", "@types/jest@^25.1.4": "https://registry.npm.taobao.org/@types/jest/download/@types/jest-25.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fjest%2Fdownload%2F%40types%2Fjest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760",
"@types/json-schema@^7.0.3": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339", "@types/json-schema@^7.0.3": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339",
"@types/node@*": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.9.2.tgz?cache=0&sync_timestamp=1584566829623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349", "@types/node@*": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.9.2.tgz?cache=0&sync_timestamp=1584566829623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349",
"@types/node@^13.9.2": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.9.2.tgz?cache=0&sync_timestamp=1584566829623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349", "@types/node@^13.9.8": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.9.8.tgz#09976420fc80a7a00bf40680c63815ed8c7616f4",
"@types/prettier@^1.19.0": "https://registry.npm.taobao.org/@types/prettier/download/@types/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f",
"@types/semver@^7.1.0": "https://registry.npm.taobao.org/@types/semver/download/@types/semver-7.1.0.tgz#c8c630d4c18cd326beff77404887596f96408408", "@types/semver@^7.1.0": "https://registry.npm.taobao.org/@types/semver/download/@types/semver-7.1.0.tgz#c8c630d4c18cd326beff77404887596f96408408",
"@types/stack-utils@^1.0.1": "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e", "@types/stack-utils@^1.0.1": "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e",
"@types/yargs-parser@*": "https://registry.npm.taobao.org/@types/yargs-parser/download/@types/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d", "@types/yargs-parser@*": "https://registry.npm.taobao.org/@types/yargs-parser/download/@types/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d",
"@types/yargs@^15.0.0": "https://registry.npm.taobao.org/@types/yargs/download/@types/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299", "@types/yargs@^15.0.0": "https://registry.npm.taobao.org/@types/yargs/download/@types/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299",
"@typescript-eslint/eslint-plugin@^2.23.0": "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.24.0.tgz?cache=0&sync_timestamp=1584677523989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Feslint-plugin%2Fdownload%2F%40typescript-eslint%2Feslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68", "@typescript-eslint/eslint-plugin@^2.26.0": "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.26.0.tgz#04c96560c8981421e5a9caad8394192363cc423f",
"@typescript-eslint/experimental-utils@2.24.0": "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143", "@typescript-eslint/experimental-utils@2.26.0": "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.26.0.tgz#063390c404d9980767d76274df386c0aa675d91d",
"@typescript-eslint/parser@^2.23.0": "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.24.0.tgz?cache=0&sync_timestamp=1584676993558&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fparser%2Fdownload%2F%40typescript-eslint%2Fparser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8", "@typescript-eslint/parser@^2.26.0": "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.26.0.tgz#385463615818b33acb72a25b39c03579df93d76f",
"@typescript-eslint/typescript-estree@2.24.0": "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a", "@typescript-eslint/typescript-estree@2.26.0": "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.26.0.tgz#d8132cf1ee8a72234f996519a47d8a9118b57d56",
"abab@^2.0.0": "https://registry.npm.taobao.org/abab/download/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a", "abab@^2.0.0": "https://registry.npm.taobao.org/abab/download/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a",
"acorn-globals@^4.3.2": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7", "acorn-globals@^4.3.2": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7",
"acorn-jsx@^5.2.0": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe", "acorn-jsx@^5.2.0": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe",
@@ -137,10 +141,10 @@
"atob@^2.1.2": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9", "atob@^2.1.2": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9",
"aws-sign2@~0.7.0": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8", "aws-sign2@~0.7.0": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8",
"aws4@^1.8.0": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e", "aws4@^1.8.0": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e",
"babel-jest@^25.1.0": "https://registry.npm.taobao.org/babel-jest/download/babel-jest-25.1.0.tgz#206093ac380a4b78c4404a05b3277391278f80fb", "babel-jest@^25.2.4": "https://registry.npm.taobao.org/babel-jest/download/babel-jest-25.2.4.tgz?cache=0&sync_timestamp=1585510733152&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-jest%2Fdownload%2Fbabel-jest-25.2.4.tgz#b21b68d3af8f161c3e6e501e91f0dea8e652e344",
"babel-plugin-istanbul@^6.0.0": "https://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765", "babel-plugin-istanbul@^6.0.0": "https://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765",
"babel-plugin-jest-hoist@^25.1.0": "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-25.1.0.tgz#fb62d7b3b53eb36c97d1bc7fec2072f9bd115981", "babel-plugin-jest-hoist@^25.2.1": "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-25.2.1.tgz?cache=0&sync_timestamp=1585215408279&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-jest-hoist%2Fdownload%2Fbabel-plugin-jest-hoist-25.2.1.tgz#d0003a1f3d5caa281e1107fe03bbf16b799f9955",
"babel-preset-jest@^25.1.0": "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33", "babel-preset-jest@^25.2.1": "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-25.2.1.tgz?cache=0&sync_timestamp=1585215284183&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-preset-jest%2Fdownload%2Fbabel-preset-jest-25.2.1.tgz#4ccd0e577f69aa11b71806edfe8b25a5c3ac93a2",
"balanced-match@^1.0.0": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767", "balanced-match@^1.0.0": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767",
"base@^0.11.1": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f", "base@^0.11.1": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f",
"bcrypt-pbkdf@^1.0.0": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e", "bcrypt-pbkdf@^1.0.0": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e",
@@ -200,29 +204,27 @@
"decamelize@^1.2.0": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290", "decamelize@^1.2.0": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290",
"decode-uri-component@^0.2.0": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545", "decode-uri-component@^0.2.0": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545",
"deep-is@~0.1.3": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34", "deep-is@~0.1.3": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34",
"define-properties@^1.1.2": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1", "deepmerge@^4.2.2": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955",
"define-properties@^1.1.3": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1",
"define-property@^0.2.5": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116", "define-property@^0.2.5": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116",
"define-property@^1.0.0": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6", "define-property@^1.0.0": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6",
"define-property@^2.0.2": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d", "define-property@^2.0.2": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d",
"delayed-stream@~1.0.0": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619", "delayed-stream@~1.0.0": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619",
"detect-newline@^3.0.0": "https://registry.npm.taobao.org/detect-newline/download/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651", "detect-newline@^3.0.0": "https://registry.npm.taobao.org/detect-newline/download/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651",
"diff-sequences@^25.1.0": "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32", "diff-sequences@^25.1.0": "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32",
"diff-sequences@^25.2.1": "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.2.1.tgz#fcfe8aa07dd9b0c648396a478dabca8e76c6ab27",
"doctrine@^3.0.0": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961", "doctrine@^3.0.0": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961",
"domexception@^1.0.1": "https://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90", "domexception@^1.0.1": "https://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90",
"ecc-jsbn@~0.1.1": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9", "ecc-jsbn@~0.1.1": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9",
"emoji-regex@^7.0.1": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156", "emoji-regex@^7.0.1": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156",
"emoji-regex@^8.0.0": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37", "emoji-regex@^8.0.0": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37",
"end-of-stream@^1.1.0": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0", "end-of-stream@^1.1.0": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0",
"es-abstract@^1.17.0-next.1": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184",
"es-abstract@^1.17.2": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184",
"es-to-primitive@^1.2.1": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a",
"escape-string-regexp@^1.0.5": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", "escape-string-regexp@^1.0.5": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
"escodegen@^1.11.1": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457", "escodegen@^1.11.1": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457",
"eslint-config-prettier@^6.10.0": "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f", "eslint-config-prettier@^6.10.1": "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a",
"eslint-plugin-prettier@^3.1.2": "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba", "eslint-plugin-prettier@^3.1.2": "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba",
"eslint-scope@^5.0.0": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9", "eslint-scope@^5.0.0": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9",
"eslint-utils@^1.4.3": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f", "eslint-utils@^1.4.3": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f",
"eslint-utils@^2.0.0": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd",
"eslint-visitor-keys@^1.1.0": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2", "eslint-visitor-keys@^1.1.0": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2",
"eslint@^6.8.0": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1582928719498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb", "eslint@^6.8.0": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1582928719498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb",
"espree@^6.1.2": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1583870100266&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a", "espree@^6.1.2": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1583870100266&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a",
@@ -240,7 +242,7 @@
"execa@^3.2.0": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89", "execa@^3.2.0": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89",
"exit@^0.1.2": "https://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c", "exit@^0.1.2": "https://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c",
"expand-brackets@^2.1.4": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622", "expand-brackets@^2.1.4": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622",
"expect@^25.1.0": "https://registry.npm.taobao.org/expect/download/expect-25.1.0.tgz#7e8d7b06a53f7d66ec927278db3304254ee683ee", "expect@^25.2.4": "https://registry.npm.taobao.org/expect/download/expect-25.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpect%2Fdownload%2Fexpect-25.2.4.tgz#b66e0777c861034ebc21730bb34e1839d5d46806",
"extend-shallow@^2.0.1": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f", "extend-shallow@^2.0.1": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f",
"extend-shallow@^3.0.0": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8", "extend-shallow@^3.0.0": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8",
"extend-shallow@^3.0.2": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8", "extend-shallow@^3.0.2": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8",
@@ -269,7 +271,6 @@
"fragment-cache@^0.2.1": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19", "fragment-cache@^0.2.1": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19",
"fs.realpath@^1.0.0": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", "fs.realpath@^1.0.0": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f",
"fsevents@^2.1.2": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805", "fsevents@^2.1.2": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805",
"function-bind@^1.1.1": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d",
"functional-red-black-tree@^1.0.1": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327", "functional-red-black-tree@^1.0.1": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327",
"gensync@^1.0.0-beta.1": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269", "gensync@^1.0.0-beta.1": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269",
"get-caller-file@^2.0.1": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e", "get-caller-file@^2.0.1": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e",
@@ -293,13 +294,10 @@
"har-validator@~5.1.3": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080", "har-validator@~5.1.3": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080",
"has-flag@^3.0.0": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd", "has-flag@^3.0.0": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd",
"has-flag@^4.0.0": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b", "has-flag@^4.0.0": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b",
"has-symbols@^1.0.0": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8",
"has-symbols@^1.0.1": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8",
"has-value@^0.3.1": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f", "has-value@^0.3.1": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f",
"has-value@^1.0.0": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177", "has-value@^1.0.0": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177",
"has-values@^0.1.4": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771", "has-values@^0.1.4": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771",
"has-values@^1.0.0": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f", "has-values@^1.0.0": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f",
"has@^1.0.3": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796",
"html-encoding-sniffer@^1.0.2": "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8", "html-encoding-sniffer@^1.0.2": "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8",
"html-escaper@^2.0.0": "https://registry.npm.taobao.org/html-escaper/download/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491", "html-escaper@^2.0.0": "https://registry.npm.taobao.org/html-escaper/download/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491",
"http-signature@~1.2.0": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1582587749558&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1", "http-signature@~1.2.0": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1582587749558&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1",
@@ -317,12 +315,9 @@
"is-accessor-descriptor@^0.1.6": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6", "is-accessor-descriptor@^0.1.6": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6",
"is-accessor-descriptor@^1.0.0": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656", "is-accessor-descriptor@^1.0.0": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656",
"is-buffer@^1.1.5": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", "is-buffer@^1.1.5": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be",
"is-callable@^1.1.4": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab",
"is-callable@^1.1.5": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab",
"is-ci@^2.0.0": "https://registry.npm.taobao.org/is-ci/download/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c", "is-ci@^2.0.0": "https://registry.npm.taobao.org/is-ci/download/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c",
"is-data-descriptor@^0.1.4": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56", "is-data-descriptor@^0.1.4": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56",
"is-data-descriptor@^1.0.0": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7", "is-data-descriptor@^1.0.0": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7",
"is-date-object@^1.0.1": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e",
"is-descriptor@^0.1.0": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca", "is-descriptor@^0.1.0": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca",
"is-descriptor@^1.0.0": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec", "is-descriptor@^1.0.0": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec",
"is-descriptor@^1.0.2": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec", "is-descriptor@^1.0.2": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec",
@@ -340,10 +335,8 @@
"is-plain-object@^2.0.3": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", "is-plain-object@^2.0.3": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677",
"is-plain-object@^2.0.4": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677", "is-plain-object@^2.0.4": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677",
"is-promise@^2.1.0": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa", "is-promise@^2.1.0": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa",
"is-regex@^1.0.5": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae",
"is-stream@^1.1.0": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44", "is-stream@^1.1.0": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44",
"is-stream@^2.0.0": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3", "is-stream@^2.0.0": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3",
"is-symbol@^1.0.2": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937",
"is-typedarray@^1.0.0": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a", "is-typedarray@^1.0.0": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a",
"is-typedarray@~1.0.0": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a", "is-typedarray@~1.0.0": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a",
"is-windows@^1.0.2": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d", "is-windows@^1.0.2": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d",
@@ -359,38 +352,40 @@
"istanbul-lib-report@^3.0.0": "https://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6", "istanbul-lib-report@^3.0.0": "https://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6",
"istanbul-lib-source-maps@^4.0.0": "https://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9", "istanbul-lib-source-maps@^4.0.0": "https://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9",
"istanbul-reports@^3.0.0": "https://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70", "istanbul-reports@^3.0.0": "https://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-3.0.0.tgz#d4d16d035db99581b6194e119bbf36c963c5eb70",
"jest-changed-files@^25.1.0": "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-25.1.0.tgz#73dae9a7d9949fdfa5c278438ce8f2ff3ec78131", "jest-changed-files@^25.2.3": "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-25.2.3.tgz?cache=0&sync_timestamp=1585255877649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-changed-files%2Fdownload%2Fjest-changed-files-25.2.3.tgz#ad19deef9e47ba37efb432d2c9a67dfd97cc78af",
"jest-cli@^25.1.0": "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.1.0.tgz#75f0b09cf6c4f39360906bf78d580be1048e4372", "jest-cli@^25.2.4": "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.2.4.tgz#021c2383904696597abc060dcb133c82ebd8bfcc",
"jest-config@^25.1.0": "https://registry.npm.taobao.org/jest-config/download/jest-config-25.1.0.tgz#d114e4778c045d3ef239452213b7ad3ec1cbea90", "jest-config@^25.2.4": "https://registry.npm.taobao.org/jest-config/download/jest-config-25.2.4.tgz#f4f33238979f225683179c89d1e402893008975d",
"jest-diff@^25.1.0": "https://registry.npm.taobao.org/jest-diff/download/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad", "jest-diff@^25.1.0": "https://registry.npm.taobao.org/jest-diff/download/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad",
"jest-docblock@^25.1.0": "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-25.1.0.tgz#0f44bea3d6ca6dfc38373d465b347c8818eccb64", "jest-diff@^25.2.3": "https://registry.npm.taobao.org/jest-diff/download/jest-diff-25.2.3.tgz?cache=0&sync_timestamp=1585255877885&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-diff%2Fdownload%2Fjest-diff-25.2.3.tgz#54d601a0a754ef26e808a8c8dbadd278c215aa3f",
"jest-each@^25.1.0": "https://registry.npm.taobao.org/jest-each/download/jest-each-25.1.0.tgz#a6b260992bdf451c2d64a0ccbb3ac25e9b44c26a", "jest-docblock@^25.2.3": "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-25.2.3.tgz?cache=0&sync_timestamp=1585255874870&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-docblock%2Fdownload%2Fjest-docblock-25.2.3.tgz#ac45280c43d59e7139f9fbe5896c6e0320c01ebb",
"jest-environment-jsdom@^25.1.0": "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.1.0.tgz#6777ab8b3e90fd076801efd3bff8e98694ab43c3", "jest-each@^25.2.3": "https://registry.npm.taobao.org/jest-each/download/jest-each-25.2.3.tgz?cache=0&sync_timestamp=1585255872267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-each%2Fdownload%2Fjest-each-25.2.3.tgz#64067ba1508ebbd07e9b126c173ab371e8e6309d",
"jest-environment-node@^25.1.0": "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-25.1.0.tgz#797bd89b378cf0bd794dc8e3dca6ef21126776db", "jest-environment-jsdom@^25.2.4": "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.2.4.tgz#f2783541d0538b1bc43641703372cea6a2e83611",
"jest-environment-node@^25.2.4": "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-25.2.4.tgz?cache=0&sync_timestamp=1585510748152&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-environment-node%2Fdownload%2Fjest-environment-node-25.2.4.tgz#dc211dfb0d8b66dfc1965a8f846e72e54ff0c430",
"jest-get-type@^25.1.0": "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876", "jest-get-type@^25.1.0": "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876",
"jest-haste-map@^25.1.0": "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.1.0.tgz#ae12163d284f19906260aa51fd405b5b2e5a4ad3", "jest-get-type@^25.2.1": "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-25.2.1.tgz?cache=0&sync_timestamp=1585215279267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-get-type%2Fdownload%2Fjest-get-type-25.2.1.tgz#6c83de603c41b1627e6964da2f5454e6aa3c13a6",
"jest-jasmine2@^25.1.0": "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.1.0.tgz#681b59158a430f08d5d0c1cce4f01353e4b48137", "jest-haste-map@^25.2.3": "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.2.3.tgz#2649392b5af191f0167a27bfb62e5d96d7eaaade",
"jest-leak-detector@^25.1.0": "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-25.1.0.tgz#ed6872d15aa1c72c0732d01bd073dacc7c38b5c6", "jest-jasmine2@^25.2.4": "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.2.4.tgz#5f77de83e1027f0c7588137055a80da773872374",
"jest-matcher-utils@^25.1.0": "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220", "jest-leak-detector@^25.2.3": "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-25.2.3.tgz?cache=0&sync_timestamp=1585255878917&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-leak-detector%2Fdownload%2Fjest-leak-detector-25.2.3.tgz#4cf39f137925e0061c04c24ca65cae36465f0238",
"jest-message-util@^25.1.0": "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-25.1.0.tgz#702a9a5cb05c144b9aa73f06e17faa219389845e", "jest-matcher-utils@^25.2.3": "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-25.2.3.tgz?cache=0&sync_timestamp=1585255876922&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-matcher-utils%2Fdownload%2Fjest-matcher-utils-25.2.3.tgz#59285bd6d6c810debc9caa585ed985e46a3f28fd",
"jest-mock@^25.1.0": "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.1.0.tgz#411d549e1b326b7350b2e97303a64715c28615fd", "jest-message-util@^25.2.4": "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-25.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-message-util%2Fdownload%2Fjest-message-util-25.2.4.tgz#b1441b9c82f5c11fc661303cbf200a2f136a7762",
"jest-mock@^25.2.3": "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.2.3.tgz#b37a581f59d61bd91db27a99bf7eb8b3e5e993d5",
"jest-pnp-resolver@^1.2.1": "https://registry.npm.taobao.org/jest-pnp-resolver/download/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a", "jest-pnp-resolver@^1.2.1": "https://registry.npm.taobao.org/jest-pnp-resolver/download/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a",
"jest-regex-util@^25.1.0": "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-25.1.0.tgz#efaf75914267741838e01de24da07b2192d16d87", "jest-regex-util@^25.2.1": "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-25.2.1.tgz?cache=0&sync_timestamp=1585215406327&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-regex-util%2Fdownload%2Fjest-regex-util-25.2.1.tgz#db64b0d15cd3642c93b7b9627801d7c518600584",
"jest-resolve-dependencies@^25.1.0": "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.1.0.tgz#8a1789ec64eb6aaa77fd579a1066a783437e70d2", "jest-resolve-dependencies@^25.2.4": "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.2.4.tgz#2d904400387d74a366dff54badb40a2b3210e733",
"jest-resolve@^25.1.0": "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.1.0.tgz#23d8b6a4892362baf2662877c66aa241fa2eaea3", "jest-resolve@^25.2.3": "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.2.3.tgz#ababeaf2bb948cb6d2dea8453759116da0fb7842",
"jest-runner@^25.1.0": "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.1.0.tgz#fef433a4d42c89ab0a6b6b268e4a4fbe6b26e812", "jest-runner@^25.2.4": "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.2.4.tgz#d0daf7c56b4a83b6b675863d5cdcd502c960f9a1",
"jest-runtime@^25.1.0": "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.1.0.tgz#02683218f2f95aad0f2ec1c9cdb28c1dc0ec0314", "jest-runtime@^25.2.4": "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.2.4.tgz#c66a421e115944426b377a7fd331f6c0902cfa56",
"jest-serializer@^25.1.0": "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-25.1.0.tgz#73096ba90e07d19dec4a0c1dd89c355e2f129e5d", "jest-serializer@^25.2.1": "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-25.2.1.tgz?cache=0&sync_timestamp=1585215407092&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-serializer%2Fdownload%2Fjest-serializer-25.2.1.tgz#51727a5fc04256f461abe0fa024a022ba165877a",
"jest-snapshot@^25.1.0": "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.1.0.tgz#d5880bd4b31faea100454608e15f8d77b9d221d9", "jest-snapshot@^25.2.4": "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.2.4.tgz#08d4517579c864df4280bcc948ceea34327a4ded",
"jest-util@^25.1.0": "https://registry.npm.taobao.org/jest-util/download/jest-util-25.1.0.tgz#7bc56f7b2abd534910e9fa252692f50624c897d9", "jest-util@^25.2.3": "https://registry.npm.taobao.org/jest-util/download/jest-util-25.2.3.tgz#0abf95a1d6b96f2de5a3ecd61b36c40a182dc256",
"jest-validate@^25.1.0": "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.1.0.tgz#1469fa19f627bb0a9a98e289f3e9ab6a668c732a", "jest-validate@^25.2.3": "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.2.3.tgz#ecb0f093cf8ae71d15075fb48439b6f78f1fcb5a",
"jest-watcher@^25.1.0": "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-25.1.0.tgz#97cb4a937f676f64c9fad2d07b824c56808e9806", "jest-watcher@^25.2.4": "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-25.2.4.tgz?cache=0&sync_timestamp=1585510737791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-watcher%2Fdownload%2Fjest-watcher-25.2.4.tgz#dda85b914d470fa4145164a8f70bda4f208bafb6",
"jest-worker@^25.1.0": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a", "jest-worker@^25.2.1": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.2.1.tgz?cache=0&sync_timestamp=1585215414576&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.2.1.tgz#209617015c768652646aa33a7828cc2ab472a18a",
"jest@^25.1.0": "https://registry.npm.taobao.org/jest/download/jest-25.1.0.tgz#b85ef1ddba2fdb00d295deebbd13567106d35be9", "jest@^25.2.4": "https://registry.npm.taobao.org/jest/download/jest-25.2.4.tgz#d10941948a2b57eb7accc2e7ae78af4a0e11b40a",
"js-tokens@^4.0.0": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499", "js-tokens@^4.0.0": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499",
"js-yaml@^3.13.1": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847", "js-yaml@^3.13.1": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847",
"jsbn@~0.1.0": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513", "jsbn@~0.1.0": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513",
"jsdom@^15.1.1": "https://registry.npm.taobao.org/jsdom/download/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5", "jsdom@^15.2.1": "https://registry.npm.taobao.org/jsdom/download/jsdom-15.2.1.tgz?cache=0&sync_timestamp=1585531922622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsdom%2Fdownload%2Fjsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5",
"jsesc@^2.5.1": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4", "jsesc@^2.5.1": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4",
"json-schema-traverse@^0.4.1": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660", "json-schema-traverse@^0.4.1": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660",
"json-schema@0.2.3": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13", "json-schema@0.2.3": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13",
@@ -434,7 +429,7 @@
"minimist@^1.2.0": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602", "minimist@^1.2.0": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602",
"minimist@^1.2.5": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602", "minimist@^1.2.5": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602",
"mixin-deep@^1.2.0": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566", "mixin-deep@^1.2.0": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566",
"mkdirp@0.x": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.3.tgz?cache=0&sync_timestamp=1584667994851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c", "mkdirp@1.x": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-1.0.3.tgz?cache=0&sync_timestamp=1584986213750&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea",
"mkdirp@^0.5.1": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.3.tgz?cache=0&sync_timestamp=1584667994851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c", "mkdirp@^0.5.1": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.3.tgz?cache=0&sync_timestamp=1584667994851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c",
"ms@2.0.0": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8", "ms@2.0.0": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8",
"ms@^2.1.1": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009", "ms@^2.1.1": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009",
@@ -452,13 +447,7 @@
"nwsapi@^2.2.0": "https://registry.npm.taobao.org/nwsapi/download/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7", "nwsapi@^2.2.0": "https://registry.npm.taobao.org/nwsapi/download/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7",
"oauth-sign@~0.9.0": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455", "oauth-sign@~0.9.0": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455",
"object-copy@^0.1.0": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c", "object-copy@^0.1.0": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c",
"object-inspect@^1.7.0": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67",
"object-keys@^1.0.11": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e",
"object-keys@^1.0.12": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e",
"object-keys@^1.1.1": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e",
"object-visit@^1.0.0": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb", "object-visit@^1.0.0": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb",
"object.assign@^4.1.0": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da",
"object.getownpropertydescriptors@^2.1.0": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649",
"object.pick@^1.3.0": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747", "object.pick@^1.3.0": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747",
"once@^1.3.0": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", "once@^1.3.0": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1",
"once@^1.3.1": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", "once@^1.3.1": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1",
@@ -492,8 +481,9 @@
"posix-character-classes@^0.1.0": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab", "posix-character-classes@^0.1.0": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab",
"prelude-ls@~1.1.2": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54", "prelude-ls@~1.1.2": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54",
"prettier-linter-helpers@^1.0.0": "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b", "prettier-linter-helpers@^1.0.0": "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b",
"prettier@^1.19.1": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb", "prettier@^2.0.2": "https://registry.npm.taobao.org/prettier/download/prettier-2.0.2.tgz#1ba8f3eb92231e769b7fcd7cb73ae1b6b74ade08",
"pretty-format@^25.1.0": "https://registry.npm.taobao.org/pretty-format/download/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8", "pretty-format@^25.1.0": "https://registry.npm.taobao.org/pretty-format/download/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8",
"pretty-format@^25.2.3": "https://registry.npm.taobao.org/pretty-format/download/pretty-format-25.2.3.tgz?cache=0&sync_timestamp=1585255872781&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-format%2Fdownload%2Fpretty-format-25.2.3.tgz#ba6e9603a0d80fa2e470b1fed55de1f9bfd81421",
"progress@^2.0.0": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8", "progress@^2.0.0": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8",
"prompts@^2.0.1": "https://registry.npm.taobao.org/prompts/download/prompts-2.3.2.tgz?cache=0&sync_timestamp=1584535708984&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprompts%2Fdownload%2Fprompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068", "prompts@^2.0.1": "https://registry.npm.taobao.org/prompts/download/prompts-2.3.2.tgz?cache=0&sync_timestamp=1584535708984&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprompts%2Fdownload%2Fprompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068",
"psl@^1.1.28": "https://registry.npm.taobao.org/psl/download/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c", "psl@^1.1.28": "https://registry.npm.taobao.org/psl/download/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c",
@@ -502,7 +492,7 @@
"punycode@^2.1.1": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec", "punycode@^2.1.1": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec",
"qs@~6.5.2": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36", "qs@~6.5.2": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36",
"react-is@^16.12.0": "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4", "react-is@^16.12.0": "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4",
"realpath-native@^1.1.0": "https://registry.npm.taobao.org/realpath-native/download/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c", "realpath-native@^2.0.0": "https://registry.npm.taobao.org/realpath-native/download/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866",
"regex-not@^1.0.0": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c", "regex-not@^1.0.0": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c",
"regex-not@^1.0.2": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c", "regex-not@^1.0.2": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c",
"regexpp@^2.0.1": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f", "regexpp@^2.0.1": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f",
@@ -521,6 +511,7 @@
"resolve-url@^0.2.1": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a", "resolve-url@^0.2.1": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a",
"resolve@1.1.7": "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b", "resolve@1.1.7": "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b",
"resolve@1.x": "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8", "resolve@1.x": "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8",
"resolve@^1.15.1": "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8",
"resolve@^1.3.2": "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8", "resolve@^1.3.2": "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&sync_timestamp=1580944242910&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8",
"restore-cursor@^3.1.0": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e", "restore-cursor@^3.1.0": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e",
"ret@~0.1.10": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc", "ret@~0.1.10": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc",
@@ -540,14 +531,13 @@
"safer-buffer@~2.1.0": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", "safer-buffer@~2.1.0": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a",
"sane@^4.0.3": "https://registry.npm.taobao.org/sane/download/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded", "sane@^4.0.3": "https://registry.npm.taobao.org/sane/download/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded",
"saxes@^3.1.9": "https://registry.npm.taobao.org/saxes/download/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b", "saxes@^3.1.9": "https://registry.npm.taobao.org/saxes/download/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b",
"semver@6.x": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
"semver@^5.4.1": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7", "semver@^5.4.1": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7",
"semver@^5.5": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7",
"semver@^5.5.0": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7", "semver@^5.5.0": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7",
"semver@^6.0.0": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", "semver@^6.0.0": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
"semver@^6.1.0": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", "semver@^6.1.0": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
"semver@^6.1.2": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", "semver@^6.1.2": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
"semver@^6.3.0": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d", "semver@^6.3.0": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
"semver@^7.1.1": "https://registry.npm.taobao.org/semver/download/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6",
"semver@^7.1.3": "https://registry.npm.taobao.org/semver/download/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6", "semver@^7.1.3": "https://registry.npm.taobao.org/semver/download/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6",
"set-blocking@^2.0.0": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7", "set-blocking@^2.0.0": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7",
"set-value@^2.0.0": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b", "set-value@^2.0.0": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b",
@@ -585,8 +575,6 @@
"string-width@^3.0.0": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961", "string-width@^3.0.0": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961",
"string-width@^4.1.0": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5", "string-width@^4.1.0": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5",
"string-width@^4.2.0": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5", "string-width@^4.2.0": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5",
"string.prototype.trimleft@^2.1.1": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74",
"string.prototype.trimright@^2.1.1": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9",
"strip-ansi@^5.1.0": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae", "strip-ansi@^5.1.0": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae",
"strip-ansi@^5.2.0": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae", "strip-ansi@^5.2.0": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae",
"strip-ansi@^6.0.0": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532", "strip-ansi@^6.0.0": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532",
@@ -617,7 +605,7 @@
"tough-cookie@^3.0.1": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-3.0.1.tgz?cache=0&sync_timestamp=1584645708631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2", "tough-cookie@^3.0.1": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-3.0.1.tgz?cache=0&sync_timestamp=1584645708631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2",
"tough-cookie@~2.5.0": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584645708631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2", "tough-cookie@~2.5.0": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584645708631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2",
"tr46@^1.0.1": "https://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09", "tr46@^1.0.1": "https://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09",
"ts-jest@^25.2.1": "https://registry.npm.taobao.org/ts-jest/download/ts-jest-25.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fts-jest%2Fdownload%2Fts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d", "ts-jest@^25.3.0": "https://registry.npm.taobao.org/ts-jest/download/ts-jest-25.3.0.tgz#c12d34573cbe34d49f10567940e44fd19d1c9178",
"tslib@^1.8.1": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz?cache=0&sync_timestamp=1582832152814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35", "tslib@^1.8.1": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz?cache=0&sync_timestamp=1582832152814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35",
"tslib@^1.9.0": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz?cache=0&sync_timestamp=1582832152814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35", "tslib@^1.9.0": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz?cache=0&sync_timestamp=1582832152814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35",
"tsutils@^3.17.1": "https://registry.npm.taobao.org/tsutils/download/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759", "tsutils@^3.17.1": "https://registry.npm.taobao.org/tsutils/download/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759",
@@ -636,7 +624,6 @@
"uri-js@^4.2.2": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0", "uri-js@^4.2.2": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0",
"urix@^0.1.0": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72", "urix@^0.1.0": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72",
"use@^3.1.0": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f", "use@^3.1.0": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f",
"util.promisify@^1.0.0": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee",
"uuid@^3.3.2": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee", "uuid@^3.3.2": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee",
"v8-compile-cache@^2.0.3": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e", "v8-compile-cache@^2.0.3": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e",
"v8-to-istanbul@^4.0.1": "https://registry.npm.taobao.org/v8-to-istanbul/download/v8-to-istanbul-4.1.2.tgz#387d173be5383dbec209d21af033dcb892e3ac82", "v8-to-istanbul@^4.0.1": "https://registry.npm.taobao.org/v8-to-istanbul/download/v8-to-istanbul-4.1.2.tgz#387d173be5383dbec209d21af033dcb892e3ac82",
@@ -655,6 +642,7 @@
"which@^1.2.9": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a", "which@^1.2.9": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a",
"which@^1.3.1": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a", "which@^1.3.1": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a",
"which@^2.0.1": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1", "which@^2.0.1": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1",
"which@^2.0.2": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1",
"word-wrap@~1.2.3": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c", "word-wrap@~1.2.3": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c",
"wrap-ansi@^6.2.0": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53", "wrap-ansi@^6.2.0": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53",
"wrappy@1": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", "wrappy@1": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
@@ -664,9 +652,8 @@
"xml-name-validator@^3.0.0": "https://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a", "xml-name-validator@^3.0.0": "https://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a",
"xmlchars@^2.1.1": "https://registry.npm.taobao.org/xmlchars/download/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb", "xmlchars@^2.1.1": "https://registry.npm.taobao.org/xmlchars/download/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb",
"y18n@^4.0.0": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b", "y18n@^4.0.0": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b",
"yargs-parser@^16.1.0": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-16.1.0.tgz?cache=0&sync_timestamp=1584370526706&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1",
"yargs-parser@^18.1.1": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.1.tgz?cache=0&sync_timestamp=1584370526706&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37", "yargs-parser@^18.1.1": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.1.tgz?cache=0&sync_timestamp=1584370526706&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37",
"yargs@^15.0.0": "https://registry.npm.taobao.org/yargs/download/yargs-15.3.1.tgz?cache=0&sync_timestamp=1584344189540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" "yargs@^15.3.1": "https://registry.npm.taobao.org/yargs/download/yargs-15.3.1.tgz?cache=0&sync_timestamp=1584344189540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b"
}, },
"files": [], "files": [],
"artifacts": {} "artifacts": {}
+15 -1
View File
@@ -1 +1,15 @@
../semver/bin/semver.js #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
ret=$?
else
node "$basedir/../semver/bin/semver.js" "$@"
ret=$?
fi
exit $ret
+7
View File
@@ -0,0 +1,7 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\semver\bin\semver.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\semver\bin\semver.js" %*
)
+15 -1
View File
@@ -1 +1,15 @@
../../../../uuid/bin/uuid #!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../../../../uuid/bin/uuid" "$@"
ret=$?
else
node "$basedir/../../../../uuid/bin/uuid" "$@"
ret=$?
fi
exit $ret
+7
View File
@@ -0,0 +1,7 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\..\..\..\uuid\bin\uuid" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\..\..\..\uuid\bin\uuid" %*
)
+8 -8
View File
@@ -13,7 +13,7 @@
"build": "tsc --build ./tsconfig.build.json", "build": "tsc --build ./tsconfig.build.json",
"rebuild": "yarn clean && yarn build", "rebuild": "yarn clean && yarn build",
"clean": "rimraf dist", "clean": "rimraf dist",
"lint": "eslint --fix src/**/*", "lint": "eslint --fix src/**/*.ts",
"test": "jest", "test": "jest",
"release": "yarn rebuild && yarn lint && yarn install --production" "release": "yarn rebuild && yarn lint && yarn install --production"
}, },
@@ -26,17 +26,17 @@
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^25.1.4", "@types/jest": "^25.1.4",
"@types/node": "^13.9.2", "@types/node": "^13.9.8",
"@types/semver": "^7.1.0", "@types/semver": "^7.1.0",
"@typescript-eslint/eslint-plugin": "^2.23.0", "@typescript-eslint/eslint-plugin": "^2.26.0",
"@typescript-eslint/parser": "^2.23.0", "@typescript-eslint/parser": "^2.26.0",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.0", "eslint-config-prettier": "^6.10.1",
"eslint-plugin-prettier": "^3.1.2", "eslint-plugin-prettier": "^3.1.2",
"jest": "^25.1.0", "jest": "^25.2.4",
"prettier": "^1.19.1", "prettier": "^2.0.2",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"ts-jest": "^25.2.1", "ts-jest": "^25.3.0",
"typescript": "^3.8.3" "typescript": "^3.8.3"
} }
} }
+11 -3
View File
@@ -4,11 +4,19 @@ import * as semver from 'semver';
describe('lsRemote', () => { describe('lsRemote', () => {
it('should return correct records', async () => { it('should return correct records', async () => {
const records = await git.lsRemote(); const records = await git.lsRemote();
expect(Object.keys(records).length).not.toBeLessThan(10); expect(records).toHaveProperty('heads');
for (const tag in records) { expect(records).toHaveProperty('tags');
const ref = records[tag]; expect(records).toHaveProperty('pull');
expect(Object.keys(records.tags).length).not.toBeLessThan(10);
for (const tag in records.tags) {
const ref = records.tags[tag];
expect(semver.parse(tag)).toBeInstanceOf(semver.SemVer); expect(semver.parse(tag)).toBeInstanceOf(semver.SemVer);
expect(ref).toMatch(/^[0-9a-f]{40}$/gi); expect(ref).toMatch(/^[0-9a-f]{40}$/gi);
} }
for (const branch in records.heads) {
const ref = records.heads[branch];
expect(ref).toMatch(/^[0-9a-f]{40}$/gi);
}
}, 100000); }, 100000);
}); });
+25 -8
View File
@@ -4,22 +4,39 @@ import * as os from 'os';
import * as path from 'path'; import * as path from 'path';
function makeOpt(ref: string): { cwd: string } { function makeOpt(ref: string): { cwd: string } {
return { cwd: path.join(os.tmpdir(), `xmake-${ref}`) }; return { cwd: path.join(os.tmpdir(), `xmake-git-${ref}`) };
} }
export async function lsRemote(): Promise<Record<string, string>> { export type RefDic = {
heads: Record<string, string>;
tags: Record<string, string>;
pull: Record<number, { head?: string; merge?: string }>;
};
export async function lsRemote(): Promise<RefDic> {
let out = ''; let out = '';
await exec('git', ['ls-remote', '--tags', 'https://github.com/xmake-io/xmake.git'], { await exec('git', ['ls-remote', 'https://github.com/xmake-io/xmake.git'], {
silent: true, silent: true,
listeners: { listeners: {
stdout: d => (out += d.toString()), stdout: (d) => (out += d.toString()),
}, },
}); });
const data: Record<string, string> = {}; const data: RefDic = { heads: {}, tags: {}, pull: {} };
out.split('\n').forEach(line => { out.split('\n').forEach((line) => {
const [ref, tag] = line.trim().split('\t'); const [ref, tag] = line.trim().split('\t');
if (ref && tag && tag.startsWith('refs/tags/v')) { if (ref && tag && tag.startsWith('refs/')) {
data[tag.substring('refs/tags/v'.length)] = ref; const tagPath = tag.split('/').splice(1);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let ldata = data as any;
for (let i = 0; i < tagPath.length - 1; i++) {
const seg = tagPath[i];
if (typeof ldata[seg] === 'object') {
ldata = ldata[seg];
} else {
ldata = ldata[seg] = {};
}
}
ldata[tagPath[tagPath.length - 1]] = ref;
} }
}); });
return data; return data;
+6 -69
View File
@@ -1,82 +1,19 @@
import * as core from '@actions/core'; import * as core from '@actions/core';
import { exec } from '@actions/exec'; import { exec } from '@actions/exec';
import * as io from '@actions/io';
import * as toolCache from '@actions/tool-cache';
import * as os from 'os'; import * as os from 'os';
import * as path from 'path';
import * as semver from 'semver';
import * as git from './git';
import { selectVersion } from './versions'; import { selectVersion } from './versions';
import { winInstall } from './win-install';
async function winInstall(version: string, sha: string): Promise<void> { import { unixInstall } from './unix-install';
let toolDir = toolCache.find('xmake', version);
if (!toolDir) {
const installer = await core.group(`download xmake ${version}`, async () => {
let url = "";
if (version.startsWith("branch@")) {
// we only use appveyor ci artifacts for branch version
const arch = os.arch() === 'x64' ? 'x64' : 'x86';
url = `https://ci.appveyor.com/api/projects/waruqi/xmake/artifacts/xmake-installer.exe?branch=${sha}&pr=false&job=Image%3A+Visual+Studio+2017%3B+Platform%3A+${arch}`;
} else {
// we cannot use appveyor ci artifacts, the old version links may be broken.
const arch = os.arch() === 'x64' ? 'win64' : 'win32';
url = semver.gt(version, '2.2.6')
? `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.${arch}.exe`
: `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.exe`;
}
core.info(`downloading from ${url}`);
const file = await toolCache.downloadTool(url);
const exe = path.format({ ...path.parse(file), ext: '.exe', base: undefined });
await io.mv(file, exe);
core.info(`downloaded to ${exe}`);
return exe;
});
toolDir = await core.group(`install xmake ${version}`, async () => {
const binDir = path.join(os.tmpdir(), `xmake-${version}`);
core.info(`installing to ${binDir}`);
await exec(`"${installer}" /NOADMIN /S /D=${binDir}`);
core.info(`installed to ${binDir}`);
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version);
await io.rmRF(binDir);
await io.rmRF(installer);
return cacheDir;
});
}
core.addPath(toolDir);
}
async function unixInstall(version: string, sha: string): Promise<void> {
let toolDir = toolCache.find('xmake', version);
if (!toolDir) {
const sourceDir = await core.group(`download xmake ${version}`, () => git.create(sha));
toolDir = await core.group(`install xmake ${version}`, async () => {
await exec('make', ['build'], { cwd: sourceDir });
const binDir = path.join(os.tmpdir(), `xmake-${version}-${sha}`);
await exec('make', ['install', `prefix=${binDir}`], { cwd: sourceDir });
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version);
await io.rmRF(binDir);
await git.cleanup(sha);
return cacheDir;
});
}
// for versions 2.3.2 and above, xmake will be installed directly into the bin directory, and no script will be used to wrap it.
if (version.startsWith("branch@") || semver.gt(version, '2.3.1')) {
core.addPath(path.join(toolDir, 'bin'));
} else {
core.addPath(path.join(toolDir, 'share', 'xmake')); // only for <= 2.3.1
}
}
async function run(): Promise<void> { async function run(): Promise<void> {
try { try {
const { version, sha } = await selectVersion(); const version = await selectVersion();
if (os.platform() === 'win32' || os.platform() === 'cygwin') await winInstall(version, sha); if (os.platform() === 'win32' || os.platform() === 'cygwin') await winInstall(version);
else await unixInstall(version, sha); else await unixInstall(version);
await exec('xmake --version'); await exec('xmake --version');
} catch (error) { } catch (error) {
core.setFailed(error.message); core.setFailed(error.message);
} }
} }
run().catch(e => core.error(e)); run().catch((e) => core.error(e));
+31
View File
@@ -0,0 +1,31 @@
import * as core from '@actions/core';
import { exec } from '@actions/exec';
import * as io from '@actions/io';
import * as toolCache from '@actions/tool-cache';
import * as os from 'os';
import * as path from 'path';
import * as semver from 'semver';
import * as git from './git';
import { Version } from './versions';
export async function unixInstall(version: Version): Promise<void> {
let toolDir = toolCache.find('xmake', version.version);
if (!toolDir) {
const sourceDir = await core.group(`download xmake ${version}`, () => git.create(version.sha));
toolDir = await core.group(`install xmake ${version}`, async () => {
await exec('make', ['build'], { cwd: sourceDir });
const binDir = path.join(os.tmpdir(), `xmake-${version.sha}`);
await exec('make', ['install', `prefix=${binDir}`], { cwd: sourceDir });
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version.version);
await io.rmRF(binDir);
await git.cleanup(version.sha);
return cacheDir;
});
}
// for versions 2.3.2 and above, xmake will be installed directly into the bin directory, and no script will be used to wrap it.
if (version.type !== 'tags' || semver.gt(version.version, '2.3.1')) {
core.addPath(path.join(toolDir, 'bin'));
} else {
core.addPath(path.join(toolDir, 'share', 'xmake')); // only for <= 2.3.1
}
}
+294 -11
View File
@@ -1,10 +1,260 @@
jest.mock('./git', () => ({ jest.mock('./git', () => ({
lsRemote() { lsRemote() {
return { return {
'1.0.0': '100000000', heads: {
'1.0.1': '100000001', dev: 'e3b63b2f0103855c940fa8683610cd02895450d1',
'2.0.0': '200000000', master: 'efad01e547f30d66d90e486c91c3afa0dbaceed3',
'2.0.1': '200000001', test: '18f0605f2e1764d4c07fa4f9fc24274275e1562c',
},
tags: {
'v1.0.1': '723ec3e970e17f48a601fe2a919b9802b5e516fa',
'v1.0.2': '84fa20ca3ded99b9667609c5cb2e56b2308c8e4b',
'v1.0.3': 'e56812a09d3677957c41bccc8988599208e3b49a',
'v1.0.4': '825dda9d93448ba783e18f7947eef0b4eb07942e',
'v2.0.1': '432fd6a40018f4c29e08f1d4cadf1ccc387a0cff',
'v2.0.2': 'd24fcddbc2f1093f3943a917d99c5a8989ef2644',
'v2.0.3': 'b5f21a05b1cdaf46314238b4cc665976294df1da',
'v2.0.4': '2b15a1b5b149e5156e22358f3d29b4de63473376',
'v2.0.5': 'b168ce05d763957ed05844141d77d155bf842e7a',
'v2.1.1': '5ba22ca230c3f3f9477491df6d39f11d53132fb1',
'v2.1.2': 'bf69a2413117cf21c53bde1edbda713e77d4fd9b',
'v2.1.3': '248b2cc8a96d41445a2e46d259d14fea8e4203ec',
'v2.1.4': '1d94a23a7db35631f4b33b8b0b3968d0e62ffe2a',
'v2.1.5': '72f68f941f9b6d07f71811fe403a2dc178270af0',
'v2.1.6': '7ea60d24da152469258a4cb35b3ce591ea2fd961',
'v2.1.7': 'a04725662933fbbe3ad4a319d03267fc32907242',
'v2.1.8': '6c3f42dad5840210ee7294ca295f6c7b18c32291',
'v2.1.9': '0f1e8530e89a9432678ed6fe4fef25d0485d1293',
'v2.2.1': 'f15ff1ca73b02ff5f522c9fe59004331b1b410fb',
'v2.2.2': '18a42e0e8980e3edc39198b18c5c4b9a464ea381',
'v2.2.3': 'c4d0e69abf2b9caa88b997ca1f2935b6e0b00c9f',
'v2.2.5': 'd71a01615883fffa53fbd28e578db14353628a52',
'v2.2.6': 'eb60a76b7454975d151f2d8b5d9e19b26d561c2d',
'v2.2.7': '72bd93de8dd64cc5de8986860819a5873ce08fe5',
'v2.2.8': '6a2e390a79c4f0444a03b566d4bf24849a6ee3a3',
'v2.2.9': '4c22b7a7823518d538a81081d2e795b9ce4403e2',
'v2.3.1': 'f6155f883fd6377e0ee5002425f84f05eb420bef',
'v2.3.2': '31bacc4f76101e6a865ec254c48d8bcba456378f',
},
pull: {
'8': { head: '7e3ee3281df2b4caffebe25c87e871ba682dd701' },
'11': {
head: 'a18d2890ee7615f000b3a6b35150733e2e0013e3',
merge: 'ac07a6f13d09ba445af6ba403647f09c6f10dc9b',
},
'23': {
head: 'c33fd5a8b3e7ff7692630bbc8f5d5b6166502493',
merge: '9041fc8587c9b797440ec2f58deb4626de688010',
},
'24': { head: '5777dbc4397360e21e26466634cfddc633531054' },
'28': {
head: 'a3a28f8abdfe8711b2e4d7496ade02e910070e9f',
merge: '3bb5cf13cfa93ab186e7df168dce87718914696b',
},
'29': { head: '9400826a6fb06bbe08c23550c063eddafa65fe4b' },
'38': { head: '745c8f9a3ad7d4c0282fcfbb108bfb053864cbbc' },
'45': { head: '0a8ae5b98d2297bbad38fbf96cc78b373ac6f4ff' },
'52': { head: 'c53c28bc7b0cd59ea984a3c687273aa47d608c2a' },
'59': { head: '1e766da707d9b1075144303755f4e772fa33193d' },
'61': {
head: '75df3c9a5dafac83a8227ce84b004d3450b10c38',
merge: '08962c4c13c6eea78e3c840711b030d30afebeb4',
},
'63': { head: 'c3fc0841da49c875cadf225ed2da2dc624c1c72f' },
'65': {
head: '7c6dca6fe620ee41cd09162bc31d2ab0ab371832',
merge: '8c50b1e623668850f936ff980080425aedb7fac9',
},
'72': {
head: 'db0f89089bab6a8b6444712b48d4e05d36b05bf4',
merge: '3cf6fc8c23edfa66dff224e884a7faed8c2ecf02',
},
'74': { head: 'e9dde75d0f1159fda52b05f10646eae2cbdfc589' },
'75': { head: '3b9b9fb9c1c302be15e87ffe47309b2c6bc8eaec' },
'76': { head: '630f5f17601e5a35fb8b2e03fd7e3aad7af76c02' },
'77': { head: '61ae623bda980eeb65f5f26c86e9a246a43b93cd' },
'78': { head: '831481cdfbf0905b543ad503950233d7736b97d6' },
'80': { head: '52c8ee6e3a5782f49e19bb1b4b9c8fa79661c0e0' },
'81': { head: 'a145b7c6e0e491df3bc96a8b55201bacf6d73c77' },
'82': { head: '55c84b7fc414036f783396b8e8f937c032dc2f34' },
'84': { head: 'da6e4cce0e4c1736db0898d53c16ac8ca0441846' },
'85': { head: '05590ed02faa985c7b358d4c10126db549e50a77' },
'90': { head: 'c57aa4cf4463f33d3deaf8d58e42abbbd83b0e1b' },
'91': { head: 'f04981e7a207a25ece6047e83ac3c34c8747e89b' },
'92': {
head: 'b226dc77e49c31bf41ca55440aede275a642cb0a',
merge: '02f98269a1d7580621fedd809a182a47bf832dd6',
},
'93': { head: '37b4a7647163afdd392c7afcc61955244b6117cb' },
'97': { head: 'd35751770b68b1daa7154e3dfbae4169e71af4dd' },
'98': { head: '3687f2a29216e84aa182738e91bb0046a3950916' },
'100': {
head: '4f02b28754d131cbc3354a05535382eefd729231',
merge: '0cd4dc9a46b7418e8471c758d6003e4e4d34ce87',
},
'102': {
head: '0042b79375fd532220f9e9639ca6dfdc9007265a',
merge: '6eceac557545ef3022e7401ef3daff235694fde3',
},
'103': { head: 'cbd86c9b25592b81dd010b6fa2e7ce52c31f50db' },
'104': { head: 'e0be61b29d1d88ad7daa5f876faaf296e5935f9c' },
'105': { head: '4456dbd2f7b2f96812ed00d67cf484178375931c' },
'107': { head: '3f3b52d9b053a38b38557bc3a3e9aeb75d749350' },
'108': { head: 'b54b263ab4f05564cc463a53d1efedc1c3703f2f' },
'110': { head: 'b6724648232ed892301457c05cf5ec4deaefc2ed' },
'112': { head: 'ba4864ad076d07320b9d0f0b4b11b3b22644031e' },
'113': { head: '2cb7a91bf266680266de51636ce6620cbecc9362' },
'114': { head: '1ad0641672627b5ae2cc417b73614c6ce842bb12' },
'115': { head: '67a5ad78de9453d14b562cd7c3f2a4364e370d24' },
'116': { head: '98a844e670ee733c1036947efd9099f7763fb544' },
'118': { head: 'f2d1fc547a2f57da992b947cc3b3f615f9f2d34d' },
'119': { head: '64645daebde9aceaeea7f24c9156cdaa4ac5e035' },
'131': { head: '28353b3a76db9592acb23fed82461c07c8d6265b' },
'187': { head: '92ea65b345d93a88777d02cccaedbccb12fe5fc3' },
'188': { head: 'be03b89501a829e19932f86f491df80962bfe8d5' },
'198': { head: '49298d9ead57f63b85f2a8ad9e072915617cc58d' },
'204': {
head: 'ac21734c1d1ae754146754f2656451091ff22014',
merge: '39fcf9250a92c05eb837f82aefa0e1dc49660518',
},
'205': { head: 'd74715b3615e171776a6e5b9971d2ec2bff115d5' },
'210': { head: '9ee12112e49db451a49a66d77dd2990d9f6ddab9' },
'214': { head: 'b5b1c689f508068ffbde704194b08569151e383a' },
'215': { head: '05b6182def036b36c8e4aeac8cdc55441fc4a4db' },
'216': { head: 'e8af37c32549f54059f6e7635064c623b80c039c' },
'217': {
head: '905a8607f3f31ab9efeb68684d40df8284683f3a',
merge: '2f93475049575ed5e44699daa378239bc141aad3',
},
'221': { head: 'ca7b50a40cf7c120d49ca8164f9a54c289dd5743' },
'228': { head: '92f1645146c22699f4e2b567451f87fb0dbf2fc6' },
'231': { head: 'ca72eb0cf60c3e0747444859d9fc738b98ecc4b5' },
'235': { head: '69efc61859543613abc7ec553029852cd5693d17' },
'245': { head: '5d33e86c3190d37d04ac26da804db3c53218ae7e' },
'247': { head: '9ce75001587cc47db9c980dd99ba28d17b9cc7e8' },
'248': { head: '8c6cd6b4dc6b6a6b18150480d9711595f0043f26' },
'249': { head: 'a7543cbdfa7fcbe04178d53add85de04b54933b7' },
'267': { head: '7d0901f3014960bd53afa0918f21c4a53094faad' },
'270': { head: 'c584463f1cd693c2a5df78611816697343ac6ac4' },
'273': { head: 'da267497a9677d4cfc7175d462494e1334823476' },
'276': { head: '8a80645e856deeaa1df5ad6a2ef91a9c4d475cc8' },
'282': { head: 'f9df7b9a3594c8613e6f54003add9ffdaa7e4b49' },
'286': { head: '4c59f260714576e2c23aa068b4a1beae62756fd3' },
'298': { head: '4175116555b4337ad6cd423373462eb9107617ec' },
'303': { head: 'f114c56acb0264a094a99ceff5f45735ea17e54c' },
'333': { head: '0f2f41de06a0a7e2852ae9d6b01fd8cde6da4965' },
'365': { head: '88b7af92f6988abb30b72095592c74a245c06507' },
'380': { head: '5462c4ef4fb470c5878a46cb809203fc1459998f' },
'381': { head: 'bd186f9cf5a142aec24bf2d17eff4393487fbd87' },
'384': { head: 'e3e646d4e39695b398d719c3340345c8f53750bc' },
'387': { head: '84a97cf3471a039bbde45491d5db8eb470b3373e' },
'392': { head: '4572f4895e11712ba620097cb504195abc060df2' },
'394': { head: 'e34797ed62a4f5f7bab841a0982b3138300d637c' },
'395': { head: 'c2a04219cf41346bfa2f4871eda8915d43f38f09' },
'398': { head: '0e3f93ad95a57e2dbc3360c26292dacb767f8f54' },
'402': { head: '9cebcd69efd4587e3ac56b23e488fbbc9b359f48' },
'417': { head: '59a6c75f86de2cb080839910fa9395ccf1089083' },
'418': { head: 'c2c491ab4bedea3be7b1a6aca8bb4e65a9d763db' },
'420': { head: 'c9208456c2d0c8175d19290a50ccb6fdf95139bb' },
'421': { head: '82277e5222154ff4463127681f2d18abb07d7f4a' },
'422': { head: 'ace80d7f0b4b6e06a53b7d4bbad3eab28cd65915' },
'430': { head: '117f22a385f0118eac2aa6ef8fedf4b29062e973' },
'431': { head: '52d8932c29ccf051e2cd400493c38ff1c90f4ccb' },
'432': { head: '18ac66eebce733b1112b419f9896cdfa2ede395a' },
'435': { head: 'acad517e5ce23a82979a87155bb639f91098adaf' },
'438': { head: 'b4c94415e8c7ee24cb3f8c0ba6e0536282121adf' },
'441': { head: 'a674530614fbce03122c7d9c72712a6e7a23acb4' },
'443': { head: '34cf94bc1650a6e909e9fa3ee88d5cc3cb46eec2' },
'444': { head: '8049d92b3e9aef35e4f124e5ae361bdd1f5c5435' },
'445': { head: '69c93dba3591d9404bc6b38d84aca731db84ad15' },
'447': { head: 'a483b7a9f28c232d66a5c7596926e5c31af865e2' },
'448': { head: '9c2c26c81c8c43bc1a834522bc085392c766e7e0' },
'449': { head: '52f3bbe24e365b28f4bcd1e277d178a2561a1e8b' },
'450': { head: 'fddedb324fbff0546c2cbe304fe95c8e254da6fb' },
'451': { head: '17332ad1070bb6190bcd24f0a96cca823b4d8d26' },
'452': { head: 'b357d95010f883bff0d1a92ba2390f4c0a50e8ec' },
'453': { head: '3ac4190baf80ca6734a35acdfd5ac5f089acbe3e' },
'454': { head: '3a5a625a1f498350b05eaa70066c9e77e32ee85f' },
'455': { head: '98d4504577b586ef2398346a0db2743081cf03a8' },
'457': { head: '72f86392dd7bf482f409dfe4dd00219ef422ad9c' },
'458': { head: '4e01df47f2e594796ba6b36858cbe924533dd7aa' },
'459': { head: '608f198b3ab87f83b2458e58c1f7dcc6a2beebc0' },
'460': { head: 'f264f50f6c1ec488c1608bf69c463d57cc7ccca9' },
'462': { head: '5d8c5b6d686b802c48ff52bfe72f188c92509f49' },
'464': { head: 'f38741505acb528f609a8b269c911fc037a03fcc' },
'465': { head: '318bb739dd64d19a4b4d91d8be49b22fc3403cff' },
'468': { head: '117c7cc8a9bea5c9ef65bf00689e1917d91571ec' },
'470': { head: '9f73278f8f7631bc53daba27ffdf84d96068c562' },
'472': { head: '8cd138e181b63fa327b4b3caa3250fb1dce4b407' },
'473': { head: '45a4253be8540240758a69eb8c0c103a3edde057' },
'475': { head: 'b93b3d0cc8241e099fc508ffb1f9dace6ab8586a' },
'476': { head: '639552074da609025ca6609350c90263ebe684e7' },
'477': { head: 'dae10753450c75af10c300dbaf00653b15a27e87' },
'478': { head: '9ec42e0f156e0f82068eabbab6ccbfd17549486a' },
'481': { head: 'b11c6f57662624732501045e6cccf6b6188dacee' },
'482': { head: '887d8d84223de495f0442baa9ae143c382747285' },
'483': { head: '4cc123809f92db0a32f4fedbcbf4862484406da0' },
'484': { head: '7cff50433386d8c7793884cddd1eb6e1c3c2681e' },
'485': { head: '9ce1420b43db72da9d6a57bcc3d4ba478d614484' },
'486': { head: '18714381a6257fd93c93344cb559fc409f6b1017' },
'488': { head: 'ca45f8941e0b69582021d34061873c8752f76154' },
'491': { head: 'e7bcde1188f02ac07e64f6b9a798e0b1ca1e049c' },
'492': { head: '09f10b74034b040a6cb56640cd2c2f1027051b50' },
'495': { head: 'a6396622cdb3af334c1ec044d5a699affa0dccc2' },
'496': { head: 'e5ddd73878d170312580a9284edd5521a2115873' },
'497': { head: '74909f788acd34051cf4d32e94b5bcfe1f2c292b' },
'498': { head: '08c5864bbfcdc8238716ca8929a71554d08dabfd' },
'499': { head: 'bc6896917a2e150adb5aa2a063f72fc85d2ab9f5' },
'500': { head: 'ff0595d384a9b4e7656e0c44f327f7614e2a8fd6' },
'501': { head: '81acc02e79365957d37e98fbe70887edccfebba6' },
'503': { head: '145358ba831e7a90f275118a0556787754fe2fa6' },
'505': { head: '1cf79ba882fb24eca13829c12f6e39584ccd1f5f' },
'506': { head: '49f14868b5fa9bca4aa2f51ea2b70f9edae89cb6' },
'507': { head: '726997c8d83f2a9dff3bb96685dd35ea555e7b8c' },
'508': { head: 'a99ed5924ed00e195c0dacc036625bdb4d10f9a8' },
'509': { head: '7d4023cf698bff82b2c0f2b4aad86286d4890b49' },
'510': { head: 'fb9a434ada47e47e543f62e353c7375f93f82c39' },
'523': { head: '0bdcae97d8d9b2b3afe725f9b857a9994d3b28fa' },
'525': { head: 'ebe4099e7ea32b023edfc7a5559db5d1d5262e20' },
'526': { head: '454f1c64dae6c213177007885e54a1ab497f4b1b' },
'527': { head: '786c94fb869b6bbcf310e93f3068b795b177fc0b' },
'529': { head: 'df6f615305180ef67c9daa25038af1bc91ff44b0' },
'530': { head: '4f2e25226853830f157a2da79097c527030d42b4' },
'531': { head: '0b57414998b5404f93209f5b06141911cc9af503' },
'534': { head: 'bd4181e0321ec9db4dd6b304db51f5cf6566a484' },
'537': { head: 'b515795919b7eb114032a441564512645fae489c' },
'542': { head: '7ce304f9ee9946471d4ad11e78ea25149a05483f' },
'543': { head: 'f6b1a4866e1c73aafe6decdc6bfc1d99653f2b64' },
'547': { head: '9943cbae2e39a219cd5f889802d9db11aaefda5c' },
'550': { head: '172076db9fa929c5b6dd20a733d15cf28ef092aa' },
'551': { head: 'ff103cd4816ca50102c3bc10906695581c734f60' },
'552': { head: '99a3da1ff1e25e76a2cbf19f2f3a3ff43b6be013' },
'554': { head: '689068989bcda7bd099f920691dc388eae82bd9a' },
'557': { head: '416efddbbac77ecad9be41bdafd36bdea89e25d5' },
'563': { head: '3d72809db048911efec3d52106dd6968349ef4d1' },
'569': { head: 'ce51c2de7c11b6368ce8956329f9ebbe4ffd1b67' },
'593': { head: 'f00316a42943a9a75303658f8d646d35f9e8d1b9' },
'613': { head: '155deaae3ea36460929db9c8f28f2b97a319f54c' },
'625': { head: 'a027cf0843001dd2cb608c1c42cf643f48a56749' },
'628': { head: '23ae1e8af491342ef3e4f899ed0bdb5dd1a1284a' },
'631': { head: '30d4183095aa5dcdb9cbe00b1b48e45ca31424fe' },
'633': { head: '54ba9a0faf46957c3da37366119e0dab52fc02cc' },
'642': { head: 'c68a8ac90d822f74478cc36b6ba5a7e9ac225ee9' },
'655': { head: '6da12e9e3387be62b5b00cba64d1fb4d2e1ac140' },
'664': { head: 'e011000482dccb3e215d0eb895e280de6cda627e' },
'667': { head: 'dc25ac7a87256a0470f523017ee790b29e9b6f2d' },
'669': { head: 'd0b39e229426a336f71a0cc24f6319a47e2ce975' },
'671': { head: 'aa0cd8e58d2effab424214d12ab2122ff39a0f4a' },
'672': { head: '0cb3bd5f5aa0605835d7c785bd58e9d75b362fdd' },
'673': { head: '97b0e9c8e673325545d2e55288d66a2dd99d1cc0' },
'674': { head: '5d7a6efa13021da59a370bb011f4caf494b35da3' },
'678': { head: '98d788b6df2e95725e2435fff8469deb3ff74e8c' },
'679': { head: 'ea8ee4a153af424e238ed0e0772c32bfb0a881b1' },
'682': { head: 'fd12dc4bd31ebe9dc6370ab150c39441ce4d6061' },
'686': { head: 'd76b2b96872e3860af34b3256bc1df2189835829' },
'703': { head: '3b0f6e396c4a1d53b1b046c416681da6229fbdce' },
'708': { head: 'af28dba1f52990cb7b6c3c8f69f1f1bcf017c90a' },
},
}; };
}, },
})); }));
@@ -13,23 +263,56 @@ import { selectVersion } from './versions';
describe('selectVersion', () => { describe('selectVersion', () => {
it('should return correct version for latest', async () => { it('should return correct version for latest', async () => {
await expect(selectVersion('latest')).resolves.toEqual({ await expect(selectVersion('latest')).resolves.toEqual({
version: '2.0.1', version: 'v2.3.2',
sha: '200000001', sha: '31bacc4f76101e6a865ec254c48d8bcba456378f',
type: 'tags',
}); });
}); });
it('should throw for no matched', async () => { it('should throw for no matched', async () => {
await expect(selectVersion('1.2.3')).rejects.toThrowError(/No matched releases of xmake-version/); await expect(selectVersion('0.2.3')).rejects.toThrowError('No matched releases of xmake-version 0.2.3');
await expect(selectVersion('v0.2.3')).rejects.toThrowError('No matched releases of xmake-version 0.2.3');
await expect(selectVersion('<0.2.3 > 0.1')).rejects.toThrowError('No matched releases of xmake-version <0.2.3 >=0.2.0');
}); });
it('should return correct version for given', async () => { it('should return correct version for given', async () => {
await expect(selectVersion('v1.0.1')).resolves.toEqual({ await expect(selectVersion('v1.0.1')).resolves.toEqual({
version: '1.0.1', version: 'v1.0.1',
sha: '100000001', sha: '723ec3e970e17f48a601fe2a919b9802b5e516fa',
type: 'tags',
}); });
}); });
it('should return correct version for range', async () => { it('should return correct version for range', async () => {
await expect(selectVersion('>=2')).resolves.toEqual({ await expect(selectVersion('>=2')).resolves.toEqual({
version: '2.0.1', version: 'v2.3.2',
sha: '200000001', sha: '31bacc4f76101e6a865ec254c48d8bcba456378f',
type: 'tags',
}); });
}); });
it('should return correct branch', async () => {
await expect(selectVersion('branch@master')).resolves.toEqual({
version: 'master',
sha: 'efad01e547f30d66d90e486c91c3afa0dbaceed3',
type: 'heads',
});
});
it('should throw not found branch', async () => {
await expect(selectVersion('branch@xxx')).rejects.toThrowError(`Branch xxx not found`);
});
it('should return correct pr', async () => {
await expect(selectVersion('pr@708')).resolves.toEqual({
version: '#708',
sha: 'af28dba1f52990cb7b6c3c8f69f1f1bcf017c90a',
type: 'pull',
});
});
it('should throw not found pr', async () => {
await expect(selectVersion('pr@999')).rejects.toThrowError('Pull requrest #999 not found');
});
it('should throw invalid pr', async () => {
await expect(selectVersion('pr@xxx')).rejects.toThrowError('Invalid pull requrest xxx, should be a positive integer');
});
}); });
+72 -17
View File
@@ -1,33 +1,88 @@
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as semver from 'semver'; import * as semver from 'semver';
import { lsRemote } from './git'; import { lsRemote, RefDic } from './git';
export async function selectVersion(version?: string): Promise<{ version: string; sha: string }> { export interface Version {
version: string;
sha: string;
type: keyof RefDic;
}
class VersionImpl implements Version {
constructor(readonly version: string, readonly sha: string, readonly type: keyof RefDic, toString: string) {
this.#string = toString;
}
readonly #string: string;
toString(): string {
return this.#string;
}
}
async function selectBranch(branch: string): Promise<Version> {
const versions = await lsRemote();
if (branch in versions.heads) {
return new VersionImpl(branch, versions.heads[branch], 'heads', `branch ${branch}`);
}
throw new Error(`Branch ${branch} not found`);
}
async function selectPr(pr: number): Promise<Version> {
const versions = await lsRemote();
if (pr in versions.pull) {
const prheads = versions.pull[pr];
const sha = prheads.merge ?? prheads.head;
if (sha) {
return new VersionImpl(`#${pr}`, sha, 'pull', `pull request #${pr}`);
}
}
throw new Error(`Pull requrest #${pr} not found`);
}
async function selectSemver(version: string): Promise<Version> {
// check version valid
const v = new semver.Range(version);
if (!v) {
throw new Error(`Invalid semver`);
}
const versions = await lsRemote();
const ver = semver.maxSatisfying(Object.keys(versions.tags), v);
if (!ver) {
throw new Error(`No matched releases of xmake-version ${v.format()}`);
}
const sha = versions.tags[ver];
return new VersionImpl(ver, sha, 'tags', ver);
}
export async function selectVersion(version?: string): Promise<Version> {
// get version string // get version string
version = (version ?? core.getInput('xmake-version')) || 'latest'; version = (version ?? core.getInput('xmake-version')) || 'latest';
if (version.toLowerCase() === 'latest') version = ''; if (version.toLowerCase() === 'latest') version = '';
let ret: Version | undefined;
// select branch // select branch
if (version.startsWith('branch@')) { if (version.startsWith('branch@')) {
const branch = version.substr(7); const branch = version.substr('branch@'.length);
core.info(`Selected xmake branch: ${branch}`); ret = await selectBranch(branch);
return { version: version, sha: branch };
} }
// select pr
if (version.startsWith('pr@')) {
const pr = Number.parseInt(version.substr('pr@'.length));
if (Number.isNaN(pr) || pr <= 0) {
throw new Error(`Invalid pull requrest ${version.substr('pr@'.length)}, should be a positive integer`);
}
ret = await selectPr(pr);
}
// select version // select version
version = semver.validRange(version); if (semver.validRange(version)) {
if (!version) { ret = await selectSemver(version);
throw new Error(`Invalid input xmake-version: ${core.getInput('xmake-version')}`); }
if (!ret) {
throw new Error(`Invalid input xmake-version ${core.getInput('xmake-version')}`);
} }
const versions = await lsRemote(); core.info(`Selected xmake ${ret} (commit: ${ret.sha.substr(0, 8)})`);
const ver = semver.maxSatisfying(Object.keys(versions), version); return ret;
if (!ver) {
throw new Error(`No matched releases of xmake-version: ${version}`);
}
const sha = versions[ver];
core.info(`Selected xmake v${ver} (commit: ${sha.substr(0, 8)})`);
return { version: ver, sha };
} }
+47
View File
@@ -0,0 +1,47 @@
import * as core from '@actions/core';
import { exec } from '@actions/exec';
import * as io from '@actions/io';
import * as toolCache from '@actions/tool-cache';
import * as os from 'os';
import * as path from 'path';
import * as semver from 'semver';
import { Version } from './versions';
export async function winInstall(version: Version): Promise<void> {
let toolDir = toolCache.find('xmake', version.version);
if (!toolDir) {
const installer = await core.group(`download xmake ${version}`, async () => {
let url = '';
if (version.type === 'heads') {
// we only use appveyor ci artifacts for branch version
const arch = os.arch() === 'x64' ? 'x64' : 'x86';
url = `https://ci.appveyor.com/api/projects/waruqi/xmake/artifacts/xmake-installer.exe?branch=${version.version}&pr=false&job=Image%3A+Visual+Studio+2017%3B+Platform%3A+${arch}`;
} else if (version.type === 'pull') {
throw new Error('PR builds for windows is not supported');
} else {
// we cannot use appveyor ci artifacts, the old version links may be broken.
const arch = os.arch() === 'x64' ? 'win64' : 'win32';
url = semver.gt(version.version, '2.2.6')
? `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.${arch}.exe`
: `https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.exe`;
}
core.info(`downloading from ${url}`);
const file = await toolCache.downloadTool(url);
const exe = path.format({ ...path.parse(file), ext: '.exe', base: undefined });
await io.mv(file, exe);
core.info(`downloaded to ${exe}`);
return exe;
});
toolDir = await core.group(`install xmake ${version}`, async () => {
const binDir = path.join(os.tmpdir(), `xmake-${version.sha}`);
core.info(`installing to ${binDir}`);
await exec(`"${installer}" /NOADMIN /S /D=${binDir}`);
core.info(`installed to ${binDir}`);
const cacheDir = await toolCache.cacheDir(binDir, 'xmake', version.version);
await io.rmRF(binDir);
await io.rmRF(installer);
return cacheDir;
});
}
core.addPath(toolDir);
}
+451 -519
View File
File diff suppressed because it is too large Load Diff