diff --git a/action.yml b/action.yml index 30f360a..64873f3 100644 --- a/action.yml +++ b/action.yml @@ -10,7 +10,9 @@ inputs: required: true default: latest description: The version to use. Should be a semver range or 'latest'. Or use [{repository}#]branch@{branch_name} to select a branch. - + actions-cache-folder: + description: 'Directory to cache xmake in. This folder will go under $GITHUB_HOME (I.e. build dir) and be cached using @actions/cache.' + default: '' runs: using: 'node16' main: 'dist/index.js' diff --git a/dist/git.js b/dist/git.js deleted file mode 100644 index afe12ed..0000000 --- a/dist/git.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.cleanup = exports.create = exports.lsRemote = void 0; -const exec_1 = require("@actions/exec"); -const io = require("@actions/io"); -const os = require("os"); -const path = require("path"); -function makeOpt(ref) { - return { cwd: path.join(os.tmpdir(), `xmake-git-${ref}`) }; -} -const repoUrl = (repo) => `https://github.com/${repo}.git`; -async function lsRemote(repo) { - let out = ''; - await exec_1.exec('git', ['ls-remote', repoUrl(repo)], { - silent: true, - listeners: { - stdout: (d) => (out += d.toString()), - }, - }); - const data = { heads: {}, tags: {}, pull: {} }; - out.split('\n').forEach((line) => { - const [ref, tag] = line.trim().split('\t'); - if (ref && tag && tag.startsWith('refs/')) { - const tagPath = tag.split('/').splice(1); - 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; -} -exports.lsRemote = lsRemote; -async function create(repo, ref) { - const opt = makeOpt(ref); - await io.rmRF(opt.cwd); - await io.mkdirP(opt.cwd); - await exec_1.exec('git', ['init'], opt); - await exec_1.exec('git', ['remote', 'add', 'origin', repoUrl(repo)], opt); - await exec_1.exec('git', ['fetch', 'origin', '+refs/pull/*:refs/remotes/origin/pull/*', '+refs/heads/*:refs/remotes/origin/*'], opt); - await exec_1.exec('git', ['checkout', ref], opt); - await exec_1.exec('git', ['submodule', 'update', '--init', '--recursive'], opt); - return opt.cwd; -} -exports.create = create; -async function cleanup(ref) { - const opt = makeOpt(ref); - await io.rmRF(opt.cwd); -} -exports.cleanup = cleanup; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index c6454d4..0000000 --- a/dist/index.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const core = require("@actions/core"); -const exec_1 = require("@actions/exec"); -const os = require("os"); -const versions_1 = require("./versions"); -const win_install_1 = require("./win-install"); -const unix_install_1 = require("./unix-install"); -async function run() { - try { - const version = await versions_1.selectVersion(); - if (os.platform() === 'win32' || os.platform() === 'cygwin') { - const latest = await versions_1.selectVersion('latest'); - await win_install_1.winInstall(version, latest); - } - else { - await unix_install_1.unixInstall(version); - } - await exec_1.exec('xmake --version'); - } - catch (error) { - const ex = error; - core.setFailed(ex.message); - } -} -run().catch((e) => core.error(e)); diff --git a/dist/interfaces.js b/dist/interfaces.js deleted file mode 100644 index d98d5e6..0000000 --- a/dist/interfaces.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Repo = exports.Sha = void 0; -function Sha(sha) { - sha = sha.trim().toLowerCase(); - if (!/^[a-f0-9]{40}$/g.test(sha)) - throw new Error(`Invalid sha value ${sha}`); - return sha; -} -exports.Sha = Sha; -function Repo(repo) { - repo = repo.trim(); - if (!/^([^/#]+\/[^/#]+)$/g.test(repo)) - throw new Error(`Invalid repo value ${repo}`); - return repo; -} -exports.Repo = Repo; diff --git a/dist/unix-install.js b/dist/unix-install.js deleted file mode 100644 index 52d83f2..0000000 --- a/dist/unix-install.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.unixInstall = void 0; -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 install(sourceDir, binDir) { - await exec_1.exec('make', ['build'], { cwd: sourceDir }); - await exec_1.exec('make', ['install', `prefix=${binDir}`], { cwd: sourceDir }); -} -async function unixInstall(version) { - let toolDir; - if (version.type !== 'local') { - const ver = version.version; - toolDir = toolCache.find('xmake', ver); - if (!toolDir) { - const sourceDir = await core.group(`download xmake ${String(version)}`, () => git.create(version.repo, version.sha)); - toolDir = await core.group(`install xmake ${String(version)}`, async () => { - const binDir = path.join(os.tmpdir(), `xmake-${version.sha}`); - await install(sourceDir, binDir); - const cacheDir = await toolCache.cacheDir(binDir, 'xmake', ver); - await io.rmRF(binDir); - await git.cleanup(version.sha); - return cacheDir; - }); - } - } - else { - toolDir = await core.group(`install local xmake at '${version.path}'`, async () => { - const binDir = path.join(os.tmpdir(), `xmake-${Date.now()}`); - await install(version.path, binDir); - return binDir; - }); - } - 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')); - } -} -exports.unixInstall = unixInstall; diff --git a/dist/versions.js b/dist/versions.js deleted file mode 100644 index af602e5..0000000 --- a/dist/versions.js +++ /dev/null @@ -1,153 +0,0 @@ -"use strict"; -var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -}; -var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -}; -var _GitVersionImpl_string; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.selectVersion = void 0; -const core = require("@actions/core"); -const semver = require("semver"); -const git_1 = require("./git"); -const interfaces_1 = require("./interfaces"); -const p = require("path"); -const DEFAULT_REPO = interfaces_1.Repo('xmake-io/xmake'); -const VERSIONS = new Map(); -async function getVersions(repo) { - const cache = VERSIONS.get(repo); - if (cache) - return cache; - const result = await git_1.lsRemote(repo); - VERSIONS.set(repo, result); - return result; -} -class GitVersionImpl { - constructor(repo, version, sha, type, toString) { - this.repo = repo; - this.version = version; - this.sha = sha; - this.type = type; - _GitVersionImpl_string.set(this, void 0); - __classPrivateFieldSet(this, _GitVersionImpl_string, toString, "f"); - } - toString() { - return __classPrivateFieldGet(this, _GitVersionImpl_string, "f"); - } -} -_GitVersionImpl_string = new WeakMap(); -class LocalVersionImpl { - constructor(path) { - this.path = path; - this.type = 'local'; - this.path = p.resolve(path); - } -} -async function selectBranch(repo, branch) { - const versions = await getVersions(repo); - if (branch in versions.heads) { - return new GitVersionImpl(repo, branch, versions.heads[branch], 'heads', `branch ${branch}`); - } - throw new Error(`Branch ${branch} not found`); -} -async function selectPr(repo, pr) { - var _a; - const versions = await getVersions(repo); - 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 GitVersionImpl(repo, `pr#${pr}`, sha, 'pull', `pull request #${pr}`); - } - } - throw new Error(`Pull requrest #${pr} not found`); -} -async function selectSemver(repo, version) { - const v = new semver.Range(version); - if (!v) { - throw new Error(`Invalid semver`); - } - const versions = await getVersions(repo); - 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 GitVersionImpl(repo, ver, sha, 'tags', ver); -} -async function selectSha(repo, sha) { - var _a; - const shaValue = interfaces_1.Sha(sha); - const versions = await getVersions(repo); - for (const branch in versions.heads) { - if (versions.heads[branch] === shaValue) { - return selectBranch(repo, branch); - } - } - for (const tag in versions.tags) { - if (versions.tags[tag] === shaValue) { - return selectSemver(repo, tag); - } - } - for (const pr in versions.pull) { - const prData = versions.pull[pr]; - if (((_a = prData.merge) !== null && _a !== void 0 ? _a : prData.head) === shaValue) { - return selectPr(repo, Number.parseInt(pr)); - } - } - return Promise.resolve(new GitVersionImpl(repo, `sha#${shaValue}`, shaValue, 'sha', `commit ${shaValue.substr(0, 8)}`)); -} -async function selectVersion(version) { - version = (version !== null && version !== void 0 ? version : core.getInput('xmake-version')) || 'latest'; - if (version.toLowerCase() === 'latest') - version = ''; - let repo = DEFAULT_REPO; - let ret; - if (version.startsWith('local#')) { - const path = version.slice('local#'.length); - ret = new LocalVersionImpl(path); - } - { - const match = /^([^/#]+\/[^/#]+)#(.+)$/.exec(version); - if (match) { - repo = interfaces_1.Repo(match[1]); - version = match[2]; - } - } - if (version.startsWith('branch@')) { - const branch = version.substr('branch@'.length); - ret = await selectBranch(repo, branch); - } - 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(repo, pr); - } - if (version.startsWith('sha@')) { - const sha = version.substr('sha@'.length); - ret = await selectSha(repo, sha); - } - if (semver.validRange(version)) { - ret = await selectSemver(repo, version); - } - if (!ret) { - throw new Error(`Invalid input xmake-version ${core.getInput('xmake-version')}`); - } - if (ret.type === 'local') { - core.info(`Use local xmake at '${ret.path}'`); - } - else { - core.info(`Selected xmake ${String(ret)} (commit: ${ret.sha.substr(0, 8)})` + - (repo !== DEFAULT_REPO ? ` of ${repo}` : '')); - } - return ret; -} -exports.selectVersion = selectVersion; diff --git a/dist/win-install.js b/dist/win-install.js deleted file mode 100644 index 073c18d..0000000 --- a/dist/win-install.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.winInstall = void 0; -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"); -function getInstallerUrl(version, latest) { - const ver = version.version; - switch (version.type) { - case 'heads': { - const arch = os.arch() === 'x64' ? 'win64' : 'win32'; - const latestver = latest.version; - return `https://github.com/xmake-io/xmake/releases/download/${latestver}/xmake-${ver}.${arch}.exe`; - } - case 'pull': { - throw new Error('PR builds for windows is not supported'); - } - case 'sha': { - throw new Error('Sha builds for windows is not supported'); - } - case 'tags': { - const arch = os.arch() === 'x64' ? 'win64' : 'win32'; - return semver.gt(ver, '2.2.6') - ? `https://github.com/xmake-io/xmake/releases/download/${ver}/xmake-${ver}.${arch}.exe` - : `https://github.com/xmake-io/xmake/releases/download/${ver}/xmake-${ver}.exe`; - } - default: { - const _ = version.type; - throw new Error('Unknown version type'); - } - } -} -async function winInstall(version, latest) { - if (version.type === 'local' || latest.type === 'local') { - throw new Error('Local builds for windows is not supported'); - } - const ver = version.version; - let toolDir = toolCache.find('xmake', ver); - if (!toolDir) { - const installer = await core.group(`download xmake ${String(version)}`, async () => { - const url = getInstallerUrl(version, latest); - 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 ${String(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', ver); - await io.rmRF(binDir); - await io.rmRF(installer); - return cacheDir; - }); - } - core.addPath(toolDir); -} -exports.winInstall = winInstall; diff --git a/package.json b/package.json index a347bb9..3735f8d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "github-action-setup-xmake", - "version": "1.0.13", + "version": "1.1.0", "description": "Set up your GitHub Actions workflow with a specific version of xmake", "main": "dist/index.js", "author": "OpportunityLiu", @@ -9,19 +9,20 @@ "homepage": "https://github.com/xmake-io/github-action-setup-xmake", "scripts": { "watch": "tsc --watch", - "build": "tsc --build ./tsconfig.build.json", + "build": "ncc build src/index.ts", "rebuild": "yarn clean && yarn build", "clean": "rimraf dist", "lint": "eslint --fix src/**/*.ts", "format": "prettier --write .", "test": "jest", - "release": "yarn clean && yarn format && yarn lint && yarn build && yarn install --production --frozen-lockfile --no-bin-links" + "release": "yarn clean && yarn format && yarn lint && yarn build" }, "dependencies": { - "@actions/core": "^1.9.1", - "@actions/exec": "^1.1.0", - "@actions/io": "^1.1.1", - "@actions/tool-cache": "^1.7.1", + "@actions/cache": "^3.0.6", + "@actions/core": "^1.10.0", + "@actions/exec": "^1.1.1", + "@actions/io": "^1.1.2", + "@actions/tool-cache": "^2.0.1", "semver": "^7.3.5" }, "devDependencies": { @@ -30,6 +31,7 @@ "@types/semver": "^7.3.7", "@typescript-eslint/eslint-plugin": "^4.28.3", "@typescript-eslint/parser": "^4.28.3", + "@vercel/ncc": "^0.34.0", "eslint": "^7.30.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", @@ -39,5 +41,8 @@ "ts-jest": "^27.0.3", "type-fest": "^1.2.2", "typescript": "^4.3.5" - } + }, + "contributors": [ + "Yu Zhu" + ] } diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index 14f191e..0000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "removeComments": true - }, - "exclude": ["**/*.spec.ts"] -} diff --git a/yarn.lock b/yarn.lock index 7168ab8..047001a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,31 @@ # yarn lockfile v1 -"@actions/core@^1.2.6", "@actions/core@^1.9.1": +"@actions/cache@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-3.0.6.tgz#b76c51a78c927fcf0eb631b96a07e34f575c422b" + integrity sha512-Tttit+nqmxgb2M5Ufj5p8Lwd+fx329HOTLzxMrY4aaaZqBzqetgWlEfszMyiXfX4cJML+bzLJbyD9rNYt8TJ8g== + dependencies: + "@actions/core" "^1.10.0" + "@actions/exec" "^1.0.1" + "@actions/glob" "^0.1.0" + "@actions/http-client" "^2.0.1" + "@actions/io" "^1.0.1" + "@azure/abort-controller" "^1.1.0" + "@azure/ms-rest-js" "^2.6.0" + "@azure/storage-blob" "^12.8.0" + semver "^6.1.0" + uuid "^3.3.3" + +"@actions/core@^1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f" + integrity sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug== + dependencies: + "@actions/http-client" "^2.0.1" + uuid "^8.3.2" + +"@actions/core@^1.2.6": version "1.9.1" resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.9.1.tgz#97c0201b1f9856df4f7c3a375cdcdb0c2a2f750b" integrity sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA== @@ -10,19 +34,27 @@ "@actions/http-client" "^2.0.1" uuid "^8.3.2" -"@actions/exec@^1.0.0", "@actions/exec@^1.1.0": +"@actions/exec@^1.0.0": version "1.1.0" resolved "https://registry.nlark.com/@actions/exec/download/@actions/exec-1.1.0.tgz#53441d968e56d2fec69ad3f15773d4d94e01162c" integrity sha1-U0Qdlo5W0v7GmtPxV3PU2U4BFiw= dependencies: "@actions/io" "^1.0.1" -"@actions/http-client@^1.0.8": - version "1.0.11" - resolved "https://registry.nlark.com/@actions/http-client/download/@actions/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0" - integrity sha1-xYsS6aqLFZ7jnn3Wy9DpHZBWM8A= +"@actions/exec@^1.0.1", "@actions/exec@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" + integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== dependencies: - tunnel "0.0.6" + "@actions/io" "^1.0.1" + +"@actions/glob@^0.1.0": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.2.tgz#9685ed2d6583093479c8f137d067c4329d7d0974" + integrity sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A== + dependencies: + "@actions/core" "^1.2.6" + minimatch "^3.0.4" "@actions/http-client@^2.0.1": version "2.0.1" @@ -36,18 +68,127 @@ resolved "https://registry.nlark.com/@actions/io/download/@actions/io-1.1.1.tgz#4a157406309e212ab27ed3ae30e8c1d641686a66" integrity sha1-ShV0BjCeISqyftOuMOjB1kFoamY= -"@actions/tool-cache@^1.7.1": - version "1.7.1" - resolved "https://registry.nlark.com/@actions/tool-cache/download/@actions/tool-cache-1.7.1.tgz#f9f4f822cb639da6facdf3e22ea571361ab26f92" - integrity sha1-+fT4Istjnab6zfPiLqVxNhqyb5I= +"@actions/io@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.2.tgz#766ac09674a289ce0f1550ffe0a6eac9261a8ea9" + integrity sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw== + +"@actions/tool-cache@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-2.0.1.tgz#8a649b9c07838d9d750c9864814e66a7660ab720" + integrity sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA== dependencies: "@actions/core" "^1.2.6" "@actions/exec" "^1.0.0" - "@actions/http-client" "^1.0.8" + "@actions/http-client" "^2.0.1" "@actions/io" "^1.1.1" semver "^6.1.0" uuid "^3.3.2" +"@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" + integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== + dependencies: + tslib "^2.2.0" + +"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.4.0.tgz#6fa9661c1705857820dbc216df5ba5665ac36a9e" + integrity sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ== + dependencies: + "@azure/abort-controller" "^1.0.0" + tslib "^2.2.0" + +"@azure/core-http@^2.0.0": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-2.2.7.tgz#f4f52b3b7b8adb5387acf11102e751358a31fa6f" + integrity sha512-TyGMeDm90mkRS8XzSQbSMD+TqnWL1XKGCh0x0QVGMD8COH2yU0q5SaHm/IBEBkzcq0u73NhS/p57T3KVSgUFqQ== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-auth" "^1.3.0" + "@azure/core-tracing" "1.0.0-preview.13" + "@azure/core-util" "^1.1.0" + "@azure/logger" "^1.0.0" + "@types/node-fetch" "^2.5.0" + "@types/tunnel" "^0.0.3" + form-data "^4.0.0" + node-fetch "^2.6.7" + process "^0.11.10" + tough-cookie "^4.0.0" + tslib "^2.2.0" + tunnel "^0.0.6" + uuid "^8.3.0" + xml2js "^0.4.19" + +"@azure/core-lro@^2.2.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.4.0.tgz#e3fdff797b045ee753aab25c3d2ecc0aa3e0a539" + integrity sha512-F65+rYkll1dpw3RGm8/SSiSj+/QkMeYDanzS/QKlM1dmuneVyXbO46C88V1MRHluLGdMP6qfD3vDRYALn0z0tQ== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" + +"@azure/core-paging@^1.1.1": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.3.0.tgz#ebf6520a931be7d5ff1cf58bc4fe6c14d6a3080d" + integrity sha512-H6Tg9eBm0brHqLy0OSAGzxIh1t4UL8eZVrSUMJ60Ra9cwq2pOskFqVpz2pYoHDsBY1jZ4V/P8LRGb5D5pmC6rg== + dependencies: + tslib "^2.2.0" + +"@azure/core-tracing@1.0.0-preview.13": + version "1.0.0-preview.13" + resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" + integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ== + dependencies: + "@opentelemetry/api" "^1.0.1" + tslib "^2.2.0" + +"@azure/core-util@^1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.1.1.tgz#8f87b3dd468795df0f0849d9f096c3e7b29452c1" + integrity sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog== + dependencies: + "@azure/abort-controller" "^1.0.0" + tslib "^2.2.0" + +"@azure/logger@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96" + integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g== + dependencies: + tslib "^2.2.0" + +"@azure/ms-rest-js@^2.6.0": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.6.2.tgz#185a9d643ea55c696134af76a5c6026c94e26217" + integrity sha512-0/8rOxAoR9M3qKUdbGOIYtHtQkm4m5jdoDNdxTU0DkOr84KwyAdJuW/RfjJinGyig4h73DNF0rdCl6XowgCYcg== + dependencies: + "@azure/core-auth" "^1.1.4" + abort-controller "^3.0.0" + form-data "^2.5.0" + node-fetch "^2.6.7" + tough-cookie "^3.0.1" + tslib "^1.10.0" + tunnel "0.0.6" + uuid "^8.3.2" + xml2js "^0.4.19" + +"@azure/storage-blob@^12.8.0": + version "12.12.0" + resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.12.0.tgz#25e277c885692d5adcd8c2a949789b2837a74c59" + integrity sha512-o/Mf6lkyYG/eBW4/hXB9864RxVNmAkcKHjsGR6Inlp5hupa3exjSyH2KjO3tLO//YGA+tS+17hM2bxRl9Sn16g== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-http" "^2.0.0" + "@azure/core-lro" "^2.2.0" + "@azure/core-paging" "^1.1.1" + "@azure/core-tracing" "1.0.0-preview.13" + "@azure/logger" "^1.0.0" + events "^3.0.0" + tslib "^2.2.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.nlark.com/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -601,6 +742,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@opentelemetry/api@^1.0.1": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.2.0.tgz#89ef99401cde6208cff98760b67663726ef26686" + integrity sha512-0nBr+VZNKm9tvNDZFstI3Pq1fCTEDK5OZTnVKNvBNAKgd0yIvmwsP4m61rEv7ZP+tOUjWJhROpxK5MsnlF911g== + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.nlark.com/@sinonjs/commons/download/@sinonjs/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -692,6 +838,14 @@ resolved "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" integrity sha1-7fG/Hb9OBEE8qOWxezt9fVS1mBg= +"@types/node-fetch@^2.5.0": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*", "@types/node@^16.3.2": version "16.3.2" resolved "https://registry.nlark.com/@types/node/download/@types/node-16.3.2.tgz#655432817f83b51ac869c2d51dd8305fb8342e16" @@ -712,6 +866,13 @@ resolved "https://registry.nlark.com/@types/stack-utils/download/@types/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha1-IPGClPeX8iCbX2XI47XI6CYdEnw= +"@types/tunnel@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" + integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "20.2.1" resolved "https://registry.nlark.com/@types/yargs-parser/download/@types/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" @@ -800,11 +961,23 @@ "@typescript-eslint/types" "4.28.3" eslint-visitor-keys "^2.0.0" +"@vercel/ncc@^0.34.0": + version "0.34.0" + resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.34.0.tgz#d0139528320e46670d949c82967044a8f66db054" + integrity sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A== + abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.npm.taobao.org/abab/download/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha1-wLZ4+zLWD8EhnHhNaoJv44Wut5o= +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -1142,7 +1315,7 @@ colorette@^1.2.2: resolved "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ= -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.nlark.com/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8= @@ -1451,6 +1624,16 @@ esutils@^2.0.2: resolved "https://registry.nlark.com/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + execa@^5.0.0: version "5.1.1" resolved "https://registry.nlark.com/execa/download/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -1563,6 +1746,15 @@ flatted@^3.1.0: resolved "https://registry.nlark.com/flatted/download/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05" integrity sha1-u+8IDZX8pnCTYscwRKFjT3xufQU= +form-data@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@^3.0.0: version "3.0.1" resolved "https://registry.npm.taobao.org/form-data/download/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -1572,6 +1764,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1762,6 +1963,11 @@ inherits@2: resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== + is-ci@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" @@ -2502,6 +2708,13 @@ natural-compare@^1.4.0: resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.npm.taobao.org/node-int64/download/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -2694,6 +2907,11 @@ pretty-format@^27.0.6: ansi-styles "^5.0.0" react-is "^17.0.1" +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress@^2.0.0: version "2.0.3" resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -2707,6 +2925,11 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + psl@^1.1.33: version "1.8.0" resolved "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -2796,6 +3019,11 @@ safe-buffer@~5.1.1: resolved "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + saxes@^5.0.1: version "5.0.1" resolved "https://registry.npm.taobao.org/saxes/download/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -3015,6 +3243,15 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -3031,6 +3268,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + ts-jest@^27.0.3: version "27.0.3" resolved "https://registry.nlark.com/ts-jest/download/ts-jest-27.0.3.tgz#808492f022296cde19390bb6ad627c8126bf93f8" @@ -3047,11 +3289,16 @@ ts-jest@^27.0.3: semver "7.x" yargs-parser "20.x" -tslib@^1.8.1: +tslib@^1.10.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= +tslib@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npm.taobao.org/tsutils/download/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -3122,12 +3369,12 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uuid@^3.3.2: +uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.nlark.com/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4= -uuid@^8.3.2: +uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -3167,6 +3414,11 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -3189,6 +3441,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.npm.taobao.org/whatwg-mimetype/download/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha1-PUseAxLSB5h5+Cav8Y2+7KWWD78= +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.nlark.com/whatwg-url/download/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -3244,6 +3504,19 @@ xml-name-validator@^3.0.0: resolved "https://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo= +xml2js@^0.4.19: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.npm.taobao.org/xmlchars/download/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"