├── .editorconfig ├── .gitignore ├── .husky └── pre-commit ├── .nvmrc ├── .prettierrc ├── README.md ├── awesome.gif ├── bin └── cdn ├── example └── data │ ├── abc │ ├── test.abc.js │ └── test.web.js │ ├── index.html │ ├── test.abc.js │ └── test.js ├── package.json ├── pnpm-lock.yaml ├── src ├── config │ └── index.ts ├── enums │ └── index.ts ├── index.ts └── utils │ ├── file.ts │ ├── index.ts │ ├── logger.ts │ └── upload │ ├── aliyun.ts │ ├── debug.ts │ ├── index.ts │ ├── qiniu.ts │ └── tencent.ts ├── templates └── cdn.config.js ├── tsconfig.json └── typings.d.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | lib/ 3 | dist/ 4 | .idea 5 | 6 | cdn.config.js 7 | yarn-debug.log* 8 | yarn-error.log* 9 | .DS_Store 10 | 11 | !templates/cdn.config.js 12 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install pretty-quick --staged 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 20 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "printWidth": 80, 5 | "overrides": [ 6 | { 7 | "files": ".prettierrc", 8 | "options": { "parser": "json" } 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 通过命令行将文件上传至对象存储,支持阿里云、腾讯云以及七牛云 2 | 3 | [![npm package](https://img.shields.io/npm/v/cdn-cli.svg)](https://www.npmjs.org/package/cdn-cli) 4 | [![npm](https://img.shields.io/npm/dt/cdn-cli.svg?style=flat-square)](https://www.npmjs.com/package/cdn-cli) 5 | 6 | 7 | 8 | ##### 1. 初始化项目 9 | 10 | ```shell 11 | npx cdn-cli init 12 | ``` 13 | 14 | ##### 2. 配置 15 | 16 | ```js 17 | module.exports = { 18 | rules: [ 19 | { 20 | from: 'dist', 21 | to: '.', 22 | ignore: ['**/*.map', '**/.DS_store'], 23 | noCache: ['**/*.html'], 24 | lastUpload: ['**/*.html'], 25 | }, 26 | ], 27 | environments: { 28 | production: { 29 | type: 'aliyun', 30 | region: 'oss-cn-hangzhou', 31 | bucket: 'xxx', 32 | accessKeyId: 'xxx', 33 | accessKeySecret: 'xxx', 34 | domain: 'https://xxx.xxx.com', 35 | }, 36 | testing: { 37 | type: 'qiniu', 38 | region: '', 39 | bucket: '', 40 | accessKey: '', 41 | secretKey: '', 42 | domain: '', 43 | }, 44 | development: { 45 | type: 'tencent', 46 | region: '', 47 | bucket: '', 48 | appId: '', 49 | secretId: '', 50 | secretKey: '', 51 | domain: '', 52 | }, 53 | }, 54 | }; 55 | ``` 56 | 57 | | 字段 | 类型 | 详情 | 58 | | ---------------- | -------- | -------------------- | 59 | | rules.from | string | 需要上传的资源目录 | 60 | | rules.to | string | 上传目标目录 | 61 | | rules.ignore | string[] | 过滤文件或目录 | 62 | | rules.noCache | string[] | 不缓存的文件或目录 | 63 | | rules.lastUpload | string[] | 最后上传的文件或目录 | 64 | | environments | object[] | 环境 | 65 | 66 | 如果配置文件的参数不存在,系统将从 `process.env` 中获取值。例如,如果 `production` 中的 `region` 值不存在,系统将从 `process.env.region` 中提取。 67 | 68 | ##### 3. 发布项目 69 | 70 | ```shell 71 | npx cdn-cli deploy production 72 | npx cdn-cli deploy testing 73 | npx cdn-cli deploy development 74 | ... 75 | ``` 76 | -------------------------------------------------------------------------------- /awesome.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chooin/cdn-cli/7db88949caa9c96ecd8517a9198277a36d31648e/awesome.gif -------------------------------------------------------------------------------- /bin/cdn: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const { Command } = require('commander'); 4 | const { yellow, red } = require('kleur'); 5 | const path = require('path'); 6 | const pkg = require('../package.json'); 7 | 8 | const program = new Command(); 9 | 10 | program.version(pkg.version); 11 | 12 | program 13 | .name('init') 14 | .description(yellow('初始化')) 15 | .action(() => { 16 | require('../lib/utils/file') 17 | .canCopyFile(path.resolve('./cdn.config.js')) 18 | .then(() => { 19 | require('../lib/utils/file').copyFileSync( 20 | path.resolve(__dirname, '../templates/cdn.config.js'), 21 | path.resolve('./cdn.config.js'), 22 | ); 23 | }) 24 | .catch(() => { 25 | red('cdn.config.js 文件已存在'); 26 | }); 27 | }); 28 | 29 | program 30 | .command('deploy ') 31 | .description(yellow('上传资源')) 32 | .action((environment) => { 33 | require('../lib').deploy(environment); 34 | }); 35 | 36 | program.on('--help', () => { 37 | console.log(); 38 | console.log(' 例子:'); 39 | console.log(); 40 | console.log(' $ cdn init'); 41 | console.log(' $ cdn deploy development'); 42 | }); 43 | 44 | program.parse(process.argv); 45 | -------------------------------------------------------------------------------- /example/data/abc/test.abc.js: -------------------------------------------------------------------------------- 1 | const a = {}; 2 | 3 | console.log(a); 4 | -------------------------------------------------------------------------------- /example/data/abc/test.web.js: -------------------------------------------------------------------------------- 1 | const a = {}; 2 | 3 | console.log(a); 4 | -------------------------------------------------------------------------------- /example/data/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | Document 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /example/data/test.abc.js: -------------------------------------------------------------------------------- 1 | const a = {}; 2 | 3 | console.log(a); 4 | -------------------------------------------------------------------------------- /example/data/test.js: -------------------------------------------------------------------------------- 1 | const a = {}; 2 | 3 | console.log(a); 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cdn-cli", 3 | "version": "5.2.3", 4 | "description": "通过命令行将文件上传至对象存储,支持阿里云、腾讯云以及七牛云", 5 | "scripts": { 6 | "build": "tsc", 7 | "test": "cd example && ../bin/cdn deploy debug && cd -", 8 | "prepare": "husky install" 9 | }, 10 | "license": "MIT", 11 | "bin": { 12 | "cdn": "bin/cdn" 13 | }, 14 | "dependencies": { 15 | "ali-oss": "^6.16.0", 16 | "commander": "^10.0.0", 17 | "cos-nodejs-sdk-v5": "^2.11.12", 18 | "dir-glob": "^3.0.1", 19 | "fs-extra": "^11.1.1", 20 | "glob": "^9.3.1", 21 | "kleur": "^4.1.4", 22 | "lodash": "^4.17.21", 23 | "minimatch": "^7.4.2", 24 | "qiniu": "^7.4.0" 25 | }, 26 | "devDependencies": { 27 | "@types/ali-oss": "^6.16.7", 28 | "@types/dir-glob": "^2.0.1", 29 | "@types/fs-extra": "^11.0.1", 30 | "@types/glob": "^8.1.0", 31 | "@types/lodash": "^4.14.182", 32 | "@types/minimatch": "^5.1.2", 33 | "@types/node": "^18.15.5", 34 | "husky": "^8.0.3", 35 | "prettier": "^2.8.6", 36 | "pretty-quick": "^3.1.3", 37 | "typescript": "^5.0.2" 38 | }, 39 | "files": [ 40 | "bin", 41 | "lib", 42 | "templates" 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | .: 9 | dependencies: 10 | ali-oss: 11 | specifier: ^6.16.0 12 | version: 6.17.1 13 | commander: 14 | specifier: ^10.0.0 15 | version: 10.0.0 16 | cos-nodejs-sdk-v5: 17 | specifier: ^2.11.12 18 | version: 2.11.19 19 | dir-glob: 20 | specifier: ^3.0.1 21 | version: 3.0.1 22 | fs-extra: 23 | specifier: ^11.1.1 24 | version: 11.1.1 25 | glob: 26 | specifier: ^9.3.1 27 | version: 9.3.1 28 | kleur: 29 | specifier: ^4.1.4 30 | version: 4.1.5 31 | lodash: 32 | specifier: ^4.17.21 33 | version: 4.17.21 34 | minimatch: 35 | specifier: ^7.4.2 36 | version: 7.4.2 37 | qiniu: 38 | specifier: ^7.4.0 39 | version: 7.8.0 40 | devDependencies: 41 | '@types/ali-oss': 42 | specifier: ^6.16.7 43 | version: 6.16.7 44 | '@types/dir-glob': 45 | specifier: ^2.0.1 46 | version: 2.0.1 47 | '@types/fs-extra': 48 | specifier: ^11.0.1 49 | version: 11.0.1 50 | '@types/glob': 51 | specifier: ^8.1.0 52 | version: 8.1.0 53 | '@types/lodash': 54 | specifier: ^4.14.182 55 | version: 4.14.191 56 | '@types/minimatch': 57 | specifier: ^5.1.2 58 | version: 5.1.2 59 | '@types/node': 60 | specifier: ^18.15.5 61 | version: 18.15.5 62 | husky: 63 | specifier: ^8.0.3 64 | version: 8.0.3 65 | prettier: 66 | specifier: ^2.8.6 67 | version: 2.8.6 68 | pretty-quick: 69 | specifier: ^3.1.3 70 | version: 3.1.3(prettier@2.8.6) 71 | typescript: 72 | specifier: ^5.0.2 73 | version: 5.0.2 74 | 75 | packages: 76 | '@tootallnate/once@1.1.2': 77 | resolution: 78 | { 79 | integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==, 80 | } 81 | engines: { node: '>= 6' } 82 | 83 | '@types/ali-oss@6.16.7': 84 | resolution: 85 | { 86 | integrity: sha512-o3jORqeXEgooIkOfXk1r77BaIZtPHaPRJvTus/yvFDrjRVt65POGalmt9w72d1amGq39mag/t7Rd99MLs3nasw==, 87 | } 88 | 89 | '@types/dir-glob@2.0.1': 90 | resolution: 91 | { 92 | integrity: sha512-4LClJMcgR7UaV55YKFtb1EiRA/+rVKyTb1LAHjdstSrI6+3+qRLgXrjPEG2OzDAiAutDqLBnxqE5gJ3cx+Jiag==, 93 | } 94 | 95 | '@types/fs-extra@11.0.1': 96 | resolution: 97 | { 98 | integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==, 99 | } 100 | 101 | '@types/glob@8.1.0': 102 | resolution: 103 | { 104 | integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==, 105 | } 106 | 107 | '@types/jsonfile@6.1.1': 108 | resolution: 109 | { 110 | integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==, 111 | } 112 | 113 | '@types/lodash@4.14.191': 114 | resolution: 115 | { 116 | integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==, 117 | } 118 | 119 | '@types/minimatch@3.0.5': 120 | resolution: 121 | { 122 | integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, 123 | } 124 | 125 | '@types/minimatch@5.1.2': 126 | resolution: 127 | { 128 | integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==, 129 | } 130 | 131 | '@types/node@18.15.5': 132 | resolution: 133 | { 134 | integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==, 135 | } 136 | 137 | acorn-walk@8.2.0: 138 | resolution: 139 | { 140 | integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, 141 | } 142 | engines: { node: '>=0.4.0' } 143 | 144 | acorn@8.8.2: 145 | resolution: 146 | { 147 | integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, 148 | } 149 | engines: { node: '>=0.4.0' } 150 | hasBin: true 151 | 152 | address@1.2.2: 153 | resolution: 154 | { 155 | integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==, 156 | } 157 | engines: { node: '>= 10.0.0' } 158 | 159 | agent-base@6.0.2: 160 | resolution: 161 | { 162 | integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, 163 | } 164 | engines: { node: '>= 6.0.0' } 165 | 166 | agentkeepalive@3.5.2: 167 | resolution: 168 | { 169 | integrity: sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==, 170 | } 171 | engines: { node: '>= 4.0.0' } 172 | 173 | agentkeepalive@4.3.0: 174 | resolution: 175 | { 176 | integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==, 177 | } 178 | engines: { node: '>= 8.0.0' } 179 | 180 | ajv-formats@1.6.1: 181 | resolution: 182 | { 183 | integrity: sha512-4CjkH20If1lhR5CGtqkrVg3bbOtFEG80X9v6jDOIUhbzzbB+UzPBGy8GQhUNVZ0yvMHdMpawCOcy5ydGMsagGQ==, 184 | } 185 | peerDependencies: 186 | ajv: ^7.0.0 187 | peerDependenciesMeta: 188 | ajv: 189 | optional: true 190 | 191 | ajv@6.12.6: 192 | resolution: 193 | { 194 | integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, 195 | } 196 | 197 | ajv@7.2.4: 198 | resolution: 199 | { 200 | integrity: sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==, 201 | } 202 | 203 | ali-oss@6.17.1: 204 | resolution: 205 | { 206 | integrity: sha512-v2oT3UhSJTH/LrsscVvi7iEGrnundydNaFzpYAKatqOl4JNcBV4UiwtlJU+ZHLys040JH2k+CutznA0GoE+P2w==, 207 | } 208 | engines: { node: '>=8' } 209 | 210 | ansi-styles@4.3.0: 211 | resolution: 212 | { 213 | integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, 214 | } 215 | engines: { node: '>=8' } 216 | 217 | any-promise@1.3.0: 218 | resolution: 219 | { 220 | integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, 221 | } 222 | 223 | array-differ@3.0.0: 224 | resolution: 225 | { 226 | integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==, 227 | } 228 | engines: { node: '>=8' } 229 | 230 | array-union@2.1.0: 231 | resolution: 232 | { 233 | integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, 234 | } 235 | engines: { node: '>=8' } 236 | 237 | arrify@2.0.1: 238 | resolution: 239 | { 240 | integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, 241 | } 242 | engines: { node: '>=8' } 243 | 244 | asn1@0.2.6: 245 | resolution: 246 | { 247 | integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==, 248 | } 249 | 250 | assert-plus@1.0.0: 251 | resolution: 252 | { 253 | integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==, 254 | } 255 | engines: { node: '>=0.8' } 256 | 257 | ast-types@0.13.4: 258 | resolution: 259 | { 260 | integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==, 261 | } 262 | engines: { node: '>=4' } 263 | 264 | asynckit@0.4.0: 265 | resolution: 266 | { 267 | integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, 268 | } 269 | 270 | atomically@1.7.0: 271 | resolution: 272 | { 273 | integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==, 274 | } 275 | engines: { node: '>=10.12.0' } 276 | 277 | aws-sign2@0.7.0: 278 | resolution: 279 | { 280 | integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==, 281 | } 282 | 283 | aws4@1.12.0: 284 | resolution: 285 | { 286 | integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==, 287 | } 288 | 289 | balanced-match@1.0.2: 290 | resolution: 291 | { 292 | integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, 293 | } 294 | 295 | bcrypt-pbkdf@1.0.2: 296 | resolution: 297 | { 298 | integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==, 299 | } 300 | 301 | before@0.0.1: 302 | resolution: 303 | { 304 | integrity: sha512-1J5SWbkoVJH9DTALN8igB4p+nPKZzPrJ/HomqBDLpfUvDXCdjdBmBUcH5McZfur0lftVssVU6BZug5NYh87zTw==, 305 | } 306 | 307 | block-stream2@2.1.0: 308 | resolution: 309 | { 310 | integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==, 311 | } 312 | 313 | bowser@1.9.4: 314 | resolution: 315 | { 316 | integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==, 317 | } 318 | 319 | brace-expansion@1.1.11: 320 | resolution: 321 | { 322 | integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, 323 | } 324 | 325 | brace-expansion@2.0.1: 326 | resolution: 327 | { 328 | integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, 329 | } 330 | 331 | builtin-status-codes@3.0.0: 332 | resolution: 333 | { 334 | integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==, 335 | } 336 | 337 | bytes@3.1.2: 338 | resolution: 339 | { 340 | integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, 341 | } 342 | engines: { node: '>= 0.8' } 343 | 344 | call-bind@1.0.2: 345 | resolution: 346 | { 347 | integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, 348 | } 349 | 350 | caseless@0.12.0: 351 | resolution: 352 | { 353 | integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==, 354 | } 355 | 356 | chalk@3.0.0: 357 | resolution: 358 | { 359 | integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, 360 | } 361 | engines: { node: '>=8' } 362 | 363 | color-convert@2.0.1: 364 | resolution: 365 | { 366 | integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, 367 | } 368 | engines: { node: '>=7.0.0' } 369 | 370 | color-name@1.1.4: 371 | resolution: 372 | { 373 | integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, 374 | } 375 | 376 | combined-stream@1.0.8: 377 | resolution: 378 | { 379 | integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, 380 | } 381 | engines: { node: '>= 0.8' } 382 | 383 | commander@10.0.0: 384 | resolution: 385 | { 386 | integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==, 387 | } 388 | engines: { node: '>=14' } 389 | 390 | concat-map@0.0.1: 391 | resolution: 392 | { 393 | integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, 394 | } 395 | 396 | conf@9.0.2: 397 | resolution: 398 | { 399 | integrity: sha512-rLSiilO85qHgaTBIIHQpsv8z+NnVfZq3cKuYNCXN1AOqPzced0GWZEe/A517VldRLyQYXUMyV+vszavE2jSAqw==, 400 | } 401 | engines: { node: '>=10' } 402 | 403 | content-type@1.0.5: 404 | resolution: 405 | { 406 | integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, 407 | } 408 | engines: { node: '>= 0.6' } 409 | 410 | copy-to@2.0.1: 411 | resolution: 412 | { 413 | integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==, 414 | } 415 | 416 | core-util-is@1.0.2: 417 | resolution: 418 | { 419 | integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==, 420 | } 421 | 422 | core-util-is@1.0.3: 423 | resolution: 424 | { 425 | integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, 426 | } 427 | 428 | cos-nodejs-sdk-v5@2.11.19: 429 | resolution: 430 | { 431 | integrity: sha512-lYqjUWWUhifarWupDlDA0sH8yyzXE7tD3ipOKcATIB1Hxkk7REeRleNSLkU/zfSP61Osmwaaw/nkfroujHaJZA==, 432 | } 433 | engines: { node: '>= 6' } 434 | 435 | crc32@0.2.2: 436 | resolution: 437 | { 438 | integrity: sha512-PFZEGbDUeoNbL2GHIEpJRQGheXReDody/9axKTxhXtQqIL443wnNigtVZO9iuCIMPApKZRv7k2xr8euXHqNxQQ==, 439 | } 440 | engines: { node: '>= 0.4.0' } 441 | hasBin: true 442 | 443 | cross-spawn@7.0.3: 444 | resolution: 445 | { 446 | integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, 447 | } 448 | engines: { node: '>= 8' } 449 | 450 | dashdash@1.14.1: 451 | resolution: 452 | { 453 | integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==, 454 | } 455 | engines: { node: '>=0.10' } 456 | 457 | data-uri-to-buffer@3.0.1: 458 | resolution: 459 | { 460 | integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==, 461 | } 462 | engines: { node: '>= 6' } 463 | 464 | dateformat@2.2.0: 465 | resolution: 466 | { 467 | integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==, 468 | } 469 | 470 | debounce-fn@4.0.0: 471 | resolution: 472 | { 473 | integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==, 474 | } 475 | engines: { node: '>=10' } 476 | 477 | debug@2.6.9: 478 | resolution: 479 | { 480 | integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, 481 | } 482 | peerDependencies: 483 | supports-color: '*' 484 | peerDependenciesMeta: 485 | supports-color: 486 | optional: true 487 | 488 | debug@4.3.4: 489 | resolution: 490 | { 491 | integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, 492 | } 493 | engines: { node: '>=6.0' } 494 | peerDependencies: 495 | supports-color: '*' 496 | peerDependenciesMeta: 497 | supports-color: 498 | optional: true 499 | 500 | deep-is@0.1.4: 501 | resolution: 502 | { 503 | integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, 504 | } 505 | 506 | default-user-agent@1.0.0: 507 | resolution: 508 | { 509 | integrity: sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==, 510 | } 511 | engines: { node: '>= 0.10.0' } 512 | 513 | degenerator@3.0.2: 514 | resolution: 515 | { 516 | integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==, 517 | } 518 | engines: { node: '>= 6' } 519 | 520 | delayed-stream@1.0.0: 521 | resolution: 522 | { 523 | integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, 524 | } 525 | engines: { node: '>=0.4.0' } 526 | 527 | depd@2.0.0: 528 | resolution: 529 | { 530 | integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, 531 | } 532 | engines: { node: '>= 0.8' } 533 | 534 | destroy@1.2.0: 535 | resolution: 536 | { 537 | integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, 538 | } 539 | engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } 540 | 541 | digest-header@1.0.0: 542 | resolution: 543 | { 544 | integrity: sha512-sRTuakZ2PkOUCuAaVv+SLjhr/hRf8ldZP0XnGEQ69RFGxmll5fVaMsnRXWKKK4XsUTnJf8+eRPSFNgE/lWa9wQ==, 545 | } 546 | engines: { node: '>= 8.0.0' } 547 | 548 | dir-glob@3.0.1: 549 | resolution: 550 | { 551 | integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, 552 | } 553 | engines: { node: '>=8' } 554 | 555 | dot-prop@6.0.1: 556 | resolution: 557 | { 558 | integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==, 559 | } 560 | engines: { node: '>=10' } 561 | 562 | ecc-jsbn@0.1.2: 563 | resolution: 564 | { 565 | integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==, 566 | } 567 | 568 | ee-first@1.1.1: 569 | resolution: 570 | { 571 | integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, 572 | } 573 | 574 | encodeurl@1.0.2: 575 | resolution: 576 | { 577 | integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, 578 | } 579 | engines: { node: '>= 0.8' } 580 | 581 | end-of-stream@1.4.4: 582 | resolution: 583 | { 584 | integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, 585 | } 586 | 587 | end-or-error@1.0.1: 588 | resolution: 589 | { 590 | integrity: sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==, 591 | } 592 | engines: { node: '>= 0.11.14' } 593 | 594 | env-paths@2.2.1: 595 | resolution: 596 | { 597 | integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, 598 | } 599 | engines: { node: '>=6' } 600 | 601 | escape-html@1.0.3: 602 | resolution: 603 | { 604 | integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, 605 | } 606 | 607 | escodegen@1.14.3: 608 | resolution: 609 | { 610 | integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==, 611 | } 612 | engines: { node: '>=4.0' } 613 | hasBin: true 614 | 615 | esprima@4.0.1: 616 | resolution: 617 | { 618 | integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, 619 | } 620 | engines: { node: '>=4' } 621 | hasBin: true 622 | 623 | estraverse@4.3.0: 624 | resolution: 625 | { 626 | integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, 627 | } 628 | engines: { node: '>=4.0' } 629 | 630 | esutils@2.0.3: 631 | resolution: 632 | { 633 | integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, 634 | } 635 | engines: { node: '>=0.10.0' } 636 | 637 | execa@4.1.0: 638 | resolution: 639 | { 640 | integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==, 641 | } 642 | engines: { node: '>=10' } 643 | 644 | extend-shallow@2.0.1: 645 | resolution: 646 | { 647 | integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, 648 | } 649 | engines: { node: '>=0.10.0' } 650 | 651 | extend@3.0.2: 652 | resolution: 653 | { 654 | integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, 655 | } 656 | 657 | extsprintf@1.3.0: 658 | resolution: 659 | { 660 | integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==, 661 | } 662 | engines: { '0': node >=0.6.0 } 663 | 664 | fast-deep-equal@3.1.3: 665 | resolution: 666 | { 667 | integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, 668 | } 669 | 670 | fast-json-stable-stringify@2.1.0: 671 | resolution: 672 | { 673 | integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, 674 | } 675 | 676 | fast-levenshtein@2.0.6: 677 | resolution: 678 | { 679 | integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, 680 | } 681 | 682 | file-uri-to-path@2.0.0: 683 | resolution: 684 | { 685 | integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==, 686 | } 687 | engines: { node: '>= 6' } 688 | 689 | find-up@3.0.0: 690 | resolution: 691 | { 692 | integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, 693 | } 694 | engines: { node: '>=6' } 695 | 696 | find-up@4.1.0: 697 | resolution: 698 | { 699 | integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, 700 | } 701 | engines: { node: '>=8' } 702 | 703 | forever-agent@0.6.1: 704 | resolution: 705 | { 706 | integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==, 707 | } 708 | 709 | form-data@2.3.3: 710 | resolution: 711 | { 712 | integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==, 713 | } 714 | engines: { node: '>= 0.12' } 715 | 716 | formstream@1.1.1: 717 | resolution: 718 | { 719 | integrity: sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q==, 720 | } 721 | 722 | fs-extra@11.1.1: 723 | resolution: 724 | { 725 | integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, 726 | } 727 | engines: { node: '>=14.14' } 728 | 729 | fs-extra@8.1.0: 730 | resolution: 731 | { 732 | integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, 733 | } 734 | engines: { node: '>=6 <7 || >=8' } 735 | 736 | fs.realpath@1.0.0: 737 | resolution: 738 | { 739 | integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, 740 | } 741 | 742 | ftp@0.3.10: 743 | resolution: 744 | { 745 | integrity: sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==, 746 | } 747 | engines: { node: '>=0.8.0' } 748 | 749 | function-bind@1.1.1: 750 | resolution: 751 | { 752 | integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, 753 | } 754 | 755 | get-intrinsic@1.2.0: 756 | resolution: 757 | { 758 | integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, 759 | } 760 | 761 | get-ready@1.0.0: 762 | resolution: 763 | { 764 | integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==, 765 | } 766 | 767 | get-stream@5.2.0: 768 | resolution: 769 | { 770 | integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==, 771 | } 772 | engines: { node: '>=8' } 773 | 774 | get-uri@3.0.2: 775 | resolution: 776 | { 777 | integrity: sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==, 778 | } 779 | engines: { node: '>= 6' } 780 | 781 | getpass@0.1.7: 782 | resolution: 783 | { 784 | integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==, 785 | } 786 | 787 | glob@7.2.3: 788 | resolution: 789 | { 790 | integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, 791 | } 792 | 793 | glob@9.3.1: 794 | resolution: 795 | { 796 | integrity: sha512-qERvJb7IGsnkx6YYmaaGvDpf77c951hICMdWaFXyH3PlVob8sbPJJyJX0kWkiCWyXUzoy9UOTNjGg0RbD8bYIw==, 797 | } 798 | engines: { node: '>=16 || 14 >=14.17' } 799 | 800 | graceful-fs@4.2.10: 801 | resolution: 802 | { 803 | integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, 804 | } 805 | 806 | graceful-fs@4.2.11: 807 | resolution: 808 | { 809 | integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, 810 | } 811 | 812 | har-schema@2.0.0: 813 | resolution: 814 | { 815 | integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==, 816 | } 817 | engines: { node: '>=4' } 818 | 819 | har-validator@5.1.5: 820 | resolution: 821 | { 822 | integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==, 823 | } 824 | engines: { node: '>=6' } 825 | deprecated: this library is no longer supported 826 | 827 | has-flag@4.0.0: 828 | resolution: 829 | { 830 | integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, 831 | } 832 | engines: { node: '>=8' } 833 | 834 | has-symbols@1.0.3: 835 | resolution: 836 | { 837 | integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, 838 | } 839 | engines: { node: '>= 0.4' } 840 | 841 | has@1.0.3: 842 | resolution: 843 | { 844 | integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, 845 | } 846 | engines: { node: '>= 0.4.0' } 847 | 848 | http-errors@2.0.0: 849 | resolution: 850 | { 851 | integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, 852 | } 853 | engines: { node: '>= 0.8' } 854 | 855 | http-proxy-agent@4.0.1: 856 | resolution: 857 | { 858 | integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==, 859 | } 860 | engines: { node: '>= 6' } 861 | 862 | http-signature@1.2.0: 863 | resolution: 864 | { 865 | integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==, 866 | } 867 | engines: { node: '>=0.8', npm: '>=1.3.7' } 868 | 869 | https-proxy-agent@5.0.1: 870 | resolution: 871 | { 872 | integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, 873 | } 874 | engines: { node: '>= 6' } 875 | 876 | human-signals@1.1.1: 877 | resolution: 878 | { 879 | integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==, 880 | } 881 | engines: { node: '>=8.12.0' } 882 | 883 | humanize-ms@1.2.1: 884 | resolution: 885 | { 886 | integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, 887 | } 888 | 889 | husky@8.0.3: 890 | resolution: 891 | { 892 | integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, 893 | } 894 | engines: { node: '>=14' } 895 | hasBin: true 896 | 897 | iconv-lite@0.4.24: 898 | resolution: 899 | { 900 | integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, 901 | } 902 | engines: { node: '>=0.10.0' } 903 | 904 | ignore@5.2.4: 905 | resolution: 906 | { 907 | integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, 908 | } 909 | engines: { node: '>= 4' } 910 | 911 | inflight@1.0.6: 912 | resolution: 913 | { 914 | integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, 915 | } 916 | 917 | inherits@2.0.4: 918 | resolution: 919 | { 920 | integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, 921 | } 922 | 923 | ip@1.1.8: 924 | resolution: 925 | { 926 | integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==, 927 | } 928 | 929 | ip@2.0.0: 930 | resolution: 931 | { 932 | integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==, 933 | } 934 | 935 | is-class-hotfix@0.0.6: 936 | resolution: 937 | { 938 | integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==, 939 | } 940 | 941 | is-extendable@0.1.1: 942 | resolution: 943 | { 944 | integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, 945 | } 946 | engines: { node: '>=0.10.0' } 947 | 948 | is-obj@2.0.0: 949 | resolution: 950 | { 951 | integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, 952 | } 953 | engines: { node: '>=8' } 954 | 955 | is-stream@2.0.1: 956 | resolution: 957 | { 958 | integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, 959 | } 960 | engines: { node: '>=8' } 961 | 962 | is-type-of@1.2.1: 963 | resolution: 964 | { 965 | integrity: sha512-uK0kyX9LZYhSDS7H2sVJQJop1UnWPWmo5RvR3q2kFH6AUHYs7sOrVg0b4nyBHw29kRRNFofYN/JbHZDlHiItTA==, 966 | } 967 | 968 | is-typedarray@1.0.0: 969 | resolution: 970 | { 971 | integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==, 972 | } 973 | 974 | isarray@0.0.1: 975 | resolution: 976 | { 977 | integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==, 978 | } 979 | 980 | isarray@1.0.0: 981 | resolution: 982 | { 983 | integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, 984 | } 985 | 986 | isexe@2.0.0: 987 | resolution: 988 | { 989 | integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, 990 | } 991 | 992 | isstream@0.1.2: 993 | resolution: 994 | { 995 | integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==, 996 | } 997 | 998 | js-base64@2.6.4: 999 | resolution: 1000 | { 1001 | integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==, 1002 | } 1003 | 1004 | jsbn@0.1.1: 1005 | resolution: 1006 | { 1007 | integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==, 1008 | } 1009 | 1010 | json-schema-traverse@0.4.1: 1011 | resolution: 1012 | { 1013 | integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, 1014 | } 1015 | 1016 | json-schema-traverse@1.0.0: 1017 | resolution: 1018 | { 1019 | integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, 1020 | } 1021 | 1022 | json-schema-typed@7.0.3: 1023 | resolution: 1024 | { 1025 | integrity: sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==, 1026 | } 1027 | 1028 | json-schema@0.4.0: 1029 | resolution: 1030 | { 1031 | integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==, 1032 | } 1033 | 1034 | json-stringify-safe@5.0.1: 1035 | resolution: 1036 | { 1037 | integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, 1038 | } 1039 | 1040 | jsonfile@4.0.0: 1041 | resolution: 1042 | { 1043 | integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, 1044 | } 1045 | 1046 | jsonfile@6.1.0: 1047 | resolution: 1048 | { 1049 | integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, 1050 | } 1051 | 1052 | jsprim@1.4.2: 1053 | resolution: 1054 | { 1055 | integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==, 1056 | } 1057 | engines: { node: '>=0.6.0' } 1058 | 1059 | jstoxml@2.2.9: 1060 | resolution: 1061 | { 1062 | integrity: sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==, 1063 | } 1064 | 1065 | kleur@4.1.5: 1066 | resolution: 1067 | { 1068 | integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, 1069 | } 1070 | engines: { node: '>=6' } 1071 | 1072 | ko-sleep@1.1.4: 1073 | resolution: 1074 | { 1075 | integrity: sha512-s05WGpvvzyTuRlRE8fM7ru2Z3O+InbJuBcckTWKg2W+2c1k6SnFa3IfiSSt0/peFrlYAXgNoxuJWWVNmWh+K/A==, 1076 | } 1077 | 1078 | levn@0.3.0: 1079 | resolution: 1080 | { 1081 | integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==, 1082 | } 1083 | engines: { node: '>= 0.8.0' } 1084 | 1085 | locate-path@3.0.0: 1086 | resolution: 1087 | { 1088 | integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, 1089 | } 1090 | engines: { node: '>=6' } 1091 | 1092 | locate-path@5.0.0: 1093 | resolution: 1094 | { 1095 | integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, 1096 | } 1097 | engines: { node: '>=8' } 1098 | 1099 | lodash@4.17.21: 1100 | resolution: 1101 | { 1102 | integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, 1103 | } 1104 | 1105 | lru-cache@5.1.1: 1106 | resolution: 1107 | { 1108 | integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, 1109 | } 1110 | 1111 | lru-cache@6.0.0: 1112 | resolution: 1113 | { 1114 | integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, 1115 | } 1116 | engines: { node: '>=10' } 1117 | 1118 | lru-cache@7.18.3: 1119 | resolution: 1120 | { 1121 | integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, 1122 | } 1123 | engines: { node: '>=12' } 1124 | 1125 | make-dir@3.1.0: 1126 | resolution: 1127 | { 1128 | integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, 1129 | } 1130 | engines: { node: '>=8' } 1131 | 1132 | merge-descriptors@1.0.1: 1133 | resolution: 1134 | { 1135 | integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==, 1136 | } 1137 | 1138 | merge-stream@2.0.0: 1139 | resolution: 1140 | { 1141 | integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, 1142 | } 1143 | 1144 | mime-db@1.52.0: 1145 | resolution: 1146 | { 1147 | integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, 1148 | } 1149 | engines: { node: '>= 0.6' } 1150 | 1151 | mime-types@2.1.35: 1152 | resolution: 1153 | { 1154 | integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, 1155 | } 1156 | engines: { node: '>= 0.6' } 1157 | 1158 | mime@2.6.0: 1159 | resolution: 1160 | { 1161 | integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, 1162 | } 1163 | engines: { node: '>=4.0.0' } 1164 | hasBin: true 1165 | 1166 | mimic-fn@2.1.0: 1167 | resolution: 1168 | { 1169 | integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, 1170 | } 1171 | engines: { node: '>=6' } 1172 | 1173 | mimic-fn@3.1.0: 1174 | resolution: 1175 | { 1176 | integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==, 1177 | } 1178 | engines: { node: '>=8' } 1179 | 1180 | minimatch@3.1.2: 1181 | resolution: 1182 | { 1183 | integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, 1184 | } 1185 | 1186 | minimatch@7.4.2: 1187 | resolution: 1188 | { 1189 | integrity: sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==, 1190 | } 1191 | engines: { node: '>=10' } 1192 | 1193 | minimist@1.2.8: 1194 | resolution: 1195 | { 1196 | integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, 1197 | } 1198 | 1199 | minipass@4.2.5: 1200 | resolution: 1201 | { 1202 | integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==, 1203 | } 1204 | engines: { node: '>=8' } 1205 | 1206 | mkdirp@0.5.6: 1207 | resolution: 1208 | { 1209 | integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, 1210 | } 1211 | hasBin: true 1212 | 1213 | mockdate@3.0.5: 1214 | resolution: 1215 | { 1216 | integrity: sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==, 1217 | } 1218 | 1219 | mri@1.2.0: 1220 | resolution: 1221 | { 1222 | integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, 1223 | } 1224 | engines: { node: '>=4' } 1225 | 1226 | ms@2.0.0: 1227 | resolution: 1228 | { 1229 | integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, 1230 | } 1231 | 1232 | ms@2.1.2: 1233 | resolution: 1234 | { 1235 | integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, 1236 | } 1237 | 1238 | ms@2.1.3: 1239 | resolution: 1240 | { 1241 | integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, 1242 | } 1243 | 1244 | multimatch@4.0.0: 1245 | resolution: 1246 | { 1247 | integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==, 1248 | } 1249 | engines: { node: '>=8' } 1250 | 1251 | mz-modules@2.1.0: 1252 | resolution: 1253 | { 1254 | integrity: sha512-sjk8lcRW3vrVYnZ+W+67L/2rL+jbO5K/N6PFGIcLWTiYytNr22Ah9FDXFs+AQntTM1boZcoHi5qS+CV1seuPog==, 1255 | } 1256 | engines: { node: '>=6.0.0' } 1257 | 1258 | mz@2.7.0: 1259 | resolution: 1260 | { 1261 | integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, 1262 | } 1263 | 1264 | netmask@2.0.2: 1265 | resolution: 1266 | { 1267 | integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==, 1268 | } 1269 | engines: { node: '>= 0.4.0' } 1270 | 1271 | npm-run-path@4.0.1: 1272 | resolution: 1273 | { 1274 | integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, 1275 | } 1276 | engines: { node: '>=8' } 1277 | 1278 | oauth-sign@0.9.0: 1279 | resolution: 1280 | { 1281 | integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==, 1282 | } 1283 | 1284 | object-assign@4.1.1: 1285 | resolution: 1286 | { 1287 | integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, 1288 | } 1289 | engines: { node: '>=0.10.0' } 1290 | 1291 | object-inspect@1.12.3: 1292 | resolution: 1293 | { 1294 | integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, 1295 | } 1296 | 1297 | once@1.4.0: 1298 | resolution: 1299 | { 1300 | integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, 1301 | } 1302 | 1303 | onetime@5.1.2: 1304 | resolution: 1305 | { 1306 | integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, 1307 | } 1308 | engines: { node: '>=6' } 1309 | 1310 | optionator@0.8.3: 1311 | resolution: 1312 | { 1313 | integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==, 1314 | } 1315 | engines: { node: '>= 0.8.0' } 1316 | 1317 | os-name@1.0.3: 1318 | resolution: 1319 | { 1320 | integrity: sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==, 1321 | } 1322 | engines: { node: '>=0.10.0' } 1323 | hasBin: true 1324 | 1325 | osx-release@1.1.0: 1326 | resolution: 1327 | { 1328 | integrity: sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==, 1329 | } 1330 | engines: { node: '>=0.10.0' } 1331 | hasBin: true 1332 | 1333 | p-limit@2.3.0: 1334 | resolution: 1335 | { 1336 | integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, 1337 | } 1338 | engines: { node: '>=6' } 1339 | 1340 | p-locate@3.0.0: 1341 | resolution: 1342 | { 1343 | integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, 1344 | } 1345 | engines: { node: '>=6' } 1346 | 1347 | p-locate@4.1.0: 1348 | resolution: 1349 | { 1350 | integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, 1351 | } 1352 | engines: { node: '>=8' } 1353 | 1354 | p-try@2.2.0: 1355 | resolution: 1356 | { 1357 | integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, 1358 | } 1359 | engines: { node: '>=6' } 1360 | 1361 | pac-proxy-agent@5.0.0: 1362 | resolution: 1363 | { 1364 | integrity: sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==, 1365 | } 1366 | engines: { node: '>= 8' } 1367 | 1368 | pac-resolver@5.0.1: 1369 | resolution: 1370 | { 1371 | integrity: sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==, 1372 | } 1373 | engines: { node: '>= 8' } 1374 | 1375 | path-exists@3.0.0: 1376 | resolution: 1377 | { 1378 | integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, 1379 | } 1380 | engines: { node: '>=4' } 1381 | 1382 | path-exists@4.0.0: 1383 | resolution: 1384 | { 1385 | integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, 1386 | } 1387 | engines: { node: '>=8' } 1388 | 1389 | path-is-absolute@1.0.1: 1390 | resolution: 1391 | { 1392 | integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, 1393 | } 1394 | engines: { node: '>=0.10.0' } 1395 | 1396 | path-key@3.1.1: 1397 | resolution: 1398 | { 1399 | integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, 1400 | } 1401 | engines: { node: '>=8' } 1402 | 1403 | path-scurry@1.6.2: 1404 | resolution: 1405 | { 1406 | integrity: sha512-J6MQNh56h6eHFY3vsQ+Lq+zKPwn71POieutmVt2leU8W+zz8HVIdJyn3I3Zs6IKbIQtuKXirVjTBFNBcbFO44Q==, 1407 | } 1408 | engines: { node: '>=16 || 14 >=14.17' } 1409 | 1410 | path-type@4.0.0: 1411 | resolution: 1412 | { 1413 | integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, 1414 | } 1415 | engines: { node: '>=8' } 1416 | 1417 | pause-stream@0.0.11: 1418 | resolution: 1419 | { 1420 | integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==, 1421 | } 1422 | 1423 | performance-now@2.1.0: 1424 | resolution: 1425 | { 1426 | integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==, 1427 | } 1428 | 1429 | pkg-up@3.1.0: 1430 | resolution: 1431 | { 1432 | integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==, 1433 | } 1434 | engines: { node: '>=8' } 1435 | 1436 | platform@1.3.6: 1437 | resolution: 1438 | { 1439 | integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==, 1440 | } 1441 | 1442 | prelude-ls@1.1.2: 1443 | resolution: 1444 | { 1445 | integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==, 1446 | } 1447 | engines: { node: '>= 0.8.0' } 1448 | 1449 | prettier@2.8.6: 1450 | resolution: 1451 | { 1452 | integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==, 1453 | } 1454 | engines: { node: '>=10.13.0' } 1455 | hasBin: true 1456 | 1457 | pretty-quick@3.1.3: 1458 | resolution: 1459 | { 1460 | integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==, 1461 | } 1462 | engines: { node: '>=10.13' } 1463 | hasBin: true 1464 | peerDependencies: 1465 | prettier: '>=2.0.0' 1466 | 1467 | process-nextick-args@2.0.1: 1468 | resolution: 1469 | { 1470 | integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, 1471 | } 1472 | 1473 | proxy-agent@5.0.0: 1474 | resolution: 1475 | { 1476 | integrity: sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==, 1477 | } 1478 | engines: { node: '>= 8' } 1479 | 1480 | proxy-from-env@1.1.0: 1481 | resolution: 1482 | { 1483 | integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, 1484 | } 1485 | 1486 | psl@1.9.0: 1487 | resolution: 1488 | { 1489 | integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, 1490 | } 1491 | 1492 | pump@3.0.0: 1493 | resolution: 1494 | { 1495 | integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, 1496 | } 1497 | 1498 | punycode@2.3.0: 1499 | resolution: 1500 | { 1501 | integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, 1502 | } 1503 | engines: { node: '>=6' } 1504 | 1505 | qiniu@7.8.0: 1506 | resolution: 1507 | { 1508 | integrity: sha512-StJ2+E2gnr9BOfUcOLLBSWicc4ItpI3BK+O76ebHKdWrcdNnFfIfHK6dzJY5Fu0k3od2QyuWoNMTZ77SD6emMA==, 1509 | } 1510 | engines: { node: '>= 6' } 1511 | 1512 | qs@6.11.1: 1513 | resolution: 1514 | { 1515 | integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==, 1516 | } 1517 | engines: { node: '>=0.6' } 1518 | 1519 | qs@6.5.3: 1520 | resolution: 1521 | { 1522 | integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==, 1523 | } 1524 | engines: { node: '>=0.6' } 1525 | 1526 | raw-body@2.5.2: 1527 | resolution: 1528 | { 1529 | integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==, 1530 | } 1531 | engines: { node: '>= 0.8' } 1532 | 1533 | readable-stream@1.1.14: 1534 | resolution: 1535 | { 1536 | integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==, 1537 | } 1538 | 1539 | readable-stream@2.3.8: 1540 | resolution: 1541 | { 1542 | integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, 1543 | } 1544 | 1545 | readable-stream@3.6.2: 1546 | resolution: 1547 | { 1548 | integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, 1549 | } 1550 | engines: { node: '>= 6' } 1551 | 1552 | request@2.88.2: 1553 | resolution: 1554 | { 1555 | integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==, 1556 | } 1557 | engines: { node: '>= 6' } 1558 | deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 1559 | 1560 | require-from-string@2.0.2: 1561 | resolution: 1562 | { 1563 | integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, 1564 | } 1565 | engines: { node: '>=0.10.0' } 1566 | 1567 | rimraf@2.7.1: 1568 | resolution: 1569 | { 1570 | integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==, 1571 | } 1572 | hasBin: true 1573 | 1574 | safe-buffer@5.1.2: 1575 | resolution: 1576 | { 1577 | integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, 1578 | } 1579 | 1580 | safe-buffer@5.2.1: 1581 | resolution: 1582 | { 1583 | integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, 1584 | } 1585 | 1586 | safer-buffer@2.1.2: 1587 | resolution: 1588 | { 1589 | integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, 1590 | } 1591 | 1592 | sax@1.2.4: 1593 | resolution: 1594 | { 1595 | integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==, 1596 | } 1597 | 1598 | sdk-base@2.0.1: 1599 | resolution: 1600 | { 1601 | integrity: sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==, 1602 | } 1603 | 1604 | semver@5.7.1: 1605 | resolution: 1606 | { 1607 | integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, 1608 | } 1609 | hasBin: true 1610 | 1611 | semver@6.3.0: 1612 | resolution: 1613 | { 1614 | integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, 1615 | } 1616 | hasBin: true 1617 | 1618 | semver@7.3.8: 1619 | resolution: 1620 | { 1621 | integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==, 1622 | } 1623 | engines: { node: '>=10' } 1624 | hasBin: true 1625 | 1626 | setprototypeof@1.2.0: 1627 | resolution: 1628 | { 1629 | integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, 1630 | } 1631 | 1632 | shebang-command@2.0.0: 1633 | resolution: 1634 | { 1635 | integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, 1636 | } 1637 | engines: { node: '>=8' } 1638 | 1639 | shebang-regex@3.0.0: 1640 | resolution: 1641 | { 1642 | integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, 1643 | } 1644 | engines: { node: '>=8' } 1645 | 1646 | side-channel@1.0.4: 1647 | resolution: 1648 | { 1649 | integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, 1650 | } 1651 | 1652 | signal-exit@3.0.7: 1653 | resolution: 1654 | { 1655 | integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, 1656 | } 1657 | 1658 | smart-buffer@4.2.0: 1659 | resolution: 1660 | { 1661 | integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, 1662 | } 1663 | engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } 1664 | 1665 | socks-proxy-agent@5.0.1: 1666 | resolution: 1667 | { 1668 | integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==, 1669 | } 1670 | engines: { node: '>= 6' } 1671 | 1672 | socks@2.7.1: 1673 | resolution: 1674 | { 1675 | integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==, 1676 | } 1677 | engines: { node: '>= 10.13.0', npm: '>= 3.0.0' } 1678 | 1679 | source-map@0.6.1: 1680 | resolution: 1681 | { 1682 | integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, 1683 | } 1684 | engines: { node: '>=0.10.0' } 1685 | 1686 | sshpk@1.17.0: 1687 | resolution: 1688 | { 1689 | integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==, 1690 | } 1691 | engines: { node: '>=0.10.0' } 1692 | hasBin: true 1693 | 1694 | statuses@1.5.0: 1695 | resolution: 1696 | { 1697 | integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, 1698 | } 1699 | engines: { node: '>= 0.6' } 1700 | 1701 | statuses@2.0.1: 1702 | resolution: 1703 | { 1704 | integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, 1705 | } 1706 | engines: { node: '>= 0.8' } 1707 | 1708 | stream-http@2.8.2: 1709 | resolution: 1710 | { 1711 | integrity: sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==, 1712 | } 1713 | 1714 | stream-wormhole@1.1.0: 1715 | resolution: 1716 | { 1717 | integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==, 1718 | } 1719 | engines: { node: '>=4.0.0' } 1720 | 1721 | string_decoder@0.10.31: 1722 | resolution: 1723 | { 1724 | integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==, 1725 | } 1726 | 1727 | string_decoder@1.1.1: 1728 | resolution: 1729 | { 1730 | integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, 1731 | } 1732 | 1733 | string_decoder@1.3.0: 1734 | resolution: 1735 | { 1736 | integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, 1737 | } 1738 | 1739 | strip-final-newline@2.0.0: 1740 | resolution: 1741 | { 1742 | integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, 1743 | } 1744 | engines: { node: '>=6' } 1745 | 1746 | supports-color@7.2.0: 1747 | resolution: 1748 | { 1749 | integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, 1750 | } 1751 | engines: { node: '>=8' } 1752 | 1753 | thenify-all@1.6.0: 1754 | resolution: 1755 | { 1756 | integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, 1757 | } 1758 | engines: { node: '>=0.8' } 1759 | 1760 | thenify@3.3.1: 1761 | resolution: 1762 | { 1763 | integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, 1764 | } 1765 | 1766 | through@2.3.8: 1767 | resolution: 1768 | { 1769 | integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, 1770 | } 1771 | 1772 | to-arraybuffer@1.0.1: 1773 | resolution: 1774 | { 1775 | integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==, 1776 | } 1777 | 1778 | toidentifier@1.0.1: 1779 | resolution: 1780 | { 1781 | integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, 1782 | } 1783 | engines: { node: '>=0.6' } 1784 | 1785 | tough-cookie@2.5.0: 1786 | resolution: 1787 | { 1788 | integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==, 1789 | } 1790 | engines: { node: '>=0.8' } 1791 | 1792 | tslib@2.5.0: 1793 | resolution: 1794 | { 1795 | integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, 1796 | } 1797 | 1798 | tunnel-agent@0.6.0: 1799 | resolution: 1800 | { 1801 | integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, 1802 | } 1803 | 1804 | tweetnacl@0.14.5: 1805 | resolution: 1806 | { 1807 | integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==, 1808 | } 1809 | 1810 | type-check@0.3.2: 1811 | resolution: 1812 | { 1813 | integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==, 1814 | } 1815 | engines: { node: '>= 0.8.0' } 1816 | 1817 | typescript@5.0.2: 1818 | resolution: 1819 | { 1820 | integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==, 1821 | } 1822 | engines: { node: '>=12.20' } 1823 | hasBin: true 1824 | 1825 | unescape@1.0.1: 1826 | resolution: 1827 | { 1828 | integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==, 1829 | } 1830 | engines: { node: '>=0.10.0' } 1831 | 1832 | universalify@0.1.2: 1833 | resolution: 1834 | { 1835 | integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, 1836 | } 1837 | engines: { node: '>= 4.0.0' } 1838 | 1839 | universalify@2.0.0: 1840 | resolution: 1841 | { 1842 | integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, 1843 | } 1844 | engines: { node: '>= 10.0.0' } 1845 | 1846 | unpipe@1.0.0: 1847 | resolution: 1848 | { 1849 | integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, 1850 | } 1851 | engines: { node: '>= 0.8' } 1852 | 1853 | uri-js@4.4.1: 1854 | resolution: 1855 | { 1856 | integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, 1857 | } 1858 | 1859 | urllib@2.40.0: 1860 | resolution: 1861 | { 1862 | integrity: sha512-XDZjoijtzsbkXTXgM+A/sJM002nwoYsc46YOYr6MNH2jUUw1nCBf2ywT1WaPsVEWJX4Yr+9isGmYj4+yofFn9g==, 1863 | } 1864 | engines: { node: '>= 0.10.0' } 1865 | 1866 | util-deprecate@1.0.2: 1867 | resolution: 1868 | { 1869 | integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, 1870 | } 1871 | 1872 | utility@1.17.0: 1873 | resolution: 1874 | { 1875 | integrity: sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==, 1876 | } 1877 | engines: { node: '>= 0.12.0' } 1878 | 1879 | uuid@3.4.0: 1880 | resolution: 1881 | { 1882 | integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==, 1883 | } 1884 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 1885 | hasBin: true 1886 | 1887 | verror@1.10.0: 1888 | resolution: 1889 | { 1890 | integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==, 1891 | } 1892 | engines: { '0': node >=0.6.0 } 1893 | 1894 | vm2@3.9.14: 1895 | resolution: 1896 | { 1897 | integrity: sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==, 1898 | } 1899 | engines: { node: '>=6.0' } 1900 | hasBin: true 1901 | 1902 | which@2.0.2: 1903 | resolution: 1904 | { 1905 | integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, 1906 | } 1907 | engines: { node: '>= 8' } 1908 | hasBin: true 1909 | 1910 | win-release@1.1.1: 1911 | resolution: 1912 | { 1913 | integrity: sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==, 1914 | } 1915 | engines: { node: '>=0.10.0' } 1916 | 1917 | word-wrap@1.2.3: 1918 | resolution: 1919 | { 1920 | integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, 1921 | } 1922 | engines: { node: '>=0.10.0' } 1923 | 1924 | wrappy@1.0.2: 1925 | resolution: 1926 | { 1927 | integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, 1928 | } 1929 | 1930 | xml2js@0.4.23: 1931 | resolution: 1932 | { 1933 | integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==, 1934 | } 1935 | engines: { node: '>=4.0.0' } 1936 | 1937 | xmlbuilder@11.0.1: 1938 | resolution: 1939 | { 1940 | integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, 1941 | } 1942 | engines: { node: '>=4.0' } 1943 | 1944 | xregexp@2.0.0: 1945 | resolution: 1946 | { 1947 | integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==, 1948 | } 1949 | 1950 | xtend@4.0.2: 1951 | resolution: 1952 | { 1953 | integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, 1954 | } 1955 | engines: { node: '>=0.4' } 1956 | 1957 | yallist@3.1.1: 1958 | resolution: 1959 | { 1960 | integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, 1961 | } 1962 | 1963 | yallist@4.0.0: 1964 | resolution: 1965 | { 1966 | integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, 1967 | } 1968 | 1969 | snapshots: 1970 | '@tootallnate/once@1.1.2': {} 1971 | 1972 | '@types/ali-oss@6.16.7': {} 1973 | 1974 | '@types/dir-glob@2.0.1': {} 1975 | 1976 | '@types/fs-extra@11.0.1': 1977 | dependencies: 1978 | '@types/jsonfile': 6.1.1 1979 | '@types/node': 18.15.5 1980 | 1981 | '@types/glob@8.1.0': 1982 | dependencies: 1983 | '@types/minimatch': 5.1.2 1984 | '@types/node': 18.15.5 1985 | 1986 | '@types/jsonfile@6.1.1': 1987 | dependencies: 1988 | '@types/node': 18.15.5 1989 | 1990 | '@types/lodash@4.14.191': {} 1991 | 1992 | '@types/minimatch@3.0.5': {} 1993 | 1994 | '@types/minimatch@5.1.2': {} 1995 | 1996 | '@types/node@18.15.5': {} 1997 | 1998 | acorn-walk@8.2.0: {} 1999 | 2000 | acorn@8.8.2: {} 2001 | 2002 | address@1.2.2: {} 2003 | 2004 | agent-base@6.0.2: 2005 | dependencies: 2006 | debug: 4.3.4 2007 | transitivePeerDependencies: 2008 | - supports-color 2009 | 2010 | agentkeepalive@3.5.2: 2011 | dependencies: 2012 | humanize-ms: 1.2.1 2013 | 2014 | agentkeepalive@4.3.0: 2015 | dependencies: 2016 | debug: 4.3.4 2017 | depd: 2.0.0 2018 | humanize-ms: 1.2.1 2019 | transitivePeerDependencies: 2020 | - supports-color 2021 | 2022 | ajv-formats@1.6.1(ajv@7.2.4): 2023 | dependencies: 2024 | ajv: 7.2.4 2025 | 2026 | ajv@6.12.6: 2027 | dependencies: 2028 | fast-deep-equal: 3.1.3 2029 | fast-json-stable-stringify: 2.1.0 2030 | json-schema-traverse: 0.4.1 2031 | uri-js: 4.4.1 2032 | 2033 | ajv@7.2.4: 2034 | dependencies: 2035 | fast-deep-equal: 3.1.3 2036 | json-schema-traverse: 1.0.0 2037 | require-from-string: 2.0.2 2038 | uri-js: 4.4.1 2039 | 2040 | ali-oss@6.17.1: 2041 | dependencies: 2042 | address: 1.2.2 2043 | agentkeepalive: 3.5.2 2044 | bowser: 1.9.4 2045 | copy-to: 2.0.1 2046 | dateformat: 2.2.0 2047 | debug: 2.6.9 2048 | destroy: 1.2.0 2049 | end-or-error: 1.0.1 2050 | get-ready: 1.0.0 2051 | humanize-ms: 1.2.1 2052 | is-type-of: 1.2.1 2053 | js-base64: 2.6.4 2054 | jstoxml: 2.2.9 2055 | merge-descriptors: 1.0.1 2056 | mime: 2.6.0 2057 | mz-modules: 2.1.0 2058 | platform: 1.3.6 2059 | pump: 3.0.0 2060 | sdk-base: 2.0.1 2061 | stream-http: 2.8.2 2062 | stream-wormhole: 1.1.0 2063 | urllib: 2.40.0 2064 | utility: 1.17.0 2065 | xml2js: 0.4.23 2066 | transitivePeerDependencies: 2067 | - supports-color 2068 | 2069 | ansi-styles@4.3.0: 2070 | dependencies: 2071 | color-convert: 2.0.1 2072 | 2073 | any-promise@1.3.0: {} 2074 | 2075 | array-differ@3.0.0: {} 2076 | 2077 | array-union@2.1.0: {} 2078 | 2079 | arrify@2.0.1: {} 2080 | 2081 | asn1@0.2.6: 2082 | dependencies: 2083 | safer-buffer: 2.1.2 2084 | 2085 | assert-plus@1.0.0: {} 2086 | 2087 | ast-types@0.13.4: 2088 | dependencies: 2089 | tslib: 2.5.0 2090 | 2091 | asynckit@0.4.0: {} 2092 | 2093 | atomically@1.7.0: {} 2094 | 2095 | aws-sign2@0.7.0: {} 2096 | 2097 | aws4@1.12.0: {} 2098 | 2099 | balanced-match@1.0.2: {} 2100 | 2101 | bcrypt-pbkdf@1.0.2: 2102 | dependencies: 2103 | tweetnacl: 0.14.5 2104 | 2105 | before@0.0.1: {} 2106 | 2107 | block-stream2@2.1.0: 2108 | dependencies: 2109 | readable-stream: 3.6.2 2110 | 2111 | bowser@1.9.4: {} 2112 | 2113 | brace-expansion@1.1.11: 2114 | dependencies: 2115 | balanced-match: 1.0.2 2116 | concat-map: 0.0.1 2117 | 2118 | brace-expansion@2.0.1: 2119 | dependencies: 2120 | balanced-match: 1.0.2 2121 | 2122 | builtin-status-codes@3.0.0: {} 2123 | 2124 | bytes@3.1.2: {} 2125 | 2126 | call-bind@1.0.2: 2127 | dependencies: 2128 | function-bind: 1.1.1 2129 | get-intrinsic: 1.2.0 2130 | 2131 | caseless@0.12.0: {} 2132 | 2133 | chalk@3.0.0: 2134 | dependencies: 2135 | ansi-styles: 4.3.0 2136 | supports-color: 7.2.0 2137 | 2138 | color-convert@2.0.1: 2139 | dependencies: 2140 | color-name: 1.1.4 2141 | 2142 | color-name@1.1.4: {} 2143 | 2144 | combined-stream@1.0.8: 2145 | dependencies: 2146 | delayed-stream: 1.0.0 2147 | 2148 | commander@10.0.0: {} 2149 | 2150 | concat-map@0.0.1: {} 2151 | 2152 | conf@9.0.2: 2153 | dependencies: 2154 | ajv: 7.2.4 2155 | ajv-formats: 1.6.1(ajv@7.2.4) 2156 | atomically: 1.7.0 2157 | debounce-fn: 4.0.0 2158 | dot-prop: 6.0.1 2159 | env-paths: 2.2.1 2160 | json-schema-typed: 7.0.3 2161 | make-dir: 3.1.0 2162 | onetime: 5.1.2 2163 | pkg-up: 3.1.0 2164 | semver: 7.3.8 2165 | 2166 | content-type@1.0.5: {} 2167 | 2168 | copy-to@2.0.1: {} 2169 | 2170 | core-util-is@1.0.2: {} 2171 | 2172 | core-util-is@1.0.3: {} 2173 | 2174 | cos-nodejs-sdk-v5@2.11.19: 2175 | dependencies: 2176 | conf: 9.0.2 2177 | mime-types: 2.1.35 2178 | request: 2.88.2 2179 | xml2js: 0.4.23 2180 | 2181 | crc32@0.2.2: {} 2182 | 2183 | cross-spawn@7.0.3: 2184 | dependencies: 2185 | path-key: 3.1.1 2186 | shebang-command: 2.0.0 2187 | which: 2.0.2 2188 | 2189 | dashdash@1.14.1: 2190 | dependencies: 2191 | assert-plus: 1.0.0 2192 | 2193 | data-uri-to-buffer@3.0.1: {} 2194 | 2195 | dateformat@2.2.0: {} 2196 | 2197 | debounce-fn@4.0.0: 2198 | dependencies: 2199 | mimic-fn: 3.1.0 2200 | 2201 | debug@2.6.9: 2202 | dependencies: 2203 | ms: 2.0.0 2204 | 2205 | debug@4.3.4: 2206 | dependencies: 2207 | ms: 2.1.2 2208 | 2209 | deep-is@0.1.4: {} 2210 | 2211 | default-user-agent@1.0.0: 2212 | dependencies: 2213 | os-name: 1.0.3 2214 | 2215 | degenerator@3.0.2: 2216 | dependencies: 2217 | ast-types: 0.13.4 2218 | escodegen: 1.14.3 2219 | esprima: 4.0.1 2220 | vm2: 3.9.14 2221 | 2222 | delayed-stream@1.0.0: {} 2223 | 2224 | depd@2.0.0: {} 2225 | 2226 | destroy@1.2.0: {} 2227 | 2228 | digest-header@1.0.0: 2229 | dependencies: 2230 | utility: 1.17.0 2231 | 2232 | dir-glob@3.0.1: 2233 | dependencies: 2234 | path-type: 4.0.0 2235 | 2236 | dot-prop@6.0.1: 2237 | dependencies: 2238 | is-obj: 2.0.0 2239 | 2240 | ecc-jsbn@0.1.2: 2241 | dependencies: 2242 | jsbn: 0.1.1 2243 | safer-buffer: 2.1.2 2244 | 2245 | ee-first@1.1.1: {} 2246 | 2247 | encodeurl@1.0.2: {} 2248 | 2249 | end-of-stream@1.4.4: 2250 | dependencies: 2251 | once: 1.4.0 2252 | 2253 | end-or-error@1.0.1: {} 2254 | 2255 | env-paths@2.2.1: {} 2256 | 2257 | escape-html@1.0.3: {} 2258 | 2259 | escodegen@1.14.3: 2260 | dependencies: 2261 | esprima: 4.0.1 2262 | estraverse: 4.3.0 2263 | esutils: 2.0.3 2264 | optionator: 0.8.3 2265 | optionalDependencies: 2266 | source-map: 0.6.1 2267 | 2268 | esprima@4.0.1: {} 2269 | 2270 | estraverse@4.3.0: {} 2271 | 2272 | esutils@2.0.3: {} 2273 | 2274 | execa@4.1.0: 2275 | dependencies: 2276 | cross-spawn: 7.0.3 2277 | get-stream: 5.2.0 2278 | human-signals: 1.1.1 2279 | is-stream: 2.0.1 2280 | merge-stream: 2.0.0 2281 | npm-run-path: 4.0.1 2282 | onetime: 5.1.2 2283 | signal-exit: 3.0.7 2284 | strip-final-newline: 2.0.0 2285 | 2286 | extend-shallow@2.0.1: 2287 | dependencies: 2288 | is-extendable: 0.1.1 2289 | 2290 | extend@3.0.2: {} 2291 | 2292 | extsprintf@1.3.0: {} 2293 | 2294 | fast-deep-equal@3.1.3: {} 2295 | 2296 | fast-json-stable-stringify@2.1.0: {} 2297 | 2298 | fast-levenshtein@2.0.6: {} 2299 | 2300 | file-uri-to-path@2.0.0: {} 2301 | 2302 | find-up@3.0.0: 2303 | dependencies: 2304 | locate-path: 3.0.0 2305 | 2306 | find-up@4.1.0: 2307 | dependencies: 2308 | locate-path: 5.0.0 2309 | path-exists: 4.0.0 2310 | 2311 | forever-agent@0.6.1: {} 2312 | 2313 | form-data@2.3.3: 2314 | dependencies: 2315 | asynckit: 0.4.0 2316 | combined-stream: 1.0.8 2317 | mime-types: 2.1.35 2318 | 2319 | formstream@1.1.1: 2320 | dependencies: 2321 | destroy: 1.2.0 2322 | mime: 2.6.0 2323 | pause-stream: 0.0.11 2324 | 2325 | fs-extra@11.1.1: 2326 | dependencies: 2327 | graceful-fs: 4.2.11 2328 | jsonfile: 6.1.0 2329 | universalify: 2.0.0 2330 | 2331 | fs-extra@8.1.0: 2332 | dependencies: 2333 | graceful-fs: 4.2.10 2334 | jsonfile: 4.0.0 2335 | universalify: 0.1.2 2336 | 2337 | fs.realpath@1.0.0: {} 2338 | 2339 | ftp@0.3.10: 2340 | dependencies: 2341 | readable-stream: 1.1.14 2342 | xregexp: 2.0.0 2343 | 2344 | function-bind@1.1.1: {} 2345 | 2346 | get-intrinsic@1.2.0: 2347 | dependencies: 2348 | function-bind: 1.1.1 2349 | has: 1.0.3 2350 | has-symbols: 1.0.3 2351 | 2352 | get-ready@1.0.0: {} 2353 | 2354 | get-stream@5.2.0: 2355 | dependencies: 2356 | pump: 3.0.0 2357 | 2358 | get-uri@3.0.2: 2359 | dependencies: 2360 | '@tootallnate/once': 1.1.2 2361 | data-uri-to-buffer: 3.0.1 2362 | debug: 4.3.4 2363 | file-uri-to-path: 2.0.0 2364 | fs-extra: 8.1.0 2365 | ftp: 0.3.10 2366 | transitivePeerDependencies: 2367 | - supports-color 2368 | 2369 | getpass@0.1.7: 2370 | dependencies: 2371 | assert-plus: 1.0.0 2372 | 2373 | glob@7.2.3: 2374 | dependencies: 2375 | fs.realpath: 1.0.0 2376 | inflight: 1.0.6 2377 | inherits: 2.0.4 2378 | minimatch: 3.1.2 2379 | once: 1.4.0 2380 | path-is-absolute: 1.0.1 2381 | 2382 | glob@9.3.1: 2383 | dependencies: 2384 | fs.realpath: 1.0.0 2385 | minimatch: 7.4.2 2386 | minipass: 4.2.5 2387 | path-scurry: 1.6.2 2388 | 2389 | graceful-fs@4.2.10: {} 2390 | 2391 | graceful-fs@4.2.11: {} 2392 | 2393 | har-schema@2.0.0: {} 2394 | 2395 | har-validator@5.1.5: 2396 | dependencies: 2397 | ajv: 6.12.6 2398 | har-schema: 2.0.0 2399 | 2400 | has-flag@4.0.0: {} 2401 | 2402 | has-symbols@1.0.3: {} 2403 | 2404 | has@1.0.3: 2405 | dependencies: 2406 | function-bind: 1.1.1 2407 | 2408 | http-errors@2.0.0: 2409 | dependencies: 2410 | depd: 2.0.0 2411 | inherits: 2.0.4 2412 | setprototypeof: 1.2.0 2413 | statuses: 2.0.1 2414 | toidentifier: 1.0.1 2415 | 2416 | http-proxy-agent@4.0.1: 2417 | dependencies: 2418 | '@tootallnate/once': 1.1.2 2419 | agent-base: 6.0.2 2420 | debug: 4.3.4 2421 | transitivePeerDependencies: 2422 | - supports-color 2423 | 2424 | http-signature@1.2.0: 2425 | dependencies: 2426 | assert-plus: 1.0.0 2427 | jsprim: 1.4.2 2428 | sshpk: 1.17.0 2429 | 2430 | https-proxy-agent@5.0.1: 2431 | dependencies: 2432 | agent-base: 6.0.2 2433 | debug: 4.3.4 2434 | transitivePeerDependencies: 2435 | - supports-color 2436 | 2437 | human-signals@1.1.1: {} 2438 | 2439 | humanize-ms@1.2.1: 2440 | dependencies: 2441 | ms: 2.1.3 2442 | 2443 | husky@8.0.3: {} 2444 | 2445 | iconv-lite@0.4.24: 2446 | dependencies: 2447 | safer-buffer: 2.1.2 2448 | 2449 | ignore@5.2.4: {} 2450 | 2451 | inflight@1.0.6: 2452 | dependencies: 2453 | once: 1.4.0 2454 | wrappy: 1.0.2 2455 | 2456 | inherits@2.0.4: {} 2457 | 2458 | ip@1.1.8: {} 2459 | 2460 | ip@2.0.0: {} 2461 | 2462 | is-class-hotfix@0.0.6: {} 2463 | 2464 | is-extendable@0.1.1: {} 2465 | 2466 | is-obj@2.0.0: {} 2467 | 2468 | is-stream@2.0.1: {} 2469 | 2470 | is-type-of@1.2.1: 2471 | dependencies: 2472 | core-util-is: 1.0.3 2473 | is-class-hotfix: 0.0.6 2474 | isstream: 0.1.2 2475 | 2476 | is-typedarray@1.0.0: {} 2477 | 2478 | isarray@0.0.1: {} 2479 | 2480 | isarray@1.0.0: {} 2481 | 2482 | isexe@2.0.0: {} 2483 | 2484 | isstream@0.1.2: {} 2485 | 2486 | js-base64@2.6.4: {} 2487 | 2488 | jsbn@0.1.1: {} 2489 | 2490 | json-schema-traverse@0.4.1: {} 2491 | 2492 | json-schema-traverse@1.0.0: {} 2493 | 2494 | json-schema-typed@7.0.3: {} 2495 | 2496 | json-schema@0.4.0: {} 2497 | 2498 | json-stringify-safe@5.0.1: {} 2499 | 2500 | jsonfile@4.0.0: 2501 | optionalDependencies: 2502 | graceful-fs: 4.2.11 2503 | 2504 | jsonfile@6.1.0: 2505 | dependencies: 2506 | universalify: 2.0.0 2507 | optionalDependencies: 2508 | graceful-fs: 4.2.11 2509 | 2510 | jsprim@1.4.2: 2511 | dependencies: 2512 | assert-plus: 1.0.0 2513 | extsprintf: 1.3.0 2514 | json-schema: 0.4.0 2515 | verror: 1.10.0 2516 | 2517 | jstoxml@2.2.9: {} 2518 | 2519 | kleur@4.1.5: {} 2520 | 2521 | ko-sleep@1.1.4: 2522 | dependencies: 2523 | ms: 2.1.3 2524 | 2525 | levn@0.3.0: 2526 | dependencies: 2527 | prelude-ls: 1.1.2 2528 | type-check: 0.3.2 2529 | 2530 | locate-path@3.0.0: 2531 | dependencies: 2532 | p-locate: 3.0.0 2533 | path-exists: 3.0.0 2534 | 2535 | locate-path@5.0.0: 2536 | dependencies: 2537 | p-locate: 4.1.0 2538 | 2539 | lodash@4.17.21: {} 2540 | 2541 | lru-cache@5.1.1: 2542 | dependencies: 2543 | yallist: 3.1.1 2544 | 2545 | lru-cache@6.0.0: 2546 | dependencies: 2547 | yallist: 4.0.0 2548 | 2549 | lru-cache@7.18.3: {} 2550 | 2551 | make-dir@3.1.0: 2552 | dependencies: 2553 | semver: 6.3.0 2554 | 2555 | merge-descriptors@1.0.1: {} 2556 | 2557 | merge-stream@2.0.0: {} 2558 | 2559 | mime-db@1.52.0: {} 2560 | 2561 | mime-types@2.1.35: 2562 | dependencies: 2563 | mime-db: 1.52.0 2564 | 2565 | mime@2.6.0: {} 2566 | 2567 | mimic-fn@2.1.0: {} 2568 | 2569 | mimic-fn@3.1.0: {} 2570 | 2571 | minimatch@3.1.2: 2572 | dependencies: 2573 | brace-expansion: 1.1.11 2574 | 2575 | minimatch@7.4.2: 2576 | dependencies: 2577 | brace-expansion: 2.0.1 2578 | 2579 | minimist@1.2.8: {} 2580 | 2581 | minipass@4.2.5: {} 2582 | 2583 | mkdirp@0.5.6: 2584 | dependencies: 2585 | minimist: 1.2.8 2586 | 2587 | mockdate@3.0.5: {} 2588 | 2589 | mri@1.2.0: {} 2590 | 2591 | ms@2.0.0: {} 2592 | 2593 | ms@2.1.2: {} 2594 | 2595 | ms@2.1.3: {} 2596 | 2597 | multimatch@4.0.0: 2598 | dependencies: 2599 | '@types/minimatch': 3.0.5 2600 | array-differ: 3.0.0 2601 | array-union: 2.1.0 2602 | arrify: 2.0.1 2603 | minimatch: 3.1.2 2604 | 2605 | mz-modules@2.1.0: 2606 | dependencies: 2607 | glob: 7.2.3 2608 | ko-sleep: 1.1.4 2609 | mkdirp: 0.5.6 2610 | pump: 3.0.0 2611 | rimraf: 2.7.1 2612 | 2613 | mz@2.7.0: 2614 | dependencies: 2615 | any-promise: 1.3.0 2616 | object-assign: 4.1.1 2617 | thenify-all: 1.6.0 2618 | 2619 | netmask@2.0.2: {} 2620 | 2621 | npm-run-path@4.0.1: 2622 | dependencies: 2623 | path-key: 3.1.1 2624 | 2625 | oauth-sign@0.9.0: {} 2626 | 2627 | object-assign@4.1.1: {} 2628 | 2629 | object-inspect@1.12.3: {} 2630 | 2631 | once@1.4.0: 2632 | dependencies: 2633 | wrappy: 1.0.2 2634 | 2635 | onetime@5.1.2: 2636 | dependencies: 2637 | mimic-fn: 2.1.0 2638 | 2639 | optionator@0.8.3: 2640 | dependencies: 2641 | deep-is: 0.1.4 2642 | fast-levenshtein: 2.0.6 2643 | levn: 0.3.0 2644 | prelude-ls: 1.1.2 2645 | type-check: 0.3.2 2646 | word-wrap: 1.2.3 2647 | 2648 | os-name@1.0.3: 2649 | dependencies: 2650 | osx-release: 1.1.0 2651 | win-release: 1.1.1 2652 | 2653 | osx-release@1.1.0: 2654 | dependencies: 2655 | minimist: 1.2.8 2656 | 2657 | p-limit@2.3.0: 2658 | dependencies: 2659 | p-try: 2.2.0 2660 | 2661 | p-locate@3.0.0: 2662 | dependencies: 2663 | p-limit: 2.3.0 2664 | 2665 | p-locate@4.1.0: 2666 | dependencies: 2667 | p-limit: 2.3.0 2668 | 2669 | p-try@2.2.0: {} 2670 | 2671 | pac-proxy-agent@5.0.0: 2672 | dependencies: 2673 | '@tootallnate/once': 1.1.2 2674 | agent-base: 6.0.2 2675 | debug: 4.3.4 2676 | get-uri: 3.0.2 2677 | http-proxy-agent: 4.0.1 2678 | https-proxy-agent: 5.0.1 2679 | pac-resolver: 5.0.1 2680 | raw-body: 2.5.2 2681 | socks-proxy-agent: 5.0.1 2682 | transitivePeerDependencies: 2683 | - supports-color 2684 | 2685 | pac-resolver@5.0.1: 2686 | dependencies: 2687 | degenerator: 3.0.2 2688 | ip: 1.1.8 2689 | netmask: 2.0.2 2690 | 2691 | path-exists@3.0.0: {} 2692 | 2693 | path-exists@4.0.0: {} 2694 | 2695 | path-is-absolute@1.0.1: {} 2696 | 2697 | path-key@3.1.1: {} 2698 | 2699 | path-scurry@1.6.2: 2700 | dependencies: 2701 | lru-cache: 7.18.3 2702 | minipass: 4.2.5 2703 | 2704 | path-type@4.0.0: {} 2705 | 2706 | pause-stream@0.0.11: 2707 | dependencies: 2708 | through: 2.3.8 2709 | 2710 | performance-now@2.1.0: {} 2711 | 2712 | pkg-up@3.1.0: 2713 | dependencies: 2714 | find-up: 3.0.0 2715 | 2716 | platform@1.3.6: {} 2717 | 2718 | prelude-ls@1.1.2: {} 2719 | 2720 | prettier@2.8.6: {} 2721 | 2722 | pretty-quick@3.1.3(prettier@2.8.6): 2723 | dependencies: 2724 | chalk: 3.0.0 2725 | execa: 4.1.0 2726 | find-up: 4.1.0 2727 | ignore: 5.2.4 2728 | mri: 1.2.0 2729 | multimatch: 4.0.0 2730 | prettier: 2.8.6 2731 | 2732 | process-nextick-args@2.0.1: {} 2733 | 2734 | proxy-agent@5.0.0: 2735 | dependencies: 2736 | agent-base: 6.0.2 2737 | debug: 4.3.4 2738 | http-proxy-agent: 4.0.1 2739 | https-proxy-agent: 5.0.1 2740 | lru-cache: 5.1.1 2741 | pac-proxy-agent: 5.0.0 2742 | proxy-from-env: 1.1.0 2743 | socks-proxy-agent: 5.0.1 2744 | transitivePeerDependencies: 2745 | - supports-color 2746 | 2747 | proxy-from-env@1.1.0: {} 2748 | 2749 | psl@1.9.0: {} 2750 | 2751 | pump@3.0.0: 2752 | dependencies: 2753 | end-of-stream: 1.4.4 2754 | once: 1.4.0 2755 | 2756 | punycode@2.3.0: {} 2757 | 2758 | qiniu@7.8.0: 2759 | dependencies: 2760 | agentkeepalive: 4.3.0 2761 | before: 0.0.1 2762 | block-stream2: 2.1.0 2763 | crc32: 0.2.2 2764 | destroy: 1.2.0 2765 | encodeurl: 1.0.2 2766 | formstream: 1.1.1 2767 | mime: 2.6.0 2768 | mockdate: 3.0.5 2769 | tunnel-agent: 0.6.0 2770 | urllib: 2.40.0 2771 | transitivePeerDependencies: 2772 | - supports-color 2773 | 2774 | qs@6.11.1: 2775 | dependencies: 2776 | side-channel: 1.0.4 2777 | 2778 | qs@6.5.3: {} 2779 | 2780 | raw-body@2.5.2: 2781 | dependencies: 2782 | bytes: 3.1.2 2783 | http-errors: 2.0.0 2784 | iconv-lite: 0.4.24 2785 | unpipe: 1.0.0 2786 | 2787 | readable-stream@1.1.14: 2788 | dependencies: 2789 | core-util-is: 1.0.3 2790 | inherits: 2.0.4 2791 | isarray: 0.0.1 2792 | string_decoder: 0.10.31 2793 | 2794 | readable-stream@2.3.8: 2795 | dependencies: 2796 | core-util-is: 1.0.3 2797 | inherits: 2.0.4 2798 | isarray: 1.0.0 2799 | process-nextick-args: 2.0.1 2800 | safe-buffer: 5.1.2 2801 | string_decoder: 1.1.1 2802 | util-deprecate: 1.0.2 2803 | 2804 | readable-stream@3.6.2: 2805 | dependencies: 2806 | inherits: 2.0.4 2807 | string_decoder: 1.3.0 2808 | util-deprecate: 1.0.2 2809 | 2810 | request@2.88.2: 2811 | dependencies: 2812 | aws-sign2: 0.7.0 2813 | aws4: 1.12.0 2814 | caseless: 0.12.0 2815 | combined-stream: 1.0.8 2816 | extend: 3.0.2 2817 | forever-agent: 0.6.1 2818 | form-data: 2.3.3 2819 | har-validator: 5.1.5 2820 | http-signature: 1.2.0 2821 | is-typedarray: 1.0.0 2822 | isstream: 0.1.2 2823 | json-stringify-safe: 5.0.1 2824 | mime-types: 2.1.35 2825 | oauth-sign: 0.9.0 2826 | performance-now: 2.1.0 2827 | qs: 6.5.3 2828 | safe-buffer: 5.2.1 2829 | tough-cookie: 2.5.0 2830 | tunnel-agent: 0.6.0 2831 | uuid: 3.4.0 2832 | 2833 | require-from-string@2.0.2: {} 2834 | 2835 | rimraf@2.7.1: 2836 | dependencies: 2837 | glob: 7.2.3 2838 | 2839 | safe-buffer@5.1.2: {} 2840 | 2841 | safe-buffer@5.2.1: {} 2842 | 2843 | safer-buffer@2.1.2: {} 2844 | 2845 | sax@1.2.4: {} 2846 | 2847 | sdk-base@2.0.1: 2848 | dependencies: 2849 | get-ready: 1.0.0 2850 | 2851 | semver@5.7.1: {} 2852 | 2853 | semver@6.3.0: {} 2854 | 2855 | semver@7.3.8: 2856 | dependencies: 2857 | lru-cache: 6.0.0 2858 | 2859 | setprototypeof@1.2.0: {} 2860 | 2861 | shebang-command@2.0.0: 2862 | dependencies: 2863 | shebang-regex: 3.0.0 2864 | 2865 | shebang-regex@3.0.0: {} 2866 | 2867 | side-channel@1.0.4: 2868 | dependencies: 2869 | call-bind: 1.0.2 2870 | get-intrinsic: 1.2.0 2871 | object-inspect: 1.12.3 2872 | 2873 | signal-exit@3.0.7: {} 2874 | 2875 | smart-buffer@4.2.0: {} 2876 | 2877 | socks-proxy-agent@5.0.1: 2878 | dependencies: 2879 | agent-base: 6.0.2 2880 | debug: 4.3.4 2881 | socks: 2.7.1 2882 | transitivePeerDependencies: 2883 | - supports-color 2884 | 2885 | socks@2.7.1: 2886 | dependencies: 2887 | ip: 2.0.0 2888 | smart-buffer: 4.2.0 2889 | 2890 | source-map@0.6.1: 2891 | optional: true 2892 | 2893 | sshpk@1.17.0: 2894 | dependencies: 2895 | asn1: 0.2.6 2896 | assert-plus: 1.0.0 2897 | bcrypt-pbkdf: 1.0.2 2898 | dashdash: 1.14.1 2899 | ecc-jsbn: 0.1.2 2900 | getpass: 0.1.7 2901 | jsbn: 0.1.1 2902 | safer-buffer: 2.1.2 2903 | tweetnacl: 0.14.5 2904 | 2905 | statuses@1.5.0: {} 2906 | 2907 | statuses@2.0.1: {} 2908 | 2909 | stream-http@2.8.2: 2910 | dependencies: 2911 | builtin-status-codes: 3.0.0 2912 | inherits: 2.0.4 2913 | readable-stream: 2.3.8 2914 | to-arraybuffer: 1.0.1 2915 | xtend: 4.0.2 2916 | 2917 | stream-wormhole@1.1.0: {} 2918 | 2919 | string_decoder@0.10.31: {} 2920 | 2921 | string_decoder@1.1.1: 2922 | dependencies: 2923 | safe-buffer: 5.1.2 2924 | 2925 | string_decoder@1.3.0: 2926 | dependencies: 2927 | safe-buffer: 5.2.1 2928 | 2929 | strip-final-newline@2.0.0: {} 2930 | 2931 | supports-color@7.2.0: 2932 | dependencies: 2933 | has-flag: 4.0.0 2934 | 2935 | thenify-all@1.6.0: 2936 | dependencies: 2937 | thenify: 3.3.1 2938 | 2939 | thenify@3.3.1: 2940 | dependencies: 2941 | any-promise: 1.3.0 2942 | 2943 | through@2.3.8: {} 2944 | 2945 | to-arraybuffer@1.0.1: {} 2946 | 2947 | toidentifier@1.0.1: {} 2948 | 2949 | tough-cookie@2.5.0: 2950 | dependencies: 2951 | psl: 1.9.0 2952 | punycode: 2.3.0 2953 | 2954 | tslib@2.5.0: {} 2955 | 2956 | tunnel-agent@0.6.0: 2957 | dependencies: 2958 | safe-buffer: 5.2.1 2959 | 2960 | tweetnacl@0.14.5: {} 2961 | 2962 | type-check@0.3.2: 2963 | dependencies: 2964 | prelude-ls: 1.1.2 2965 | 2966 | typescript@5.0.2: {} 2967 | 2968 | unescape@1.0.1: 2969 | dependencies: 2970 | extend-shallow: 2.0.1 2971 | 2972 | universalify@0.1.2: {} 2973 | 2974 | universalify@2.0.0: {} 2975 | 2976 | unpipe@1.0.0: {} 2977 | 2978 | uri-js@4.4.1: 2979 | dependencies: 2980 | punycode: 2.3.0 2981 | 2982 | urllib@2.40.0: 2983 | dependencies: 2984 | any-promise: 1.3.0 2985 | content-type: 1.0.5 2986 | debug: 2.6.9 2987 | default-user-agent: 1.0.0 2988 | digest-header: 1.0.0 2989 | ee-first: 1.1.1 2990 | formstream: 1.1.1 2991 | humanize-ms: 1.2.1 2992 | iconv-lite: 0.4.24 2993 | ip: 1.1.8 2994 | proxy-agent: 5.0.0 2995 | pump: 3.0.0 2996 | qs: 6.11.1 2997 | statuses: 1.5.0 2998 | utility: 1.17.0 2999 | transitivePeerDependencies: 3000 | - supports-color 3001 | 3002 | util-deprecate@1.0.2: {} 3003 | 3004 | utility@1.17.0: 3005 | dependencies: 3006 | copy-to: 2.0.1 3007 | escape-html: 1.0.3 3008 | mkdirp: 0.5.6 3009 | mz: 2.7.0 3010 | unescape: 1.0.1 3011 | 3012 | uuid@3.4.0: {} 3013 | 3014 | verror@1.10.0: 3015 | dependencies: 3016 | assert-plus: 1.0.0 3017 | core-util-is: 1.0.2 3018 | extsprintf: 1.3.0 3019 | 3020 | vm2@3.9.14: 3021 | dependencies: 3022 | acorn: 8.8.2 3023 | acorn-walk: 8.2.0 3024 | 3025 | which@2.0.2: 3026 | dependencies: 3027 | isexe: 2.0.0 3028 | 3029 | win-release@1.1.1: 3030 | dependencies: 3031 | semver: 5.7.1 3032 | 3033 | word-wrap@1.2.3: {} 3034 | 3035 | wrappy@1.0.2: {} 3036 | 3037 | xml2js@0.4.23: 3038 | dependencies: 3039 | sax: 1.2.4 3040 | xmlbuilder: 11.0.1 3041 | 3042 | xmlbuilder@11.0.1: {} 3043 | 3044 | xregexp@2.0.0: {} 3045 | 3046 | xtend@4.0.2: {} 3047 | 3048 | yallist@3.1.1: {} 3049 | 3050 | yallist@4.0.0: {} 3051 | -------------------------------------------------------------------------------- /src/config/index.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import glob from 'glob'; 3 | import dirGlob from 'dir-glob'; 4 | import minimatch from 'minimatch'; 5 | import _ from 'lodash'; 6 | import fs from 'fs-extra'; 7 | import { logger } from '../utils'; 8 | import { Types } from '../enums'; 9 | 10 | const defaultConfig = (): Config => { 11 | const configJsPath = path.resolve(process.cwd(), './cdn.config.js'); 12 | if (fs.existsSync(configJsPath) && fs.statSync(configJsPath).isFile()) { 13 | return require(configJsPath); 14 | } else { 15 | logger.error( 16 | '请首先运行 npx cdn-cli init 来获取配置文件,然后进行 cdn.config.js 文件的配置', 17 | ); 18 | process.exit(0); 19 | } 20 | }; 21 | 22 | export const config = defaultConfig(); 23 | 24 | const walk = (from: string, ignore: string[] = []): Promise => { 25 | return fs 26 | .stat(path.resolve(from)) 27 | .then((stats) => { 28 | if (stats.isFile()) { 29 | return [from]; 30 | } else { 31 | return []; 32 | } 33 | }) 34 | .catch(() => { 35 | return glob(from, { 36 | ignore, 37 | }); 38 | }); 39 | }; 40 | 41 | // 配置 rules 的 files 42 | const setFiles = async () => { 43 | await Promise.all( 44 | config.rules.map((rule) => walk(rule.from, rule.ignore)), 45 | ).then((res) => { 46 | res.map((files, index) => { 47 | config.rules[index].files = files 48 | .filter((file) => { 49 | return fs.statSync(path.resolve('.', file)).isFile(); 50 | }) 51 | .map((file) => { 52 | const from = path.resolve('.', file); 53 | const isLastUpload = config.rules[index].lastUpload.some((i) => 54 | minimatch(file, i), 55 | ); 56 | const isNoCache = config.rules[index].noCache.some((i) => 57 | minimatch(file, i), 58 | ); 59 | let to = path.join( 60 | config.rules[index].to, 61 | file.replace(path.dirname(config.rules[index].from), ''), 62 | ); 63 | if (to.indexOf('/') === 0) { 64 | to.replace('/', ''); 65 | } 66 | return { 67 | from, 68 | to, 69 | 70 | isLastUpload, 71 | isNoCache, 72 | }; 73 | }) as File[]; 74 | }); 75 | }); 76 | }; 77 | 78 | export const setConfig = async (environment) => { 79 | config.environment = config.environments[environment]; 80 | if (config.environment) { 81 | delete config.environments; 82 | // 支持 Github 83 | if (config.environment.type === Types.Aliyun) { 84 | config.environment = { 85 | ...config.environment, 86 | region: config.environment.region ?? process.env.region, 87 | bucket: config.environment.bucket ?? process.env.bucket, 88 | accessKeyId: config.environment.accessKeyId ?? process.env.accessKeyId, 89 | accessKeySecret: 90 | config.environment.accessKeySecret ?? process.env.accessKeySecret, 91 | domain: config.environment.domain || process.env.domain || '', 92 | }; 93 | } 94 | if (config.environment.type === Types.Qiniu) { 95 | config.environment = { 96 | ...config.environment, 97 | region: config.environment.region ?? process.env.region, 98 | bucket: config.environment.bucket ?? process.env.bucket, 99 | accessKey: config.environment.accessKey ?? process.env.accessKey, 100 | secretKey: config.environment.secretKey ?? process.env.secretKey, 101 | domain: config.environment.domain || process.env.domain || '', 102 | }; 103 | } 104 | if (config.environment.type === Types.Tencent) { 105 | config.environment = { 106 | ...config.environment, 107 | region: config.environment.region ?? process.env.region, 108 | bucket: config.environment.bucket ?? process.env.bucket, 109 | appId: config.environment.appId ?? process.env.appId, 110 | secretId: config.environment.secretId ?? process.env.secretId, 111 | secretKey: config.environment.secretKey ?? process.env.secretKey, 112 | domain: config.environment.domain || process.env.domain || '', 113 | }; 114 | } 115 | } else { 116 | logger.error( 117 | `请确认 cdn.config.js 文件中是否包含 environment 为 ${config.environment} 的配置`, 118 | ); 119 | process.exit(1); 120 | } 121 | config.rules = config.rules 122 | .filter((item) => item.from && item.to) 123 | .map(({ from, to, ignore, lastUpload, noCache, ...args }) => { 124 | return { 125 | ...args, 126 | from: _.first(dirGlob.sync(from ?? [])), 127 | to, 128 | ignore: dirGlob.sync(ignore ?? []), 129 | lastUpload: dirGlob.sync(lastUpload ?? []), 130 | noCache: dirGlob.sync(noCache ?? []), 131 | }; 132 | }) as Rule[]; 133 | 134 | await setFiles(); 135 | 136 | return config; 137 | }; 138 | -------------------------------------------------------------------------------- /src/enums/index.ts: -------------------------------------------------------------------------------- 1 | export enum Types { 2 | Aliyun = 'aliyun', 3 | Qiniu = 'qiniu', 4 | Tencent = 'tencent', 5 | Debug = 'debug', 6 | } 7 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { setConfig, config } from './config'; 2 | import { upload } from './utils'; 3 | 4 | const deploy = async (environment: string): Promise => { 5 | await setConfig(environment); 6 | 7 | console.log( 8 | `${'状态'.padStart(4)}${'缓存'.padStart( 9 | 8, 10 | )}${'本地资源 -> 远端资源'.padStart(16)}`, 11 | ); 12 | 13 | let files: File[] = config.rules.map((rule) => rule.files).flat(); 14 | 15 | await upload( 16 | config.environment.type, 17 | files.filter((file) => !file.isLastUpload), 18 | ); 19 | await upload( 20 | config.environment.type, 21 | files.filter((file) => file.isLastUpload), 22 | ); 23 | }; 24 | 25 | export { deploy }; 26 | -------------------------------------------------------------------------------- /src/utils/file.ts: -------------------------------------------------------------------------------- 1 | import { existsSync, copySync, statSync } from 'fs-extra'; 2 | 3 | export const copyFileSync = (from: string, to: string) => { 4 | copySync(from, to); 5 | }; 6 | 7 | export const canCopyFile = (to: string): Promise => { 8 | return new Promise((resolve, reject) => { 9 | if (existsSync(to)) { 10 | reject(); 11 | } else { 12 | resolve(); 13 | } 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * as logger from './logger'; 2 | export * from './upload'; 3 | -------------------------------------------------------------------------------- /src/utils/logger.ts: -------------------------------------------------------------------------------- 1 | import { red, yellow, green, white } from 'kleur'; 2 | import { config } from '../config'; 3 | 4 | export const uploadSuccess = (file: Omit) => { 5 | const status = green('[成功]'.padEnd(8)); 6 | const isNoCache = file.isNoCache 7 | ? yellow('[不支持]'.padEnd(7)) 8 | : '[支持]'.padEnd(8); 9 | const arrow = yellow(' -> '); 10 | console.log( 11 | `${status}${isNoCache}${file.from}${arrow}${config.environment.domain}/${file.to}`, 12 | ); 13 | }; 14 | 15 | export const uploadFail = (file: Omit) => { 16 | const status = red('[失败]'.padEnd(8)); 17 | const isNoCache = file.isNoCache 18 | ? yellow('[不支持]'.padEnd(7)) 19 | : '[支持]'.padEnd(8); 20 | const arrow = yellow(' -> '); 21 | console.log( 22 | `${status}${isNoCache}${file.from}${arrow}${config.environment.domain}/${file.to}`, 23 | ); 24 | }; 25 | 26 | export const error = (message: string) => { 27 | console.log(white().bgRed(message)); 28 | }; 29 | -------------------------------------------------------------------------------- /src/utils/upload/aliyun.ts: -------------------------------------------------------------------------------- 1 | import Oss from 'ali-oss'; 2 | import type { PutObjectOptions } from 'ali-oss'; 3 | import * as logger from '../logger'; 4 | 5 | class Aliyun implements Upload { 6 | private client: Oss; 7 | 8 | constructor(environment: Environment.Aliyun) { 9 | this.client = new Oss({ 10 | region: environment.region, 11 | bucket: environment.bucket, 12 | accessKeyId: environment.accessKeyId, 13 | accessKeySecret: environment.accessKeySecret, 14 | }); 15 | } 16 | 17 | private put(file: File): Promise { 18 | return new Promise((resolve) => { 19 | const putObjectOptions: PutObjectOptions = file.isNoCache 20 | ? { 21 | headers: { 22 | 'Cache-Control': 'no-cache', 23 | }, 24 | } 25 | : {}; 26 | this.client.put(file.to, file.from, putObjectOptions).then((result) => { 27 | if (result.res.status === 200) { 28 | logger.uploadSuccess(file); 29 | return resolve(); 30 | } 31 | logger.uploadFail(file); 32 | console.log(result); 33 | process.exit(1); 34 | }); 35 | }); 36 | } 37 | 38 | public upload(files: File[]): Promise { 39 | return Promise.all(files.map((file) => this.put(file))).then(() => {}); 40 | } 41 | } 42 | 43 | export default Aliyun; 44 | -------------------------------------------------------------------------------- /src/utils/upload/debug.ts: -------------------------------------------------------------------------------- 1 | import * as logger from '../logger'; 2 | 3 | class Debug implements Upload { 4 | constructor(environment: Environment.Debug) {} 5 | 6 | private put(file: File): Promise { 7 | return new Promise((resolve) => { 8 | logger.uploadSuccess(file); 9 | return resolve(); 10 | }); 11 | } 12 | 13 | public upload(files: File[]): Promise { 14 | return Promise.all(files.map((file) => this.put(file))).then(() => {}); 15 | } 16 | } 17 | 18 | export default Debug; 19 | -------------------------------------------------------------------------------- /src/utils/upload/index.ts: -------------------------------------------------------------------------------- 1 | import Aliyun from './aliyun'; 2 | import Qiniu from './qiniu'; 3 | import Tencent from './tencent'; 4 | import Debug from './debug'; 5 | import { Types } from '../../enums'; 6 | import { config } from '../../config'; 7 | 8 | export const upload = (type: Types, files: File[]): Promise => { 9 | switch (type) { 10 | case Types.Aliyun: { 11 | return new Aliyun(config.environment as Environment.Aliyun).upload(files); 12 | } 13 | case Types.Qiniu: { 14 | return new Qiniu(config.environment as Environment.Qiniu).upload(files); 15 | } 16 | case Types.Tencent: { 17 | return new Tencent(config.environment as Environment.Tencent).upload( 18 | files, 19 | ); 20 | } 21 | case Types.Debug: { 22 | return new Debug(config.environment as Environment.Debug).upload(files); 23 | } 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /src/utils/upload/qiniu.ts: -------------------------------------------------------------------------------- 1 | import qiniu, { form_up } from 'qiniu'; 2 | import * as logger from '../logger'; 3 | 4 | class Qiniu implements Upload { 5 | private client: form_up.FormUploader; 6 | private readonly putExtra: form_up.PutExtra; 7 | private readonly uploadToken: string; 8 | 9 | constructor(environment: Environment.Qiniu) { 10 | const mac = new qiniu.auth.digest.Mac( 11 | environment.accessKey, 12 | environment.secretKey, 13 | ); 14 | const putPolicy = new qiniu.rs.PutPolicy({ 15 | scope: environment.bucket, 16 | expires: 7200, 17 | }); 18 | this.uploadToken = putPolicy.uploadToken(mac); 19 | const config = new qiniu.conf.Config(); 20 | this.client = new qiniu.form_up.FormUploader(config); 21 | this.putExtra = new qiniu.form_up.PutExtra(); 22 | } 23 | 24 | private put(file: File): Promise { 25 | return new Promise((resolve) => { 26 | this.client.putFile( 27 | this.uploadToken, 28 | file.to.substring(1), 29 | file.from, 30 | this.putExtra, 31 | (_, respBody, respInfo) => { 32 | if (respInfo?.statusCode === 200) { 33 | logger.uploadSuccess(file); 34 | return resolve(); 35 | } 36 | logger.uploadFail(file); 37 | console.log(_?.message); 38 | process.exit(1); 39 | }, 40 | ); 41 | }); 42 | } 43 | 44 | public upload(files: File[]): Promise { 45 | return Promise.all(files.map((file) => this.put(file))).then(() => {}); 46 | } 47 | } 48 | 49 | export default Qiniu; 50 | -------------------------------------------------------------------------------- /src/utils/upload/tencent.ts: -------------------------------------------------------------------------------- 1 | import Cos from 'cos-nodejs-sdk-v5'; 2 | import fs from 'fs-extra'; 3 | import * as logger from '../logger'; 4 | 5 | class Tencent implements Upload { 6 | private client: Cos; 7 | private readonly bucket: string; 8 | private readonly region: string; 9 | 10 | constructor(environment: Environment.Tencent) { 11 | this.client = new Cos({ 12 | SecretId: environment.secretId, 13 | SecretKey: environment.secretKey, 14 | }); 15 | this.bucket = environment.bucket; 16 | this.region = environment.region; 17 | } 18 | 19 | put(file: File): Promise { 20 | return new Promise((resolve) => { 21 | this.client.putObject( 22 | { 23 | Bucket: this.bucket, 24 | Region: this.region, 25 | Key: file.to, 26 | Body: fs.createReadStream(file.from), 27 | ContentLength: fs.statSync(file.from).size, 28 | CacheControl: file.isNoCache ? 'no-cache' : undefined, 29 | }, 30 | (_, data) => { 31 | if (data.statusCode === 200) { 32 | logger.uploadSuccess(file); 33 | resolve(); 34 | return; 35 | } 36 | logger.uploadFail(file); 37 | logger.error(_.message); 38 | process.exit(1); 39 | }, 40 | ); 41 | }); 42 | } 43 | 44 | public upload(files: File[]): Promise { 45 | return Promise.all(files.map((file) => this.put(file))).then(() => {}); 46 | } 47 | } 48 | 49 | export default Tencent; 50 | -------------------------------------------------------------------------------- /templates/cdn.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | rules: [ 3 | { 4 | from: 'dist', 5 | to: '.', 6 | ignore: ['**/*.map', '**/.DS_store'], 7 | noCache: ['**/*.html'], 8 | lastUpload: ['**/*.html'], 9 | }, 10 | ], 11 | environments: { 12 | production: { 13 | type: 'aliyun', 14 | region: 'oss-cn-hangzhou', 15 | bucket: 'xxx', 16 | accessKeyId: 'xxx', 17 | accessKeySecret: 'xxx', 18 | domain: 'https://xxx.xxx.com', 19 | }, 20 | testing: { 21 | type: 'qiniu', 22 | region: '', 23 | bucket: '', 24 | accessKey: '', 25 | secretKey: '', 26 | domain: '', 27 | }, 28 | development: { 29 | type: 'tencent', 30 | region: '', 31 | bucket: '', 32 | appId: '', 33 | secretId: '', 34 | secretKey: '', 35 | domain: '', 36 | }, 37 | }, 38 | }; 39 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "target": "ES6", 5 | "module": "CommonJS", 6 | "lib": ["ESNext", "DOM"], 7 | "esModuleInterop": true, 8 | "moduleResolution": "node", 9 | "removeComments": true, 10 | "outDir": "lib", 11 | "skipLibCheck": false 12 | }, 13 | "exclude": ["node_modules/**/*"], 14 | "include": ["src/**/*", "typings.d.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /typings.d.ts: -------------------------------------------------------------------------------- 1 | declare enum Types { 2 | Aliyun = 'aliyun', 3 | Qiniu = 'qiniu', 4 | Tencent = 'tencent', 5 | Debug = 'debug', 6 | } 7 | 8 | declare interface Config { 9 | rules: Rule[]; 10 | environment: 11 | | Environment.Aliyun 12 | | Environment.Qiniu 13 | | Environment.Tencent 14 | | Environment.Debug; 15 | environments?: { 16 | [k: string]: 17 | | Environment.Aliyun 18 | | Environment.Qiniu 19 | | Environment.Tencent 20 | | Environment.Debug; 21 | }; 22 | } 23 | 24 | declare interface File { 25 | from: string; 26 | to: string; 27 | isLastUpload: boolean; 28 | isNoCache: boolean; 29 | } 30 | 31 | declare interface Rule { 32 | from: string; 33 | to: string; 34 | ignore: string[]; 35 | noCache: string[]; 36 | lastUpload: string[]; 37 | files: File[]; 38 | } 39 | 40 | declare namespace Environment { 41 | type Aliyun = { 42 | type: Types.Aliyun; 43 | region: string; 44 | bucket: string; 45 | accessKeyId: string; 46 | accessKeySecret: string; 47 | domain: string; 48 | }; 49 | type Qiniu = { 50 | type: Types.Qiniu; 51 | region: string; 52 | bucket: string; 53 | accessKey: string; 54 | secretKey: string; 55 | domain: string; 56 | }; 57 | type Tencent = { 58 | type: Types.Tencent; 59 | region: string; 60 | bucket: string; 61 | appId: string; 62 | secretId: string; 63 | secretKey: string; 64 | domain: string; 65 | }; 66 | type Debug = { 67 | type: Types.Debug; 68 | domain: string; 69 | }; 70 | } 71 | 72 | declare interface Upload { 73 | upload(files: File[]): Promise; 74 | } 75 | --------------------------------------------------------------------------------