diff --git a/.github/workflows/notify.yml b/.github/workflows/notify.yml index 033ad82..4867009 100644 --- a/.github/workflows/notify.yml +++ b/.github/workflows/notify.yml @@ -21,9 +21,7 @@ jobs: key: ${{ hashFiles('yarn.lock') }} - if: ${{ steps.cache.outputs.cache-hit != 'true' }} run: npx yarn - - run: | - npm test - npx ts-node -T ./scripts/notifyDingtalk.ts + - run: npx notify-dingtalk env: D_ACCESS_TOKEN: ${{ secrets.D_ACCESS_TOKEN }} D_SECRET: ${{ secrets.D_SECRET }} diff --git a/notify-dingtalk.config.js b/notify-dingtalk.config.js new file mode 100644 index 0000000..9aa1320 --- /dev/null +++ b/notify-dingtalk.config.js @@ -0,0 +1,20 @@ +const { + defineConfig, + getLatestConventionalChangelog, +} = require('notify-dingtalk') +const { dedent } = require('vtils') + +module.exports = defineConfig({ + title: '发布公告', + content: dedent` + # 发布公告 + + --- + + ${getLatestConventionalChangelog('./CHANGELOG.md')} + + --- + + [进入主页→](https://github.com/fjc0k/yapi-to-typescript) + `, +}) diff --git a/package.json b/package.json index 80e56e4..46b9119 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "husky": "^4", "jest": "^26", "lint-staged": "^10", + "notify-dingtalk": "^1.2.0", "openapi-types": "^7.0.1", "shx": "^0.3.2", "standard-version": "^4.4.0", diff --git a/scripts/notifyDingtalk.ts b/scripts/notifyDingtalk.ts deleted file mode 100644 index 3f31389..0000000 --- a/scripts/notifyDingtalk.ts +++ /dev/null @@ -1,68 +0,0 @@ -import crypto from 'crypto' -import fs from 'fs-extra' -import got from 'got' -import { dedent } from 'vtils' -import { join } from 'path' - -async function main( - robots: Array<{ - name: string - accessToken: string - secret: string - atMobiles?: string[] - }>, -) { - const changelogFile = join(__dirname, '../CHANGELOG.md') - const changelogFullContent = await fs.readFile(changelogFile, 'utf8') - const changelogContent = - changelogFullContent.match(/\n(#+ [[\d].+?)\n*#+ [[\d]/s)?.[1] ?? - changelogFullContent.match(/\n(#+ [\d].+?)\n*$/s)![1] - await Promise.all( - robots.map(async ({ accessToken, secret, atMobiles = [] }) => { - const timestamp = Date.now() - const sign = crypto - .createHmac('sha256', secret) - .update(`${timestamp}\n${secret}`) - .digest('base64') - const { body } = await got.post('https://oapi.dingtalk.com/robot/send', { - searchParams: { - access_token: accessToken, - timestamp: timestamp, - sign: sign, - }, - json: { - msgtype: 'markdown', - markdown: { - title: '发布公告', - text: dedent` - # 发布公告 - - ${atMobiles.map(mobile => `@${mobile}`).join(' ')} - - --- - - ${changelogContent} - - --- - - [进入主页→](https://github.com/fjc0k/yapi-to-typescript) - `, - }, - at: { - atMobiles: atMobiles, - isAtAll: false, - }, - }, - }) - console.log(body) - }), - ) -} - -main([ - { - name: 'YTT', - accessToken: process.env.D_ACCESS_TOKEN!, - secret: process.env.D_SECRET!, - }, -]) diff --git a/yarn.lock b/yarn.lock index eda0faa..bd7747d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1970,6 +1970,11 @@ resolved "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-3.1.0.tgz#d8735532635bea69ad39119df5f0f10099bd09dc" integrity sha1-2HNVMmNb6mmtORGd9fDxAJm9Cdw= +"@sindresorhus/is@^4.0.0": + version "4.0.0" + resolved "https://registry.npm.taobao.org/@sindresorhus/is/download/@sindresorhus/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" + integrity sha1-L/Z06WEbRbUoiW2CDT16gS3i8OQ= + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.npm.taobao.org/@sinonjs/commons/download/@sinonjs/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -2508,7 +2513,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/js-cookie@2.2.6": +"@types/js-cookie@2.2.6", "@types/js-cookie@^2.2.6": version "2.2.6" resolved "https://registry.npm.taobao.org/@types/js-cookie/download/@types/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" integrity sha1-8aHLNa/0e8XPsFywxEHKkekUwm8= @@ -3709,7 +3714,7 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@xobotyi/scrollbar-width@1.9.5": +"@xobotyi/scrollbar-width@1.9.5", "@xobotyi/scrollbar-width@^1.9.5": version "1.9.5" resolved "https://registry.npm.taobao.org/@xobotyi/scrollbar-width/download/@xobotyi/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" integrity sha1-gCJKaRknL0Bbh5E8oTuSkpvfPE0= @@ -4435,7 +4440,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^4.0.3: +bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.npm.taobao.org/bl/download/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo= @@ -5691,7 +5696,7 @@ copy-text-to-clipboard@^2.2.0: resolved "https://registry.npm.taobao.org/copy-text-to-clipboard/download/copy-text-to-clipboard-2.2.0.tgz#329dd6daf8c42034c763ace567418401764579ae" integrity sha1-Mp3W2vjEIDTHY6zlZ0GEAXZFea4= -copy-to-clipboard@^3.2.0: +copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: version "3.3.1" resolved "https://registry.npm.taobao.org/copy-to-clipboard/download/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" integrity sha1-EVqhqZmP+rYZb5MHatbaO5E2Yq4= @@ -6118,6 +6123,11 @@ csstype@^3.0.2: resolved "https://registry.npm.taobao.org/csstype/download/csstype-3.0.2.tgz#ee5ff8f208c8cd613b389f7b222c9801ca62b3f7" integrity sha1-7l/48gjIzWE7OJ97IiyYAcpis/c= +csstype@^3.0.6: + version "3.0.7" + resolved "https://registry.npm.taobao.org/csstype/download/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" + integrity sha1-Kl+3XhAV6E3RVpL3HomhRQKQlQs= + cuid@^2.1.8: version "2.1.8" resolved "https://registry.npm.taobao.org/cuid/download/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" @@ -7405,6 +7415,11 @@ fastest-stable-stringify@^1.0.1: resolved "https://registry.npm.taobao.org/fastest-stable-stringify/download/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= +fastest-stable-stringify@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/fastest-stable-stringify/download/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" + integrity sha1-N1emd09uyN5AxOhuwo6gJBchTHY= + fastq@^1.6.0: version "1.8.0" resolved "https://registry.npm.taobao.org/fastq/download/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" @@ -8137,6 +8152,23 @@ got@^11.5.1: p-cancelable "^2.0.0" responselike "^2.0.0" +got@^11.8.1: + version "11.8.2" + resolved "https://registry.npm.taobao.org/got/download/got-11.8.2.tgz?cache=0&sync_timestamp=1614332692792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgot%2Fdownload%2Fgot-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" + integrity sha1-ers5Weoowx81dvFXbB7/ziPzNZk= + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.1" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + graceful-fs@^4.1.11: version "4.2.6" resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.6.tgz?cache=0&sync_timestamp=1612893543289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" @@ -8704,6 +8736,14 @@ http2-wrapper@^1.0.0-beta.5.0: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/http2-wrapper/download/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha1-uPVeDB8l1OvQizsMLAeflZCACz0= + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -8940,6 +8980,13 @@ inline-style-prefixer@^4.0.0: bowser "^1.7.3" css-in-js-utils "^2.0.0" +inline-style-prefixer@^6.0.0: + version "6.0.0" + resolved "https://registry.npm.taobao.org/inline-style-prefixer/download/inline-style-prefixer-6.0.0.tgz#f73d5dbf2855733d6b153a4d24b7b47a73e9770b" + integrity sha1-9z1dvyhVcz1rFTpNJLe0enPpdws= + dependencies: + css-in-js-utils "^2.0.0" + inquirer@^7.0.0: version "7.3.3" resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-7.3.3.tgz?cache=0&sync_timestamp=1595471596213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -9380,6 +9427,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/is-unicode-supported/download/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc= + is-upper-case@^1.1.0: version "1.1.2" resolved "https://registry.npm.taobao.org/is-upper-case/download/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" @@ -10784,6 +10836,14 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha1-P727lbRoOsn8eFER55LlWNSr1QM= + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^4.0.0: version "4.0.0" resolved "https://registry.npm.taobao.org/log-update/download/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -11622,6 +11682,20 @@ nano-css@^5.2.1: stacktrace-js "^2.0.0" stylis "3.5.0" +nano-css@^5.3.1: + version "5.3.1" + resolved "https://registry.npm.taobao.org/nano-css/download/nano-css-5.3.1.tgz?cache=0&sync_timestamp=1610528769415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnano-css%2Fdownload%2Fnano-css-5.3.1.tgz#b709383e07ad3be61f64edffacb9d98250b87a1f" + integrity sha1-twk4PgetO+YfZO3/rLnZglC4eh8= + dependencies: + css-tree "^1.1.2" + csstype "^3.0.6" + fastest-stable-stringify "^2.0.2" + inline-style-prefixer "^6.0.0" + rtl-css-js "^1.14.0" + sourcemap-codec "^1.4.8" + stacktrace-js "^2.0.2" + stylis "^4.0.6" + nanoid@^3.1.20: version "3.1.22" resolved "https://registry.npm.taobao.org/nanoid/download/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" @@ -11822,6 +11896,16 @@ normalize-url@^4.1.0: resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-4.5.0.tgz?cache=0&sync_timestamp=1596371556537&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha1-RTNUCH5sqWlXvY9br3U/WYIUISk= +notify-dingtalk@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/notify-dingtalk/download/notify-dingtalk-1.2.0.tgz#99d533b0bd272023c75b707d12506eea019bc835" + integrity sha1-mdUzsL0nICPHW3B9ElBu6gGbyDU= + dependencies: + "@babel/runtime" "^7.12.5" + got "^11.8.1" + ora "^5.1.0" + vtils "^4.1.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -12093,6 +12177,21 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" +ora@^5.1.0: + version "5.4.0" + resolved "https://registry.npm.taobao.org/ora/download/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" + integrity sha1-Qu2khVg1uc0U0zhkyXo8laP1a/Q= + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ora@^5.3.0: version "5.3.0" resolved "https://registry.npm.taobao.org/ora/download/ora-5.3.0.tgz?cache=0&sync_timestamp=1611137058812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" @@ -13835,6 +13934,26 @@ react-use@^15.3.8: ts-easing "^0.2.0" tslib "^2.0.0" +react-use@^17.2.1: + version "17.2.1" + resolved "https://registry.npm.taobao.org/react-use/download/react-use-17.2.1.tgz#c81e12544115ed049c7deba1e3bb3d977dfee9b8" + integrity sha1-yB4SVEEV7QScfeuh47s9l33+6bg= + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.3.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + react@16.x: version "16.14.0" resolved "https://registry.npm.taobao.org/react/download/react-16.14.0.tgz?cache=0&sync_timestamp=1615997915393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact%2Fdownload%2Freact-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" @@ -14419,7 +14538,7 @@ rsvp@^4.8.4: resolved "https://registry.npm.taobao.org/rsvp/download/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha1-yPFVMR0Wf2jyHhaN9x7FsIMRNzQ= -rtl-css-js@^1.9.0: +rtl-css-js@^1.14.0, rtl-css-js@^1.9.0: version "1.14.0" resolved "https://registry.npm.taobao.org/rtl-css-js/download/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" integrity sha1-2qTxkqklCeKSoFGfSyVebjwHa30= @@ -14563,6 +14682,11 @@ screenfull@^5.0.0: resolved "https://registry.npm.taobao.org/screenfull/download/screenfull-5.0.2.tgz?cache=0&sync_timestamp=1581588988262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fscreenfull%2Fdownload%2Fscreenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" integrity sha1-uazc8exnapSGdN9c0P9muQKwvtc= +screenfull@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/screenfull/download/screenfull-5.1.0.tgz?cache=0&sync_timestamp=1608796513160&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fscreenfull%2Fdownload%2Fscreenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" + integrity sha1-hcE8cPTq1MG4qTXHABDf3NLA5cg= + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -15002,7 +15126,7 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha1-UwL4FpAxc1ImVECS5kmB91F1A4M= -sourcemap-codec@^1.4.1: +sourcemap-codec@^1.4.1, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha1-6oBL2UhXQC5pktBaOO8a41qatMQ= @@ -15165,7 +15289,7 @@ stacktrace-gps@^3.0.4: source-map "0.5.6" stackframe "^1.1.1" -stacktrace-js@^2.0.0: +stacktrace-js@^2.0.0, stacktrace-js@^2.0.2: version "2.0.2" resolved "https://registry.npm.taobao.org/stacktrace-js/download/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" integrity sha1-TKk+qfSUdS1VcJoIHUAP2uvuiXs= @@ -15543,6 +15667,11 @@ stylis@3.5.0: resolved "https://registry.npm.taobao.org/stylis/download/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1" integrity sha1-AW+iOWY9d/ho/vW2fPIBxLfHAeE= +stylis@^4.0.6: + version "4.0.9" + resolved "https://registry.npm.taobao.org/stylis/download/stylis-4.0.9.tgz#ae3d5283aa439225cf79dd2d0cf46f8bfd4ad393" + integrity sha1-rj1Sg6pDkiXPed0tDPRvi/1K05M= + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -15790,6 +15919,11 @@ throttle-debounce@^2.1.0: resolved "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-2.2.1.tgz?cache=0&sync_timestamp=1591627127342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrottle-debounce%2Fdownload%2Fthrottle-debounce-2.2.1.tgz#fbd933ae6793448816f7d5b3cae259d464c98137" integrity sha1-+9kzrmeTRIgW99WzyuJZ1GTJgTc= +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-3.0.1.tgz?cache=0&sync_timestamp=1604313826209&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrottle-debounce%2Fdownload%2Fthrottle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" + integrity sha1-MvlNhN+olPeGyaHykOemRbahmrs= + through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -16638,6 +16772,30 @@ vm-browserify@^1.0.1: resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha1-eGQcSIuObKkadfUR56OzKobl3aA= +vtils@^4.1.0: + version "4.34.0" + resolved "https://registry.npm.taobao.org/vtils/download/vtils-4.34.0.tgz?cache=0&sync_timestamp=1616034965682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvtils%2Fdownload%2Fvtils-4.34.0.tgz#186fb37a0c8aa16a59d2fb297c7ab1bd279868c2" + integrity sha1-GG+zegyKoWpZ0vspfHqxvSeYaMI= + dependencies: + "@babel/runtime" "^7.12.18" + "@types/benchmark" "^2.1.0" + "@types/ioredis" "^4.19.4" + "@types/tough-cookie" "^4.0.0" + benchmark "^2.1.4" + cli-table3 "^0.6.0" + cuid "^2.1.8" + date-fns "^2.17.0" + fast-xml-parser "^3.18.0" + ioredis "^4.22.0" + lodash-uni "^1.1.0" + miniprogram-api-typings "^3.2.3" + nanoid "^3.1.20" + react-use "^17.2.1" + tough-cookie "^4.0.0" + tough-cookie-redisstore "^0.0.4" + uuid "^8.3.2" + yup "~0.31.1" + vtils@^4.30.2, vtils@^4.33.0: version "4.33.0" resolved "https://registry.npm.taobao.org/vtils/download/vtils-4.33.0.tgz#f0c2391fd150846ae13ab54cd788c95e38819501"