diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3991f4b..b75ef54 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,9 @@ jobs: steps: - 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 with: xmake-version: latest diff --git a/dist/git.js b/dist/git.js index 4b39d06..162df55 100644 --- a/dist/git.js +++ b/dist/git.js @@ -5,21 +5,33 @@ const io = require("@actions/io"); const os = require("os"); const path = require("path"); function makeOpt(ref) { - return { cwd: path.join(os.tmpdir(), `xmake-${ref}`) }; + return { cwd: path.join(os.tmpdir(), `xmake-git-${ref}`) }; } async function lsRemote() { 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, listeners: { stdout: d => (out += d.toString()), }, }); - const data = {}; + const data = { heads: {}, tags: {}, pull: {} }; out.split('\n').forEach(line => { const [ref, tag] = line.trim().split('\t'); - if (ref && tag && tag.startsWith('refs/tags/v')) { - data[tag.substring('refs/tags/v'.length)] = ref; + if (ref && tag && tag.startsWith('refs/')) { + 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; diff --git a/dist/index.js b/dist/index.js index a65ca3c..76e05de 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2,79 +2,17 @@ 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"); const versions_1 = require("./versions"); -async function winInstall(version, sha) { - 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_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 - } -} +const win_install_1 = require("./win-install"); +const unix_install_1 = require("./unix-install"); async function run() { try { - const { version, sha } = await versions_1.selectVersion(); + const version = await versions_1.selectVersion(); if (os.platform() === 'win32' || os.platform() === 'cygwin') - await winInstall(version, sha); + await win_install_1.winInstall(version); else - await unixInstall(version, sha); + await unix_install_1.unixInstall(version); await exec_1.exec('xmake --version'); } catch (error) { diff --git a/dist/unix-install.js b/dist/unix-install.js new file mode 100644 index 0000000..f02fb51 --- /dev/null +++ b/dist/unix-install.js @@ -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; diff --git a/dist/versions.js b/dist/versions.js index 70048a8..c5a7ae6 100644 --- a/dist/versions.js +++ b/dist/versions.js @@ -1,31 +1,95 @@ "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 }); const core = require("@actions/core"); const semver = require("semver"); 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) { // get version string version = (version !== null && version !== void 0 ? version : core.getInput('xmake-version')) || 'latest'; if (version.toLowerCase() === 'latest') version = ''; + let ret; // select branch if (version.startsWith('branch@')) { - const branch = version.substr(7); - core.info(`Selected xmake branch: ${branch}`); - return { version: version, sha: branch }; + const branch = version.substr('branch@'.length); + ret = await selectBranch(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 - version = semver.validRange(version); - if (!version) { - throw new Error(`Invalid input xmake-version: ${core.getInput('xmake-version')}`); + if (semver.validRange(version)) { + ret = await selectSemver(version); } - const versions = await git_1.lsRemote(); - const ver = semver.maxSatisfying(Object.keys(versions), version); - if (!ver) { - throw new Error(`No matched releases of xmake-version: ${version}`); + if (!ret) { + throw new Error(`Invalid input xmake-version ${core.getInput('xmake-version')}`); } - const sha = versions[ver]; - core.info(`Selected xmake v${ver} (commit: ${sha.substr(0, 8)})`); - return { version: ver, sha }; + core.info(`Selected xmake ${ret} (commit: ${ret.sha.substr(0, 8)})`); + return ret; } exports.selectVersion = selectVersion; diff --git a/dist/win-install.js b/dist/win-install.js new file mode 100644 index 0000000..bf9f00f --- /dev/null +++ b/dist/win-install.js @@ -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; diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver index 5aaadf4..6f6e6c7 120000 --- a/node_modules/.bin/semver +++ b/node_modules/.bin/semver @@ -1 +1,15 @@ -../semver/bin/semver.js \ No newline at end of file +#!/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 diff --git a/node_modules/.bin/semver.cmd b/node_modules/.bin/semver.cmd new file mode 100644 index 0000000..152bc92 --- /dev/null +++ b/node_modules/.bin/semver.cmd @@ -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" %* +) \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid index b3e45bc..f3bfcf4 120000 --- a/node_modules/.bin/uuid +++ b/node_modules/.bin/uuid @@ -1 +1,15 @@ -../uuid/bin/uuid \ No newline at end of file +#!/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 diff --git a/node_modules/.bin/uuid.cmd b/node_modules/.bin/uuid.cmd new file mode 100644 index 0000000..da52d68 --- /dev/null +++ b/node_modules/.bin/uuid.cmd @@ -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" %* +) \ No newline at end of file diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity index 83ad8e6..c8b8a2e 100644 --- a/node_modules/.yarn-integrity +++ b/node_modules/.yarn-integrity @@ -1,9 +1,11 @@ { - "systemParams": "darwin-x64-72", + "systemParams": "win32-x64-72", "modulesFolders": [ "node_modules" ], - "flags": [], + "flags": [ + "production" + ], "linkedModules": [], "topLevelPatterns": [ "@actions/core@^1.1.3", @@ -11,18 +13,18 @@ "@actions/io@^1.0.1", "@actions/tool-cache@^1.1.2", "@types/jest@^25.1.4", - "@types/node@^13.9.2", + "@types/node@^13.9.8", "@types/semver@^7.1.0", - "@typescript-eslint/eslint-plugin@^2.23.0", - "@typescript-eslint/parser@^2.23.0", - "eslint-config-prettier@^6.10.0", + "@typescript-eslint/eslint-plugin@^2.26.0", + "@typescript-eslint/parser@^2.26.0", + "eslint-config-prettier@^6.10.1", "eslint-plugin-prettier@^3.1.2", "eslint@^6.8.0", - "jest@^25.1.0", - "prettier@^1.19.1", + "jest@^25.2.4", + "prettier@^2.0.2", "rimraf@^3.0.2", "semver@^7.1.3", - "ts-jest@^25.2.1", + "ts-jest@^25.3.0", "typescript@^3.8.3" ], "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", "@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", - "@jest/console@^25.1.0": "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.1.0.tgz#1fc765d44a1e11aec5029c08e798246bd37075ab", - "@jest/core@^25.1.0": "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.1.0.tgz#3d4634fc3348bb2d7532915d67781cdac0869e47", - "@jest/environment@^25.1.0": "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.1.0.tgz#4a97f64770c9d075f5d2b662b5169207f0a3f787", - "@jest/fake-timers@^25.1.0": "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.1.0.tgz#a1e0eff51ffdbb13ee81f35b52e0c1c11a350ce8", - "@jest/reporters@^25.1.0": "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-25.1.0.tgz#9178ecf136c48f125674ac328f82ddea46e482b0", - "@jest/source-map@^25.1.0": "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-25.1.0.tgz#b012e6c469ccdbc379413f5c1b1ffb7ba7034fb0", - "@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-sequencer@^25.1.0": "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.1.0.tgz#4df47208542f0065f356fcdb80026e3c042851ab", - "@jest/transform@^25.1.0": "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.1.0.tgz#221f354f512b4628d88ce776d5b9e601028ea9da", + "@jest/console@^25.2.3": "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.2.3.tgz#38ac19b916ff61457173799239472659e1a67c39", + "@jest/core@^25.2.4": "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.2.4.tgz#382ef80369d3311f1df79db1ee19e958ae95cdad", + "@jest/environment@^25.2.4": "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.2.4.tgz#74f4d8dd87b427434d0b822cde37bc0e78f3e28b", + "@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.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.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.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.2.4": "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.2.4.tgz#28364aeddec140c696324114f63570f3de536c87", + "@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.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", "@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", @@ -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/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@^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/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@^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/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/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/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/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.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.26.0": "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.26.0.tgz#385463615818b33acb72a25b39c03579df93d76f", + "@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", "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", @@ -137,10 +141,10 @@ "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", "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-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-preset-jest@^25.1.0": "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33", + "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.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", "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", @@ -200,29 +204,27 @@ "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", "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", - "define-properties@^1.1.3": "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-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@^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", "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.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", "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", "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", "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", "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-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@^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@^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", @@ -240,7 +242,7 @@ "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", "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@^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", @@ -269,7 +271,6 @@ "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", "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", "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", @@ -293,13 +294,10 @@ "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@^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@^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@^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-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", @@ -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@^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-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-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-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@^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", @@ -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.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-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@^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-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-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", - "jest-changed-files@^25.1.0": "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-25.1.0.tgz#73dae9a7d9949fdfa5c278438ce8f2ff3ec78131", - "jest-cli@^25.1.0": "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.1.0.tgz#75f0b09cf6c4f39360906bf78d580be1048e4372", - "jest-config@^25.1.0": "https://registry.npm.taobao.org/jest-config/download/jest-config-25.1.0.tgz#d114e4778c045d3ef239452213b7ad3ec1cbea90", + "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.2.4": "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.2.4.tgz#021c2383904696597abc060dcb133c82ebd8bfcc", + "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-docblock@^25.1.0": "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-25.1.0.tgz#0f44bea3d6ca6dfc38373d465b347c8818eccb64", - "jest-each@^25.1.0": "https://registry.npm.taobao.org/jest-each/download/jest-each-25.1.0.tgz#a6b260992bdf451c2d64a0ccbb3ac25e9b44c26a", - "jest-environment-jsdom@^25.1.0": "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.1.0.tgz#6777ab8b3e90fd076801efd3bff8e98694ab43c3", - "jest-environment-node@^25.1.0": "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-25.1.0.tgz#797bd89b378cf0bd794dc8e3dca6ef21126776db", + "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-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-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-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-haste-map@^25.1.0": "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.1.0.tgz#ae12163d284f19906260aa51fd405b5b2e5a4ad3", - "jest-jasmine2@^25.1.0": "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.1.0.tgz#681b59158a430f08d5d0c1cce4f01353e4b48137", - "jest-leak-detector@^25.1.0": "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-25.1.0.tgz#ed6872d15aa1c72c0732d01bd073dacc7c38b5c6", - "jest-matcher-utils@^25.1.0": "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220", - "jest-message-util@^25.1.0": "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-25.1.0.tgz#702a9a5cb05c144b9aa73f06e17faa219389845e", - "jest-mock@^25.1.0": "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.1.0.tgz#411d549e1b326b7350b2e97303a64715c28615fd", + "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-haste-map@^25.2.3": "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.2.3.tgz#2649392b5af191f0167a27bfb62e5d96d7eaaade", + "jest-jasmine2@^25.2.4": "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.2.4.tgz#5f77de83e1027f0c7588137055a80da773872374", + "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-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-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-regex-util@^25.1.0": "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-25.1.0.tgz#efaf75914267741838e01de24da07b2192d16d87", - "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@^25.1.0": "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.1.0.tgz#23d8b6a4892362baf2662877c66aa241fa2eaea3", - "jest-runner@^25.1.0": "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.1.0.tgz#fef433a4d42c89ab0a6b6b268e4a4fbe6b26e812", - "jest-runtime@^25.1.0": "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.1.0.tgz#02683218f2f95aad0f2ec1c9cdb28c1dc0ec0314", - "jest-serializer@^25.1.0": "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-25.1.0.tgz#73096ba90e07d19dec4a0c1dd89c355e2f129e5d", - "jest-snapshot@^25.1.0": "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.1.0.tgz#d5880bd4b31faea100454608e15f8d77b9d221d9", - "jest-util@^25.1.0": "https://registry.npm.taobao.org/jest-util/download/jest-util-25.1.0.tgz#7bc56f7b2abd534910e9fa252692f50624c897d9", - "jest-validate@^25.1.0": "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.1.0.tgz#1469fa19f627bb0a9a98e289f3e9ab6a668c732a", - "jest-watcher@^25.1.0": "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-25.1.0.tgz#97cb4a937f676f64c9fad2d07b824c56808e9806", - "jest-worker@^25.1.0": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a", - "jest@^25.1.0": "https://registry.npm.taobao.org/jest/download/jest-25.1.0.tgz#b85ef1ddba2fdb00d295deebbd13567106d35be9", + "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.2.4": "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.2.4.tgz#2d904400387d74a366dff54badb40a2b3210e733", + "jest-resolve@^25.2.3": "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.2.3.tgz#ababeaf2bb948cb6d2dea8453759116da0fb7842", + "jest-runner@^25.2.4": "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.2.4.tgz#d0daf7c56b4a83b6b675863d5cdcd502c960f9a1", + "jest-runtime@^25.2.4": "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.2.4.tgz#c66a421e115944426b377a7fd331f6c0902cfa56", + "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.2.4": "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.2.4.tgz#08d4517579c864df4280bcc948ceea34327a4ded", + "jest-util@^25.2.3": "https://registry.npm.taobao.org/jest-util/download/jest-util-25.2.3.tgz#0abf95a1d6b96f2de5a3ecd61b36c40a182dc256", + "jest-validate@^25.2.3": "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.2.3.tgz#ecb0f093cf8ae71d15075fb48439b6f78f1fcb5a", + "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.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.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-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", - "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", "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", @@ -434,7 +429,7 @@ "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", "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", "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", @@ -452,13 +447,7 @@ "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", "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.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", "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", @@ -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", "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@^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.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", "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", @@ -502,7 +492,7 @@ "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", "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.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", @@ -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@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.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", "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", @@ -540,14 +531,13 @@ "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", "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.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@^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.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@^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", "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", @@ -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@^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.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.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", @@ -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@~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", - "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.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", @@ -636,7 +624,6 @@ "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", "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", "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", @@ -655,6 +642,7 @@ "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@^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", "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", @@ -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", "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", - "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@^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": [], "artifacts": {} diff --git a/node_modules/@actions/tool-cache/node_modules/.bin/semver b/node_modules/@actions/tool-cache/node_modules/.bin/semver index 5aaadf4..6f6e6c7 120000 --- a/node_modules/@actions/tool-cache/node_modules/.bin/semver +++ b/node_modules/@actions/tool-cache/node_modules/.bin/semver @@ -1 +1,15 @@ -../semver/bin/semver.js \ No newline at end of file +#!/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 diff --git a/node_modules/@actions/tool-cache/node_modules/.bin/semver.cmd b/node_modules/@actions/tool-cache/node_modules/.bin/semver.cmd new file mode 100644 index 0000000..152bc92 --- /dev/null +++ b/node_modules/@actions/tool-cache/node_modules/.bin/semver.cmd @@ -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" %* +) \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/node_modules/.bin/uuid b/node_modules/@actions/tool-cache/node_modules/.bin/uuid index 71fa0ca..4481e8b 120000 --- a/node_modules/@actions/tool-cache/node_modules/.bin/uuid +++ b/node_modules/@actions/tool-cache/node_modules/.bin/uuid @@ -1 +1,15 @@ -../../../../uuid/bin/uuid \ No newline at end of file +#!/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 diff --git a/node_modules/@actions/tool-cache/node_modules/.bin/uuid.cmd b/node_modules/@actions/tool-cache/node_modules/.bin/uuid.cmd new file mode 100644 index 0000000..b9ac0d5 --- /dev/null +++ b/node_modules/@actions/tool-cache/node_modules/.bin/uuid.cmd @@ -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" %* +) \ No newline at end of file diff --git a/package.json b/package.json index 494df35..0156486 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build": "tsc --build ./tsconfig.build.json", "rebuild": "yarn clean && yarn build", "clean": "rimraf dist", - "lint": "eslint --fix src/**/*", + "lint": "eslint --fix src/**/*.ts", "test": "jest", "release": "yarn rebuild && yarn lint && yarn install --production" }, @@ -26,17 +26,17 @@ }, "devDependencies": { "@types/jest": "^25.1.4", - "@types/node": "^13.9.2", + "@types/node": "^13.9.8", "@types/semver": "^7.1.0", - "@typescript-eslint/eslint-plugin": "^2.23.0", - "@typescript-eslint/parser": "^2.23.0", + "@typescript-eslint/eslint-plugin": "^2.26.0", + "@typescript-eslint/parser": "^2.26.0", "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.0", + "eslint-config-prettier": "^6.10.1", "eslint-plugin-prettier": "^3.1.2", - "jest": "^25.1.0", - "prettier": "^1.19.1", + "jest": "^25.2.4", + "prettier": "^2.0.2", "rimraf": "^3.0.2", - "ts-jest": "^25.2.1", + "ts-jest": "^25.3.0", "typescript": "^3.8.3" } } diff --git a/src/git.spec.ts b/src/git.spec.ts index 6ea4370..8d53c6b 100644 --- a/src/git.spec.ts +++ b/src/git.spec.ts @@ -4,11 +4,19 @@ import * as semver from 'semver'; describe('lsRemote', () => { it('should return correct records', async () => { const records = await git.lsRemote(); - expect(Object.keys(records).length).not.toBeLessThan(10); - for (const tag in records) { - const ref = records[tag]; + expect(records).toHaveProperty('heads'); + expect(records).toHaveProperty('tags'); + 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(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); }); diff --git a/src/git.ts b/src/git.ts index 73ef8c6..c058651 100644 --- a/src/git.ts +++ b/src/git.ts @@ -4,22 +4,39 @@ import * as os from 'os'; import * as path from 'path'; 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> { +export type RefDic = { + heads: Record; + tags: Record; + pull: Record; +}; + +export async function lsRemote(): Promise { 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, listeners: { - stdout: d => (out += d.toString()), + stdout: (d) => (out += d.toString()), }, }); - const data: Record = {}; - out.split('\n').forEach(line => { + const data: RefDic = { heads: {}, tags: {}, pull: {} }; + out.split('\n').forEach((line) => { const [ref, tag] = line.trim().split('\t'); - if (ref && tag && tag.startsWith('refs/tags/v')) { - data[tag.substring('refs/tags/v'.length)] = ref; + if (ref && tag && tag.startsWith('refs/')) { + 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; diff --git a/src/index.ts b/src/index.ts index cfc51d6..35a8c4f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,82 +1,19 @@ 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 { selectVersion } from './versions'; - -async function winInstall(version: string, sha: string): Promise { - 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 { - 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 - } -} +import { winInstall } from './win-install'; +import { unixInstall } from './unix-install'; async function run(): Promise { try { - const { version, sha } = await selectVersion(); - if (os.platform() === 'win32' || os.platform() === 'cygwin') await winInstall(version, sha); - else await unixInstall(version, sha); + const version = await selectVersion(); + if (os.platform() === 'win32' || os.platform() === 'cygwin') await winInstall(version); + else await unixInstall(version); await exec('xmake --version'); } catch (error) { core.setFailed(error.message); } } -run().catch(e => core.error(e)); +run().catch((e) => core.error(e)); diff --git a/src/unix-install.ts b/src/unix-install.ts new file mode 100644 index 0000000..ba9f9fe --- /dev/null +++ b/src/unix-install.ts @@ -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 { + 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 + } +} diff --git a/src/version.spec.ts b/src/version.spec.ts index 1c89609..e622edc 100644 --- a/src/version.spec.ts +++ b/src/version.spec.ts @@ -1,10 +1,260 @@ jest.mock('./git', () => ({ lsRemote() { return { - '1.0.0': '100000000', - '1.0.1': '100000001', - '2.0.0': '200000000', - '2.0.1': '200000001', + heads: { + dev: 'e3b63b2f0103855c940fa8683610cd02895450d1', + master: 'efad01e547f30d66d90e486c91c3afa0dbaceed3', + 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', () => { it('should return correct version for latest', async () => { await expect(selectVersion('latest')).resolves.toEqual({ - version: '2.0.1', - sha: '200000001', + version: 'v2.3.2', + sha: '31bacc4f76101e6a865ec254c48d8bcba456378f', + type: 'tags', }); }); 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 () => { await expect(selectVersion('v1.0.1')).resolves.toEqual({ - version: '1.0.1', - sha: '100000001', + version: 'v1.0.1', + sha: '723ec3e970e17f48a601fe2a919b9802b5e516fa', + type: 'tags', }); }); it('should return correct version for range', async () => { await expect(selectVersion('>=2')).resolves.toEqual({ - version: '2.0.1', - sha: '200000001', + version: 'v2.3.2', + 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'); + }); }); diff --git a/src/versions.ts b/src/versions.ts index 17a87e1..db69ec6 100644 --- a/src/versions.ts +++ b/src/versions.ts @@ -1,33 +1,88 @@ import * as core from '@actions/core'; 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 { + 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 { + 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 { + // 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 { // get version string version = (version ?? core.getInput('xmake-version')) || 'latest'; if (version.toLowerCase() === 'latest') version = ''; + let ret: Version | undefined; // select branch if (version.startsWith('branch@')) { - const branch = version.substr(7); - core.info(`Selected xmake branch: ${branch}`); - return { version: version, sha: branch }; + const branch = version.substr('branch@'.length); + ret = await selectBranch(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 - version = semver.validRange(version); - if (!version) { - throw new Error(`Invalid input xmake-version: ${core.getInput('xmake-version')}`); + if (semver.validRange(version)) { + ret = await selectSemver(version); + } + if (!ret) { + throw new Error(`Invalid input xmake-version ${core.getInput('xmake-version')}`); } - const versions = await lsRemote(); - const ver = semver.maxSatisfying(Object.keys(versions), version); - 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 }; + core.info(`Selected xmake ${ret} (commit: ${ret.sha.substr(0, 8)})`); + return ret; } diff --git a/src/win-install.ts b/src/win-install.ts new file mode 100644 index 0000000..cff24e6 --- /dev/null +++ b/src/win-install.ts @@ -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 { + 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); +} diff --git a/yarn.lock b/yarn.lock index 6a0445d..a7d1bfa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,81 +202,80 @@ resolved "https://registry.npm.taobao.org/@istanbuljs/schema/download/@istanbuljs/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha1-JlIL8Jq+SlZEzVQU43ElqJVCQd0= -"@jest/console@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.1.0.tgz#1fc765d44a1e11aec5029c08e798246bd37075ab" - integrity sha1-H8dl1EoeEa7FApwI55gka9Nwdas= +"@jest/console@^25.2.3": + version "25.2.3" + resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.2.3.tgz#38ac19b916ff61457173799239472659e1a67c39" + integrity sha1-OKwZuRb/YUVxc3mSOUcmWeGmfDk= dependencies: - "@jest/source-map" "^25.1.0" + "@jest/source-map" "^25.2.1" chalk "^3.0.0" - jest-util "^25.1.0" + jest-util "^25.2.3" slash "^3.0.0" -"@jest/core@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.1.0.tgz#3d4634fc3348bb2d7532915d67781cdac0869e47" - integrity sha1-PUY0/DNIuy11MpFdZ3gc2sCGnkc= +"@jest/core@^25.2.4": + version "25.2.4" + resolved "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.2.4.tgz#382ef80369d3311f1df79db1ee19e958ae95cdad" + integrity sha1-OC74A2nTMR8d952x7hnpWK6Vza0= dependencies: - "@jest/console" "^25.1.0" - "@jest/reporters" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/console" "^25.2.3" + "@jest/reporters" "^25.2.4" + "@jest/test-result" "^25.2.4" + "@jest/transform" "^25.2.4" + "@jest/types" "^25.2.3" ansi-escapes "^4.2.1" chalk "^3.0.0" exit "^0.1.2" graceful-fs "^4.2.3" - jest-changed-files "^25.1.0" - jest-config "^25.1.0" - jest-haste-map "^25.1.0" - jest-message-util "^25.1.0" - jest-regex-util "^25.1.0" - jest-resolve "^25.1.0" - jest-resolve-dependencies "^25.1.0" - jest-runner "^25.1.0" - jest-runtime "^25.1.0" - jest-snapshot "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" - jest-watcher "^25.1.0" + jest-changed-files "^25.2.3" + jest-config "^25.2.4" + jest-haste-map "^25.2.3" + jest-message-util "^25.2.4" + jest-regex-util "^25.2.1" + jest-resolve "^25.2.3" + jest-resolve-dependencies "^25.2.4" + jest-runner "^25.2.4" + jest-runtime "^25.2.4" + jest-snapshot "^25.2.4" + jest-util "^25.2.3" + jest-validate "^25.2.3" + jest-watcher "^25.2.4" micromatch "^4.0.2" p-each-series "^2.1.0" - realpath-native "^1.1.0" + realpath-native "^2.0.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.1.0.tgz#4a97f64770c9d075f5d2b662b5169207f0a3f787" - integrity sha1-Spf2R3DJ0HX10rZitRaSB/Cj94c= +"@jest/environment@^25.2.4": + version "25.2.4" + resolved "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.2.4.tgz#74f4d8dd87b427434d0b822cde37bc0e78f3e28b" + integrity sha1-dPTY3Ye0J0NNC4Is3je8Dnjz4os= dependencies: - "@jest/fake-timers" "^25.1.0" - "@jest/types" "^25.1.0" - jest-mock "^25.1.0" + "@jest/fake-timers" "^25.2.4" + "@jest/types" "^25.2.3" + jest-mock "^25.2.3" -"@jest/fake-timers@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.1.0.tgz#a1e0eff51ffdbb13ee81f35b52e0c1c11a350ce8" - integrity sha1-oeDv9R/9uxPugfNbUuDBwRo1DOg= +"@jest/fake-timers@^25.2.4": + version "25.2.4" + resolved "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.2.4.tgz#6821b6edde74fda2a42467ae92cc93095d4c9527" + integrity sha1-aCG27d50/aKkJGeuksyTCV1MlSc= dependencies: - "@jest/types" "^25.1.0" - jest-message-util "^25.1.0" - jest-mock "^25.1.0" - jest-util "^25.1.0" + "@jest/types" "^25.2.3" + jest-message-util "^25.2.4" + jest-mock "^25.2.3" + jest-util "^25.2.3" lolex "^5.0.0" -"@jest/reporters@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-25.1.0.tgz#9178ecf136c48f125674ac328f82ddea46e482b0" - integrity sha1-kXjs8TbEjxJWdKwyj4Ld6kbkgrA= +"@jest/reporters@^25.2.4": + version "25.2.4" + resolved "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" + integrity sha1-qgHCCqshcVDTpggNXJjOC/NLF+0= dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.1.0" - "@jest/environment" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/console" "^25.2.3" + "@jest/test-result" "^25.2.4" + "@jest/transform" "^25.2.4" + "@jest/types" "^25.2.3" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -286,11 +285,10 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.0" - jest-haste-map "^25.1.0" - jest-resolve "^25.1.0" - jest-runtime "^25.1.0" - jest-util "^25.1.0" - jest-worker "^25.1.0" + jest-haste-map "^25.2.3" + jest-resolve "^25.2.3" + jest-util "^25.2.3" + jest-worker "^25.2.1" slash "^3.0.0" source-map "^0.6.0" string-length "^3.1.0" @@ -299,54 +297,54 @@ optionalDependencies: node-notifier "^6.0.0" -"@jest/source-map@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-25.1.0.tgz#b012e6c469ccdbc379413f5c1b1ffb7ba7034fb0" - integrity sha1-sBLmxGnM28N5QT9cGx/7e6cDT7A= +"@jest/source-map@^25.2.1": + version "25.2.1" + resolved "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" + integrity sha1-ti7PiudhcLCO/4hZtW63V23zSrg= dependencies: callsites "^3.0.0" graceful-fs "^4.2.3" source-map "^0.6.0" -"@jest/test-result@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-25.1.0.tgz#847af2972c1df9822a8200457e64be4ff62821f7" - integrity sha1-hHrylywd+YIqggBFfmS+T/YoIfc= +"@jest/test-result@^25.2.4": + version "25.2.4" + resolved "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" + integrity sha1-j8nqxY6C6yqC5AWOaMOBT5j1nPU= dependencies: - "@jest/console" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/console" "^25.2.3" + "@jest/transform" "^25.2.4" + "@jest/types" "^25.2.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.1.0.tgz#4df47208542f0065f356fcdb80026e3c042851ab" - integrity sha1-TfRyCFQvAGXzVvzbgAJuPAQoUas= +"@jest/test-sequencer@^25.2.4": + version "25.2.4" + resolved "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.2.4.tgz#28364aeddec140c696324114f63570f3de536c87" + integrity sha1-KDZK7d7BQMaWMkEU9jVw895TbIc= dependencies: - "@jest/test-result" "^25.1.0" - jest-haste-map "^25.1.0" - jest-runner "^25.1.0" - jest-runtime "^25.1.0" + "@jest/test-result" "^25.2.4" + jest-haste-map "^25.2.3" + jest-runner "^25.2.4" + jest-runtime "^25.2.4" -"@jest/transform@^25.1.0": - version "25.1.0" - resolved "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.1.0.tgz#221f354f512b4628d88ce776d5b9e601028ea9da" - integrity sha1-Ih81T1ErRijYjOd21bnmAQKOqdo= +"@jest/transform@^25.2.4": + version "25.2.4" + resolved "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.2.4.tgz#34336f37f13f62f7d1f5b93d5d150ba9eb3e11b9" + integrity sha1-NDNvN/E/YvfR9bk9XRULqes+Ebk= dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" babel-plugin-istanbul "^6.0.0" chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.3" - jest-haste-map "^25.1.0" - jest-regex-util "^25.1.0" - jest-util "^25.1.0" + jest-haste-map "^25.2.3" + jest-regex-util "^25.2.1" + jest-util "^25.2.3" micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^1.1.0" + realpath-native "^2.0.0" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -361,6 +359,16 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@jest/types@^25.2.3": + version "25.2.3" + resolved "https://registry.npm.taobao.org/@jest/types/download/@jest/types-25.2.3.tgz#035c4fb94e2da472f359ff9a211915d59987f6b6" + integrity sha1-A1xPuU4tpHLzWf+aIRkV1ZmH9rY= + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + "@sinonjs/commons@^1.7.0": version "1.7.1" resolved "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" @@ -444,11 +452,21 @@ resolved "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha1-OP1z3f2bVaux4bLtV4y1W9e30zk= -"@types/node@*", "@types/node@^13.9.2": +"@types/node@*": version "13.9.2" resolved "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" integrity sha1-rOGIDANZTMPoAgbZaEcVfY5/o0k= +"@types/node@^13.9.8": + version "13.9.8" + resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-13.9.8.tgz#09976420fc80a7a00bf40680c63815ed8c7616f4" + integrity sha1-CZdkIPyAp6AL9AaAxjgV7Yx2FvQ= + +"@types/prettier@^1.19.0": + version "1.19.1" + resolved "https://registry.npm.taobao.org/@types/prettier/download/@types/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha1-M1CYSfjmeeSt0ViVn9sIZEDpVT8= + "@types/semver@^7.1.0": version "7.1.0" resolved "https://registry.npm.taobao.org/@types/semver/download/@types/semver-7.1.0.tgz#c8c630d4c18cd326beff77404887596f96408408" @@ -473,40 +491,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.23.0": - version "2.24.0" - resolved "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" - integrity sha1-qGz2GMllpGLN3zYB9ZRUSxNNbWg= +"@typescript-eslint/eslint-plugin@^2.26.0": + version "2.26.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.26.0.tgz#04c96560c8981421e5a9caad8394192363cc423f" + integrity sha1-BMllYMiYFCHlqcqtg5QZI2PMQj8= dependencies: - "@typescript-eslint/experimental-utils" "2.24.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "2.26.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.24.0": - version "2.24.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" - integrity sha1-pcsu2J/t+LWWONyDSE6wyMNeEUM= +"@typescript-eslint/experimental-utils@2.26.0": + version "2.26.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.26.0.tgz#063390c404d9980767d76274df386c0aa675d91d" + integrity sha1-BjOQxATZmAdn12J03zhsCqZ12R0= dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/typescript-estree" "2.26.0" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.23.0": - version "2.24.0" - resolved "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" - integrity sha1-LPDq5ubdRNFiSGrZScEmuIfxHrg= +"@typescript-eslint/parser@^2.26.0": + version "2.26.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.26.0.tgz#385463615818b33acb72a25b39c03579df93d76f" + integrity sha1-OFRjYVgYszrLcqJbOcA1ed+T128= dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.24.0" - "@typescript-eslint/typescript-estree" "2.24.0" + "@typescript-eslint/experimental-utils" "2.26.0" + "@typescript-eslint/typescript-estree" "2.26.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.24.0": - version "2.24.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" - integrity sha1-OLvIu0eXkNLzJHl/+82zRtiXxio= +"@typescript-eslint/typescript-estree@2.26.0": + version "2.26.0" + resolved "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.26.0.tgz#d8132cf1ee8a72234f996519a47d8a9118b57d56" + integrity sha1-2BMs8e6KciNPmWUZpH2KkRi1fVY= dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -681,16 +699,16 @@ aws4@^1.8.0: resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4= -babel-jest@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/babel-jest/download/babel-jest-25.1.0.tgz#206093ac380a4b78c4404a05b3277391278f80fb" - integrity sha1-IGCTrDgKS3jEQEoFsydzkSePgPs= +babel-jest@^25.2.4: + version "25.2.4" + resolved "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" + integrity sha1-shto06+PFhw+blAekfDeqOZS40Q= dependencies: - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/transform" "^25.2.4" + "@jest/types" "^25.2.3" "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.1.0" + babel-preset-jest "^25.2.1" chalk "^3.0.0" slash "^3.0.0" @@ -705,21 +723,21 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-25.1.0.tgz#fb62d7b3b53eb36c97d1bc7fec2072f9bd115981" - integrity sha1-+2LXs7U+s2yX0bx/7CBy+b0RWYE= +babel-plugin-jest-hoist@^25.2.1: + version "25.2.1" + resolved "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" + integrity sha1-0AA6Hz1cqigeEQf+A7vxa3mfmVU= dependencies: "@types/babel__traverse" "^7.0.6" -babel-preset-jest@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33" - integrity sha1-0K6/67IXeiHN5xCZb86EhtNPHTM= +babel-preset-jest@^25.2.1: + version "25.2.1" + resolved "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" + integrity sha1-TM0OV39pqhG3GAbt/oslpcOsk6I= dependencies: "@babel/plugin-syntax-bigint" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^25.1.0" + babel-plugin-jest-hoist "^25.2.1" balanced-match@^1.0.0: version "1.0.0" @@ -1061,12 +1079,10 @@ deep-is@~0.1.3: resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= - dependencies: - object-keys "^1.0.12" +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha1-RNLqNnm49NT/ujPwPYZfwee/SVU= define-property@^0.2.5: version "0.2.5" @@ -1105,6 +1121,11 @@ diff-sequences@^25.1.0: resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" integrity sha1-/SmkbxyRP9ZsImRdx1v/vkMFHzI= +diff-sequences@^25.2.1: + version "25.2.1" + resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.2.1.tgz#fcfe8aa07dd9b0c648396a478dabca8e76c6ab27" + integrity sha1-/P6KoH3ZsMZIOWpHjavKjnbGqyc= + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1144,32 +1165,6 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: - version "1.17.4" - resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" - integrity sha1-467fGXBrIOfCWUw1/A1XYFp54YQ= - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo= - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1187,10 +1182,10 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.10.0: - version "6.10.0" - resolved "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" - integrity sha1-exXjA7+clWh1yUj2shUA5I3tan8= +eslint-config-prettier@^6.10.1: + version "6.10.1" + resolved "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" + integrity sha1-Ep757FddXdwOJpZnvwne/NiYZCo= dependencies: get-stdin "^6.0.0" @@ -1216,6 +1211,13 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" + integrity sha1-e+HMcPJ6cqds0UqmmLyr7WiQ4c0= + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" @@ -1354,17 +1356,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/expect/download/expect-25.1.0.tgz#7e8d7b06a53f7d66ec927278db3304254ee683ee" - integrity sha1-fo17BqU/fWbsknJ42zMEJU7mg+4= +expect@^25.2.4: + version "25.2.4" + resolved "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" + integrity sha1-tm4Hd8hhA068IXMLs04YOdXUaAY= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" ansi-styles "^4.0.0" - jest-get-type "^25.1.0" - jest-matcher-utils "^25.1.0" - jest-message-util "^25.1.0" - jest-regex-util "^25.1.0" + jest-get-type "^25.2.1" + jest-matcher-utils "^25.2.3" + jest-message-util "^25.2.4" + jest-regex-util "^25.2.1" extend-shallow@^2.0.1: version "2.0.1" @@ -1535,11 +1537,6 @@ fsevents@^2.1.2: resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" integrity sha1-TAofs0vGjlQ7S4Kp7Dkr+9qECAU= -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= - functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -1650,11 +1647,6 @@ has-flag@^4.0.0: resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -1686,13 +1678,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= - dependencies: - function-bind "^1.1.1" - html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -1808,11 +1793,6 @@ is-buffer@^1.1.5: resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha1-76ouqdqg16suoTqXsritUf776L4= -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs= - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -1834,11 +1814,6 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha1-vac28s2P0G0yhE53Q7+nSUw7/X4= - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -1920,13 +1895,6 @@ is-promise@^2.1.0: resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4= - dependencies: - has "^1.0.3" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -1937,13 +1905,6 @@ is-stream@^2.0.0: resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha1-venDJoDW+uBBKdasnZIc54FfeOM= -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc= - dependencies: - has-symbols "^1.0.1" - is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2030,56 +1991,57 @@ istanbul-reports@^3.0.0: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-25.1.0.tgz#73dae9a7d9949fdfa5c278438ce8f2ff3ec78131" - integrity sha1-c9rpp9mUn9+lwnhDjOjy/z7HgTE= +jest-changed-files@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-rRne755HujfvtDLSyaZ9/ZfMeK8= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" execa "^3.2.0" throat "^5.0.0" -jest-cli@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.1.0.tgz#75f0b09cf6c4f39360906bf78d580be1048e4372" - integrity sha1-dfCwnPbE85NgkGv3jVgL4QSOQ3I= +jest-cli@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.2.4.tgz#021c2383904696597abc060dcb133c82ebd8bfcc" + integrity sha1-Ahwjg5BGlll6vAYNyxM8guvYv8w= dependencies: - "@jest/core" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/core" "^25.2.4" + "@jest/test-result" "^25.2.4" + "@jest/types" "^25.2.3" chalk "^3.0.0" exit "^0.1.2" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" + jest-config "^25.2.4" + jest-util "^25.2.3" + jest-validate "^25.2.3" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^15.0.0" + realpath-native "^2.0.0" + yargs "^15.3.1" -jest-config@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-config/download/jest-config-25.1.0.tgz#d114e4778c045d3ef239452213b7ad3ec1cbea90" - integrity sha1-0RTkd4wEXT7yOUUiE7etPsHL6pA= +jest-config@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-config/download/jest-config-25.2.4.tgz#f4f33238979f225683179c89d1e402893008975d" + integrity sha1-9PMyOJefIlaDF5yJ0eQCiTAIl10= dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.1.0" - "@jest/types" "^25.1.0" - babel-jest "^25.1.0" + "@jest/test-sequencer" "^25.2.4" + "@jest/types" "^25.2.3" + babel-jest "^25.2.4" chalk "^3.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^25.1.0" - jest-environment-node "^25.1.0" - jest-get-type "^25.1.0" - jest-jasmine2 "^25.1.0" - jest-regex-util "^25.1.0" - jest-resolve "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" + jest-environment-jsdom "^25.2.4" + jest-environment-node "^25.2.4" + jest-get-type "^25.2.1" + jest-jasmine2 "^25.2.4" + jest-regex-util "^25.2.1" + jest-resolve "^25.2.3" + jest-util "^25.2.3" + jest-validate "^25.2.3" micromatch "^4.0.2" - pretty-format "^25.1.0" - realpath-native "^1.1.0" + pretty-format "^25.2.3" + realpath-native "^2.0.0" jest-diff@^25.1.0: version "25.1.0" @@ -2091,292 +2053,311 @@ jest-diff@^25.1.0: jest-get-type "^25.1.0" pretty-format "^25.1.0" -jest-docblock@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-25.1.0.tgz#0f44bea3d6ca6dfc38373d465b347c8818eccb64" - integrity sha1-D0S+o9bKbfw4Nz1GWzR8iBjsy2Q= +jest-diff@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-VNYBoKdU7yboCKjI263SeMIVqj8= + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.1" + jest-get-type "^25.2.1" + pretty-format "^25.2.3" + +jest-docblock@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-rEUoDEPVnnE5+fvliWxuAyDAHrs= dependencies: detect-newline "^3.0.0" -jest-each@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-each/download/jest-each-25.1.0.tgz#a6b260992bdf451c2d64a0ccbb3ac25e9b44c26a" - integrity sha1-prJgmSvfRRwtZKDMuzrCXptEwmo= +jest-each@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-ZAZ7oVCOu9B+mxJsFzqzcejmMJ0= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" chalk "^3.0.0" - jest-get-type "^25.1.0" - jest-util "^25.1.0" - pretty-format "^25.1.0" + jest-get-type "^25.2.1" + jest-util "^25.2.3" + pretty-format "^25.2.3" -jest-environment-jsdom@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.1.0.tgz#6777ab8b3e90fd076801efd3bff8e98694ab43c3" - integrity sha1-Z3eriz6Q/QdoAe/Tv/jphpSrQ8M= +jest-environment-jsdom@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.2.4.tgz#f2783541d0538b1bc43641703372cea6a2e83611" + integrity sha1-8ng1QdBTixvENkFwM3LOpqLoNhE= dependencies: - "@jest/environment" "^25.1.0" - "@jest/fake-timers" "^25.1.0" - "@jest/types" "^25.1.0" - jest-mock "^25.1.0" - jest-util "^25.1.0" - jsdom "^15.1.1" + "@jest/environment" "^25.2.4" + "@jest/fake-timers" "^25.2.4" + "@jest/types" "^25.2.3" + jest-mock "^25.2.3" + jest-util "^25.2.3" + jsdom "^15.2.1" -jest-environment-node@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-25.1.0.tgz#797bd89b378cf0bd794dc8e3dca6ef21126776db" - integrity sha1-eXvYmzeM8L15Tcjj3KbvIRJndts= +jest-environment-node@^25.2.4: + version "25.2.4" + resolved "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" + integrity sha1-3CEd+w2LZt/BllqPhG5y5U/wxDA= dependencies: - "@jest/environment" "^25.1.0" - "@jest/fake-timers" "^25.1.0" - "@jest/types" "^25.1.0" - jest-mock "^25.1.0" - jest-util "^25.1.0" + "@jest/environment" "^25.2.4" + "@jest/fake-timers" "^25.2.4" + "@jest/types" "^25.2.3" + jest-mock "^25.2.3" + jest-util "^25.2.3" + semver "^6.3.0" jest-get-type@^25.1.0: version "25.1.0" resolved "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876" integrity sha1-HP5fw08UjcOoo7cnX2uc6eLoqHY= -jest-haste-map@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.1.0.tgz#ae12163d284f19906260aa51fd405b5b2e5a4ad3" - integrity sha1-rhIWPShPGZBiYKpR/UBbWy5aStM= +jest-get-type@^25.2.1: + version "25.2.1" + resolved "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" + integrity sha1-bIPeYDxBsWJ+aWTaL1RU5qo8E6Y= + +jest-haste-map@^25.2.3: + version "25.2.3" + resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.2.3.tgz#2649392b5af191f0167a27bfb62e5d96d7eaaade" + integrity sha1-Jkk5K1rxkfAWeie/ti5dltfqqt4= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.3" - jest-serializer "^25.1.0" - jest-util "^25.1.0" - jest-worker "^25.1.0" + jest-serializer "^25.2.1" + jest-util "^25.2.3" + jest-worker "^25.2.1" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" + which "^2.0.2" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.1.0.tgz#681b59158a430f08d5d0c1cce4f01353e4b48137" - integrity sha1-aBtZFYpDDwjV0MHM5PATU+S0gTc= +jest-jasmine2@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.2.4.tgz#5f77de83e1027f0c7588137055a80da773872374" + integrity sha1-X3feg+ECfwx1iBNwVagNp3OHI3Q= dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.1.0" - "@jest/source-map" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/environment" "^25.2.4" + "@jest/source-map" "^25.2.1" + "@jest/test-result" "^25.2.4" + "@jest/types" "^25.2.3" chalk "^3.0.0" co "^4.6.0" - expect "^25.1.0" + expect "^25.2.4" is-generator-fn "^2.0.0" - jest-each "^25.1.0" - jest-matcher-utils "^25.1.0" - jest-message-util "^25.1.0" - jest-runtime "^25.1.0" - jest-snapshot "^25.1.0" - jest-util "^25.1.0" - pretty-format "^25.1.0" + jest-each "^25.2.3" + jest-matcher-utils "^25.2.3" + jest-message-util "^25.2.4" + jest-runtime "^25.2.4" + jest-snapshot "^25.2.4" + jest-util "^25.2.3" + pretty-format "^25.2.3" throat "^5.0.0" -jest-leak-detector@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-25.1.0.tgz#ed6872d15aa1c72c0732d01bd073dacc7c38b5c6" - integrity sha1-7Why0VqhxywHMtAb0HPazHw4tcY= +jest-leak-detector@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-TPOfE3kl4AYcBMJMplyuNkZfAjg= dependencies: - jest-get-type "^25.1.0" - pretty-format "^25.1.0" + jest-get-type "^25.2.1" + pretty-format "^25.2.3" -jest-matcher-utils@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220" - integrity sha1-+lmWxFxxk6PCTnMGb8FKze4CAiA= +jest-matcher-utils@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-WShb1tbIEN68nKpYXtmF5Go/KP0= dependencies: chalk "^3.0.0" - jest-diff "^25.1.0" - jest-get-type "^25.1.0" - pretty-format "^25.1.0" + jest-diff "^25.2.3" + jest-get-type "^25.2.1" + pretty-format "^25.2.3" -jest-message-util@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-25.1.0.tgz#702a9a5cb05c144b9aa73f06e17faa219389845e" - integrity sha1-cCqaXLBcFEuapz8G4X+qIZOJhF4= +jest-message-util@^25.2.4: + version "25.2.4" + resolved "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" + integrity sha1-sUQbnIL1wR/GYTA8vyAKLxNqd2I= dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/test-result" "^25.2.4" + "@jest/types" "^25.2.3" "@types/stack-utils" "^1.0.1" chalk "^3.0.0" micromatch "^4.0.2" slash "^3.0.0" stack-utils "^1.0.1" -jest-mock@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.1.0.tgz#411d549e1b326b7350b2e97303a64715c28615fd" - integrity sha1-QR1Unhsya3NQsulzA6ZHFcKGFf0= +jest-mock@^25.2.3: + version "25.2.3" + resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.2.3.tgz#b37a581f59d61bd91db27a99bf7eb8b3e5e993d5" + integrity sha1-s3pYH1nWG9kdsnqZv364s+Xpk9U= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.npm.taobao.org/jest-pnp-resolver/download/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha1-7NrmBMB3p/vHDe+21RfDwciYkjo= -jest-regex-util@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-25.1.0.tgz#efaf75914267741838e01de24da07b2192d16d87" - integrity sha1-7691kUJndBg44B3iTaB7IZLRbYc= +jest-regex-util@^25.2.1: + version "25.2.1" + resolved "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" + integrity sha1-22Sw0VzTZCyTt7lieAHXxRhgBYQ= -jest-resolve-dependencies@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.1.0.tgz#8a1789ec64eb6aaa77fd579a1066a783437e70d2" - integrity sha1-iheJ7GTraqp3/VeaEGang0N+cNI= +jest-resolve-dependencies@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.2.4.tgz#2d904400387d74a366dff54badb40a2b3210e733" + integrity sha1-LZBEADh9dKNm3/VLrbQKKzIQ5zM= dependencies: - "@jest/types" "^25.1.0" - jest-regex-util "^25.1.0" - jest-snapshot "^25.1.0" + "@jest/types" "^25.2.3" + jest-regex-util "^25.2.1" + jest-snapshot "^25.2.4" -jest-resolve@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.1.0.tgz#23d8b6a4892362baf2662877c66aa241fa2eaea3" - integrity sha1-I9i2pIkjYrryZih3xmqiQfourqM= +jest-resolve@^25.2.3: + version "25.2.3" + resolved "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.2.3.tgz#ababeaf2bb948cb6d2dea8453759116da0fb7842" + integrity sha1-q6vq8ruUjLbS3qhFN1kRbaD7eEI= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" browser-resolve "^1.11.3" chalk "^3.0.0" jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + realpath-native "^2.0.0" + resolve "^1.15.1" -jest-runner@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.1.0.tgz#fef433a4d42c89ab0a6b6b268e4a4fbe6b26e812" - integrity sha1-/vQzpNQsiasKa2smjkpPvmsm6BI= +jest-runner@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.2.4.tgz#d0daf7c56b4a83b6b675863d5cdcd502c960f9a1" + integrity sha1-0Nr3xWtKg7a2dYY9XNzVAslg+aE= dependencies: - "@jest/console" "^25.1.0" - "@jest/environment" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/console" "^25.2.3" + "@jest/environment" "^25.2.4" + "@jest/test-result" "^25.2.4" + "@jest/types" "^25.2.3" chalk "^3.0.0" exit "^0.1.2" graceful-fs "^4.2.3" - jest-config "^25.1.0" - jest-docblock "^25.1.0" - jest-haste-map "^25.1.0" - jest-jasmine2 "^25.1.0" - jest-leak-detector "^25.1.0" - jest-message-util "^25.1.0" - jest-resolve "^25.1.0" - jest-runtime "^25.1.0" - jest-util "^25.1.0" - jest-worker "^25.1.0" + jest-config "^25.2.4" + jest-docblock "^25.2.3" + jest-haste-map "^25.2.3" + jest-jasmine2 "^25.2.4" + jest-leak-detector "^25.2.3" + jest-message-util "^25.2.4" + jest-resolve "^25.2.3" + jest-runtime "^25.2.4" + jest-util "^25.2.3" + jest-worker "^25.2.1" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.1.0.tgz#02683218f2f95aad0f2ec1c9cdb28c1dc0ec0314" - integrity sha1-AmgyGPL5Wq0PLsHJzbKMHcDsAxQ= +jest-runtime@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.2.4.tgz#c66a421e115944426b377a7fd331f6c0902cfa56" + integrity sha1-xmpCHhFZREJrN3p/0zH2wJAs+lY= dependencies: - "@jest/console" "^25.1.0" - "@jest/environment" "^25.1.0" - "@jest/source-map" "^25.1.0" - "@jest/test-result" "^25.1.0" - "@jest/transform" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/console" "^25.2.3" + "@jest/environment" "^25.2.4" + "@jest/source-map" "^25.2.1" + "@jest/test-result" "^25.2.4" + "@jest/transform" "^25.2.4" + "@jest/types" "^25.2.3" "@types/yargs" "^15.0.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.3" - jest-config "^25.1.0" - jest-haste-map "^25.1.0" - jest-message-util "^25.1.0" - jest-mock "^25.1.0" - jest-regex-util "^25.1.0" - jest-resolve "^25.1.0" - jest-snapshot "^25.1.0" - jest-util "^25.1.0" - jest-validate "^25.1.0" - realpath-native "^1.1.0" + jest-config "^25.2.4" + jest-haste-map "^25.2.3" + jest-message-util "^25.2.4" + jest-mock "^25.2.3" + jest-regex-util "^25.2.1" + jest-resolve "^25.2.3" + jest-snapshot "^25.2.4" + jest-util "^25.2.3" + jest-validate "^25.2.3" + realpath-native "^2.0.0" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.0.0" + yargs "^15.3.1" -jest-serializer@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-25.1.0.tgz#73096ba90e07d19dec4a0c1dd89c355e2f129e5d" - integrity sha1-cwlrqQ4H0Z3sSgwd2Jw1Xi8Snl0= +jest-serializer@^25.2.1: + version "25.2.1" + resolved "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" + integrity sha1-UXJ6X8BCVvRhq+D6AkoCK6Flh3o= -jest-snapshot@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.1.0.tgz#d5880bd4b31faea100454608e15f8d77b9d221d9" - integrity sha1-1YgL1LMfrqEARUYI4V+Nd7nSIdk= +jest-snapshot@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.2.4.tgz#08d4517579c864df4280bcc948ceea34327a4ded" + integrity sha1-CNRRdXnIZN9CgLzJSM7qNDJ6Te0= dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" + "@types/prettier" "^1.19.0" chalk "^3.0.0" - expect "^25.1.0" - jest-diff "^25.1.0" - jest-get-type "^25.1.0" - jest-matcher-utils "^25.1.0" - jest-message-util "^25.1.0" - jest-resolve "^25.1.0" - mkdirp "^0.5.1" + expect "^25.2.4" + jest-diff "^25.2.3" + jest-get-type "^25.2.1" + jest-matcher-utils "^25.2.3" + jest-message-util "^25.2.4" + jest-resolve "^25.2.3" + make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^25.1.0" - semver "^7.1.1" + pretty-format "^25.2.3" + semver "^6.3.0" -jest-util@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-25.1.0.tgz#7bc56f7b2abd534910e9fa252692f50624c897d9" - integrity sha1-e8Vveyq9U0kQ6folJpL1BiTIl9k= +jest-util@^25.2.3: + version "25.2.3" + resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-25.2.3.tgz#0abf95a1d6b96f2de5a3ecd61b36c40a182dc256" + integrity sha1-Cr+Voda5by3lo+zWGzbEChgtwlY= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" chalk "^3.0.0" is-ci "^2.0.0" - mkdirp "^0.5.1" + make-dir "^3.0.0" -jest-validate@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.1.0.tgz#1469fa19f627bb0a9a98e289f3e9ab6a668c732a" - integrity sha1-FGn6GfYnuwqamOKJ8+mramaMcyo= +jest-validate@^25.2.3: + version "25.2.3" + resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.2.3.tgz#ecb0f093cf8ae71d15075fb48439b6f78f1fcb5a" + integrity sha1-7LDwk8+K5x0VB1+0hDm2948fy1o= dependencies: - "@jest/types" "^25.1.0" + "@jest/types" "^25.2.3" camelcase "^5.3.1" chalk "^3.0.0" - jest-get-type "^25.1.0" + jest-get-type "^25.2.1" leven "^3.1.0" - pretty-format "^25.1.0" + pretty-format "^25.2.3" -jest-watcher@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-25.1.0.tgz#97cb4a937f676f64c9fad2d07b824c56808e9806" - integrity sha1-l8tKk39nb2TJ+tLQe4JMVoCOmAY= +jest-watcher@^25.2.4: + version "25.2.4" + resolved "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" + integrity sha1-3ahbkU1HD6QUUWSo9wvaTyCLr7Y= dependencies: - "@jest/test-result" "^25.1.0" - "@jest/types" "^25.1.0" + "@jest/test-result" "^25.2.4" + "@jest/types" "^25.2.3" ansi-escapes "^4.2.1" chalk "^3.0.0" - jest-util "^25.1.0" + jest-util "^25.2.3" string-length "^3.1.0" -jest-worker@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" - integrity sha1-ddA4utb99Y66DS7Bg1hWxJfjkHo= +jest-worker@^25.2.1: + version "25.2.1" + resolved "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" + integrity sha1-IJYXAVx2hlJkaqM6eCjMKrRyoYo= dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.1.0: - version "25.1.0" - resolved "https://registry.npm.taobao.org/jest/download/jest-25.1.0.tgz#b85ef1ddba2fdb00d295deebbd13567106d35be9" - integrity sha1-uF7x3bov2wDSld7rvRNWcQbTW+k= +jest@^25.2.4: + version "25.2.4" + resolved "https://registry.npm.taobao.org/jest/download/jest-25.2.4.tgz#d10941948a2b57eb7accc2e7ae78af4a0e11b40a" + integrity sha1-0QlBlIorV+t6zMLnrnivSg4RtAo= dependencies: - "@jest/core" "^25.1.0" + "@jest/core" "^25.2.4" import-local "^3.0.2" - jest-cli "^25.1.0" + jest-cli "^25.2.4" js-tokens@^4.0.0: version "4.0.0" @@ -2396,9 +2377,9 @@ jsbn@~0.1.0: resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^15.1.1: +jsdom@^15.2.1: version "15.2.1" - resolved "https://registry.npm.taobao.org/jsdom/download/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + resolved "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" integrity sha1-0v6xrvcYP4a+UhuMaDP/UpbQfsU= dependencies: abab "^2.0.0" @@ -2641,7 +2622,12 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.x, mkdirp@^0.5.1: +mkdirp@1.x: + version "1.0.3" + resolved "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" + integrity sha1-TPLjCtRZWd3epTrZfVGLbIIF4eo= + +mkdirp@^0.5.1: version "0.5.3" resolved "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" integrity sha1-WlFLcXklkoeVKIHpRBDsVGVln4w= @@ -2756,16 +2742,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc= - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -2773,24 +2749,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha1-Npvx+VktiridcS3O1cuBx8U1Jkk= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -2951,10 +2909,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha1-99f1/4qc2HKnvkyhQglZVqYHl8s= +prettier@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/prettier/download/prettier-2.0.2.tgz#1ba8f3eb92231e769b7fcd7cb73ae1b6b74ade08" + integrity sha1-G6jz65IjHnabf818tzrhtrdK3gg= pretty-format@^25.1.0: version "25.1.0" @@ -2966,6 +2924,16 @@ pretty-format@^25.1.0: ansi-styles "^4.0.0" react-is "^16.12.0" +pretty-format@^25.2.3: + version "25.2.3" + resolved "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" + integrity sha1-um6WA6DYD6LkcLH+1V3h+b/YFCE= + dependencies: + "@jest/types" "^25.2.3" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + progress@^2.0.0: version "2.0.3" resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -3007,12 +2975,10 @@ react-is@^16.12.0: resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/realpath-native/download/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha1-IAMpT+oj+wZy8kduviL89Jii1lw= - dependencies: - util.promisify "^1.0.0" +realpath-native@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/realpath-native/download/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" + integrity sha1-c3esQptuH9WZ3DjQjtlC0Ne+uGY= regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -3126,7 +3092,7 @@ resolve@1.1.7: resolved "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" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.3.2: +resolve@1.x, resolve@^1.15.1, resolve@^1.3.2: version "1.15.1" resolved "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" integrity sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g= @@ -3223,17 +3189,17 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" -semver@^5.4.1, semver@^5.5, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: +semver@6.x, semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= -semver@^7.1.1, semver@^7.1.3: +semver@^5.4.1, semver@^5.5.0: + version "5.7.1" + resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= + +semver@^7.1.3: version "7.1.3" resolved "https://registry.npm.taobao.org/semver/download/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" integrity sha1-5DRc5zBxxT8zZEXPwZ77HDEd8qY= @@ -3446,22 +3412,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ= - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk= - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -3638,10 +3588,10 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -ts-jest@^25.2.1: - version "25.2.1" - resolved "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" - integrity sha1-Sb8F2iaot/v7w2tK4vzcL+81yF0= +ts-jest@^25.3.0: + version "25.3.0" + resolved "https://registry.npm.taobao.org/ts-jest/download/ts-jest-25.3.0.tgz#c12d34573cbe34d49f10567940e44fd19d1c9178" + integrity sha1-wS00Vzy+NNSfEFZ5QORP0Z0ckXg= dependencies: bs-logger "0.x" buffer-from "1.x" @@ -3649,10 +3599,10 @@ ts-jest@^25.2.1: json5 "2.x" lodash.memoize "4.x" make-error "1.x" - mkdirp "0.x" + mkdirp "1.x" resolve "1.x" - semver "^5.5" - yargs-parser "^16.1.0" + semver "6.x" + yargs-parser "^18.1.1" tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" @@ -3752,16 +3702,6 @@ use@^3.1.0: resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8= -util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha1-a693dLgO6w91INi4HQeYKlmruu4= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - uuid@^3.3.2: version "3.4.0" resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -3851,7 +3791,7 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE= @@ -3914,14 +3854,6 @@ y18n@^4.0.0: resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms= -yargs-parser@^16.1.0: - version "16.1.0" - resolved "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" - integrity sha1-c3R9U64YfnuNvjM/lXFMduoA7PE= - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^18.1.1: version "18.1.1" resolved "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" @@ -3930,7 +3862,7 @@ yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^15.0.0: +yargs@^15.3.1: version "15.3.1" resolved "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" integrity sha1-lQW0cnY5Y+VK/mAUitJ6MwgY6Ys=