diff --git a/.gitignore b/.gitignore index 31fbf2f58..bc3660e62 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ release.* dist_iwa.zip sitemap.json dist/ +.app_modules.* \ No newline at end of file diff --git a/config/index.js b/config/index.js index 3076b873a..1f836cc34 100644 --- a/config/index.js +++ b/config/index.js @@ -6,7 +6,7 @@ require("dotenv-flow").config(); const DIST_PATH = `dist/${process.env.TARO_ENV}`; const APP_ENVS = getEnvs(); - + const CONST_ENVS = { @@ -14,7 +14,7 @@ const CONST_ENVS = { APP_AUTH_PAGE: process.env.TARO_ENV == "h5" ? "/subpage/pages/auth/login" - : "/subpage/pages/auth/wxauth", + : "/subpage/pages/auth/wxauth", ...APP_ENVS }; diff --git a/package-lock.json b/package-lock.json index cd16b31e2..0f77e2a7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "dependencies": { "@babel/code-frame": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fcode-frame/-/code-frame-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/download/@babel/code-frame-7.16.0.tgz", "integrity": "sha1-DfyAMJvuyEEeZecGRhxAiwu5tDE=", "requires": { "@babel/highlight": "^7.16.0" @@ -42,7 +42,7 @@ }, "@babel/generator": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fgenerator/-/generator-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/generator/download/@babel/generator-7.16.0.tgz?cache=0&sync_timestamp=1635560700747&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.16.0.tgz", "integrity": "sha1-1A89HVB15i01ALzLZ/PaqKlSZbI=", "requires": { "@babel/types": "^7.16.0", @@ -69,7 +69,7 @@ }, "@babel/helper-compilation-targets": { "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.16.3.tgz?cache=0&sync_timestamp=1636496295030&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.16.3.tgz", "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "requires": { "@babel/compat-data": "^7.16.0", @@ -117,7 +117,7 @@ }, "@babel/helper-function-name": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fhelper-function-name/-/helper-function-name-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/download/@babel/helper-function-name-7.16.0.tgz", "integrity": "sha1-t90Hl9ALv+5PB+nE6lsOMMi7FIE=", "requires": { "@babel/helper-get-function-arity": "^7.16.0", @@ -127,7 +127,7 @@ }, "@babel/helper-get-function-arity": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fhelper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.16.0.tgz", "integrity": "sha1-AIjHSGspqctdlIsaHeRttm4InPo=", "requires": { "@babel/types": "^7.16.0" @@ -135,7 +135,7 @@ }, "@babel/helper-hoist-variables": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fhelper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.16.0.tgz", "integrity": "sha1-TJAjwvHe9+KP9G/B2802o5vqqBo=", "requires": { "@babel/types": "^7.16.0" @@ -224,7 +224,7 @@ }, "@babel/helper-split-export-declaration": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fhelper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.16.0.tgz", "integrity": "sha1-KWcvQ2Y+k23zcKrrIr7ds7rsdDg=", "requires": { "@babel/types": "^7.16.0" @@ -232,7 +232,7 @@ }, "@babel/helper-validator-identifier": { "version": "7.15.7", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "resolved": "https://registry.nlark.com/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.15.7.tgz?cache=0&sync_timestamp=1631920000984&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.15.7.tgz", "integrity": "sha1-Ig35k7/pBKSmsCq08zhaXr9uI4k=" }, "@babel/helper-validator-option": { @@ -253,7 +253,7 @@ }, "@babel/helpers": { "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "resolved": "https://registry.npmmirror.com/@babel/helpers/download/@babel/helpers-7.16.3.tgz?cache=0&sync_timestamp=1636496293613&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.16.3.tgz", "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", "requires": { "@babel/template": "^7.16.0", @@ -263,7 +263,7 @@ }, "@babel/highlight": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2fhighlight/-/highlight-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/highlight/download/@babel/highlight-7.16.0.tgz", "integrity": "sha1-bOsysspLj182H7f9gh4/3fShclo=", "requires": { "@babel/helper-validator-identifier": "^7.15.7", @@ -273,7 +273,7 @@ "dependencies": { "chalk": { "version": "2.4.2", - "resolved": "http://registry.npm.ishopex.cn/chalk/-/chalk-2.4.2.tgz", + "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646655305&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", "requires": { "ansi-styles": "^3.2.1", @@ -688,7 +688,7 @@ }, "@babel/plugin-transform-parameters": { "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.16.3.tgz?cache=0&sync_timestamp=1636496296752&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.16.3.tgz", "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -906,7 +906,7 @@ }, "@babel/template": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2ftemplate/-/template-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/template/download/@babel/template-7.16.0.tgz", "integrity": "sha1-0Wo16/TNdOICCDNW+rId2JNj3dY=", "requires": { "@babel/code-frame": "^7.16.0", @@ -932,7 +932,7 @@ }, "@babel/types": { "version": "7.16.0", - "resolved": "http://registry.npm.ishopex.cn/@babel%2ftypes/-/types-7.16.0.tgz", + "resolved": "https://registry.npmmirror.com/@babel/types/download/@babel/types-7.16.0.tgz?cache=0&sync_timestamp=1635560939610&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.16.0.tgz", "integrity": "sha1-2zsxOAT5aq3Qt3bEgj4SetZyibo=", "requires": { "@babel/helper-validator-identifier": "^7.15.7", @@ -1174,7 +1174,7 @@ "dependencies": { "ansi-escapes": { "version": "4.3.2", - "resolved": "http://registry.npm.ishopex.cn/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "resolved": "https://registry.nlark.com/ansi-escapes/download/ansi-escapes-4.3.2.tgz?cache=0&sync_timestamp=1618847144938&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.2.tgz", "integrity": "sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=", "dev": true, "requires": { @@ -1183,13 +1183,13 @@ }, "ansi-regex": { "version": "5.0.1", - "resolved": "http://registry.npm.ishopex.cn/ansi-regex/-/ansi-regex-5.0.1.tgz", + "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-5.0.1.tgz?cache=0&sync_timestamp=1631634988487&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.1.tgz", "integrity": "sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=", "dev": true }, "bl": { "version": "4.1.0", - "resolved": "http://registry.npm.ishopex.cn/bl/-/bl-4.1.0.tgz", + "resolved": "https://registry.nlark.com/bl/download/bl-4.1.0.tgz", "integrity": "sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo=", "dev": true, "requires": { @@ -1200,7 +1200,7 @@ }, "chokidar": { "version": "3.5.2", - "resolved": "http://registry.npm.ishopex.cn/chokidar/-/chokidar-3.5.2.tgz", + "resolved": "https://registry.npmmirror.com/chokidar/download/chokidar-3.5.2.tgz", "integrity": "sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=", "dev": true, "requires": { @@ -1216,7 +1216,7 @@ }, "cli-cursor": { "version": "3.1.0", - "resolved": "http://registry.npm.ishopex.cn/cli-cursor/-/cli-cursor-3.1.0.tgz", + "resolved": "https://registry.nlark.com/cli-cursor/download/cli-cursor-3.1.0.tgz?cache=0&sync_timestamp=1629747366550&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcli-cursor%2Fdownload%2Fcli-cursor-3.1.0.tgz", "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", "dev": true, "requires": { @@ -1225,31 +1225,31 @@ }, "cli-spinners": { "version": "2.6.1", - "resolved": "http://registry.npm.ishopex.cn/cli-spinners/-/cli-spinners-2.6.1.tgz", + "resolved": "https://registry.npmmirror.com/cli-spinners/download/cli-spinners-2.6.1.tgz?cache=0&sync_timestamp=1633109759784&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.6.1.tgz", "integrity": "sha1-rclU6+KBw3pjGb+kAebdJIj/tw0=", "dev": true }, "cli-width": { "version": "3.0.0", - "resolved": "http://registry.npm.ishopex.cn/cli-width/-/cli-width-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz", "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=", "dev": true }, "commander": { "version": "8.3.0", - "resolved": "http://registry.npm.ishopex.cn/commander/-/commander-8.3.0.tgz", + "resolved": "https://registry.npmmirror.com/commander/download/commander-8.3.0.tgz?cache=0&sync_timestamp=1634886357672&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-8.3.0.tgz", "integrity": "sha1-SDfqGy2me5xhamevuw+v7lZ7ymY=", "dev": true }, "emoji-regex": { "version": "8.0.0", - "resolved": "http://registry.npm.ishopex.cn/emoji-regex/-/emoji-regex-8.0.0.tgz", + "resolved": "https://registry.npmmirror.com/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1632751408145&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz", "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", "dev": true }, "figures": { "version": "3.2.0", - "resolved": "http://registry.npm.ishopex.cn/figures/-/figures-3.2.0.tgz", + "resolved": "https://registry.nlark.com/figures/download/figures-3.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffigures%2Fdownload%2Ffigures-3.2.0.tgz", "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=", "dev": true, "requires": { @@ -1258,7 +1258,7 @@ }, "fs-extra": { "version": "10.0.0", - "resolved": "http://registry.npm.ishopex.cn/fs-extra/-/fs-extra-10.0.0.tgz", + "resolved": "https://registry.nlark.com/fs-extra/download/fs-extra-10.0.0.tgz", "integrity": "sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=", "dev": true, "requires": { @@ -1269,14 +1269,14 @@ }, "fsevents": { "version": "2.3.2", - "resolved": "http://registry.npm.ishopex.cn/fsevents/-/fsevents-2.3.2.tgz", + "resolved": "https://registry.npmmirror.com/fsevents/download/fsevents-2.3.2.tgz", "integrity": "sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=", "dev": true, "optional": true }, "inquirer": { "version": "8.2.0", - "resolved": "http://registry.npm.ishopex.cn/inquirer/-/inquirer-8.2.0.tgz", + "resolved": "https://registry.npmmirror.com/inquirer/download/inquirer-8.2.0.tgz?cache=0&sync_timestamp=1633473424517&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Finquirer%2Fdownload%2Finquirer-8.2.0.tgz", "integrity": "sha1-9E8AjdNEu/xLMAMfRdmE4DSjrDo=", "dev": true, "requires": { @@ -1298,13 +1298,13 @@ }, "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "http://registry.npm.ishopex.cn/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "resolved": "https://registry.nlark.com/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", "dev": true }, "jsonfile": { "version": "6.1.0", - "resolved": "http://registry.npm.ishopex.cn/jsonfile/-/jsonfile-6.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-6.1.0.tgz?cache=0&sync_timestamp=1604161917513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-6.1.0.tgz", "integrity": "sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=", "dev": true, "requires": { @@ -1314,7 +1314,7 @@ }, "log-symbols": { "version": "4.1.0", - "resolved": "http://registry.npm.ishopex.cn/log-symbols/-/log-symbols-4.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-4.1.0.tgz", "integrity": "sha1-P727lbRoOsn8eFER55LlWNSr1QM=", "dev": true, "requires": { @@ -1324,7 +1324,7 @@ }, "micromatch": { "version": "4.0.4", - "resolved": "http://registry.npm.ishopex.cn/micromatch/-/micromatch-4.0.4.tgz", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618054842871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz", "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=", "dev": true, "requires": { @@ -1334,19 +1334,19 @@ }, "mimic-fn": { "version": "2.1.0", - "resolved": "http://registry.npm.ishopex.cn/mimic-fn/-/mimic-fn-2.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1617823583529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", "dev": true }, "mute-stream": { "version": "0.0.8", - "resolved": "http://registry.npm.ishopex.cn/mute-stream/-/mute-stream-0.0.8.tgz", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz", "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=", "dev": true }, "onetime": { "version": "5.1.2", - "resolved": "http://registry.npm.ishopex.cn/onetime/-/onetime-5.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz", "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", "dev": true, "requires": { @@ -1355,7 +1355,7 @@ }, "ora": { "version": "5.4.1", - "resolved": "http://registry.npm.ishopex.cn/ora/-/ora-5.4.1.tgz", + "resolved": "https://registry.nlark.com/ora/download/ora-5.4.1.tgz?cache=0&sync_timestamp=1631556531519&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fora%2Fdownload%2Fora-5.4.1.tgz", "integrity": "sha1-GyZ4Qmr0rEpQkAjl5KyemVnbnhg=", "dev": true, "requires": { @@ -1372,7 +1372,7 @@ }, "readable-stream": { "version": "3.6.0", - "resolved": "http://registry.npm.ishopex.cn/readable-stream/-/readable-stream-3.6.0.tgz", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", "dev": true, "requires": { @@ -1383,7 +1383,7 @@ }, "readdirp": { "version": "3.6.0", - "resolved": "http://registry.npm.ishopex.cn/readdirp/-/readdirp-3.6.0.tgz", + "resolved": "https://registry.nlark.com/readdirp/download/readdirp-3.6.0.tgz", "integrity": "sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=", "dev": true, "requires": { @@ -1392,7 +1392,7 @@ }, "restore-cursor": { "version": "3.1.0", - "resolved": "http://registry.npm.ishopex.cn/restore-cursor/-/restore-cursor-3.1.0.tgz", + "resolved": "https://registry.nlark.com/restore-cursor/download/restore-cursor-3.1.0.tgz", "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", "dev": true, "requires": { @@ -1402,7 +1402,7 @@ }, "rxjs": { "version": "7.4.0", - "resolved": "http://registry.npm.ishopex.cn/rxjs/-/rxjs-7.4.0.tgz", + "resolved": "https://registry.npmmirror.com/rxjs/download/rxjs-7.4.0.tgz?cache=0&sync_timestamp=1633556708772&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Frxjs%2Fdownload%2Frxjs-7.4.0.tgz", "integrity": "sha1-oSpE1+6/AW9f8kQbh/KMmlHOvGg=", "dev": true, "requires": { @@ -1411,7 +1411,7 @@ }, "string-width": { "version": "4.2.3", - "resolved": "http://registry.npm.ishopex.cn/string-width/-/string-width-4.2.3.tgz", + "resolved": "https://registry.npmmirror.com/string-width/download/string-width-4.2.3.tgz?cache=0&sync_timestamp=1632421054789&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fstring-width%2Fdownload%2Fstring-width-4.2.3.tgz", "integrity": "sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=", "dev": true, "requires": { @@ -1422,7 +1422,7 @@ }, "strip-ansi": { "version": "6.0.1", - "resolved": "http://registry.npm.ishopex.cn/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "https://registry.npmmirror.com/strip-ansi/download/strip-ansi-6.0.1.tgz", "integrity": "sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=", "dev": true, "requires": { @@ -1431,19 +1431,19 @@ }, "tslib": { "version": "2.1.0", - "resolved": "http://registry.npm.ishopex.cn/tslib/-/tslib-2.1.0.tgz", + "resolved": "https://registry.nlark.com/tslib/download/tslib-2.1.0.tgz", "integrity": "sha1-2mCGDxwuyqVwOrfTm8Bba/mIuXo=", "dev": true }, "type-fest": { "version": "0.21.3", - "resolved": "http://registry.npm.ishopex.cn/type-fest/-/type-fest-0.21.3.tgz", + "resolved": "https://registry.npmmirror.com/type-fest/download/type-fest-0.21.3.tgz?cache=0&sync_timestamp=1636459972076&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftype-fest%2Fdownload%2Ftype-fest-0.21.3.tgz", "integrity": "sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=", "dev": true }, "universalify": { "version": "2.0.0", - "resolved": "http://registry.npm.ishopex.cn/universalify/-/universalify-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-2.0.0.tgz", "integrity": "sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=", "dev": true } @@ -3618,7 +3618,7 @@ }, "@types/node": { "version": "16.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-16.11.7.tgz?cache=0&sync_timestamp=1636407492316&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-16.11.7.tgz", "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==" }, "@types/normalize-package-data": { @@ -4349,7 +4349,7 @@ }, "anymatch": { "version": "3.1.2", - "resolved": "http://registry.npm.ishopex.cn/anymatch/-/anymatch-3.1.2.tgz", + "resolved": "https://registry.nlark.com/anymatch/download/anymatch-3.1.2.tgz", "integrity": "sha1-wFV8CWrzLxBhmPT04qODU343hxY=", "requires": { "normalize-path": "^3.0.0", @@ -6006,7 +6006,7 @@ }, "balanced-match": { "version": "1.0.2", - "resolved": "http://registry.npm.ishopex.cn/balanced-match/-/balanced-match-1.0.2.tgz", + "resolved": "https://registry.nlark.com/balanced-match/download/balanced-match-1.0.2.tgz", "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=" }, "base": { @@ -6061,7 +6061,7 @@ }, "base64-js": { "version": "1.5.1", - "resolved": "http://registry.npm.ishopex.cn/base64-js/-/base64-js-1.5.1.tgz", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz", "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=" }, "batch": { @@ -6101,7 +6101,7 @@ }, "binary-extensions": { "version": "2.2.0", - "resolved": "http://registry.npm.ishopex.cn/binary-extensions/-/binary-extensions-2.2.0.tgz", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.2.0.tgz?cache=0&sync_timestamp=1610299293319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.2.0.tgz", "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=" }, "bind-decorator": { @@ -6217,7 +6217,7 @@ }, "boolify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boolify/-/boolify-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/boolify/download/boolify-1.0.1.tgz", "integrity": "sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=", "dev": true }, @@ -6254,7 +6254,7 @@ }, "brace-expansion": { "version": "1.1.11", - "resolved": "http://registry.npm.ishopex.cn/brace-expansion/-/brace-expansion-1.1.11.tgz", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "^1.0.0", @@ -6263,7 +6263,7 @@ }, "braces": { "version": "3.0.2", - "resolved": "http://registry.npm.ishopex.cn/braces/-/braces-3.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", "requires": { "fill-range": "^7.0.1" @@ -6386,7 +6386,7 @@ }, "buffer": { "version": "5.7.1", - "resolved": "http://registry.npm.ishopex.cn/buffer/-/buffer-5.7.1.tgz", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-5.7.1.tgz", "integrity": "sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=", "requires": { "base64-js": "^1.3.1", @@ -6781,7 +6781,7 @@ }, "chalk": { "version": "4.1.2", - "resolved": "http://registry.npm.ishopex.cn/chalk/-/chalk-4.1.2.tgz", + "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.2.tgz?cache=0&sync_timestamp=1627646655305&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.2.tgz", "integrity": "sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=", "dev": true, "requires": { @@ -6791,7 +6791,7 @@ "dependencies": { "ansi-styles": { "version": "4.3.0", - "resolved": "http://registry.npm.ishopex.cn/ansi-styles/-/ansi-styles-4.3.0.tgz", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995778321&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz", "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", "dev": true, "requires": { @@ -6800,7 +6800,7 @@ }, "color-convert": { "version": "2.0.1", - "resolved": "http://registry.npm.ishopex.cn/color-convert/-/color-convert-2.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", "dev": true, "requires": { @@ -6809,19 +6809,19 @@ }, "color-name": { "version": "1.1.4", - "resolved": "http://registry.npm.ishopex.cn/color-name/-/color-name-1.1.4.tgz", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", "dev": true }, "has-flag": { "version": "4.0.0", - "resolved": "http://registry.npm.ishopex.cn/has-flag/-/has-flag-4.0.0.tgz", + "resolved": "https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1626715907927&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz", "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", "dev": true }, "supports-color": { "version": "7.2.0", - "resolved": "http://registry.npm.ishopex.cn/supports-color/-/supports-color-7.2.0.tgz", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz", "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", "dev": true, "requires": { @@ -6852,7 +6852,7 @@ }, "chardet": { "version": "0.7.0", - "resolved": "http://registry.npm.ishopex.cn/chardet/-/chardet-0.7.0.tgz", + "resolved": "https://registry.npmmirror.com/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1634639108550&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz", "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=" }, "chokidar": { @@ -7226,7 +7226,7 @@ }, "color-convert": { "version": "1.9.3", - "resolved": "http://registry.npm.ishopex.cn/color-convert/-/color-convert-1.9.3.tgz", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", "requires": { "color-name": "1.1.3" @@ -7234,7 +7234,7 @@ }, "color-name": { "version": "1.1.3", - "resolved": "http://registry.npm.ishopex.cn/color-name/-/color-name-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "combined-stream": { @@ -7364,7 +7364,7 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "http://registry.npm.ishopex.cn/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { @@ -7732,7 +7732,7 @@ }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } @@ -8269,7 +8269,7 @@ }, "defaults": { "version": "1.0.3", - "resolved": "http://registry.npm.ishopex.cn/defaults/-/defaults-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "requires": { "clone": "^1.0.2" @@ -9003,7 +9003,7 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "http://registry.npm.ishopex.cn/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { @@ -9541,7 +9541,7 @@ }, "eslint-plugin-import": { "version": "2.25.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz", + "resolved": "https://registry.npmmirror.com/eslint-plugin-import/download/eslint-plugin-import-2.25.3.tgz?cache=0&sync_timestamp=1636529263275&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-plugin-import%2Fdownload%2Feslint-plugin-import-2.25.3.tgz", "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==", "requires": { "array-includes": "^3.1.4", @@ -9593,7 +9593,7 @@ }, "eslint-plugin-react": { "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.0.tgz", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react/download/eslint-plugin-react-7.27.0.tgz?cache=0&sync_timestamp=1636528354616&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-plugin-react%2Fdownload%2Feslint-plugin-react-7.27.0.tgz", "integrity": "sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==", "requires": { "array-includes": "^3.1.4", @@ -9643,7 +9643,7 @@ }, "eslint-plugin-react-hooks": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", + "resolved": "https://registry.npmmirror.com/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-4.3.0.tgz", "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", "dev": true }, @@ -10039,7 +10039,7 @@ }, "external-editor": { "version": "3.1.0", - "resolved": "http://registry.npm.ishopex.cn/external-editor/-/external-editor-3.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz", "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", "requires": { "chardet": "^0.7.0", @@ -10283,7 +10283,7 @@ }, "fill-range": { "version": "7.0.1", - "resolved": "http://registry.npm.ishopex.cn/fill-range/-/fill-range-7.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", "requires": { "to-regex-range": "^5.0.1" @@ -10526,7 +10526,7 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "http://registry.npm.ishopex.cn/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { @@ -10560,7 +10560,7 @@ }, "function-bind": { "version": "1.1.1", - "resolved": "http://registry.npm.ishopex.cn/function-bind/-/function-bind-1.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" }, "functional-red-black-tree": { @@ -10570,7 +10570,7 @@ }, "fuzzy": { "version": "0.1.3", - "resolved": "http://registry.npm.ishopex.cn/fuzzy/-/fuzzy-0.1.3.tgz", + "resolved": "https://registry.nlark.com/fuzzy/download/fuzzy-0.1.3.tgz", "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=", "dev": true }, @@ -10693,7 +10693,7 @@ }, "glob": { "version": "7.2.0", - "resolved": "http://registry.npm.ishopex.cn/glob/-/glob-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/glob/download/glob-7.2.0.tgz", "integrity": "sha1-0VU1r3cy4C6Uj0xBYovZECk/YCM=", "requires": { "fs.realpath": "^1.0.0", @@ -10738,7 +10738,7 @@ }, "glob-parent": { "version": "5.1.2", - "resolved": "http://registry.npm.ishopex.cn/glob-parent/-/glob-parent-5.1.2.tgz", + "resolved": "https://registry.npmmirror.com/glob-parent/download/glob-parent-5.1.2.tgz", "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=", "requires": { "is-glob": "^4.0.1" @@ -10791,7 +10791,7 @@ }, "globals": { "version": "11.12.0", - "resolved": "http://registry.npm.ishopex.cn/globals/-/globals-11.12.0.tgz", + "resolved": "https://registry.npmmirror.com/globals/download/globals-11.12.0.tgz", "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=" }, "globby": { @@ -10908,7 +10908,7 @@ }, "graceful-fs": { "version": "4.2.8", - "resolved": "http://registry.npm.ishopex.cn/graceful-fs/-/graceful-fs-4.2.8.tgz", + "resolved": "https://registry.npmmirror.com/graceful-fs/download/graceful-fs-4.2.8.tgz", "integrity": "sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo=" }, "handle-thing": { @@ -10939,7 +10939,7 @@ }, "has": { "version": "1.0.3", - "resolved": "http://registry.npm.ishopex.cn/has/-/has-1.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "requires": { "function-bind": "^1.1.1" @@ -10960,7 +10960,7 @@ }, "has-flag": { "version": "3.0.0", - "resolved": "http://registry.npm.ishopex.cn/has-flag/-/has-flag-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbol-support-x": { @@ -11408,7 +11408,7 @@ }, "iconv-lite": { "version": "0.4.24", - "resolved": "http://registry.npm.ishopex.cn/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1621826342262&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz", "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -11449,7 +11449,7 @@ }, "ieee754": { "version": "1.2.1", - "resolved": "http://registry.npm.ishopex.cn/ieee754/-/ieee754-1.2.1.tgz", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838209136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz", "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=" }, "iferr": { @@ -11545,7 +11545,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "http://registry.npm.ishopex.cn/inflight/-/inflight-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { "once": "^1.3.0", @@ -11554,7 +11554,7 @@ }, "inherits": { "version": "2.0.4", - "resolved": "http://registry.npm.ishopex.cn/inherits/-/inherits-2.0.4.tgz", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" }, "ini": { @@ -11632,7 +11632,7 @@ }, "inquirer-checkbox-search": { "version": "1.0.1", - "resolved": "http://registry.npm.ishopex.cn/inquirer-checkbox-search/-/inquirer-checkbox-search-1.0.1.tgz", + "resolved": "https://registry.npmmirror.com/inquirer-checkbox-search/download/inquirer-checkbox-search-1.0.1.tgz", "integrity": "sha1-cQ84uKvzy/6Y3pMOsteZtsuCOC8=", "dev": true, "requires": { @@ -11646,13 +11646,13 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "http://registry.npm.ishopex.cn/ansi-regex/-/ansi-regex-3.0.0.tgz", + "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-3.0.0.tgz?cache=0&sync_timestamp=1631634988487&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-regex%2Fdownload%2Fansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "chalk": { "version": "2.4.2", - "resolved": "http://registry.npm.ishopex.cn/chalk/-/chalk-2.4.2.tgz", + "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646655305&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", "dev": true, "requires": { @@ -11663,13 +11663,13 @@ }, "chardet": { "version": "0.4.2", - "resolved": "http://registry.npm.ishopex.cn/chardet/-/chardet-0.4.2.tgz", + "resolved": "https://registry.npmmirror.com/chardet/download/chardet-0.4.2.tgz?cache=0&sync_timestamp=1634639108550&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fchardet%2Fdownload%2Fchardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, "external-editor": { "version": "2.2.0", - "resolved": "http://registry.npm.ishopex.cn/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz", "integrity": "sha1-BFURz9jRM/OEZnPRBHwVTiFK09U=", "dev": true, "requires": { @@ -11680,7 +11680,7 @@ }, "inquirer": { "version": "3.3.0", - "resolved": "http://registry.npm.ishopex.cn/inquirer/-/inquirer-3.3.0.tgz", + "resolved": "https://registry.npmmirror.com/inquirer/download/inquirer-3.3.0.tgz?cache=0&sync_timestamp=1633473424517&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Finquirer%2Fdownload%2Finquirer-3.3.0.tgz", "integrity": "sha1-ndLyrXZdyrH/BEO0kUQqILoifck=", "dev": true, "requires": { @@ -11702,13 +11702,13 @@ }, "rx-lite": { "version": "4.0.8", - "resolved": "http://registry.npm.ishopex.cn/rx-lite/-/rx-lite-4.0.8.tgz", + "resolved": "https://registry.nlark.com/rx-lite/download/rx-lite-4.0.8.tgz", "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "dev": true }, "strip-ansi": { "version": "4.0.0", - "resolved": "http://registry.npm.ishopex.cn/strip-ansi/-/strip-ansi-4.0.0.tgz", + "resolved": "https://registry.npmmirror.com/strip-ansi/download/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { @@ -11739,7 +11739,7 @@ }, "interpret": { "version": "1.4.0", - "resolved": "http://registry.npm.ishopex.cn/interpret/-/interpret-1.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz", "integrity": "sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=" }, "intersection-observer": { @@ -11849,7 +11849,7 @@ }, "is-binary-path": { "version": "2.1.0", - "resolved": "http://registry.npm.ishopex.cn/is-binary-path/-/is-binary-path-2.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz", "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", "requires": { "binary-extensions": "^2.0.0" @@ -11884,7 +11884,7 @@ }, "is-core-module": { "version": "2.8.0", - "resolved": "http://registry.npm.ishopex.cn/is-core-module/-/is-core-module-2.8.0.tgz", + "resolved": "https://registry.npmmirror.com/is-core-module/download/is-core-module-2.8.0.tgz?cache=0&sync_timestamp=1634237302390&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-core-module%2Fdownload%2Fis-core-module-2.8.0.tgz", "integrity": "sha1-AyEzbD0JJeSX/Zf12VyxFKXM1Ug=", "requires": { "has": "^1.0.3" @@ -11968,7 +11968,7 @@ }, "is-extglob": { "version": "2.1.1", - "resolved": "http://registry.npm.ishopex.cn/is-extglob/-/is-extglob-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-finite": { @@ -11983,7 +11983,7 @@ }, "is-glob": { "version": "4.0.3", - "resolved": "http://registry.npm.ishopex.cn/is-glob/-/is-glob-4.0.3.tgz", + "resolved": "https://registry.npmmirror.com/is-glob/download/is-glob-4.0.3.tgz", "integrity": "sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ=", "requires": { "is-extglob": "^2.1.1" @@ -12005,13 +12005,13 @@ }, "is-interactive": { "version": "1.0.0", - "resolved": "http://registry.npm.ishopex.cn/is-interactive/-/is-interactive-1.0.0.tgz", + "resolved": "https://registry.nlark.com/is-interactive/download/is-interactive-1.0.0.tgz", "integrity": "sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=", "dev": true }, "is-invalid-path": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/is-invalid-path/download/is-invalid-path-0.1.0.tgz", "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", "dev": true, "requires": { @@ -12020,13 +12020,13 @@ "dependencies": { "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "resolved": "https://registry.npmmirror.com/is-glob/download/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { @@ -12052,7 +12052,7 @@ }, "is-number": { "version": "7.0.0", - "resolved": "http://registry.npm.ishopex.cn/is-number/-/is-number-7.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=" }, "is-number-object": { @@ -12181,7 +12181,7 @@ }, "is-unicode-supported": { "version": "0.1.0", - "resolved": "http://registry.npm.ishopex.cn/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "resolved": "https://registry.nlark.com/is-unicode-supported/download/is-unicode-supported-0.1.0.tgz?cache=0&sync_timestamp=1625294654260&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-unicode-supported%2Fdownload%2Fis-unicode-supported-0.1.0.tgz", "integrity": "sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc=", "dev": true }, @@ -12197,7 +12197,7 @@ }, "is-valid-path": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/is-valid-path/download/is-valid-path-0.1.1.tgz", "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", "dev": true, "requires": { @@ -12349,7 +12349,7 @@ }, "jsesc": { "version": "2.5.2", - "resolved": "http://registry.npm.ishopex.cn/jsesc/-/jsesc-2.5.2.tgz", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=" }, "json-buffer": { @@ -12541,7 +12541,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "https://registry.nlark.com/load-json-file/download/load-json-file-1.1.0.tgz?cache=0&sync_timestamp=1631508607226&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fload-json-file%2Fdownload%2Fload-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { "graceful-fs": "^4.1.2", @@ -12566,7 +12566,7 @@ }, "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "resolved": "https://registry.nlark.com/strip-bom/download/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { "is-utf8": "^0.2.0" @@ -12722,7 +12722,7 @@ }, "lodash.memoize": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, @@ -12740,13 +12740,13 @@ }, "lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "resolved": "https://registry.npm.taobao.org/lodash.truncate/download/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, "lodash.unescape": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/lodash.unescape/download/lodash.unescape-4.0.1.tgz", "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", "dev": true }, @@ -12778,7 +12778,7 @@ }, "loglevel-colored-level-prefix": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/loglevel-colored-level-prefix/download/loglevel-colored-level-prefix-1.0.0.tgz", "integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=", "dev": true, "requires": { @@ -12788,13 +12788,13 @@ "dependencies": { "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995778321&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1627646655305&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -12807,7 +12807,7 @@ }, "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } @@ -13228,12 +13228,12 @@ }, "mime-db": { "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "resolved": "https://registry.npmmirror.com/mime-db/download/mime-db-1.51.0.tgz?cache=0&sync_timestamp=1636425932298&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "resolved": "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.34.tgz?cache=0&sync_timestamp=1636432275511&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { "mime-db": "1.51.0" @@ -13874,7 +13874,7 @@ }, "normalize-path": { "version": "3.0.0", - "resolved": "http://registry.npm.ishopex.cn/normalize-path/-/normalize-path-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=" }, "normalize-range": { @@ -14397,7 +14397,7 @@ }, "once": { "version": "1.4.0", - "resolved": "http://registry.npm.ishopex.cn/once/-/once-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { "wrappy": "1" @@ -14550,7 +14550,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npm.ishopex.cn/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { @@ -14766,7 +14766,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npm.ishopex.cn/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { @@ -14781,7 +14781,7 @@ }, "path-parse": { "version": "1.0.7", - "resolved": "http://registry.npm.ishopex.cn/path-parse/-/path-parse-1.0.7.tgz", + "resolved": "https://registry.nlark.com/path-parse/download/path-parse-1.0.7.tgz", "integrity": "sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=" }, "path-type": { @@ -14819,7 +14819,7 @@ }, "picomatch": { "version": "2.3.0", - "resolved": "http://registry.npm.ishopex.cn/picomatch/-/picomatch-2.3.0.tgz", + "resolved": "https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz?cache=0&sync_timestamp=1621648246651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpicomatch%2Fdownload%2Fpicomatch-2.3.0.tgz", "integrity": "sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=" }, "pify": { @@ -16721,7 +16721,7 @@ }, "read-pkg": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "resolved": "https://registry.nlark.com/read-pkg/download/read-pkg-1.1.0.tgz?cache=0&sync_timestamp=1628984695234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fread-pkg%2Fdownload%2Fread-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "requires": { "load-json-file": "^1.0.0", @@ -16731,7 +16731,7 @@ "dependencies": { "path-type": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz?cache=0&sync_timestamp=1611752015315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "requires": { "graceful-fs": "^4.1.2", @@ -16748,7 +16748,7 @@ }, "read-pkg-up": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "resolved": "https://registry.npmmirror.com/read-pkg-up/download/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "requires": { "find-up": "^1.0.0", @@ -16757,7 +16757,7 @@ "dependencies": { "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "resolved": "https://registry.npmmirror.com/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1633618659233&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "requires": { "path-exists": "^2.0.0", @@ -16766,7 +16766,7 @@ }, "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "resolved": "https://registry.nlark.com/path-exists/download/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "requires": { "pinkie-promise": "^2.0.0" @@ -16846,7 +16846,7 @@ }, "rechoir": { "version": "0.6.2", - "resolved": "http://registry.npm.ishopex.cn/rechoir/-/rechoir-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "requires": { "resolve": "^1.1.6" @@ -17271,7 +17271,7 @@ }, "require-relative": { "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "resolved": "https://registry.npm.taobao.org/require-relative/download/require-relative-0.8.7.tgz", "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", "dev": true }, @@ -17288,7 +17288,7 @@ }, "resolve": { "version": "1.20.0", - "resolved": "http://registry.npm.ishopex.cn/resolve/-/resolve-1.20.0.tgz", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz", "integrity": "sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=", "requires": { "is-core-module": "^2.2.0", @@ -17519,7 +17519,7 @@ }, "run-async": { "version": "2.4.1", - "resolved": "http://registry.npm.ishopex.cn/run-async/-/run-async-2.4.1.tgz", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz", "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=" }, "run-parallel": { @@ -17547,7 +17547,7 @@ }, "rx-lite-aggregates": { "version": "4.0.8", - "resolved": "http://registry.npm.ishopex.cn/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "resolved": "https://registry.nlark.com/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { @@ -17577,7 +17577,7 @@ }, "safer-buffer": { "version": "2.1.2", - "resolved": "http://registry.npm.ishopex.cn/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" }, "sass": { @@ -18049,7 +18049,7 @@ }, "shelljs": { "version": "0.8.4", - "resolved": "http://registry.npm.ishopex.cn/shelljs/-/shelljs-0.8.4.tgz", + "resolved": "https://registry.npm.taobao.org/shelljs/download/shelljs-0.8.4.tgz", "integrity": "sha1-3naE/ut2f4cWsyYHiooAh1iQ48I=", "requires": { "glob": "^7.0.0", @@ -18069,7 +18069,7 @@ }, "signal-exit": { "version": "3.0.5", - "resolved": "http://registry.npm.ishopex.cn/signal-exit/-/signal-exit-3.0.5.tgz", + "resolved": "https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.5.tgz?cache=0&sync_timestamp=1632948374592&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.5.tgz", "integrity": "sha1-nj6MwMdamUcrRDIQM6dwLnc4JS8=" }, "slash": { @@ -18265,7 +18265,7 @@ }, "source-map": { "version": "0.5.7", - "resolved": "http://registry.npm.ishopex.cn/source-map/-/source-map-0.5.7.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-js": { @@ -19396,7 +19396,7 @@ }, "supports-color": { "version": "5.5.0", - "resolved": "http://registry.npm.ishopex.cn/supports-color/-/supports-color-5.5.0.tgz", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-5.5.0.tgz", "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", "requires": { "has-flag": "^3.0.0" @@ -19613,7 +19613,7 @@ }, "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } @@ -19639,7 +19639,7 @@ }, "terser-webpack-plugin": { "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/download/terser-webpack-plugin-5.2.5.tgz?cache=0&sync_timestamp=1636385968704&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-5.2.5.tgz", "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", "dev": true, "requires": { @@ -19690,7 +19690,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npm.ishopex.cn/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -19724,7 +19724,7 @@ }, "tmp": { "version": "0.0.33", - "resolved": "http://registry.npm.ishopex.cn/tmp/-/tmp-0.0.33.tgz", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", "requires": { "os-tmpdir": "~1.0.2" @@ -19743,7 +19743,7 @@ }, "to-fast-properties": { "version": "2.0.0", - "resolved": "http://registry.npm.ishopex.cn/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { @@ -19777,7 +19777,7 @@ }, "to-regex-range": { "version": "5.0.1", - "resolved": "http://registry.npm.ishopex.cn/to-regex-range/-/to-regex-range-5.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", "requires": { "is-number": "^7.0.0" @@ -20383,7 +20383,7 @@ }, "util": { "version": "0.10.4", - "resolved": "http://registry.npm.ishopex.cn/util/-/util-0.10.4.tgz", + "resolved": "https://registry.nlark.com/util/download/util-0.10.4.tgz", "integrity": "sha1-OqASW/5mikZy3liFfTrOJ+y3aQE=", "dev": true, "requires": { @@ -20392,7 +20392,7 @@ "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "http://registry.npm.ishopex.cn/inherits/-/inherits-2.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true } @@ -20400,7 +20400,7 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "http://registry.npm.ishopex.cn/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { @@ -20472,7 +20472,7 @@ "dependencies": { "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" } } @@ -20650,7 +20650,7 @@ }, "wcwidth": { "version": "1.0.1", - "resolved": "http://registry.npm.ishopex.cn/wcwidth/-/wcwidth-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "requires": { "defaults": "^1.0.3" @@ -21138,7 +21138,7 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "http://registry.npm.ishopex.cn/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { diff --git a/src/api/consts.js b/src/api/consts.js new file mode 100644 index 000000000..2fcb8aa51 --- /dev/null +++ b/src/api/consts.js @@ -0,0 +1,16 @@ +export const HTTP_STATUS = { + SUCCESS: 200, + CREATED: 201, + ACCEPTED: 202, + CLIENT_ERROR: 400, + UNAUTHORIZED: 401, + FORBIDDEN: 403, + NOT_FOUND: 404, + SERVER_ERROR: 500, + BAD_GATEWAY: 502, + SERVICE_UNAVAILABLE: 503, + GATEWAY_TIMEOUT: 504, + BUSINESS_ERROR: 422, + TOKEN_NEEDS_REFRESH: 401001, + USER_FORBIDDEN: 401002 +} diff --git a/src/api/req.js b/src/api/req.js index 3aeb742af..ec86840c4 100644 --- a/src/api/req.js +++ b/src/api/req.js @@ -1,95 +1,111 @@ import Taro from '@tarojs/taro' -import S from '@/spx' -import api from '@/api' import qs from 'qs' +import S from '@/spx' +import { isAlipay, isWeixin } from '@/utils' +import log from '@/utils/log' +import { HTTP_STATUS } from './consts' -import { isAlipay, isWeb } from '@/utils' - -function addQuery(url, query) { - return url + (url.indexOf('?') >= 0 ? '&' : '?') + query -} +let demoIsTokenRefreshed = true +setTimeout(() => { + demoIsTokenRefreshed = false +}, 0); class RequestQueue { constructor() { this.requestList = [] + this.isRunning = false } - push(req) { + push (req) { this.requestList.push(req) } - async run() { - const request = this.requestList.shift() - log.debug(`requestQueue length is ${this.requestList.length}`) - if (request) { - await request() - if (this.requestList.length > 0 && !API.isRefreshing) { - this.run() + destroy () { + this.isRunning = false + this.requestList = [] + } + + run () { + this.isRunning = true + const next = async () => { + const req = this.requestList.shift() + log.debug(`requestQueue length is ${this.requestList.length}`) + if (!req) return + + await req() + if (this.requestList.length > 0 && this.isRunning) { + await next() } } + + next() } } -const requestQueue = new RequestQueue() - class API { constructor(options = {}) { - let { baseURL = '/' } = options + this.setOptions(options) + this.isRefreshingToken = false + this.requestQueue = new RequestQueue() + } + + setOptions (opts) { + let { baseURL = '/' } = opts if (!/\/$/.test(baseURL)) { baseURL = baseURL + '/' } + this.baseURL = baseURL - options.company_id = process.env.APP_COMPANY_ID - if (process.env.TARO_ENV === 'weapp' || isAlipay) { + const options = { + company_id: process.env.APP_COMPANY_ID + } + if (isWeixin || isAlipay) { const extConfig = Taro.getExtConfigSync ? Taro.getExtConfigSync() : {} options.appid = extConfig.appid if (extConfig.company_id) { options.company_id = extConfig.company_id } } - this.options = options - this.baseURL = baseURL - this.genMethods(['get', 'post', 'delete', 'put']) } - static isRefreshing = false + errorToast (data) { + let errMsg = + data.message || (data.data && data.data.message) || '操作失败,请稍后重试' - genMethods(methods) { - methods.forEach((method) => { - this[method] = (url, data, config = {}) => - this.makeReq({ - ...config, - method, - url, - data - }) - }) - } - - errorToast(data) { - let errMsg = data.message || '操作失败,请稍后重试' - - let newText = '' if (errMsg.length > 11) { - newText = errMsg.substring(0, 11) + '\n' + errMsg.substring(11) - } else { - newText = errMsg + errMsg = errMsg.substring(0, 11) + '\n' + errMsg.substring(11) } + setTimeout(() => { Taro.showToast({ icon: 'none', - title: newText + title: errMsg }) }, 200) } - makeReq(config) { - const { url, data, header = {}, method = 'GET', showLoading, showError = true } = config + getReqUrl (url) { + return /^http/.test(url) ? url : `${this.baseURL}${url.replace(/^\//, '')}` + } + + handleLogout () { + this.requestQueue.destroy() + this.isRefreshingToken = false + S.logout() + setTimeout(() => { + Taro.redirectTo({ url: '/pages/member/index' }) + }, 300) + } + + intereptorReq (params) { + const { url, data, header = {}, method = 'GET' } = params + const { company_id, appid } = this.options const methodIsGet = method.toLowerCase() === 'get' - let reqUrl = /^http/.test(url) ? url : `${this.baseURL}${url.replace(/^\//, '')}` + const reqUrl = this.getReqUrl(url) const query = !data || typeof data === 'string' ? qs.parse(data) : data + query.company_id = company_id if (!methodIsGet) { header['content-type'] = header['content-type'] || 'application/x-www-form-urlencoded' @@ -100,124 +116,210 @@ class API { header['Authorization'] = `Bearer ${token}` } - const { company_id, appid } = this.options - if (process.env.TARO_ENV === 'weapp' || isAlipay) { - if (appid) { - header['authorizer-appid'] = appid - } + + if ((isWeixin || isAlipay) && appid) { + header['authorizer-appid'] = appid } - const options = { - ...config, + const config = { + ...params, url: reqUrl, data: query, method: method.toUpperCase(), header: header } + return config + } + + intereptorRes (res) { + const { data, statusCode, config } = res + const { showError = true } = config + + if (statusCode == HTTP_STATUS.SUCCESS) { + const { status_code } = data + if (!status_code) { + return data.data + } else { + // status_code 不为0,表示有错误 + if (showError) { + this.errorToast(data) + } + return Promise.reject(this.reqError(res)) + } + } + + if (statusCode === HTTP_STATUS.UNAUTHORIZED) { + if ((data.data && data.data.code) === HTTP_STATUS.USER_FORBIDDEN) { + if (showError) { + this.errorToast(data) + } + return Promise.reject(this.reqError(res, '帐号已被禁用')) + } + + this.handleLogout() + return Promise.reject(this.reqError(res)) + } + + if (statusCode === HTTP_STATUS.NOT_FOUND) { + return Promise.reject(this.reqError(res, '请求资源不存在')) + } + + if (statusCode === HTTP_STATUS.BAD_GATEWAY) { + return Promise.reject(this.reqError(res, '服务端出现了问题')) + } + + return Promise.reject(this.reqError(res, `API error: ${statusCode}`)) + } + + async refreshToken () { + this.isRefreshingToken = true + const token = S.getAuthToken() + try { + await this.makeReq( + { + header: { + Authorization: `Bearer ${token}` + }, + method: 'get', + url: this.getReqUrl('/token/refresh'), + noPending: true + }, + (res) => { + console.log('refreshing token: ', res) + const { statusCode } = res + if (statusCode === HTTP_STATUS.UNAUTHORIZED) { + return this.handleLogout() + } + + const newToken = res.header.Authorization.split(' ')[1] + S.setAuthToken(newToken) + } + ) + } catch (e) { + console.log(e) + } + + this.isRefreshingToken = false + } + + /** + * + * + * @param {Object} config 请求参数 + * @param {function(Object)} [intereptorRes] 处理请求回调数据的方法 + * @param {function(Object)} [intereptorReq] 处理请求参数的方法 + * @return {Object} 请求返回的数据 + * @memberof API + */ + async makeReq (config = {}, intereptorRes, intereptorReq) { + const { showLoading } = config + const options = intereptorReq ? intereptorReq(config) : this.intereptorReq(config) + if (showLoading) { Taro.showLoading({ mask: true }) } - options.data = { - ...(options.data || {}), - company_id - } - if (options.method === 'GET') { - options.url = addQuery(options.url, qs.stringify(options.data)) - delete options.data - } else { - // nest data - if (isAlipay && options.method === 'DELETE') { - options.url = addQuery(options.url, qs.stringify(options.data)) - options.data = options.data - options.dataType = 'json' - options.headers = options.header - options.responseType = 'text' - options.responseCharset = 'utf-8' + let ret + try { + const res = await Taro.request(options) + res.config = options + if ( + res.statusCode === HTTP_STATUS.UNAUTHORIZED && + (res.data.data && res.data.data.code) === HTTP_STATUS.TOKEN_NEEDS_REFRESH && + S.getAuthToken() + ) { + // token失效时重造请求,并刷新token + if (!this.isRefreshingToken) { + await this.refreshToken() + } + ret = await this.pendingReq(config, intereptorRes, intereptorReq, true) } else { - options.data = qs.stringify(options.data) + if (!this.isRefreshingToken || config.noPending) { + ret = intereptorRes ? intereptorRes(res) : this.intereptorRes(res) + } else { + // 正在刷新token,将请求放入队列 + ret = await this.pendingReq(config, intereptorRes, intereptorReq) + } } + } catch (e) { + console.log(e) } - const _this = this - return Taro.request( options ).then( ( res ) => { - // debugger; - if (showLoading) { - Taro.hideLoading() - } - const { statusCode } = res - const { data } = res.data - if ( statusCode >= 200 && statusCode < 300 ) { - const { status_code, message, code } = data - if ( status_code ) { - if ( status_code == 401 ) { - if ( code == 401001 ) { - requestQueue.push( () => { - return new Promise( ( resolve, reject ) => { - resolve( _this.makeReq( config ) ) - } ) - } ) - if ( !API.isRefreshing ) { - API.isRefreshing = true - api.wx - .refreshToken() - .then( ( res ) => { - // log.debug( `token refresh success: ${res.token}` ) - API.isRefreshing = false - S.setAuthToken( res.token ) - requestQueue.run() - } ) - .catch( ( e ) => { - API.isRefreshing = false - Taro.redirectTo( { url: '/pages/member/index' } ) - } ) - .finally( () => { - API.isRefreshing = false - } ) - } - } else if ( code == 401002 ) { - this.errorToast( { - msg: '帐号已被禁用' - } ) - return Promise.reject( this.reqError( data, '帐号已被禁用' ) ) - } else { - S.setAuthToken( '' ) - Taro.redirectTo( { url: '/pages/member/index' } ) - } - - } else { - this.errorToast( data ) - return Promise.reject( this.reqError( data ) ) - } - } else { - if ( options.url.indexOf( 'token/refresh' ) >= 0 ) { - data['token'] = res.header.Authorization.replace( 'Bearer ', '' ) - } - return data + if (showLoading) { + Taro.hideLoading() + } + + return ret + } + + pendingReq (config, intereptorRes, intereptorReq, isSend) { + return new Promise((resolve) => { + const pendingReq = async () => { + // 仅加入队列一次 + const reqConfig = { + ...config, + noPending: true } - } else { - return Promise.reject( this.reqError( data, `API error: ${statusCode}` ) ) + const data = await this.makeReq(reqConfig, intereptorRes, intereptorReq) + resolve(data) } - } ).catch( e => { - return Promise.reject( this.reqError( { - message: e.statusText, - statusCode: e.status - })) + this.requestQueue.push(pendingReq) + if (isSend) this.requestQueue.run() }) } - reqError(res, msg = '') { - const errMsg = res.message || msg + get (url, data, config) { + return this.makeReq({ + ...config, + url, + data, + method: 'GET' + }) + } + + reqError (res, msg = '') { + const errMsg = (res.data && res.data.message) || msg const err = new Error(errMsg) err.res = res - err.code = res.statusCode return err } + + post (url, data, config) { + return this.makeReq({ + ...config, + url, + data, + method: 'POST' + }) + } + + put (url, data, config) { + return this.makeReq({ + ...config, + url, + data, + method: 'PUT' + }) + } + + delete (url, data, config) { + return this.makeReq({ + ...config, + url, + data, + method: 'DELETE' + }) + } } +if (process.env.NODE_ENV === 'production') { + Taro.addInterceptor(Taro.interceptors.logInterceptor) +} + + export default new API({ baseURL: process.env.APP_BASE_URL }) diff --git a/src/pages/member/index.js b/src/pages/member/index.js index f1e580155..8b47cdeaf 100644 --- a/src/pages/member/index.js +++ b/src/pages/member/index.js @@ -13,7 +13,7 @@ import { styleNames, classNames, isWeixin -} from '@/utils' +} from '@/utils' import { customName } from '@/utils/point' import userIcon from '@/assets/imgs/user-icon.png' import MemberBanner from './comps/member-banner'