diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index 7debdb6..0000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,20 +0,0 @@ -env: - browser: true - es2021: true -extends: - - standard -parser: '@typescript-eslint/parser' -parserOptions: - ecmaVersion: latest - sourceType: module -plugins: - - '@typescript-eslint' -rules: - camelcase: - - off - indent: - - error - - 4 - comma-dangle: - - error - - always-multiline diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 34bf9ee..2ef1ba8 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,6 @@ { "recommendations": [ "redhat.vscode-yaml", - "dbaeumer.vscode-eslint" + "denoland.vscode-deno" ] -} \ No newline at end of file +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 6134fe3..44c5315 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,29 +1,22 @@ { - // 使用 IntelliSense 了解相关属性。 + // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Build and Launch Program", - "program": "${file}", - "preLaunchTask": "npm: build-dev", - "console": "integratedTerminal", - "outFiles": [ - "${workspaceFolder}/dist/**/*.js" - ] - }, { "type": "node", "request": "launch", "name": "Launch Program", "program": "${file}", - "console": "integratedTerminal", - "outFiles": [ - "${workspaceFolder}/dist/**/*.js" - ] - }, + "cwd": "${workspaceFolder}", + "runtimeExecutable": "deno", + "runtimeArgs": [ + "run", + "--inspect-wait", + "--allow-all" + ], + "attachSimplePort": 9229 + } ] -} \ No newline at end of file +} diff --git a/.vscode/settings.json b/.vscode/settings.json index b084fab..8ac4367 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,12 @@ { - "cSpell.words": [ - "typedoc" - ], - "typescript.tsdk": "node_modules\\typescript\\lib", "yaml.schemas": { "config/config.schema.json": "config/config.yml", "config/ding.secrets.schema.json": "config/ding.secrets.yaml" }, - "typescript.format.insertSpaceBeforeFunctionParenthesis": true, - "typescript.format.insertSpaceAfterConstructor": true -} \ No newline at end of file + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno" + }, + "deno.enable": true, + "deno.lint": true, + "deno.unstable": false +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ce11b81..436a617 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,41 +1,12 @@ { - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "build", - "group": "build", - "problemMatcher": [], - "label": "npm: build" - }, - { - "type": "npm", - "script": "build-dev", - "group": "build", - "problemMatcher": [], - "label": "npm: build-dev" - }, - { - "type": "npm", - "script": "update", - "problemMatcher": [], - "label": "npm: update", - "detail": "Update notices. (plugin/cli)" - }, - { - "type": "npm", - "script": "doc", - "problemMatcher": [], - "label": "npm: doc", - "detail": "typedoc" - }, - { - "type": "npm", - "script": "test", - "group": "test", - "problemMatcher": [], - "label": "npm: test", - "detail": "tsc && mocha dist/**/*.test.js" - } - ] -} \ No newline at end of file + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "update", + "problemMatcher": [], + "label": "npm: update", + "detail": "Update notices. (plugin/cli)" + } + ] +} diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index e5c87eb..f355af1 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -7,28 +7,28 @@ - 分工 - `core`只涉及核心功能,不考虑命令行界面等,不能引用任何`plugin`。 - `util`尽量为纯函数,可单独测试,不能引用`core`或`plugin`。 - + - 配置文件 - `core`内部模块不引入配置文件,而是把选项设计为参数。 - + - 在最表层引入配置文件。 - + - 配置文件(理论上)可被命令行参数替代。 - + - `plugin`可以向配置文件中添加自己的键,但仍用`core`读取`config`。 - + ```yaml # config.yml ding: # plugin/ding 的配置 secrets_path: config/ding.secrets.yaml ``` - + 配置的具体规定目前只加入`config/config.schema.json`,不加入`src/core/config.ts`。 - + - `core`中钩子 - `core`内部模块通过参数`_hook`传入`hook`。 - 在最表层`new Hook.Collection()`,并向外暴露`hook.api`。 - + - 尽量模块化 - 隐藏模块内细节:`core`中每个文件夹都有`index.ts`,外部一律引用它。 @@ -163,11 +163,11 @@ type HooksType = { } } -function _foo (options: FooOptions): FooResult { +function _foo(options: FooOptions): FooResult { // … } -export function foo ({ _hook, ...options }: { +export function foo({ _hook, ...options }: { _hook: HookCollection } & FooOptions): Promise { return _hook('foo', _foo, options) @@ -184,7 +184,7 @@ _hook.before('fetch', before_hook) await foo({ ...options, - _hook + _hook, }) ``` diff --git a/README.md b/README.md index 4adc3c5..dc42aae 100644 --- a/README.md +++ b/README.md @@ -93,23 +93,23 @@ npm run update 注:如果你不知道怎么提拉取请求(pull request),不妨直接新建[议题(issue)](https://github.com/YDX-2147483647/bulletin-issues-transferred/issues/new/choose)。 -- 写明名称、网址、同学该如何找到它等等。 +- 写明名称、网址、同学该如何找到它等等。 - 这些内容写在`config/sources_by_selectors.json`中,详细规则见同文件夹的`*.schema.json`。 + 这些内容写在`config/sources_by_selectors.json`中,详细规则见同文件夹的`*.schema.json`。 - 其实也不用太研究那个 JSON Schema,只要看一下现有的`sources_by_selectors.json`,结合 VS Code 的语法提示,照猫画虎就行了。 + 其实也不用太研究那个 JSON Schema,只要看一下现有的`sources_by_selectors.json`,结合 VS Code 的语法提示,照猫画虎就行了。 -- 描述如何从这个来源获取通知。 +- 描述如何从这个来源获取通知。 - 目前有两类方法: + 目前有两类方法: - - 先获取通知列表的静态网页,然后用 CSS 选择器从中提取信息。 + - 先获取通知列表的静态网页,然后用 CSS 选择器从中提取信息。 - CSS 选择器写在`config/sources_by_selectors.json`中。 + CSS 选择器写在`config/sources_by_selectors.json`中。 - - 利用学校的 API。 + - 利用学校的 API。 - 在`src/core/sources/special.ts`中的`raw_sources: SourceSpecialInterface[]`里。 + 在`src/core/sources/special.ts`中的`raw_sources: SourceSpecialInterface[]`里。 ### 移植到别的学校 @@ -122,22 +122,22 @@ npm run update ## 这合法吗? -- 绝对不涉密 +- 绝对不涉密 - > 上网不涉密,涉密不上网。 + > 上网不涉密,涉密不上网。 - 我们只获取无需登录就能访问到的通知。一般人用搜索引擎都能找到这些页面,只是比较麻烦。 + 我们只获取无需登录就能访问到的通知。一般人用搜索引擎都能找到这些页面,只是比较麻烦。 -- 不侵犯版权 +- 不侵犯版权 - (且不论通知有没有版权)我们只获取通知的标题,并且会给出原链接。 + (且不论通知有没有版权)我们只获取通知的标题,并且会给出原链接。 -- 基本不会给学校服务器造成压力 +- 基本不会给学校服务器造成压力 - 如[前](#添加别的通知来源)所述,获取通知不会频繁访问学校网站,一个普通人在学校网上乱点造成的压力可能都比这个项目的大。 + 如[前](#添加别的通知来源)所述,获取通知不会频繁访问学校网站,一个普通人在学校网上乱点造成的压力可能都比这个项目的大。 - 另外,这个项目也许会方便一些同学找通知,避免在学校网上乱翻,从而可能减小学校服务器的压力。 + 另外,这个项目也许会方便一些同学找通知,避免在学校网上乱翻,从而可能减小学校服务器的压力。 -- 原理基于公开内容 +- 原理基于公开内容 - CSS 选择器只是描述学校网页,API 是搜索学校网页源代码得到的。这些内容都在 Web 前端,是公开的。 + CSS 选择器只是描述学校网页,API 是搜索学校网页源代码得到的。这些内容都在 Web 前端,是公开的。 diff --git a/config/config.schema.json b/config/config.schema.json index e26e084..2456125 100644 --- a/config/config.schema.json +++ b/config/config.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft-07/schema", - "$id": "config.schema.json-v0.3.1", + "$id": "config.schema.json-v0.3.2", "title": "Bulletin IT 设置", "type": "object", "properties": { @@ -77,6 +77,17 @@ "output_path" ] }, + "retry": { + "title": "超时后重试插件", + "type": "object", + "properties": { + "delay": { + "title": "超时后等待的毫秒数", + "type": "number", + "default": 10000 + } + } + }, "proxy": { "title": "虚拟校园网插件", "type": "object", @@ -103,4 +114,4 @@ ] } } -} \ No newline at end of file +} diff --git a/config/ding.secrets.schema.json b/config/ding.secrets.schema.json index 491dec9..260f934 100644 --- a/config/ding.secrets.schema.json +++ b/config/ding.secrets.schema.json @@ -11,7 +11,7 @@ "description": "以“https://oapi.dingtalk.com”开头。" }, "secret": { - "type":"string", + "type": "string", "title": "加密用签名", "description": "安全设置→加签,以“SEC”开头。" } @@ -20,4 +20,4 @@ "webhook", "secret" ] -} \ No newline at end of file +} diff --git a/config/proxy.secrets.schema.json b/config/proxy.secrets.schema.json index 68c1bab..7774318 100644 --- a/config/proxy.secrets.schema.json +++ b/config/proxy.secrets.schema.json @@ -19,4 +19,4 @@ "username", "password" ] -} \ No newline at end of file +} diff --git a/config/sources_by_selectors.json b/config/sources_by_selectors.json index 9bfcf20..e6f99d3 100644 --- a/config/sources_by_selectors.json +++ b/config/sources_by_selectors.json @@ -654,4 +654,4 @@ } } ] -} \ No newline at end of file +} diff --git a/config/sources_by_selectors.schema.json b/config/sources_by_selectors.schema.json index 2ceea03..6bc649c 100644 --- a/config/sources_by_selectors.schema.json +++ b/config/sources_by_selectors.schema.json @@ -105,4 +105,4 @@ } } } -} \ No newline at end of file +} diff --git a/deno.jsonc b/deno.jsonc new file mode 100644 index 0000000..2b67b26 --- /dev/null +++ b/deno.jsonc @@ -0,0 +1,37 @@ +{ + "tasks": { + "fmt": "deno fmt --ignore=docs/,output/,package.json,package-lock.json", + "doc": "deno doc --html --name='Bulletin Issues Transferred' src/core/index.ts", + "check-sources-urls": "deno run --allow-env --allow-net --allow-read=config/sources_by_selectors.json scripts/check_sources_urls.ts", + "update": "deno run --allow-env=NODE_ENV --allow-net --allow-read --allow-write=output/ --allow-sys=osRelease src/examples/cli.ts", + "update-ding": "deno run --allow-env=NODE_ENV --allow-net --allow-read --allow-write=output/ --allow-sys=osRelease src/examples/ding-cli.ts", + "update-rss": "deno run --allow-env=NODE_ENV --allow-net --allow-read --allow-write=output/ --allow-sys=osRelease src/examples/rss-cli.ts", + "update-proxy": "deno run --allow-env=NODE_ENV --allow-net --allow-read --allow-write=output/ --allow-sys=osRelease src/examples/proxy-cli.ts", + "update-server": "deno run --allow-env=NODE_ENV --allow-net --allow-read --allow-write=output/ --allow-sys=osRelease src/examples/server-cli.ts", + "update-server-ding": "deno run --allow-env=NODE_ENV --allow-net --allow-read --allow-write=output/ --allow-sys=osRelease src/examples/server-ding-cli.ts" + }, + "imports": { + "std/": "https://deno.land/std@0.205.0/", + "ky": "https://esm.sh/ky@1.1.3", + "npm:aes-js": "npm:aes-js@^3.1.2", + "npm:before-after-hook": "npm:before-after-hook@^2.2.2", + "npm:chalk": "npm:chalk@^5.3.0", + "npm:cli-progress": "npm:cli-progress@^3.9.1", + "npm:inquirer": "npm:inquirer@^9.2.11", + "npm:terminal-image": "npm:terminal-image@^2.0.0", + "npm:winston": "npm:winston@^3.8.1", + "npm:xml": "npm:xml@^1.0.1", + "npm:yaml": "npm:yaml@^2.2.2" + }, + "fmt": { + "singleQuote": true, + "semiColons": false, + "indentWidth": 4, + "proseWrap": "preserve" + }, + "lint": { + "include": [ + "src/" + ] + } +} diff --git a/deno.lock b/deno.lock new file mode 100644 index 0000000..03e7e0c --- /dev/null +++ b/deno.lock @@ -0,0 +1,2568 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "npm:@types/cli-progress@^3.9.2": "npm:@types/cli-progress@3.11.4", + "npm:@types/xml@^1.0.6": "npm:@types/xml@1.0.10", + "npm:aes-js": "npm:aes-js@3.1.2", + "npm:aes-js@^3.1.2": "npm:aes-js@3.1.2", + "npm:before-after-hook": "npm:before-after-hook@2.2.3", + "npm:before-after-hook@^2.2.2": "npm:before-after-hook@2.2.3", + "npm:chalk": "npm:chalk@5.3.0", + "npm:chalk@^5.0.0": "npm:chalk@5.3.0", + "npm:chalk@^5.3.0": "npm:chalk@5.3.0", + "npm:check-links@^2.1.2": "npm:check-links@2.1.2", + "npm:cheerio@^1.0.0-rc.12": "npm:cheerio@1.0.0-rc.12", + "npm:cli-progress": "npm:cli-progress@3.12.0", + "npm:cli-progress@^3.9.1": "npm:cli-progress@3.12.0", + "npm:inquirer": "npm:inquirer@9.2.11", + "npm:inquirer@^9.2.11": "npm:inquirer@9.2.11", + "npm:npm-run-all@^4.1.5": "npm:npm-run-all@4.1.5", + "npm:terminal-image": "npm:terminal-image@2.0.0", + "npm:terminal-image@^2.0.0": "npm:terminal-image@2.0.0", + "npm:winston": "npm:winston@3.11.0", + "npm:winston@^3.8.1": "npm:winston@3.11.0", + "npm:xml": "npm:xml@1.0.1", + "npm:xml@^1.0.1": "npm:xml@1.0.1", + "npm:yaml": "npm:yaml@2.3.4", + "npm:yaml@^2.2.2": "npm:yaml@2.3.4" + }, + "npm": { + "@babel/runtime@7.23.2": { + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dependencies": { + "regenerator-runtime": "regenerator-runtime@0.14.0" + } + }, + "@colors/colors@1.6.0": { + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dependencies": {} + }, + "@dabh/diagnostics@2.0.3": { + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "colorspace@1.1.4", + "enabled": "enabled@2.0.0", + "kuler": "kuler@2.0.0" + } + }, + "@jimp/bmp@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0", + "bmp-js": "bmp-js@0.1.0" + } + }, + "@jimp/bmp@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13", + "bmp-js": "bmp-js@0.1.0" + } + }, + "@jimp/core@0.14.0": { + "integrity": "sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/utils": "@jimp/utils@0.14.0", + "any-base": "any-base@1.1.0", + "buffer": "buffer@5.7.1", + "exif-parser": "exif-parser@0.1.12", + "file-type": "file-type@9.0.0", + "load-bmfont": "load-bmfont@1.4.1", + "mkdirp": "mkdirp@0.5.6", + "phin": "phin@2.9.3", + "pixelmatch": "pixelmatch@4.0.2", + "tinycolor2": "tinycolor2@1.6.0" + } + }, + "@jimp/core@0.16.13": { + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/utils": "@jimp/utils@0.16.13", + "any-base": "any-base@1.1.0", + "buffer": "buffer@5.7.1", + "exif-parser": "exif-parser@0.1.12", + "file-type": "file-type@16.5.4", + "load-bmfont": "load-bmfont@1.4.1", + "mkdirp": "mkdirp@0.5.6", + "phin": "phin@2.9.3", + "pixelmatch": "pixelmatch@4.0.2", + "tinycolor2": "tinycolor2@1.6.0" + } + }, + "@jimp/custom@0.14.0": { + "integrity": "sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/core": "@jimp/core@0.14.0" + } + }, + "@jimp/custom@0.16.13": { + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/core": "@jimp/core@0.16.13" + } + }, + "@jimp/gif@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0", + "gifwrap": "gifwrap@0.9.4", + "omggif": "omggif@1.0.10" + } + }, + "@jimp/gif@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13", + "gifwrap": "gifwrap@0.9.4", + "omggif": "omggif@1.0.10" + } + }, + "@jimp/jpeg@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0", + "jpeg-js": "jpeg-js@0.4.4" + } + }, + "@jimp/jpeg@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13", + "jpeg-js": "jpeg-js@0.4.4" + } + }, + "@jimp/plugin-blit@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-blit@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-blur@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-blur@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-circle@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-circle@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-color@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0", + "tinycolor2": "tinycolor2@1.6.0" + } + }, + "@jimp/plugin-color@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13", + "tinycolor2": "tinycolor2@1.6.0" + } + }, + "@jimp/plugin-contain@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-scale@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0": { + "integrity": "sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-scale": "@jimp/plugin-scale@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-contain@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-scale@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13": { + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-scale": "@jimp/plugin-scale@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-cover@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-scale@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0": { + "integrity": "sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-crop": "@jimp/plugin-crop@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-scale": "@jimp/plugin-scale@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-cover@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-scale@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13": { + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-crop": "@jimp/plugin-crop@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-scale": "@jimp/plugin-scale@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-crop@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-crop@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-displace@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-displace@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-dither@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-dither@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-fisheye@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-fisheye@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-flip@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-rotate@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-blit@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-crop@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-rotate": "@jimp/plugin-rotate@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-flip@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-rotate@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-blit@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-crop@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-rotate": "@jimp/plugin-rotate@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-gaussian@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-gaussian@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-invert@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-invert@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-mask@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-mask@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-normalize@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-normalize@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-print@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.14.0_@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0", + "load-bmfont": "load-bmfont@1.4.1" + } + }, + "@jimp/plugin-print@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.16.13_@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13", + "load-bmfont": "load-bmfont@1.4.1" + } + }, + "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-rotate@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-crop": "@jimp/plugin-crop@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-rotate@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-crop": "@jimp/plugin-crop@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-scale@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-scale@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-shadow@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blur@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-blur": "@jimp/plugin-blur@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-shadow@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blur@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-blur": "@jimp/plugin-blur@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugin-threshold@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-color@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-color": "@jimp/plugin-color@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0" + } + }, + "@jimp/plugin-threshold@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-color@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-color": "@jimp/plugin-color@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13" + } + }, + "@jimp/plugins@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-scale@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-rotate@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-blit@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-crop@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0_@jimp+plugin-blur@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-color@0.14.0__@jimp+custom@0.14.0": { + "integrity": "sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-blur": "@jimp/plugin-blur@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-circle": "@jimp/plugin-circle@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-color": "@jimp/plugin-color@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-contain": "@jimp/plugin-contain@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-scale@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0", + "@jimp/plugin-cover": "@jimp/plugin-cover@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-scale@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0", + "@jimp/plugin-crop": "@jimp/plugin-crop@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-displace": "@jimp/plugin-displace@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-dither": "@jimp/plugin-dither@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-fisheye": "@jimp/plugin-fisheye@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-flip": "@jimp/plugin-flip@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-rotate@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-blit@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-crop@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/plugin-gaussian": "@jimp/plugin-gaussian@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-invert": "@jimp/plugin-invert@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-mask": "@jimp/plugin-mask@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-normalize": "@jimp/plugin-normalize@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-print": "@jimp/plugin-print@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.14.0_@jimp+custom@0.14.0", + "@jimp/plugin-rotate": "@jimp/plugin-rotate@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/plugin-scale": "@jimp/plugin-scale@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/plugin-shadow": "@jimp/plugin-shadow@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blur@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "@jimp/plugin-threshold": "@jimp/plugin-threshold@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-color@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0", + "timm": "timm@1.7.1" + } + }, + "@jimp/plugins@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-scale@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-rotate@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-blit@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-crop@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13_@jimp+plugin-blur@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-color@0.16.13__@jimp+custom@0.16.13": { + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugin-blit": "@jimp/plugin-blit@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-blur": "@jimp/plugin-blur@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-circle": "@jimp/plugin-circle@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-color": "@jimp/plugin-color@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-contain": "@jimp/plugin-contain@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-scale@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13", + "@jimp/plugin-cover": "@jimp/plugin-cover@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-scale@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13", + "@jimp/plugin-crop": "@jimp/plugin-crop@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-displace": "@jimp/plugin-displace@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-dither": "@jimp/plugin-dither@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-fisheye": "@jimp/plugin-fisheye@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-flip": "@jimp/plugin-flip@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-rotate@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-blit@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-crop@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/plugin-gaussian": "@jimp/plugin-gaussian@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-invert": "@jimp/plugin-invert@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-mask": "@jimp/plugin-mask@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-normalize": "@jimp/plugin-normalize@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-print": "@jimp/plugin-print@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13", + "@jimp/plugin-resize": "@jimp/plugin-resize@0.16.13_@jimp+custom@0.16.13", + "@jimp/plugin-rotate": "@jimp/plugin-rotate@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/plugin-scale": "@jimp/plugin-scale@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/plugin-shadow": "@jimp/plugin-shadow@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blur@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "@jimp/plugin-threshold": "@jimp/plugin-threshold@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-color@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13", + "timm": "timm@1.7.1" + } + }, + "@jimp/png@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/utils": "@jimp/utils@0.14.0", + "pngjs": "pngjs@3.4.0" + } + }, + "@jimp/png@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/utils": "@jimp/utils@0.16.13", + "pngjs": "pngjs@3.4.0" + } + }, + "@jimp/tiff@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "utif": "utif@2.0.1" + } + }, + "@jimp/tiff@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "utif": "utif@2.0.1" + } + }, + "@jimp/types@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/bmp": "@jimp/bmp@0.14.0_@jimp+custom@0.14.0", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/gif": "@jimp/gif@0.14.0_@jimp+custom@0.14.0", + "@jimp/jpeg": "@jimp/jpeg@0.14.0_@jimp+custom@0.14.0", + "@jimp/png": "@jimp/png@0.14.0_@jimp+custom@0.14.0", + "@jimp/tiff": "@jimp/tiff@0.14.0_@jimp+custom@0.14.0", + "timm": "timm@1.7.1" + } + }, + "@jimp/types@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/bmp": "@jimp/bmp@0.16.13_@jimp+custom@0.16.13", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/gif": "@jimp/gif@0.16.13_@jimp+custom@0.16.13", + "@jimp/jpeg": "@jimp/jpeg@0.16.13_@jimp+custom@0.16.13", + "@jimp/png": "@jimp/png@0.16.13_@jimp+custom@0.16.13", + "@jimp/tiff": "@jimp/tiff@0.16.13_@jimp+custom@0.16.13", + "timm": "timm@1.7.1" + } + }, + "@jimp/utils@0.14.0": { + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "regenerator-runtime": "regenerator-runtime@0.13.11" + } + }, + "@jimp/utils@0.16.13": { + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "regenerator-runtime": "regenerator-runtime@0.13.11" + } + }, + "@ljharb/through@2.3.11": { + "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", + "dependencies": { + "call-bind": "call-bind@1.0.5" + } + }, + "@sindresorhus/is@5.6.0": { + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dependencies": {} + }, + "@szmarczak/http-timer@5.0.1": { + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "defer-to-connect@2.0.1" + } + }, + "@tokenizer/token@0.3.0": { + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dependencies": {} + }, + "@types/cli-progress@3.11.4": { + "integrity": "sha512-yufTxeeNCZuEIxx2uebK8lpSAsJM4lvzakm/VxzYhDtqhXCzwH9jpn7nPCxzrROuEbLATqhFq4MIPoG0tlrsvw==", + "dependencies": { + "@types/node": "@types/node@18.16.19" + } + }, + "@types/http-cache-semantics@4.0.3": { + "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==", + "dependencies": {} + }, + "@types/node@16.9.1": { + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "dependencies": {} + }, + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + }, + "@types/triple-beam@1.3.4": { + "integrity": "sha512-HlJjF3wxV4R2VQkFpKe0YqJLilYNgtRtsqqZtby7RkVsSs+i+vbyzjtUwpFEdUCKcrGzCiEJE7F/0mKjh0sunA==", + "dependencies": {} + }, + "@types/xml@1.0.10": { + "integrity": "sha512-fNVNc7SBoHyGPPyKfUPuBeq6h9+h/pH+CJd/ehB8tdbaD07Ch4iVVI/qloC78I5i5ccC3QOKC9yZucibM2Tf0Q==", + "dependencies": { + "@types/node": "@types/node@18.16.19" + } + }, + "@xmldom/xmldom@0.8.10": { + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dependencies": {} + }, + "aes-js@3.1.2": { + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "dependencies": {} + }, + "aggregate-error@4.0.1": { + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dependencies": { + "clean-stack": "clean-stack@4.2.0", + "indent-string": "indent-string@5.0.0" + } + }, + "ansi-escapes@4.3.2": { + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "type-fest@0.21.3" + } + }, + "ansi-escapes@5.0.0": { + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dependencies": { + "type-fest": "type-fest@1.4.0" + } + }, + "ansi-regex@5.0.1": { + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dependencies": {} + }, + "ansi-styles@3.2.1": { + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "color-convert@1.9.3" + } + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "color-convert@2.0.1" + } + }, + "any-base@1.1.0": { + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dependencies": {} + }, + "app-path@4.0.0": { + "integrity": "sha512-mgBO9PZJ3MpbKbwFTljTi36ZKBvG5X/fkVR1F85ANsVcVllEb+C0LGNdJfGUm84GpC4xxgN6HFkmkMU8VEO4mA==", + "dependencies": { + "execa": "execa@5.1.1" + } + }, + "array-buffer-byte-length@1.0.0": { + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "is-array-buffer": "is-array-buffer@3.0.2" + } + }, + "array-range@1.0.1": { + "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==", + "dependencies": {} + }, + "arraybuffer.prototype.slice@1.0.2": { + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "array-buffer-byte-length@1.0.0", + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.22.3", + "get-intrinsic": "get-intrinsic@1.2.2", + "is-array-buffer": "is-array-buffer@3.0.2", + "is-shared-array-buffer": "is-shared-array-buffer@1.0.2" + } + }, + "astral-regex@2.0.0": { + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dependencies": {} + }, + "async@3.2.5": { + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dependencies": {} + }, + "available-typed-arrays@1.0.5": { + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dependencies": {} + }, + "balanced-match@1.0.2": { + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dependencies": {} + }, + "base64-js@1.5.1": { + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dependencies": {} + }, + "before-after-hook@2.2.3": { + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dependencies": {} + }, + "bl@4.1.0": { + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "buffer@5.7.1", + "inherits": "inherits@2.0.4", + "readable-stream": "readable-stream@3.6.2" + } + }, + "bmp-js@0.1.0": { + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "dependencies": {} + }, + "boolbase@1.0.0": { + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dependencies": {} + }, + "brace-expansion@1.1.11": { + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "balanced-match@1.0.2", + "concat-map": "concat-map@0.0.1" + } + }, + "buffer-equal@0.0.1": { + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "dependencies": {} + }, + "buffer@5.7.1": { + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "base64-js@1.5.1", + "ieee754": "ieee754@1.2.1" + } + }, + "cacheable-lookup@7.0.0": { + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dependencies": {} + }, + "cacheable-request@10.2.14": { + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dependencies": { + "@types/http-cache-semantics": "@types/http-cache-semantics@4.0.3", + "get-stream": "get-stream@6.0.1", + "http-cache-semantics": "http-cache-semantics@4.1.1", + "keyv": "keyv@4.5.4", + "mimic-response": "mimic-response@4.0.0", + "normalize-url": "normalize-url@8.0.0", + "responselike": "responselike@3.0.0" + } + }, + "call-bind@1.0.5": { + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "function-bind@1.1.2", + "get-intrinsic": "get-intrinsic@1.2.2", + "set-function-length": "set-function-length@1.1.1" + } + }, + "chalk@2.4.2": { + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "ansi-styles@3.2.1", + "escape-string-regexp": "escape-string-regexp@1.0.5", + "supports-color": "supports-color@5.5.0" + } + }, + "chalk@4.1.2": { + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "supports-color": "supports-color@7.2.0" + } + }, + "chalk@5.3.0": { + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dependencies": {} + }, + "chardet@0.7.0": { + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dependencies": {} + }, + "check-links@2.1.2": { + "integrity": "sha512-GzIyRHFF0VTmiWMia5VG5T3WtcS8ExiDHV283ifrUYtUArWcLX6T526zw09zvpGUoyCndl+sADXj3pYwBSFT1A==", + "dependencies": { + "expiry-map": "expiry-map@2.0.0", + "got": "got@12.6.1", + "is-relative-url": "is-relative-url@4.0.0", + "p-map": "p-map@5.5.0", + "p-memoize": "p-memoize@7.1.1" + } + }, + "cheerio-select@2.1.0": { + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "boolbase@1.0.0", + "css-select": "css-select@5.1.0", + "css-what": "css-what@6.1.0", + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0" + } + }, + "cheerio@1.0.0-rc.12": { + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "cheerio-select@2.1.0", + "dom-serializer": "dom-serializer@2.0.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "htmlparser2": "htmlparser2@8.0.2", + "parse5": "parse5@7.1.2", + "parse5-htmlparser2-tree-adapter": "parse5-htmlparser2-tree-adapter@7.0.0" + } + }, + "clean-stack@4.2.0": { + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dependencies": { + "escape-string-regexp": "escape-string-regexp@5.0.0" + } + }, + "cli-cursor@3.1.0": { + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "restore-cursor@3.1.0" + } + }, + "cli-progress@3.12.0": { + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dependencies": { + "string-width": "string-width@4.2.3" + } + }, + "cli-spinners@2.9.1": { + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dependencies": {} + }, + "cli-width@4.1.0": { + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dependencies": {} + }, + "clone@1.0.4": { + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dependencies": {} + }, + "color-convert@1.9.3": { + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "color-name@1.1.3" + } + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "color-name@1.1.4" + } + }, + "color-name@1.1.3": { + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dependencies": {} + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dependencies": {} + }, + "color-string@1.9.1": { + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "color-name@1.1.3", + "simple-swizzle": "simple-swizzle@0.2.2" + } + }, + "color@3.2.1": { + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "color-convert@1.9.3", + "color-string": "color-string@1.9.1" + } + }, + "colorspace@1.1.4": { + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "color@3.2.1", + "text-hex": "text-hex@1.0.0" + } + }, + "concat-map@0.0.1": { + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dependencies": {} + }, + "cross-spawn@6.0.5": { + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "nice-try@1.0.5", + "path-key": "path-key@2.0.1", + "semver": "semver@5.7.2", + "shebang-command": "shebang-command@1.2.0", + "which": "which@1.3.1" + } + }, + "cross-spawn@7.0.3": { + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "path-key@3.1.1", + "shebang-command": "shebang-command@2.0.0", + "which": "which@2.0.2" + } + }, + "css-select@5.1.0": { + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "boolbase@1.0.0", + "css-what": "css-what@6.1.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "nth-check": "nth-check@2.1.1" + } + }, + "css-what@6.1.0": { + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dependencies": {} + }, + "cycled@1.2.0": { + "integrity": "sha512-/BOOCEohSBflVHHtY/wUc1F6YDYPqyVs/A837gDoq4H1pm72nU/yChyGt91V4ML+MbbAmHs8uo2l1yJkkTIUdg==", + "dependencies": {} + }, + "decode-gif@1.0.1": { + "integrity": "sha512-L0MT527mwlkil9TiN1xwnJXzUxCup55bUT91CPmQlc9zYejXJ8xp17d5EVnwM80JOIGImBUk1ptJQ+hDihyzwg==", + "dependencies": { + "array-range": "array-range@1.0.1", + "omggif": "omggif@1.0.10" + } + }, + "decompress-response@6.0.0": { + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "mimic-response@3.1.0" + } + }, + "defaults@1.0.4": { + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "clone@1.0.4" + } + }, + "defer-to-connect@2.0.1": { + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dependencies": {} + }, + "define-data-property@1.1.1": { + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.2", + "gopd": "gopd@1.0.1", + "has-property-descriptors": "has-property-descriptors@1.0.1" + } + }, + "define-properties@1.2.1": { + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "define-data-property@1.1.1", + "has-property-descriptors": "has-property-descriptors@1.0.1", + "object-keys": "object-keys@1.1.1" + } + }, + "delay@4.4.1": { + "integrity": "sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==", + "dependencies": {} + }, + "dom-serializer@2.0.0": { + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "entities": "entities@4.5.0" + } + }, + "dom-walk@0.1.2": { + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dependencies": {} + }, + "domelementtype@2.3.0": { + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dependencies": {} + }, + "domhandler@5.0.3": { + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0" + } + }, + "domutils@3.1.0": { + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "dom-serializer@2.0.0", + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3" + } + }, + "emoji-regex@8.0.0": { + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dependencies": {} + }, + "enabled@2.0.0": { + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dependencies": {} + }, + "entities@4.5.0": { + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dependencies": {} + }, + "error-ex@1.3.2": { + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "is-arrayish@0.2.1" + } + }, + "es-abstract@1.22.3": { + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dependencies": { + "array-buffer-byte-length": "array-buffer-byte-length@1.0.0", + "arraybuffer.prototype.slice": "arraybuffer.prototype.slice@1.0.2", + "available-typed-arrays": "available-typed-arrays@1.0.5", + "call-bind": "call-bind@1.0.5", + "es-set-tostringtag": "es-set-tostringtag@2.0.2", + "es-to-primitive": "es-to-primitive@1.2.1", + "function.prototype.name": "function.prototype.name@1.1.6", + "get-intrinsic": "get-intrinsic@1.2.2", + "get-symbol-description": "get-symbol-description@1.0.0", + "globalthis": "globalthis@1.0.3", + "gopd": "gopd@1.0.1", + "has-property-descriptors": "has-property-descriptors@1.0.1", + "has-proto": "has-proto@1.0.1", + "has-symbols": "has-symbols@1.0.3", + "hasown": "hasown@2.0.0", + "internal-slot": "internal-slot@1.0.6", + "is-array-buffer": "is-array-buffer@3.0.2", + "is-callable": "is-callable@1.2.7", + "is-negative-zero": "is-negative-zero@2.0.2", + "is-regex": "is-regex@1.1.4", + "is-shared-array-buffer": "is-shared-array-buffer@1.0.2", + "is-string": "is-string@1.0.7", + "is-typed-array": "is-typed-array@1.1.12", + "is-weakref": "is-weakref@1.0.2", + "object-inspect": "object-inspect@1.13.1", + "object-keys": "object-keys@1.1.1", + "object.assign": "object.assign@4.1.4", + "regexp.prototype.flags": "regexp.prototype.flags@1.5.1", + "safe-array-concat": "safe-array-concat@1.0.1", + "safe-regex-test": "safe-regex-test@1.0.0", + "string.prototype.trim": "string.prototype.trim@1.2.8", + "string.prototype.trimend": "string.prototype.trimend@1.0.7", + "string.prototype.trimstart": "string.prototype.trimstart@1.0.7", + "typed-array-buffer": "typed-array-buffer@1.0.0", + "typed-array-byte-length": "typed-array-byte-length@1.0.0", + "typed-array-byte-offset": "typed-array-byte-offset@1.0.0", + "typed-array-length": "typed-array-length@1.0.4", + "unbox-primitive": "unbox-primitive@1.0.2", + "which-typed-array": "which-typed-array@1.1.13" + } + }, + "es-set-tostringtag@2.0.2": { + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.2", + "has-tostringtag": "has-tostringtag@1.0.0", + "hasown": "hasown@2.0.0" + } + }, + "es-to-primitive@1.2.1": { + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "is-callable@1.2.7", + "is-date-object": "is-date-object@1.0.5", + "is-symbol": "is-symbol@1.0.4" + } + }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dependencies": {} + }, + "escape-string-regexp@5.0.0": { + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dependencies": {} + }, + "execa@5.1.1": { + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "cross-spawn@7.0.3", + "get-stream": "get-stream@6.0.1", + "human-signals": "human-signals@2.1.0", + "is-stream": "is-stream@2.0.1", + "merge-stream": "merge-stream@2.0.0", + "npm-run-path": "npm-run-path@4.0.1", + "onetime": "onetime@5.1.2", + "signal-exit": "signal-exit@3.0.7", + "strip-final-newline": "strip-final-newline@2.0.0" + } + }, + "exif-parser@0.1.12": { + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", + "dependencies": {} + }, + "expiry-map@2.0.0": { + "integrity": "sha512-K1I5wJe2fiqjyUZf/xhxwTpaopw3F+19DsO7Oggl20+3SVTXDIevVRJav0aBMfposQdkl2E4+gnuOKd3j2X0sA==", + "dependencies": { + "map-age-cleaner": "map-age-cleaner@0.2.0" + } + }, + "external-editor@3.1.0": { + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "chardet@0.7.0", + "iconv-lite": "iconv-lite@0.4.24", + "tmp": "tmp@0.0.33" + } + }, + "fecha@4.2.3": { + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dependencies": {} + }, + "figures@5.0.0": { + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dependencies": { + "escape-string-regexp": "escape-string-regexp@5.0.0", + "is-unicode-supported": "is-unicode-supported@1.3.0" + } + }, + "file-type@16.5.4": { + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "readable-web-to-node-stream@3.0.2", + "strtok3": "strtok3@6.3.0", + "token-types": "token-types@4.2.1" + } + }, + "file-type@9.0.0": { + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dependencies": {} + }, + "fn.name@1.1.0": { + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dependencies": {} + }, + "for-each@0.3.3": { + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "is-callable@1.2.7" + } + }, + "form-data-encoder@2.1.4": { + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dependencies": {} + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dependencies": {} + }, + "function.prototype.name@1.1.6": { + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.22.3", + "functions-have-names": "functions-have-names@1.2.3" + } + }, + "functions-have-names@1.2.3": { + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dependencies": {} + }, + "get-intrinsic@1.2.2": { + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "function-bind@1.1.2", + "has-proto": "has-proto@1.0.1", + "has-symbols": "has-symbols@1.0.3", + "hasown": "hasown@2.0.0" + } + }, + "get-stream@6.0.1": { + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dependencies": {} + }, + "get-symbol-description@1.0.0": { + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "get-intrinsic": "get-intrinsic@1.2.2" + } + }, + "gifwrap@0.9.4": { + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dependencies": { + "image-q": "image-q@4.0.0", + "omggif": "omggif@1.0.10" + } + }, + "global@4.4.0": { + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "min-document@2.19.0", + "process": "process@0.11.10" + } + }, + "globalthis@1.0.3": { + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "define-properties@1.2.1" + } + }, + "gopd@1.0.1": { + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.2" + } + }, + "got@12.6.1": { + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dependencies": { + "@sindresorhus/is": "@sindresorhus/is@5.6.0", + "@szmarczak/http-timer": "@szmarczak/http-timer@5.0.1", + "cacheable-lookup": "cacheable-lookup@7.0.0", + "cacheable-request": "cacheable-request@10.2.14", + "decompress-response": "decompress-response@6.0.0", + "form-data-encoder": "form-data-encoder@2.1.4", + "get-stream": "get-stream@6.0.1", + "http2-wrapper": "http2-wrapper@2.2.0", + "lowercase-keys": "lowercase-keys@3.0.0", + "p-cancelable": "p-cancelable@3.0.0", + "responselike": "responselike@3.0.0" + } + }, + "graceful-fs@4.2.11": { + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dependencies": {} + }, + "has-bigints@1.0.2": { + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dependencies": {} + }, + "has-flag@3.0.0": { + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dependencies": {} + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dependencies": {} + }, + "has-property-descriptors@1.0.1": { + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.2" + } + }, + "has-proto@1.0.1": { + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dependencies": {} + }, + "has-symbols@1.0.3": { + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dependencies": {} + }, + "has-tostringtag@1.0.0": { + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "has-symbols@1.0.3" + } + }, + "hasown@2.0.0": { + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "function-bind@1.1.2" + } + }, + "hosted-git-info@2.8.9": { + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dependencies": {} + }, + "htmlparser2@8.0.2": { + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dependencies": { + "domelementtype": "domelementtype@2.3.0", + "domhandler": "domhandler@5.0.3", + "domutils": "domutils@3.1.0", + "entities": "entities@4.5.0" + } + }, + "http-cache-semantics@4.1.1": { + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dependencies": {} + }, + "http2-wrapper@2.2.0": { + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dependencies": { + "quick-lru": "quick-lru@5.1.1", + "resolve-alpn": "resolve-alpn@1.2.1" + } + }, + "human-signals@2.1.0": { + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dependencies": {} + }, + "iconv-lite@0.4.24": { + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": "safer-buffer@2.1.2" + } + }, + "ieee754@1.2.1": { + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dependencies": {} + }, + "image-q@4.0.0": { + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "@types/node@16.9.1" + } + }, + "indent-string@5.0.0": { + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dependencies": {} + }, + "inherits@2.0.4": { + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dependencies": {} + }, + "inquirer@9.2.11": { + "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "dependencies": { + "@ljharb/through": "@ljharb/through@2.3.11", + "ansi-escapes": "ansi-escapes@4.3.2", + "chalk": "chalk@5.3.0", + "cli-cursor": "cli-cursor@3.1.0", + "cli-width": "cli-width@4.1.0", + "external-editor": "external-editor@3.1.0", + "figures": "figures@5.0.0", + "lodash": "lodash@4.17.21", + "mute-stream": "mute-stream@1.0.0", + "ora": "ora@5.4.1", + "run-async": "run-async@3.0.0", + "rxjs": "rxjs@7.8.1", + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1", + "wrap-ansi": "wrap-ansi@6.2.0" + } + }, + "internal-slot@1.0.6": { + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dependencies": { + "get-intrinsic": "get-intrinsic@1.2.2", + "hasown": "hasown@2.0.0", + "side-channel": "side-channel@1.0.4" + } + }, + "is-absolute-url@4.0.1": { + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "dependencies": {} + }, + "is-array-buffer@3.0.2": { + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "get-intrinsic": "get-intrinsic@1.2.2", + "is-typed-array": "is-typed-array@1.1.12" + } + }, + "is-arrayish@0.2.1": { + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dependencies": {} + }, + "is-arrayish@0.3.2": { + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dependencies": {} + }, + "is-bigint@1.0.4": { + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "has-bigints@1.0.2" + } + }, + "is-boolean-object@1.1.2": { + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "has-tostringtag": "has-tostringtag@1.0.0" + } + }, + "is-callable@1.2.7": { + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dependencies": {} + }, + "is-core-module@2.13.1": { + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "hasown@2.0.0" + } + }, + "is-date-object@1.0.5": { + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.0" + } + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dependencies": {} + }, + "is-function@1.0.2": { + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dependencies": {} + }, + "is-interactive@1.0.0": { + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dependencies": {} + }, + "is-negative-zero@2.0.2": { + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dependencies": {} + }, + "is-number-object@1.0.7": { + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.0" + } + }, + "is-regex@1.1.4": { + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "has-tostringtag": "has-tostringtag@1.0.0" + } + }, + "is-relative-url@4.0.0": { + "integrity": "sha512-PkzoL1qKAYXNFct5IKdKRH/iBQou/oCC85QhXj6WKtUQBliZ4Yfd3Zk27RHu9KQG8r6zgvAA2AQKC9p+rqTszg==", + "dependencies": { + "is-absolute-url": "is-absolute-url@4.0.1" + } + }, + "is-shared-array-buffer@1.0.2": { + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "call-bind@1.0.5" + } + }, + "is-stream@2.0.1": { + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dependencies": {} + }, + "is-string@1.0.7": { + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "has-tostringtag@1.0.0" + } + }, + "is-symbol@1.0.4": { + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "has-symbols@1.0.3" + } + }, + "is-typed-array@1.1.12": { + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "which-typed-array@1.1.13" + } + }, + "is-unicode-supported@0.1.0": { + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dependencies": {} + }, + "is-unicode-supported@1.3.0": { + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dependencies": {} + }, + "is-weakref@1.0.2": { + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "call-bind@1.0.5" + } + }, + "isarray@2.0.5": { + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dependencies": {} + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dependencies": {} + }, + "iterm2-version@5.0.0": { + "integrity": "sha512-WdLXcMYvN3SXT6vEtuW78vnZs4pVWm2nBnb4VKjOPPXmdlR1xTHmBgqKacOzAe4RXOiY/V+0u/0zsU3LoGQoBg==", + "dependencies": { + "app-path": "app-path@4.0.0", + "plist": "plist@3.1.0" + } + }, + "jimp@0.14.0_@jimp+custom@0.14.0": { + "integrity": "sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.14.0", + "@jimp/plugins": "@jimp/plugins@0.14.0_@jimp+custom@0.14.0_@jimp+plugin-blit@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-resize@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-scale@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0_@jimp+plugin-crop@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-rotate@0.14.0__@jimp+custom@0.14.0__@jimp+plugin-blit@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-crop@0.14.0___@jimp+custom@0.14.0__@jimp+plugin-resize@0.14.0___@jimp+custom@0.14.0_@jimp+plugin-blur@0.14.0__@jimp+custom@0.14.0_@jimp+plugin-color@0.14.0__@jimp+custom@0.14.0", + "@jimp/types": "@jimp/types@0.14.0_@jimp+custom@0.14.0", + "regenerator-runtime": "regenerator-runtime@0.13.11" + } + }, + "jimp@0.16.13_@jimp+custom@0.16.13": { + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "dependencies": { + "@babel/runtime": "@babel/runtime@7.23.2", + "@jimp/custom": "@jimp/custom@0.16.13", + "@jimp/plugins": "@jimp/plugins@0.16.13_@jimp+custom@0.16.13_@jimp+plugin-blit@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-resize@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-scale@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13_@jimp+plugin-crop@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-rotate@0.16.13__@jimp+custom@0.16.13__@jimp+plugin-blit@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-crop@0.16.13___@jimp+custom@0.16.13__@jimp+plugin-resize@0.16.13___@jimp+custom@0.16.13_@jimp+plugin-blur@0.16.13__@jimp+custom@0.16.13_@jimp+plugin-color@0.16.13__@jimp+custom@0.16.13", + "@jimp/types": "@jimp/types@0.16.13_@jimp+custom@0.16.13", + "regenerator-runtime": "regenerator-runtime@0.13.11" + } + }, + "jpeg-js@0.4.4": { + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "dependencies": {} + }, + "json-buffer@3.0.1": { + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dependencies": {} + }, + "json-parse-better-errors@1.0.2": { + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dependencies": {} + }, + "keyv@4.5.4": { + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "json-buffer@3.0.1" + } + }, + "kuler@2.0.0": { + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dependencies": {} + }, + "load-bmfont@1.4.1": { + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dependencies": { + "buffer-equal": "buffer-equal@0.0.1", + "mime": "mime@1.6.0", + "parse-bmfont-ascii": "parse-bmfont-ascii@1.0.6", + "parse-bmfont-binary": "parse-bmfont-binary@1.0.6", + "parse-bmfont-xml": "parse-bmfont-xml@1.1.4", + "phin": "phin@2.9.3", + "xhr": "xhr@2.6.0", + "xtend": "xtend@4.0.2" + } + }, + "load-json-file@4.0.0": { + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dependencies": { + "graceful-fs": "graceful-fs@4.2.11", + "parse-json": "parse-json@4.0.0", + "pify": "pify@3.0.0", + "strip-bom": "strip-bom@3.0.0" + } + }, + "lodash@4.17.21": { + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dependencies": {} + }, + "log-symbols@4.1.0": { + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "chalk@4.1.2", + "is-unicode-supported": "is-unicode-supported@0.1.0" + } + }, + "log-update@4.0.0": { + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dependencies": { + "ansi-escapes": "ansi-escapes@4.3.2", + "cli-cursor": "cli-cursor@3.1.0", + "slice-ansi": "slice-ansi@4.0.0", + "wrap-ansi": "wrap-ansi@6.2.0" + } + }, + "logform@2.6.0": { + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "dependencies": { + "@colors/colors": "@colors/colors@1.6.0", + "@types/triple-beam": "@types/triple-beam@1.3.4", + "fecha": "fecha@4.2.3", + "ms": "ms@2.1.3", + "safe-stable-stringify": "safe-stable-stringify@2.4.3", + "triple-beam": "triple-beam@1.4.1" + } + }, + "lowercase-keys@3.0.0": { + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dependencies": {} + }, + "map-age-cleaner@0.2.0": { + "integrity": "sha512-AvxTC6id0fzSf6OyNBTp1syyCuKO7nOJvHgYlhT0Qkkjvk40zZo+av3ayVgXlxnF/DxEzEfY9mMdd7FHsd+wKQ==", + "dependencies": { + "p-defer": "p-defer@1.0.0" + } + }, + "memorystream@0.3.1": { + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dependencies": {} + }, + "merge-stream@2.0.0": { + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dependencies": {} + }, + "mime@1.6.0": { + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dependencies": {} + }, + "mimic-fn@2.1.0": { + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dependencies": {} + }, + "mimic-fn@4.0.0": { + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dependencies": {} + }, + "mimic-response@3.1.0": { + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dependencies": {} + }, + "mimic-response@4.0.0": { + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dependencies": {} + }, + "min-document@2.19.0": { + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "dom-walk@0.1.2" + } + }, + "minimatch@3.1.2": { + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "brace-expansion@1.1.11" + } + }, + "minimist@1.2.8": { + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dependencies": {} + }, + "mkdirp@0.5.6": { + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "minimist@1.2.8" + } + }, + "ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dependencies": {} + }, + "mute-stream@1.0.0": { + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dependencies": {} + }, + "nice-try@1.0.5": { + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dependencies": {} + }, + "normalize-package-data@2.5.0": { + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "hosted-git-info@2.8.9", + "resolve": "resolve@1.22.8", + "semver": "semver@5.7.2", + "validate-npm-package-license": "validate-npm-package-license@3.0.4" + } + }, + "normalize-url@8.0.0": { + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dependencies": {} + }, + "npm-run-all@4.1.5": { + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dependencies": { + "ansi-styles": "ansi-styles@3.2.1", + "chalk": "chalk@2.4.2", + "cross-spawn": "cross-spawn@6.0.5", + "memorystream": "memorystream@0.3.1", + "minimatch": "minimatch@3.1.2", + "pidtree": "pidtree@0.3.1", + "read-pkg": "read-pkg@3.0.0", + "shell-quote": "shell-quote@1.8.1", + "string.prototype.padend": "string.prototype.padend@3.1.5" + } + }, + "npm-run-path@4.0.1": { + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "path-key@3.1.1" + } + }, + "nth-check@2.1.1": { + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "boolbase@1.0.0" + } + }, + "object-inspect@1.13.1": { + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dependencies": {} + }, + "object-keys@1.1.1": { + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dependencies": {} + }, + "object.assign@4.1.4": { + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "has-symbols": "has-symbols@1.0.3", + "object-keys": "object-keys@1.1.1" + } + }, + "omggif@1.0.10": { + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dependencies": {} + }, + "one-time@1.0.0": { + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "fn.name@1.1.0" + } + }, + "onetime@5.1.2": { + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "mimic-fn@2.1.0" + } + }, + "ora@5.4.1": { + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "bl@4.1.0", + "chalk": "chalk@4.1.2", + "cli-cursor": "cli-cursor@3.1.0", + "cli-spinners": "cli-spinners@2.9.1", + "is-interactive": "is-interactive@1.0.0", + "is-unicode-supported": "is-unicode-supported@0.1.0", + "log-symbols": "log-symbols@4.1.0", + "strip-ansi": "strip-ansi@6.0.1", + "wcwidth": "wcwidth@1.0.1" + } + }, + "os-tmpdir@1.0.2": { + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dependencies": {} + }, + "p-cancelable@3.0.0": { + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dependencies": {} + }, + "p-defer@1.0.0": { + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dependencies": {} + }, + "p-map@5.5.0": { + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dependencies": { + "aggregate-error": "aggregate-error@4.0.1" + } + }, + "p-memoize@7.1.1": { + "integrity": "sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==", + "dependencies": { + "mimic-fn": "mimic-fn@4.0.0", + "type-fest": "type-fest@3.13.1" + } + }, + "pako@1.0.11": { + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dependencies": {} + }, + "parse-bmfont-ascii@1.0.6": { + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", + "dependencies": {} + }, + "parse-bmfont-binary@1.0.6": { + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", + "dependencies": {} + }, + "parse-bmfont-xml@1.1.4": { + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "xml-parse-from-string@1.0.1", + "xml2js": "xml2js@0.4.23" + } + }, + "parse-headers@2.0.5": { + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "dependencies": {} + }, + "parse-json@4.0.0": { + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "error-ex@1.3.2", + "json-parse-better-errors": "json-parse-better-errors@1.0.2" + } + }, + "parse5-htmlparser2-tree-adapter@7.0.0": { + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "domhandler@5.0.3", + "parse5": "parse5@7.1.2" + } + }, + "parse5@7.1.2": { + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "entities@4.5.0" + } + }, + "path-key@2.0.1": { + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dependencies": {} + }, + "path-key@3.1.1": { + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dependencies": {} + }, + "path-parse@1.0.7": { + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dependencies": {} + }, + "path-type@3.0.0": { + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "pify@3.0.0" + } + }, + "peek-readable@4.1.0": { + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "dependencies": {} + }, + "phin@2.9.3": { + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "dependencies": {} + }, + "pidtree@0.3.1": { + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dependencies": {} + }, + "pify@3.0.0": { + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dependencies": {} + }, + "pixelmatch@4.0.2": { + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dependencies": { + "pngjs": "pngjs@3.4.0" + } + }, + "plist@3.1.0": { + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dependencies": { + "@xmldom/xmldom": "@xmldom/xmldom@0.8.10", + "base64-js": "base64-js@1.5.1", + "xmlbuilder": "xmlbuilder@15.1.1" + } + }, + "pngjs@3.4.0": { + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dependencies": {} + }, + "process@0.11.10": { + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dependencies": {} + }, + "quick-lru@5.1.1": { + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dependencies": {} + }, + "read-pkg@3.0.0": { + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dependencies": { + "load-json-file": "load-json-file@4.0.0", + "normalize-package-data": "normalize-package-data@2.5.0", + "path-type": "path-type@3.0.0" + } + }, + "readable-stream@3.6.2": { + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "inherits@2.0.4", + "string_decoder": "string_decoder@1.3.0", + "util-deprecate": "util-deprecate@1.0.2" + } + }, + "readable-web-to-node-stream@3.0.2": { + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "readable-stream@3.6.2" + } + }, + "regenerator-runtime@0.13.11": { + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dependencies": {} + }, + "regenerator-runtime@0.14.0": { + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dependencies": {} + }, + "regexp.prototype.flags@1.5.1": { + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "set-function-name": "set-function-name@2.0.1" + } + }, + "render-gif@2.0.4": { + "integrity": "sha512-l5X7EwbEvdflnvVAzjL7njizwZN8ATqJ0rdaQ5WwMJ55vyWXIXIUE9Ut7W6hm+KE+HMYn5C0a+7t0B6JjGfxQA==", + "dependencies": { + "cycled": "cycled@1.2.0", + "decode-gif": "decode-gif@1.0.1", + "delay": "delay@4.4.1", + "jimp": "jimp@0.14.0_@jimp+custom@0.14.0" + } + }, + "resolve-alpn@1.2.1": { + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dependencies": {} + }, + "resolve@1.22.8": { + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "is-core-module@2.13.1", + "path-parse": "path-parse@1.0.7", + "supports-preserve-symlinks-flag": "supports-preserve-symlinks-flag@1.0.0" + } + }, + "responselike@3.0.0": { + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dependencies": { + "lowercase-keys": "lowercase-keys@3.0.0" + } + }, + "restore-cursor@3.1.0": { + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "onetime@5.1.2", + "signal-exit": "signal-exit@3.0.7" + } + }, + "run-async@3.0.0": { + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dependencies": {} + }, + "rxjs@7.8.1": { + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "tslib@2.6.2" + } + }, + "safe-array-concat@1.0.1": { + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "get-intrinsic": "get-intrinsic@1.2.2", + "has-symbols": "has-symbols@1.0.3", + "isarray": "isarray@2.0.5" + } + }, + "safe-buffer@5.2.1": { + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dependencies": {} + }, + "safe-regex-test@1.0.0": { + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "get-intrinsic": "get-intrinsic@1.2.2", + "is-regex": "is-regex@1.1.4" + } + }, + "safe-stable-stringify@2.4.3": { + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dependencies": {} + }, + "safer-buffer@2.1.2": { + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dependencies": {} + }, + "sax@1.3.0": { + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dependencies": {} + }, + "semver@5.7.2": { + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dependencies": {} + }, + "set-function-length@1.1.1": { + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "define-data-property@1.1.1", + "get-intrinsic": "get-intrinsic@1.2.2", + "gopd": "gopd@1.0.1", + "has-property-descriptors": "has-property-descriptors@1.0.1" + } + }, + "set-function-name@2.0.1": { + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "define-data-property@1.1.1", + "functions-have-names": "functions-have-names@1.2.3", + "has-property-descriptors": "has-property-descriptors@1.0.1" + } + }, + "shebang-command@1.2.0": { + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "shebang-regex@1.0.0" + } + }, + "shebang-command@2.0.0": { + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "shebang-regex@3.0.0" + } + }, + "shebang-regex@1.0.0": { + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dependencies": {} + }, + "shebang-regex@3.0.0": { + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dependencies": {} + }, + "shell-quote@1.8.1": { + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dependencies": {} + }, + "side-channel@1.0.4": { + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "get-intrinsic": "get-intrinsic@1.2.2", + "object-inspect": "object-inspect@1.13.1" + } + }, + "signal-exit@3.0.7": { + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dependencies": {} + }, + "simple-swizzle@0.2.2": { + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "is-arrayish@0.3.2" + } + }, + "slice-ansi@4.0.0": { + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "astral-regex": "astral-regex@2.0.0", + "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0" + } + }, + "spdx-correct@3.2.0": { + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "spdx-expression-parse@3.0.1", + "spdx-license-ids": "spdx-license-ids@3.0.16" + } + }, + "spdx-exceptions@2.3.0": { + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dependencies": {} + }, + "spdx-expression-parse@3.0.1": { + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "spdx-exceptions@2.3.0", + "spdx-license-ids": "spdx-license-ids@3.0.16" + } + }, + "spdx-license-ids@3.0.16": { + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dependencies": {} + }, + "stack-trace@0.0.10": { + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dependencies": {} + }, + "string-width@4.2.3": { + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "emoji-regex@8.0.0", + "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "string.prototype.padend@3.1.5": { + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.22.3" + } + }, + "string.prototype.trim@1.2.8": { + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.22.3" + } + }, + "string.prototype.trimend@1.0.7": { + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.22.3" + } + }, + "string.prototype.trimstart@1.0.7": { + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "define-properties": "define-properties@1.2.1", + "es-abstract": "es-abstract@1.22.3" + } + }, + "string_decoder@1.3.0": { + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "safe-buffer@5.2.1" + } + }, + "strip-ansi@6.0.1": { + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "ansi-regex@5.0.1" + } + }, + "strip-bom@3.0.0": { + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dependencies": {} + }, + "strip-final-newline@2.0.0": { + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dependencies": {} + }, + "strtok3@6.3.0": { + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "@tokenizer/token@0.3.0", + "peek-readable": "peek-readable@4.1.0" + } + }, + "supports-color@5.5.0": { + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "has-flag@3.0.0" + } + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "has-flag@4.0.0" + } + }, + "supports-preserve-symlinks-flag@1.0.0": { + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dependencies": {} + }, + "term-img@6.0.0": { + "integrity": "sha512-R4c+XtUiN/9lMlw+wldmxjPO/xlG3sIE79tcnE3A8CtcYMTDiOgAKy/EhroI+rmjB3cVyCkYSzTPBBjPsC7YdQ==", + "dependencies": { + "ansi-escapes": "ansi-escapes@5.0.0", + "iterm2-version": "iterm2-version@5.0.0" + } + }, + "terminal-image@2.0.0": { + "integrity": "sha512-25HcdYC79g0rPxk9o7RIp3i0/ebP+viR6vj2Fsxh1a9pE6o7PfXz4HlmdYLGsQsmBeQNK88BA2UJo4IzBRfzaA==", + "dependencies": { + "chalk": "chalk@4.1.2", + "jimp": "jimp@0.16.13_@jimp+custom@0.16.13", + "log-update": "log-update@4.0.0", + "render-gif": "render-gif@2.0.4", + "term-img": "term-img@6.0.0" + } + }, + "text-hex@1.0.0": { + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dependencies": {} + }, + "timm@1.7.1": { + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "dependencies": {} + }, + "tinycolor2@1.6.0": { + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dependencies": {} + }, + "tmp@0.0.33": { + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "os-tmpdir@1.0.2" + } + }, + "token-types@4.2.1": { + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "@tokenizer/token@0.3.0", + "ieee754": "ieee754@1.2.1" + } + }, + "triple-beam@1.4.1": { + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dependencies": {} + }, + "tslib@2.6.2": { + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dependencies": {} + }, + "type-fest@0.21.3": { + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dependencies": {} + }, + "type-fest@1.4.0": { + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dependencies": {} + }, + "type-fest@3.13.1": { + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dependencies": {} + }, + "typed-array-buffer@1.0.0": { + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "get-intrinsic": "get-intrinsic@1.2.2", + "is-typed-array": "is-typed-array@1.1.12" + } + }, + "typed-array-byte-length@1.0.0": { + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "for-each": "for-each@0.3.3", + "has-proto": "has-proto@1.0.1", + "is-typed-array": "is-typed-array@1.1.12" + } + }, + "typed-array-byte-offset@1.0.0": { + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "available-typed-arrays@1.0.5", + "call-bind": "call-bind@1.0.5", + "for-each": "for-each@0.3.3", + "has-proto": "has-proto@1.0.1", + "is-typed-array": "is-typed-array@1.1.12" + } + }, + "typed-array-length@1.0.4": { + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "for-each": "for-each@0.3.3", + "is-typed-array": "is-typed-array@1.1.12" + } + }, + "unbox-primitive@1.0.2": { + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "call-bind@1.0.5", + "has-bigints": "has-bigints@1.0.2", + "has-symbols": "has-symbols@1.0.3", + "which-boxed-primitive": "which-boxed-primitive@1.0.2" + } + }, + "utif@2.0.1": { + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "pako@1.0.11" + } + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dependencies": {} + }, + "validate-npm-package-license@3.0.4": { + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "spdx-correct@3.2.0", + "spdx-expression-parse": "spdx-expression-parse@3.0.1" + } + }, + "wcwidth@1.0.1": { + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "defaults@1.0.4" + } + }, + "which-boxed-primitive@1.0.2": { + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "is-bigint@1.0.4", + "is-boolean-object": "is-boolean-object@1.1.2", + "is-number-object": "is-number-object@1.0.7", + "is-string": "is-string@1.0.7", + "is-symbol": "is-symbol@1.0.4" + } + }, + "which-typed-array@1.1.13": { + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dependencies": { + "available-typed-arrays": "available-typed-arrays@1.0.5", + "call-bind": "call-bind@1.0.5", + "for-each": "for-each@0.3.3", + "gopd": "gopd@1.0.1", + "has-tostringtag": "has-tostringtag@1.0.0" + } + }, + "which@1.3.1": { + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "isexe@2.0.0" + } + }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "isexe@2.0.0" + } + }, + "winston-transport@4.6.0": { + "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==", + "dependencies": { + "logform": "logform@2.6.0", + "readable-stream": "readable-stream@3.6.2", + "triple-beam": "triple-beam@1.4.1" + } + }, + "winston@3.11.0": { + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "dependencies": { + "@colors/colors": "@colors/colors@1.6.0", + "@dabh/diagnostics": "@dabh/diagnostics@2.0.3", + "async": "async@3.2.5", + "is-stream": "is-stream@2.0.1", + "logform": "logform@2.6.0", + "one-time": "one-time@1.0.0", + "readable-stream": "readable-stream@3.6.2", + "safe-stable-stringify": "safe-stable-stringify@2.4.3", + "stack-trace": "stack-trace@0.0.10", + "triple-beam": "triple-beam@1.4.1", + "winston-transport": "winston-transport@4.6.0" + } + }, + "wrap-ansi@6.2.0": { + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "ansi-styles@4.3.0", + "string-width": "string-width@4.2.3", + "strip-ansi": "strip-ansi@6.0.1" + } + }, + "xhr@2.6.0": { + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "global@4.4.0", + "is-function": "is-function@1.0.2", + "parse-headers": "parse-headers@2.0.5", + "xtend": "xtend@4.0.2" + } + }, + "xml-parse-from-string@1.0.1": { + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", + "dependencies": {} + }, + "xml2js@0.4.23": { + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": "sax@1.3.0", + "xmlbuilder": "xmlbuilder@11.0.1" + } + }, + "xml@1.0.1": { + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dependencies": {} + }, + "xmlbuilder@11.0.1": { + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dependencies": {} + }, + "xmlbuilder@15.1.1": { + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dependencies": {} + }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dependencies": {} + }, + "yaml@2.3.4": { + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dependencies": {} + } + } + }, + "remote": { + "https://deno.land/std@0.205.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9", + "https://deno.land/std@0.205.0/assert/_diff.ts": "58e1461cc61d8eb1eacbf2a010932bf6a05b79344b02ca38095f9b805795dc48", + "https://deno.land/std@0.205.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", + "https://deno.land/std@0.205.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.205.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c", + "https://deno.land/std@0.205.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9", + "https://deno.land/std@0.205.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227", + "https://deno.land/std@0.205.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7", + "https://deno.land/std@0.205.0/assert/assert_false.ts": "0ccbcaae910f52c857192ff16ea08bda40fdc79de80846c206bfc061e8c851c6", + "https://deno.land/std@0.205.0/assert/assert_greater.ts": "ae2158a2d19313bf675bf7251d31c6dc52973edb12ac64ac8fc7064152af3e63", + "https://deno.land/std@0.205.0/assert/assert_greater_or_equal.ts": "1439da5ebbe20855446cac50097ac78b9742abe8e9a43e7de1ce1426d556e89c", + "https://deno.land/std@0.205.0/assert/assert_instance_of.ts": "3aedb3d8186e120812d2b3a5dea66a6e42bf8c57a8bd927645770bd21eea554c", + "https://deno.land/std@0.205.0/assert/assert_is_error.ts": "c21113094a51a296ffaf036767d616a78a2ae5f9f7bbd464cd0197476498b94b", + "https://deno.land/std@0.205.0/assert/assert_less.ts": "aec695db57db42ec3e2b62e97e1e93db0063f5a6ec133326cc290ff4b71b47e4", + "https://deno.land/std@0.205.0/assert/assert_less_or_equal.ts": "5fa8b6a3ffa20fd0a05032fe7257bf985d207b85685fdbcd23651b70f928c848", + "https://deno.land/std@0.205.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b", + "https://deno.land/std@0.205.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754", + "https://deno.land/std@0.205.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22", + "https://deno.land/std@0.205.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0", + "https://deno.land/std@0.205.0/assert/assert_not_strict_equals.ts": "ca6c6d645e95fbc873d25320efeb8c4c6089a9a5e09f92d7c1c4b6e935c2a6ad", + "https://deno.land/std@0.205.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54", + "https://deno.land/std@0.205.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057", + "https://deno.land/std@0.205.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265", + "https://deno.land/std@0.205.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c", + "https://deno.land/std@0.205.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd", + "https://deno.land/std@0.205.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.205.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece", + "https://deno.land/std@0.205.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278", + "https://deno.land/std@0.205.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085", + "https://deno.land/std@0.205.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a", + "https://deno.land/std@0.205.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536", + "https://deno.land/std@0.205.0/async/delay.ts": "a6142eb44cdd856b645086af2b811b1fcce08ec06bb7d50969e6a872ee9b8659", + "https://deno.land/std@0.205.0/fmt/colors.ts": "c51c4642678eb690dcf5ffee5918b675bf01a33fba82acf303701ae1a4f8c8d9", + "https://deno.land/x/deno_dom@v0.1.42/build/deno-wasm/deno-wasm.js": "d6841a06342eb6a2798ef28de79ad69c0f2fa349fa04d3ca45e5fcfbf50a9340", + "https://deno.land/x/deno_dom@v0.1.42/deno-dom-wasm.ts": "a33d160421bbb6e3104285ea5ebf33352b7ad50d82ea8765e3cf65f972b25119", + "https://deno.land/x/deno_dom@v0.1.42/src/api.ts": "0ff5790f0a3eeecb4e00b7d8fbfa319b165962cf6d0182a65ba90f158d74f7d7", + "https://deno.land/x/deno_dom@v0.1.42/src/constructor-lock.ts": "59714df7e0571ec7bd338903b1f396202771a6d4d7f55a452936bd0de9deb186", + "https://deno.land/x/deno_dom@v0.1.42/src/deserialize.ts": "1cf4096678d8afed8ed28dbad690504c4d2c28149ba768b26eacd1416873425b", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/document-fragment.ts": "1c7352a3c816587ed7fad574b42636198f680f17abc3836fcfe7799b31e7718f", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/document.ts": "b8f4e4ccabaaa063d6562a0f2f8dea9c0419515d63d8bd79bfde95f7cd64bd93", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/dom-parser.ts": "609097b426f8c2358f3e5d2bca55ed026cf26cdf86562e94130dfdb0f2537f92", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/element.ts": "7c0037772d2750211c961255620820970a29edb4fc89b3811e2dfdf71b166419", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/elements/html-template-element.ts": "740b97a5378c9a14cccf3429299846eda240b613013e2d2d7f20b393897453c2", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/html-collection.ts": "ae90197f5270c32074926ad6cf30ee07d274d44596c7e413c354880cebce8565", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/node-list.ts": "4c6e4b4585301d4147addaccd90cb5f5a80e8d6290a1ba7058c5e3dfea16e15d", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/node.ts": "3069e6fc93ac4111a136ed68199d76673339842b9751610ba06f111ba7dc10a7", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/selectors/custom-api.ts": "852696bd58e534bc41bd3be9e2250b60b67cd95fd28ed16b1deff1d548531a71", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/selectors/nwsapi-types.ts": "c43b36c36acc5d32caabaa54fda8c9d239b2b0fcbce9a28efb93c84aa1021698", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/selectors/nwsapi.js": "985d7d8fc1eabbb88946b47a1c44c1b2d4aa79ff23c21424219f1528fa27a2ff", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/selectors/selectors.ts": "83eab57be2290fb48e3130533448c93c6c61239f2a2f3b85f1917f80ca0fdc75", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/selectors/sizzle-types.ts": "78149e2502409989ce861ed636b813b059e16bc267bb543e7c2b26ef43e4798b", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/selectors/sizzle.js": "c3aed60c1045a106d8e546ac2f85cc82e65f62d9af2f8f515210b9212286682a", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/utils-types.ts": "96db30e3e4a75b194201bb9fa30988215da7f91b380fca6a5143e51ece2a8436", + "https://deno.land/x/deno_dom@v0.1.42/src/dom/utils.ts": "4c6206516fb8f61f37a209c829e812c4f5a183e46d082934dd14c91bde939263", + "https://deno.land/x/deno_dom@v0.1.42/src/parser.ts": "e06b2300d693e6ae7564e53dfa5c9a9e97fdb8c044c39c52c8b93b5d60860be3", + "https://esm.sh/ky@1.1.3": "7bc4a737f22591792a42989de03efeace690158962ead46f622b73fc3ddf85b1", + "https://esm.sh/v135/ky@1.1.3/denonext/ky.mjs": "6babfbef9debcf3a28dda275c0c477206002c82635f8ef9a3173ae69002f25f6" + } +} diff --git a/package-lock.json b/package-lock.json index 4514128..ed83b5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,50 +9,38 @@ "version": "2.3.0", "license": "MIT", "dependencies": { + "aes-js": "^3.1.2", "before-after-hook": "^2.2.2", - "chalk": "^5.0.0", - "check-links": "^2.1.2", + "chalk": "^5.3.0", "cli-progress": "^3.9.1", - "jsdom": "^19.0.0", - "node-fetch": "^3.2.10", - "virtual-bit-network": "github:YDX-2147483647/virtual-BIT-network", + "inquirer": "^9.2.11", + "terminal-image": "^2.0.0", "winston": "^3.8.1", "xml": "^1.0.1", "yaml": "^2.2.2" }, "devDependencies": { - "@types/chai": "^4.3.0", "@types/cli-progress": "^3.9.2", - "@types/jsdom": "^16.2.13", - "@types/mocha": "^9.1.0", - "@types/node": "^16.11.12", "@types/xml": "^1.0.6", - "@typescript-eslint/eslint-plugin": "^5.32.0", - "@typescript-eslint/parser": "^5.32.0", - "chai": "^4.3.4", - "eslint": "^8.21.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.2.4", - "eslint-plugin-promise": "^6.0.0", - "mocha": "^9.1.3", - "npm-run-all": "^4.1.5", - "typedoc": "^0.22.10", - "typescript": "^4.7.4" + "npm-run-all": "^4.1.5" } }, "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "peer": true, + "version": "7.23.2", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz", @@ -71,93 +59,10 @@ "kuler": "^2.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/js": { - "version": "8.38.0", - "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.38.0.tgz", - "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, "node_modules/@jimp/bmp": { "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/bmp/-/bmp-0.16.13.tgz", "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -171,7 +76,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/core/-/core-0.16.13.tgz", "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -186,21 +90,10 @@ "tinycolor2": "^1.4.1" } }, - "node_modules/@jimp/core/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/@jimp/custom": { "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/custom/-/custom-0.16.13.tgz", "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/core": "^0.16.13" @@ -210,7 +103,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/gif/-/gif-0.16.13.tgz", "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -225,7 +117,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/jpeg/-/jpeg-0.16.13.tgz", "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -239,7 +130,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -252,7 +142,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -265,7 +154,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -278,7 +166,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -292,7 +179,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -308,7 +194,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -324,7 +209,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -337,7 +221,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -350,7 +233,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -363,7 +245,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -376,7 +257,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -390,7 +270,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -403,7 +282,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -416,7 +294,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -429,7 +306,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -442,7 +318,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -457,7 +332,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -470,7 +344,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -486,7 +359,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -500,7 +372,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -515,7 +386,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13" @@ -530,7 +400,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/plugins/-/plugins-0.16.13.tgz", "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/plugin-blit": "^0.16.13", @@ -564,7 +433,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/png/-/png-0.16.13.tgz", "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.13", @@ -578,7 +446,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/tiff/-/tiff-0.16.13.tgz", "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "utif": "^2.0.1" @@ -591,7 +458,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/types/-/types-0.16.13.tgz", "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/bmp": "^0.16.13", @@ -609,85 +475,26 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/@jimp/utils/-/utils-0.16.13.tgz", "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sindresorhus/is": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/@sindresorhus/is/-/is-5.3.0.tgz", - "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "node_modules/@ljharb/through": { + "version": "2.3.11", + "resolved": "https://registry.npmmirror.com/@ljharb/through/-/through-2.3.11.tgz", + "integrity": "sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==", "dependencies": { - "defer-to-connect": "^2.0.1" + "call-bind": "^1.0.2" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" } }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "peer": true - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, "node_modules/@types/cli-progress": { "version": "3.11.0", @@ -698,64 +505,12 @@ "@types/node": "*" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "node_modules/@types/jsdom": { - "version": "16.2.15", - "resolved": "https://registry.npmmirror.com/@types/jsdom/-/jsdom-16.2.15.tgz", - "integrity": "sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/parse5": "^6.0.3", - "@types/tough-cookie": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", - "dev": true - }, "node_modules/@types/node": { "version": "16.18.23", "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.23.tgz", "integrity": "sha512-XAMpaw1s1+6zM+jn2tmw8MyaRDIJfXxqmIQIS0HfoGYPuf7dUWeiUKopwq13KFX9lEp1+THGtlaaYx39Nxr58g==", "dev": true }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", - "dev": true - }, "node_modules/@types/triple-beam": { "version": "1.3.2", "resolved": "https://registry.npmmirror.com/@types/triple-beam/-/triple-beam-1.3.2.tgz", @@ -770,219 +525,12 @@ "@types/node": "*" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.0.tgz", - "integrity": "sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/type-utils": "5.59.0", - "@typescript-eslint/utils": "5.59.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.59.0.tgz", - "integrity": "sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.0.tgz", - "integrity": "sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz", - "integrity": "sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.0", - "@typescript-eslint/utils": "5.59.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.59.0.tgz", - "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz", - "integrity": "sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.59.0.tgz", - "integrity": "sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.0", - "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz", - "integrity": "sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", "engines": { - "node": ">=0.4.0" + "node": ">=10.0.0" } }, "node_modules/aes-js": { @@ -990,69 +538,15 @@ "resolved": "https://registry.npmmirror.com/aes-js/-/aes-js-3.1.2.tgz", "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-6.1.0.tgz", - "integrity": "sha512-bQyg9bzRntwR/8b89DOEhGwctcwCrbWW/TuqTQnpqpy5Fz3aovcOTj5i8NJV6AHc8OGNdMaqdxAWww8pz2kiKg==", - "peer": true, + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "type-fest": "^3.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=14.16" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "3.8.0", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-3.8.0.tgz", - "integrity": "sha512-FVNSzGQz9Th+/9R6Lvv7WIAkstylfHN2/JYxkyhhmKFYh9At2DST8t6L6Lref9eYO8PXFTfG9Sg1Agg0K3vq3Q==", - "peer": true, - "engines": { - "node": ">=14.16" + "node": ">=8" } }, "node_modules/ansi-regex": { @@ -1078,27 +572,12 @@ "node_modules/any-base": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", - "peer": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" }, "node_modules/app-path": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/app-path/-/app-path-4.0.0.tgz", "integrity": "sha512-mgBO9PZJ3MpbKbwFTljTi36ZKBvG5X/fkVR1F85ANsVcVllEb+C0LGNdJfGUm84GpC4xxgN6HFkmkMU8VEO4mA==", - "peer": true, "dependencies": { "execa": "^5.0.0" }, @@ -1106,12 +585,6 @@ "node": ">=12" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -1122,94 +595,23 @@ "is-array-buffer": "^3.0.1" } }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/array-range": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/array-range/-/array-range-1.0.1.tgz", - "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==", - "peer": true + "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "engines": { "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/available-typed-arrays": { "version": "1.0.5", @@ -1229,30 +631,19 @@ "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "peer": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmmirror.com/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "peer": true, + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { - "buffer": "^6.0.3", + "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } @@ -1260,13 +651,7 @@ "node_modules/bmp-js": { "version": "0.1.0", "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", - "peer": true - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -1278,132 +663,36 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "peer": true, + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "ieee754": "^1.1.13" } }, "node_modules/buffer-equal": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-0.0.1.tgz", "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "peer": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request": { - "version": "10.2.9", - "resolved": "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-10.2.9.tgz", - "integrity": "sha512-CaAMr53AS1Tb9evO1BIWFnZjSr8A4pbXofpsNVWPMDZZj3ZQKHwsQG9BrTqQ4x5ZYJXz1T2b8LLtTZODxSpzbg==", - "dependencies": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmmirror.com/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" } @@ -1411,133 +700,17 @@ "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "peer": true - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/check-links": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/check-links/-/check-links-2.1.2.tgz", - "integrity": "sha512-GzIyRHFF0VTmiWMia5VG5T3WtcS8ExiDHV283ifrUYtUArWcLX6T526zw09zvpGUoyCndl+sADXj3pYwBSFT1A==", - "dependencies": { - "expiry-map": "^2.0.0", - "got": "^12.5.2", - "is-relative-url": "^4.0.0", - "p-map": "^5.5.0", - "p-memoize": "^7.1.1" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "node_modules/cheerio/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - } + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "peer": true, + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^3.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" } }, "node_modules/cli-progress": { @@ -1552,83 +725,25 @@ } }, "node_modules/cli-spinners": { - "version": "2.8.0", - "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.8.0.tgz", - "integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==", - "peer": true, + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", "engines": { "node": ">=6" } }, "node_modules/cli-width": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-4.0.0.tgz", - "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", - "peer": true, + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "engines": { "node": ">= 12" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true, "engines": { "node": ">=0.8" } @@ -1673,17 +788,6 @@ "text-hex": "1.0.x" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", @@ -1703,306 +807,59 @@ "node": ">= 8" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, "node_modules/cycled": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/cycled/-/cycled-1.2.0.tgz", "integrity": "sha512-/BOOCEohSBflVHHtY/wUc1F6YDYPqyVs/A837gDoq4H1pm72nU/yChyGt91V4ML+MbbAmHs8uo2l1yJkkTIUdg==", - "peer": true, "engines": { "node": ">=6" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "node_modules/decode-gif": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/decode-gif/-/decode-gif-1.0.1.tgz", + "integrity": "sha512-L0MT527mwlkil9TiN1xwnJXzUxCup55bUT91CPmQlc9zYejXJ8xp17d5EVnwM80JOIGImBUk1ptJQ+hDihyzwg==", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "array-range": "^1.0.1", + "omggif": "^1.0.10" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" + "clone": "^1.0.2" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, + "node_modules/delay": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/delay/-/delay-4.4.1.tgz", + "integrity": "sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, - "node_modules/decode-gif": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/decode-gif/-/decode-gif-1.0.1.tgz", - "integrity": "sha512-L0MT527mwlkil9TiN1xwnJXzUxCup55bUT91CPmQlc9zYejXJ8xp17d5EVnwM80JOIGImBUk1ptJQ+hDihyzwg==", - "peer": true, - "dependencies": { - "array-range": "^1.0.1", - "omggif": "^1.0.10" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "peer": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delay": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/delay/-/delay-4.4.1.tgz", - "integrity": "sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "peer": true - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "peer": true + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -2014,14 +871,6 @@ "resolved": "https://registry.npmmirror.com/enabled/-/enabled-2.0.0.tgz", "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", @@ -2061,607 +910,61 @@ "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.38.0", - "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.38.0.tgz", - "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.38.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmmirror.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", - "dev": true, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmmirror.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmmirror.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmmirror.com/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": ">= 0.4" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "estraverse": "^5.2.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": ">= 0.4" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "peer": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -2680,25 +983,12 @@ "node_modules/exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmmirror.com/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", - "peer": true - }, - "node_modules/expiry-map": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/expiry-map/-/expiry-map-2.0.0.tgz", - "integrity": "sha512-K1I5wJe2fiqjyUZf/xhxwTpaopw3F+19DsO7Oggl20+3SVTXDIevVRJav0aBMfposQdkl2E4+gnuOKd3j2X0sA==", - "dependencies": { - "map-age-cleaner": "^0.2.0" - }, - "engines": { - "node": ">=8" - } + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "peer": true, "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -2708,82 +998,15 @@ "node": ">=4" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fecha": { "version": "4.2.3", "resolved": "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/figures": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/figures/-/figures-5.0.0.tgz", "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "peer": true, "dependencies": { "escape-string-regexp": "^5.0.0", "is-unicode-supported": "^1.2.0" @@ -2792,32 +1015,10 @@ "node": ">=14" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "node_modules/file-type": { "version": "16.5.4", "resolved": "https://registry.npmmirror.com/file-type/-/file-type-16.5.4.tgz", "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "peer": true, "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", @@ -2827,59 +1028,6 @@ "node": ">=10" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, "node_modules/fn.name": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/fn.name/-/fn.name-1.1.0.tgz", @@ -2894,63 +1042,10 @@ "is-callable": "^1.1.3" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmmirror.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "engines": { - "node": ">= 14.17" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -2973,29 +1068,10 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz", "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3027,63 +1103,20 @@ "version": "0.9.4", "resolved": "https://registry.npmmirror.com/gifwrap/-/gifwrap-0.9.4.tgz", "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "peer": true, "dependencies": { "image-q": "^4.0.0", "omggif": "^1.0.10" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "peer": true, "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" } }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz", @@ -3096,23 +1129,6 @@ "node": ">= 0.4" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", @@ -3122,53 +1138,16 @@ "get-intrinsic": "^1.1.3" } }, - "node_modules/got": { - "version": "12.6.0", - "resolved": "https://registry.npmmirror.com/got/-/got-12.6.0.tgz", - "integrity": "sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmmirror.com/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -3212,7 +1191,6 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -3226,93 +1204,19 @@ "has-symbols": "^1.0.2" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "peer": true, "engines": { "node": ">=10.17.0" } @@ -3321,7 +1225,6 @@ "version": "0.4.24", "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -3332,23 +1235,12 @@ "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "node_modules/image-q": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/image-q/-/image-q-4.0.0.tgz", "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "peer": true, "dependencies": { "@types/node": "16.9.1" } @@ -3356,48 +1248,7 @@ "node_modules/image-q/node_modules/@types/node": { "version": "16.9.1", "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "peer": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, "node_modules/inherits": { "version": "2.0.4", @@ -3405,72 +1256,30 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inquirer": { - "version": "9.1.5", - "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-9.1.5.tgz", - "integrity": "sha512-3ygAIh8gcZavV9bj6MTdYddG2zPSYswP808fKS46NOwlF0zZljVpnLCHODDqItWJDbDpLb3aouAxGaJbkxoppA==", - "peer": true, - "dependencies": { - "ansi-escapes": "^6.0.0", - "chalk": "^5.2.0", - "cli-cursor": "^4.0.0", - "cli-width": "^4.0.0", - "external-editor": "^3.0.3", + "version": "9.2.11", + "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-9.2.11.tgz", + "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "dependencies": { + "@ljharb/through": "^2.3.9", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", "figures": "^5.0.0", "lodash": "^4.17.21", "mute-stream": "1.0.0", - "ora": "^6.1.2", - "run-async": "^2.4.0", - "rxjs": "^7.8.0", - "string-width": "^5.1.2", - "strip-ansi": "^7.0.1", - "through": "^2.3.6", - "wrap-ansi": "^8.1.0" + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" }, "engines": { "node": ">=14.18.0" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/inquirer/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "peer": true - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "peer": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "peer": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.5.tgz", @@ -3485,14 +1294,6 @@ "node": ">= 0.4" } }, - "node_modules/is-absolute-url": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-4.0.1.tgz", - "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -3519,18 +1320,6 @@ "has-bigints": "^1.0.1" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -3574,15 +1363,6 @@ "node": ">= 0.4" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -3594,28 +1374,14 @@ "node_modules/is-function": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "peer": true - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" }, "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "peer": true, + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "engines": { - "node": ">=12" + "node": ">=8" } }, "node_modules/is-negative-zero": { @@ -3627,15 +1393,6 @@ "node": ">= 0.4" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", @@ -3648,29 +1405,6 @@ "node": ">= 0.4" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", @@ -3684,17 +1418,6 @@ "node": ">= 0.4" } }, - "node_modules/is-relative-url": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/is-relative-url/-/is-relative-url-4.0.0.tgz", - "integrity": "sha512-PkzoL1qKAYXNFct5IKdKRH/iBQou/oCC85QhXj6WKtUQBliZ4Yfd3Zk27RHu9KQG8r6zgvAA2AQKC9p+rqTszg==", - "dependencies": { - "is-absolute-url": "^4.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -3756,7 +1479,6 @@ "version": "1.3.0", "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "peer": true, "engines": { "node": ">=12" } @@ -3779,7 +1501,6 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/iterm2-version/-/iterm2-version-5.0.0.tgz", "integrity": "sha512-WdLXcMYvN3SXT6vEtuW78vnZs4pVWm2nBnb4VKjOPPXmdlR1xTHmBgqKacOzAe4RXOiY/V+0u/0zsU3LoGQoBg==", - "peer": true, "dependencies": { "app-path": "^4.0.0", "plist": "^3.0.2" @@ -3792,7 +1513,6 @@ "version": "0.16.13", "resolved": "https://registry.npmmirror.com/jimp/-/jimp-0.16.13.tgz", "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/custom": "^0.16.13", @@ -3804,76 +1524,7 @@ "node_modules/jpeg-js": { "version": "0.4.4", "resolved": "https://registry.npmmirror.com/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "peer": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "19.0.0", - "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-19.0.0.tgz", - "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -3881,67 +1532,15 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/load-bmfont": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/load-bmfont/-/load-bmfont-1.4.1.tgz", "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "peer": true, "dependencies": { "buffer-equal": "0.0.1", "mime": "^1.3.4", @@ -3960,147 +1559,35 @@ "dev": true, "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "peer": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "peer": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "peer": true, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { - "type-fest": "^0.21.3" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/log-update/node_modules/ansi-styles": { + "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -4108,23 +1595,22 @@ "node": ">=8" } }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "peer": true, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "restore-cursor": "^3.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/log-update/node_modules/color-convert": { + "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -4132,46 +1618,31 @@ "node": ">=7.0.0" } }, - "node_modules/log-update/node_modules/color-name": { + "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "peer": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/log-update/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "peer": true, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { "node": ">=10" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/logform": { @@ -4187,64 +1658,6 @@ "triple-beam": "^1.3.0" } }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmmirror.com/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmmirror.com/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/map-age-cleaner": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/map-age-cleaner/-/map-age-cleaner-0.2.0.tgz", - "integrity": "sha512-AvxTC6id0fzSf6OyNBTp1syyCuKO7nOJvHgYlhT0Qkkjvk40zZo+av3ayVgXlxnF/DxEzEfY9mMdd7FHsd+wKQ==", - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=7.6" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz", @@ -4257,36 +1670,12 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "peer": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "peer": true, "bin": { "mime": "cli.js" }, @@ -4294,46 +1683,10 @@ "node": ">=4" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "peer": true, "dependencies": { "dom-walk": "^0.1.0" } @@ -4359,7 +1712,6 @@ "version": "0.5.6", "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -4367,86 +1719,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmmirror.com/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", @@ -4456,62 +1728,16 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -4533,23 +1759,6 @@ "semver": "bin/semver" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "engines": { - "node": ">=14.16" - } - }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmmirror.com/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -4690,7 +1899,6 @@ "version": "4.0.1", "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "peer": true, "dependencies": { "path-key": "^3.0.0" }, @@ -4698,19 +1906,6 @@ "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==" - }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4741,34 +1936,10 @@ "node": ">= 0.4" } }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/omggif": { "version": "1.0.10", "resolved": "https://registry.npmmirror.com/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", - "peer": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" }, "node_modules/one-time": { "version": "1.0.0", @@ -4782,7 +1953,6 @@ "version": "5.1.2", "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "peer": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -4792,199 +1962,105 @@ }, "node_modules/onetime/node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "6.3.0", - "resolved": "https://registry.npmmirror.com/ora/-/ora-6.3.0.tgz", - "integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==", - "peer": true, - "dependencies": { - "chalk": "^5.0.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.6.1", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.1.0", - "log-symbols": "^5.1.0", - "stdin-discarder": "^0.1.0", - "strip-ansi": "^7.0.1", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "5.1.0", - "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-5.1.0.tgz", - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", - "peer": true, - "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "peer": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { - "node": ">=12.20" + "node": ">=6" } }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "yocto-queue": "^0.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "p-limit": "^3.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" } }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmmirror.com/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "aggregate-error": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/p-memoize": { - "version": "7.1.1", - "resolved": "https://registry.npmmirror.com/p-memoize/-/p-memoize-7.1.1.tgz", - "integrity": "sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==", - "dependencies": { - "mimic-fn": "^4.0.0", - "type-fest": "^3.0.0" - }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { - "node": ">=14.16" + "node": ">=10" } }, - "node_modules/p-memoize/node_modules/type-fest": { - "version": "3.8.0", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-3.8.0.tgz", - "integrity": "sha512-FVNSzGQz9Th+/9R6Lvv7WIAkstylfHN2/JYxkyhhmKFYh9At2DST8t6L6Lref9eYO8PXFTfG9Sg1Agg0K3vq3Q==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "engines": { - "node": ">=14.16" + "node": ">=0.10.0" } }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "peer": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/parse-bmfont-ascii": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", - "peer": true + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" }, "node_modules/parse-bmfont-binary": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", - "peer": true + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" }, "node_modules/parse-bmfont-xml": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "peer": true, "dependencies": { "xml-parse-from-string": "^1.0.0", "xml2js": "^0.4.5" @@ -4993,8 +2069,7 @@ "node_modules/parse-headers": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", - "peer": true + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" }, "node_modules/parse-json": { "version": "4.0.0", @@ -5009,46 +2084,6 @@ "node": ">=4" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", @@ -5063,29 +2098,10 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/peek-readable": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/peek-readable/-/peek-readable-4.1.0.tgz", "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "peer": true, "engines": { "node": ">=8" } @@ -5093,17 +2109,7 @@ "node_modules/phin": { "version": "2.9.3", "resolved": "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "peer": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - } + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" }, "node_modules/pidtree": { "version": "0.3.1", @@ -5130,7 +2136,6 @@ "version": "4.0.2", "resolved": "https://registry.npmmirror.com/pixelmatch/-/pixelmatch-4.0.2.tgz", "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "peer": true, "dependencies": { "pngjs": "^3.0.0" }, @@ -5139,86 +2144,34 @@ } }, "node_modules/plist": { - "version": "3.0.6", - "resolved": "https://registry.npmmirror.com/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", - "peer": true, + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "dependencies": { + "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" }, "engines": { - "node": ">=6" + "node": ">=10.4.0" } }, "node_modules/pngjs": { "version": "3.4.0", "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-3.4.0.tgz", "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "peer": true, "engines": { "node": ">=4.0.0" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "peer": true, "engines": { "node": ">= 0.6.0" } }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz", @@ -5262,7 +2215,6 @@ "version": "3.0.2", "resolved": "https://registry.npmmirror.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "peer": true, "dependencies": { "readable-stream": "^3.6.0" }, @@ -5270,23 +2222,10 @@ "node": ">=8" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "peer": true + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", @@ -5302,20 +2241,10 @@ "node": ">= 0.4" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/render-gif": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/render-gif/-/render-gif-2.0.4.tgz", "integrity": "sha512-l5X7EwbEvdflnvVAzjL7njizwZN8ATqJ0rdaQ5WwMJ55vyWXIXIUE9Ut7W6hm+KE+HMYn5C0a+7t0B6JjGfxQA==", - "peer": true, "dependencies": { "cycled": "^1.2.0", "decode-gif": "^1.0.1", @@ -5330,7 +2259,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/bmp/-/bmp-0.14.0.tgz", "integrity": "sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5344,7 +2272,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/core/-/core-0.14.0.tgz", "integrity": "sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5363,7 +2290,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/custom/-/custom-0.14.0.tgz", "integrity": "sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/core": "^0.14.0" @@ -5373,7 +2299,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/gif/-/gif-0.14.0.tgz", "integrity": "sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5388,7 +2313,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/jpeg/-/jpeg-0.14.0.tgz", "integrity": "sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5402,7 +2326,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz", "integrity": "sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5415,7 +2338,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz", "integrity": "sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5428,7 +2350,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz", "integrity": "sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5441,7 +2362,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-color/-/plugin-color-0.14.0.tgz", "integrity": "sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5455,7 +2375,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz", "integrity": "sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5471,7 +2390,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz", "integrity": "sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5487,7 +2405,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz", "integrity": "sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5500,7 +2417,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz", "integrity": "sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5513,7 +2429,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz", "integrity": "sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5526,7 +2441,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz", "integrity": "sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5539,7 +2453,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz", "integrity": "sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5553,7 +2466,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz", "integrity": "sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5566,7 +2478,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz", "integrity": "sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5579,7 +2490,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz", "integrity": "sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5592,7 +2502,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz", "integrity": "sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5605,7 +2514,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-print/-/plugin-print-0.14.0.tgz", "integrity": "sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5620,7 +2528,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz", "integrity": "sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5633,7 +2540,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz", "integrity": "sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5649,7 +2555,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz", "integrity": "sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5663,7 +2568,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz", "integrity": "sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5678,7 +2582,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz", "integrity": "sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0" @@ -5693,7 +2596,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/plugins/-/plugins-0.14.0.tgz", "integrity": "sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/plugin-blit": "^0.14.0", @@ -5727,7 +2629,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/png/-/png-0.14.0.tgz", "integrity": "sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.14.0", @@ -5741,7 +2642,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/tiff/-/tiff-0.14.0.tgz", "integrity": "sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "utif": "^2.0.1" @@ -5754,7 +2654,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/types/-/types-0.14.0.tgz", "integrity": "sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/bmp": "^0.14.0", @@ -5772,27 +2671,15 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/@jimp/utils/-/utils-0.14.0.tgz", "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "regenerator-runtime": "^0.13.3" } }, - "node_modules/render-gif/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/render-gif/node_modules/file-type": { "version": "9.0.0", "resolved": "https://registry.npmmirror.com/file-type/-/file-type-9.0.0.tgz", "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", - "peer": true, "engines": { "node": ">=6" } @@ -5801,7 +2688,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/jimp/-/jimp-0.14.0.tgz", "integrity": "sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==", - "peer": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/custom": "^0.14.0", @@ -5810,20 +2696,6 @@ "regenerator-runtime": "^0.13.3" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz", @@ -5838,89 +2710,30 @@ "resolve": "bin/resolve" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "peer": true, + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node": ">=8" } }, "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "peer": true, + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "engines": { "node": ">=0.12.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "peer": true, + "version": "7.8.1", + "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } @@ -5955,45 +2768,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "peer": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -6020,17 +2797,6 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, - "node_modules/shiki": { - "version": "0.10.1", - "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.10.1.tgz", - "integrity": "sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "5.2.0" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", @@ -6045,8 +2811,7 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "peer": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-swizzle": { "version": "0.2.2", @@ -6061,20 +2826,10 @@ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -6088,7 +2843,6 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6100,7 +2854,6 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6111,17 +2864,7 @@ "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/spdx-correct": { "version": "3.2.0", @@ -6163,18 +2906,6 @@ "node": "*" } }, - "node_modules/stdin-discarder": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz", - "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", - "peer": true, - "dependencies": { - "bl": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", @@ -6270,25 +3001,14 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "peer": true, "engines": { "node": ">=6" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/strtok3": { "version": "6.3.0", "resolved": "https://registry.npmmirror.com/strtok3/-/strtok3-6.3.0.tgz", "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "peer": true, "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^4.1.0" @@ -6298,15 +3018,14 @@ } }, "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -6318,16 +3037,10 @@ "node": ">= 0.4" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, "node_modules/term-img": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/term-img/-/term-img-6.0.0.tgz", "integrity": "sha512-R4c+XtUiN/9lMlw+wldmxjPO/xlG3sIE79tcnE3A8CtcYMTDiOgAKy/EhroI+rmjB3cVyCkYSzTPBBjPsC7YdQ==", - "peer": true, "dependencies": { "ansi-escapes": "^5.0.0", "iterm2-version": "^5.0.0" @@ -6340,7 +3053,6 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz", "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "peer": true, "dependencies": { "type-fest": "^1.0.2" }, @@ -6352,7 +3064,6 @@ "version": "1.4.0", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "peer": true, "engines": { "node": ">=10" } @@ -6361,7 +3072,6 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/terminal-image/-/terminal-image-2.0.0.tgz", "integrity": "sha512-25HcdYC79g0rPxk9o7RIp3i0/ebP+viR6vj2Fsxh1a9pE6o7PfXz4HlmdYLGsQsmBeQNK88BA2UJo4IzBRfzaA==", - "peer": true, "dependencies": { "chalk": "^4.1.1", "jimp": "^0.16.1", @@ -6377,7 +3087,6 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6389,7 +3098,6 @@ "version": "4.1.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6401,67 +3109,38 @@ "node_modules/terminal-image/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/terminal-image/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/terminal-image/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "has-flag": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, + "node_modules/terminal-image/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "peer": true - }, "node_modules/timm": { "version": "1.7.1", "resolved": "https://registry.npmmirror.com/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", - "peer": true + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "peer": true + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "peer": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -6469,23 +3148,10 @@ "node": ">=0.6.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/token-types": { "version": "4.2.1", "resolved": "https://registry.npmmirror.com/token-types/-/token-types-4.2.1.tgz", "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "peer": true, "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" @@ -6494,101 +3160,20 @@ "node": ">=10" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "peer": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, + "version": "0.21.3", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { "node": ">=10" } @@ -6604,78 +3189,6 @@ "is-typed-array": "^1.1.9" } }, - "node_modules/typedoc": { - "version": "0.22.18", - "resolved": "https://registry.npmmirror.com/typedoc/-/typedoc-0.22.18.tgz", - "integrity": "sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==", - "dev": true, - "dependencies": { - "glob": "^8.0.3", - "lunr": "^2.3.9", - "marked": "^4.0.16", - "minimatch": "^5.1.0", - "shiki": "^0.10.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 12.10.0" - }, - "peerDependencies": { - "typescript": "4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -6688,37 +3201,10 @@ "which-boxed-primitive": "^1.0.2" } }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/utif": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/utif/-/utif-2.0.1.tgz", "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "peer": true, "dependencies": { "pako": "^1.0.5" } @@ -6738,121 +3224,14 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/virtual-bit-network": { - "version": "0.1.2", - "resolved": "git+ssh://git@github.com/YDX-2147483647/virtual-BIT-network.git#90cbe77e3d854a64368a850f264a913da83b72c0", - "dependencies": { - "aes-js": "^3.1.2", - "cheerio": "^1.0.0-rc.12", - "node-fetch": "^3.2.10" - }, - "bin": { - "bit-webvpn": "dist/cli.js" - }, - "peerDependencies": { - "chalk": "^5.0.1", - "inquirer": "^9.0.2", - "terminal-image": "^2.0.0" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmmirror.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "5.2.0", - "resolved": "https://registry.npmmirror.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz", - "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", - "dev": true - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "peer": true, "dependencies": { "defaults": "^1.0.3" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", @@ -6931,115 +3310,50 @@ "node": ">= 6.4.0" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "peer": true, + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "peer": true, - "engines": { - "node": ">=12" + "node": ">=8" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "peer": true - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "peer": true, + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "peer": true, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "ansi-regex": "^6.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmmirror.com/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/xhr": { "version": "2.6.0", "resolved": "https://registry.npmmirror.com/xhr/-/xhr-2.6.0.tgz", "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "peer": true, "dependencies": { "global": "~4.4.0", "is-function": "^1.0.1", @@ -7052,25 +3366,15 @@ "resolved": "https://registry.npmmirror.com/xml/-/xml-1.0.1.tgz", "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "engines": { - "node": ">=12" - } - }, "node_modules/xml-parse-from-string": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", - "peer": true + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" }, "node_modules/xml2js": { "version": "0.4.23", "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz", "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "peer": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -7083,7 +3387,6 @@ "version": "11.0.1", "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "peer": true, "engines": { "node": ">=4.0" } @@ -7092,40 +3395,18 @@ "version": "15.1.1", "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "peer": true, "engines": { "node": ">=8.0" } }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "peer": true, "engines": { "node": ">=0.4" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/yaml": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", @@ -7133,57 +3414,6 @@ "engines": { "node": ">= 14" } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - } } } } diff --git a/package.json b/package.json index 6dd0aaa..1876e63 100644 --- a/package.json +++ b/package.json @@ -3,55 +3,24 @@ "version": "2.3.0", "description": "汇总BIT各种网站的通知。", "main": "dist/core/index.js", - "scripts": { - "build": "run-p lint build-only", - "build-only": "tsc", - "build-dev": "tsc --sourceMap", - "test": "tsc && mocha dist/**/*.test.js", - "lint": "eslint \"src/**\" --fix --ignore-path .gitignore", - "doc": "typedoc", - "update": "node dist/examples/cli.js", - "update-ding": "node dist/examples/ding-cli.js", - "update-rss": "node dist/examples/rss-cli.js", - "update-proxy": "node dist/examples/proxy-cli.js", - "update-server": "node dist/examples/server-cli.js", - "update-server-ding": "node dist/examples/server-ding-cli.js", - "check-sources-urls": "node scripts/check_sources_urls.js" - }, "author": "Y.D.X.", "license": "MIT", "type": "module", "dependencies": { + "aes-js": "^3.1.2", "before-after-hook": "^2.2.2", - "chalk": "^5.0.0", - "check-links": "^2.1.2", + "chalk": "^5.3.0", "cli-progress": "^3.9.1", - "jsdom": "^19.0.0", - "node-fetch": "^3.2.10", - "virtual-bit-network": "github:YDX-2147483647/virtual-BIT-network", + "inquirer": "^9.2.11", + "terminal-image": "^2.0.0", "winston": "^3.8.1", "xml": "^1.0.1", "yaml": "^2.2.2" }, "devDependencies": { - "@types/chai": "^4.3.0", "@types/cli-progress": "^3.9.2", - "@types/jsdom": "^16.2.13", - "@types/mocha": "^9.1.0", - "@types/node": "^16.11.12", "@types/xml": "^1.0.6", - "@typescript-eslint/eslint-plugin": "^5.32.0", - "@typescript-eslint/parser": "^5.32.0", - "chai": "^4.3.4", - "eslint": "^8.21.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.2.4", - "eslint-plugin-promise": "^6.0.0", - "mocha": "^9.1.3", - "npm-run-all": "^4.1.5", - "typedoc": "^0.22.10", - "typescript": "^4.7.4" + "npm-run-all": "^4.1.5" }, "directories": { "lib": "lib", diff --git a/scripts/check_sources_urls.js b/scripts/check_sources_urls.js deleted file mode 100644 index 3c6dba3..0000000 --- a/scripts/check_sources_urls.js +++ /dev/null @@ -1,21 +0,0 @@ -import checkLinks from 'check-links' -import { readFile } from 'fs/promises' -import path from 'path' -import { fileURLToPath } from 'url' - -const file = await readFile(path.join( - path.dirname(fileURLToPath(import.meta.url)), - '../config/sources_by_selectors.json', -)) -const urls = JSON.parse(file.toString()).sources.map(s => s.url) - -const results = await checkLinks(urls) - -const failures = Object.entries(results).filter(([url, result]) => result.status !== 'alive') -if (failures.length > 0) { - console.log('❌ Some URLs are dead or invalid:') - console.log(Object.fromEntries(failures)) - process.exitCode = 1 -} else { - console.log('🎉 All URLs are alive!') -} diff --git a/scripts/check_sources_urls.ts b/scripts/check_sources_urls.ts new file mode 100644 index 0000000..cb207ea --- /dev/null +++ b/scripts/check_sources_urls.ts @@ -0,0 +1,18 @@ +import checkLinks from 'npm:check-links@^2.1.2' + +const file = await Deno.readTextFile('./config/sources_by_selectors.json') +const sources = JSON.parse(file.toString()).sources as { url: string }[] +const urls = sources.map((s) => s.url) + +const results = await checkLinks(urls) + +const failures = Object.entries(results).filter(([_url, result]) => + result.status !== 'alive' +) +if (failures.length > 0) { + console.log('❌ Some URLs are dead or invalid:') + console.log(Object.fromEntries(failures)) + Deno.exit(1) +} else { + console.log('🎉 All URLs are alive!') +} diff --git a/src/core/config.ts b/src/core/config.ts index a69005b..0169760 100644 --- a/src/core/config.ts +++ b/src/core/config.ts @@ -4,13 +4,13 @@ * @see `config/config.schema.json` */ -import { readFile } from 'fs/promises' -import { parse } from 'yaml' +import { parse } from 'npm:yaml' interface Config { sources_by_selectors: string json_path: string save_for: number + // deno-lint-ignore no-explicit-any [propName: string]: any } @@ -20,8 +20,10 @@ const defaults: Config = { save_for: 90, } -async function _import_config ({ config_path = 'config/config.yml' } = {}): Promise { - const file = await readFile(config_path) +async function _import_config( + { config_path = 'config/config.yml' } = {}, +): Promise { + const file = await Deno.readTextFile(config_path) const given = parse(file.toString()) return Object.assign({}, defaults, given) as Config } diff --git a/src/core/fetch_wrapper.ts b/src/core/fetch_wrapper.ts index d6ea718..fd0ff15 100644 --- a/src/core/fetch_wrapper.ts +++ b/src/core/fetch_wrapper.ts @@ -6,18 +6,21 @@ * @module */ -import _fetch, { type RequestInit, type Response } from 'node-fetch' -import type { HookCollectionType } from './hooks_type.js' +import ky from 'ky' -function fetch_wrapper (request: RequestInit & { url: string }) { +import type { HookCollectionType } from './hooks_type.ts' + +function fetch_wrapper(request: RequestInit & { url: string }) { const { url, ...init } = request - return _fetch(url, init) + return ky(url, init) } /** * @param request._hook (internal usage only) `request` */ -export default function hooked_fetch (request: RequestInit & { url: string, _hook: HookCollectionType }): Promise { +export default function hooked_fetch( + request: RequestInit & { url: string; _hook: HookCollectionType }, +): Promise { const { _hook, ...req } = request return _hook('request', fetch_wrapper, req) } diff --git a/src/core/hooks_type.ts b/src/core/hooks_type.ts index 5c15186..d48054b 100644 --- a/src/core/hooks_type.ts +++ b/src/core/hooks_type.ts @@ -1,6 +1,5 @@ -import type { HookCollection } from 'before-after-hook' -import type { RequestInit, Response } from 'node-fetch' -import type { Notice, Source } from './models.js' +import type { HookCollection } from 'npm:before-after-hook' +import type { Notice, Source } from './models.ts' type HooksType = { request: { @@ -21,6 +20,8 @@ type HooksType = { read_json_path: string write_json_path: string sources_by_selectors_path: string + save_for: number + _hook: HookCollectionType } Result: { all_notices: Notice[] @@ -35,7 +36,4 @@ type HooksType = { type HookCollectionType = HookCollection -export type { - HooksType, - HookCollectionType, -} +export type { HookCollectionType, HooksType } diff --git a/src/core/index.ts b/src/core/index.ts index 2f30b03..a1eee4b 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -1,10 +1,10 @@ -import { Hook } from 'before-after-hook' -import config from './config.js' -import type { HooksType } from './hooks_type.js' -import { update_notices as _update_notices } from './update_notices.js' +import { Hook } from 'npm:before-after-hook' +import config from './config.ts' +import type { HooksType } from './hooks_type.ts' +import { update_notices as _update_notices } from './update_notices.ts' -export { Notice, Source } from './models.js' -export type { NoticeInterface, SourceInterface } from './models.js' +export { Notice, Source } from './models.ts' +export type { NoticeInterface, SourceInterface } from './models.ts' export { config } const _hook = new Hook.Collection() @@ -12,7 +12,7 @@ const _hook = new Hook.Collection() export const hook = _hook.api export type HookCollectionType = typeof hook -export function update_notices () { +export function update_notices() { return _update_notices({ _hook, read_json_path: config.json_path, diff --git a/src/core/models.ts b/src/core/models.ts index 439c6b2..82cab38 100644 --- a/src/core/models.ts +++ b/src/core/models.ts @@ -8,7 +8,7 @@ * @see `sources.schema.json` */ -import type { HookCollectionType } from './hooks_type.js' +import type { HookCollectionType } from './hooks_type.ts' export interface SourceInterface { name: string @@ -16,7 +16,7 @@ export interface SourceInterface { alt_name?: string[] url: string - guide?: string[], + guide?: string[] } /** @@ -32,7 +32,9 @@ export class Source { url: string guide: string[] - constructor ({ name, full_name, alt_name = [], url, guide = [] }: SourceInterface) { + constructor( + { name, full_name, alt_name = [], url, guide = [] }: SourceInterface, + ) { this.name = name this.full_name = full_name ?? name this.alt_name = alt_name @@ -45,7 +47,10 @@ export class Source { /** * 抓取通知 */ - async fetch_notice ({ _hook }: { _hook: HookCollectionType }): Promise { + // deno-lint-ignore require-await + async fetch_notice( + { _hook }: { _hook: HookCollectionType }, + ): Promise { throw new Error('Not implemented.') } } @@ -78,7 +83,7 @@ export class Notice { source?: Source #source_ref: Source | string - constructor ({ link, title, date, source, id }: NoticeInterface) { + constructor({ link, title, date, source, id }: NoticeInterface) { this.link = link this.title = title this.date = date @@ -87,12 +92,12 @@ export class Notice { this.id = id ?? this.link } - populate ({ sources }: { sources?: Source[] }) { + populate({ sources }: { sources?: Source[] }) { if (sources !== undefined) { if (this.#source_ref instanceof Source) { this.source = this.#source_ref } else { - this.source = sources.find(s => s.id === this.#source_ref) + this.source = sources.find((s) => s.id === this.#source_ref) if (this.source === undefined) { throw new Error(`找不到来源:${this.#source_ref}。`) } @@ -100,7 +105,7 @@ export class Notice { } } - get source_name () { + get source_name() { if (this.source !== undefined) { return this.source.name } else if (this.#source_ref instanceof Source) { @@ -110,7 +115,7 @@ export class Notice { } } - get source_id () { + get source_id() { if (this.source !== undefined) { return this.source.id } else if (this.#source_ref instanceof Source) { @@ -121,7 +126,7 @@ export class Notice { } /** @todo 应当是 plugin */ - to_human_readable_rows () { + to_human_readable_rows() { return [ `${this.source_name}|${this.title}`, this.link, @@ -130,14 +135,14 @@ export class Notice { } /** @todo 应当是 plugin */ - to_markdown (): string { + to_markdown(): string { return [ `${this.source_name}:[${this.title}](${this.link})`, this.date ? `(${this.date.toLocaleString()})` : '', ].join('') } - to_raw () { + to_raw() { return { link: this.link, title: this.title, @@ -147,7 +152,7 @@ export class Notice { } as NoticeInterface } - valueOf () { + valueOf() { return this.to_raw() } } diff --git a/src/core/notices/comparer.ts b/src/core/notices/comparer.ts index 1820387..854503e 100644 --- a/src/core/notices/comparer.ts +++ b/src/core/notices/comparer.ts @@ -3,17 +3,17 @@ * @module */ -import { recent_checker, sort_by_date } from '../../util/my_date.js' -import type { Notice } from '../models.js' +import { recent_checker, sort_by_date } from '../../util/my_date.ts' +import type { Notice } from '../models.ts' /** * 筛选出新通知 * @param original 已有通知,不会被修改 * @param latest 新通知 */ -export function diff (original: Notice[], latest: Notice[]) { - const original_ids = original.map(n => n.id) - return latest.filter(n => !original_ids.includes(n.id)) +export function diff(original: Notice[], latest: Notice[]) { + const original_ids = original.map((n) => n.id) + return latest.filter((n) => !original_ids.includes(n.id)) } /** @@ -24,14 +24,17 @@ export function diff (original: Notice[], latest: Notice[]) { * @param options.days_ago 筛选多少天内的通知,0表示不筛选。 * @param options.sort 合并后是否按日期降序排列。 */ -export function merge (original: Notice[], latest: Notice[], - { days_ago = 0, sort = true } = {}) { +export function merge( + original: Notice[], + latest: Notice[], + { days_ago = 0, sort = true } = {}, +) { const is_recent = recent_checker(days_ago) - latest = latest.filter(n => is_recent(n.date)) + latest = latest.filter((n) => is_recent(n.date)) const difference = diff(original, latest) const all = original.concat(difference) - const recent = all.filter(n => is_recent(n.date)) + const recent = all.filter((n) => is_recent(n.date)) const final = sort ? recent.sort(sort_by_date) : recent return { diff --git a/src/core/notices/fetcher.ts b/src/core/notices/fetcher.ts index afedee6..dec69a5 100644 --- a/src/core/notices/fetcher.ts +++ b/src/core/notices/fetcher.ts @@ -1,5 +1,5 @@ -import type { HookCollectionType } from '../hooks_type.js' -import type { Notice, Source } from '../models.js' +import type { HookCollectionType } from '../hooks_type.ts' +import type { Notice, Source } from '../models.ts' /** * 从一系列来源获取通知 @@ -11,28 +11,37 @@ import type { Notice, Source } from '../models.js' * - `fetch`: the whole process, fetching all of the sources. * - `fetch_each`: several parallel sub-processes, fetching each source. */ -export async function fetch_all_sources ({ - sources, _hook, +export async function fetch_all_sources({ + sources, + _hook, }: { - sources: Source[], - _hook: HookCollectionType, + sources: Source[] + _hook: HookCollectionType }): Promise<{ notices: Notice[] }> { return await _hook( 'fetch', // Why `options`? Plugins may add custom options in their before hooks. async ({ sources, ...options }) => { // First create a non-hook version. - async function fetch_each ({ source }: { source: Source }): Promise<{ notices: Notice[] }> { + async function fetch_each( + { source }: { source: Source }, + ): Promise<{ notices: Notice[] }> { const notices = await source.fetch_notice({ _hook }) return { notices } } // Then wrap it with the hook. - function fetch_each_hooked (s: Source): Promise<{ notices: Notice[] }> { - return _hook('fetch_each', fetch_each, { source: s, ...options }) + function fetch_each_hooked( + s: Source, + ): Promise<{ notices: Notice[] }> { + return _hook('fetch_each', fetch_each, { + source: s, + ...options, + }) } // Call `fetch_each` in parallel. const notices_grouped = await Promise.all( - sources.map(fetch_each_hooked)) + sources.map(fetch_each_hooked), + ) // Ignore `undefined`. // (If `fetch_each` has an error hook, we may get here even though there's nothing.) diff --git a/src/core/notices/index.ts b/src/core/notices/index.ts index 451defa..97525b3 100644 --- a/src/core/notices/index.ts +++ b/src/core/notices/index.ts @@ -4,6 +4,6 @@ * @module */ -export { diff, merge } from './comparer.js' -export { fetch_all_sources } from './fetcher.js' -export { read_json, write_json } from './saver.js' +export { diff, merge } from './comparer.ts' +export { fetch_all_sources } from './fetcher.ts' +export { read_json, write_json } from './saver.ts' diff --git a/src/core/notices/saver.ts b/src/core/notices/saver.ts index c2ca072..a66e721 100644 --- a/src/core/notices/saver.ts +++ b/src/core/notices/saver.ts @@ -2,14 +2,14 @@ * 读取、写入通知(或者说从文件恢复、保存至文件) * @module */ -import { readFile, writeFile } from 'fs/promises' -import { logger } from '../../util/logger.js' -import { Notice, type NoticeInterface } from '../models.js' +import { logger } from '../../util/logger.ts' +import { Notice, type NoticeInterface } from '../models.ts' /** * 自动转换为`Date`。 */ -function json_date_reviver (key: string, value: any) { +// deno-lint-ignore no-explicit-any +function json_date_reviver(key: string, value: any) { if (key === 'date') { return value === 'null' ? null : new Date(value) } @@ -21,12 +21,12 @@ function json_date_reviver (key: string, value: any) { * * 不会填充`source`,如需要,请使用{@link Notice.populate}。 */ -export async function read_json ({ path }: { path: string }) { +export async function read_json({ path }: { path: string }) { try { - const json_str = (await readFile(path)).toString() + const json_str = (await Deno.readTextFile(path)).toString() const json: NoticeInterface[] = JSON.parse(json_str, json_date_reviver) - return json.map(n => new Notice(n)) + return json.map((n) => new Notice(n)) } catch (error) { if (error.code === 'ENOENT') { logger.warn('未找到以往通知,您可能是第一次运行。将忽略。') @@ -41,7 +41,10 @@ export async function read_json ({ path }: { path: string }) { * 将通知写入`path`(不是追加) * @param notices */ -export async function write_json (notices: Notice[], { path }: { path: string }) { - const json = JSON.stringify(notices.map(n => n.to_raw()), null, 2) - await writeFile(path, json) +export async function write_json( + notices: Notice[], + { path }: { path: string }, +) { + const json = JSON.stringify(notices.map((n) => n.to_raw()), null, 2) + await Deno.writeTextFile(path, json) } diff --git a/src/core/sources/by_selectors.ts b/src/core/sources/by_selectors.ts index fd18a8f..fe8f842 100644 --- a/src/core/sources/by_selectors.ts +++ b/src/core/sources/by_selectors.ts @@ -6,35 +6,39 @@ * @module */ -import { readFile } from 'fs/promises' -import { JSDOM } from 'jsdom' -import { parse_date } from '../../util/my_date.js' -import hooked_fetch from '../fetch_wrapper.js' -import type { HookCollectionType } from '../hooks_type.js' -import { Notice, Source, type SourceInterface } from '../models.js' +import { + DOMParser, + type Element, +} from 'https://deno.land/x/deno_dom@v0.1.42/deno-dom-wasm.ts' +import { parse_date } from '../../util/my_date.ts' +import hooked_fetch from '../fetch_wrapper.ts' +import type { HookCollectionType } from '../hooks_type.ts' +import { Notice, Source, type SourceInterface } from '../models.ts' interface SourceBySelectorsInterface extends SourceInterface { selectors: { - rows: string, - link?: string, title?: string, + rows: string + link?: string + title?: string date?: string } } class SourceBySelectors extends Source { selectors: { - rows: string, - link: string, - title: string, + rows: string + link: string + title: string date: string } - constructor (raw: SourceBySelectorsInterface) { + constructor(raw: SourceBySelectorsInterface) { super(raw) const { rows, - link = 'a', title = '', + link = 'a', + title = '', date = 'span', } = raw.selectors @@ -44,35 +48,43 @@ class SourceBySelectors extends Source { /** * @param base_url 页面的 URL(插件可以让实际页面的 URL 与`this.url`不同) */ - private _row_to_notice (row: Element, base_url: string) { - const link: HTMLAnchorElement = row.querySelector(this.selectors.link) - const title = row.querySelector(this.selectors.title) - const date = this.selectors.date ? row.querySelector(this.selectors.date) : null + private _row_to_notice(row: Element, base_url: string) { + const link = row.querySelector(this.selectors.link) as Element + const title = row.querySelector(this.selectors.title) as Element + const date = this.selectors.date + ? row.querySelector(this.selectors.date) + : null return new Notice({ - link: (new URL(link.href, base_url)).href, + link: (new URL(link.getAttribute('href') as string, base_url)).href, title: title.textContent.trim(), date: date ? parse_date(date.textContent) : null, source: this, }) } - async fetch_notice ({ _hook }: { _hook: HookCollectionType }) { + async fetch_notice( + { _hook }: { _hook: HookCollectionType }, + ): Promise { const response = await hooked_fetch({ url: this.url, _hook }) const html = await response.text() - const dom = new JSDOM(html) + const document = new DOMParser().parseFromString(html, 'text/html') - const rows = dom.window.document.querySelectorAll(this.selectors.rows) + const rows = document?.querySelectorAll(this.selectors.rows) ?? [] - return Array.from(rows).map(row => this._row_to_notice(row, response.url)) + return Array.from(rows).map((row) => + this._row_to_notice(row as Element, response.url) + ) } } -export default async function import_sources_by_selectors ({ path }: { path: string }): Promise { - const file = await readFile(path) +export default async function import_sources_by_selectors( + { path }: { path: string }, +): Promise { + const file = await Deno.readTextFile(path) const raw_sources: SourceBySelectorsInterface[] = JSON.parse(file.toString()).sources - return raw_sources.map(s => new SourceBySelectors(s)) + return raw_sources.map((s) => new SourceBySelectors(s)) } diff --git a/src/core/sources/index.ts b/src/core/sources/index.ts index b3fc554..9ce091c 100644 --- a/src/core/sources/index.ts +++ b/src/core/sources/index.ts @@ -6,16 +6,18 @@ * @module */ -import { Source } from '../models.js' +import { Source } from '../models.ts' -import import_sources_by_selectors from './by_selectors.js' -import import_sources_special from './special.js' +import import_sources_by_selectors from './by_selectors.ts' +import import_sources_special from './special.ts' /** * @param param0 * @param param0.sources_by_selectors_path `sources_by_selectors.json` */ -export default async function import_sources ({ sources_by_selectors_path }: { sources_by_selectors_path: string }): Promise { +export default async function import_sources( + { sources_by_selectors_path }: { sources_by_selectors_path: string }, +): Promise { const promises = [ import_sources_by_selectors({ path: sources_by_selectors_path }), import_sources_special(), diff --git a/src/core/sources/special.ts b/src/core/sources/special.ts index b437472..bb08385 100644 --- a/src/core/sources/special.ts +++ b/src/core/sources/special.ts @@ -3,10 +3,10 @@ * @module */ -import { parse_date } from '../../util/my_date.js' -import hooked_fetch from '../fetch_wrapper.js' -import type { HookCollectionType } from '../hooks_type.js' -import { Notice, Source, type SourceInterface } from '../models.js' +import { parse_date } from '../../util/my_date.ts' +import hooked_fetch from '../fetch_wrapper.ts' +import type { HookCollectionType } from '../hooks_type.ts' +import { Notice, Source, type SourceInterface } from '../models.ts' interface NoticeWithoutSource { link: string @@ -16,25 +16,41 @@ interface NoticeWithoutSource { } interface SourceSpecialInterface extends SourceInterface { - fetch_notice (options: { _hook: HookCollectionType }): Promise + fetch_notice( + options: { _hook: HookCollectionType }, + ): Promise } /** * 获取 lib.bit.edu.cn 的通知 */ -async function fetch_lib_notice ({ _hook, general_id, engine_id }: { _hook: HookCollectionType, general_id: string, engine_id: string }) { - const response = - await hooked_fetch({ - url: `https://lib.bit.edu.cn/engine2/general/${general_id}/type/more-datas`, - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', - }, - body: `engineInstanceId=${engine_id}`, - _hook, - }) +async function fetch_lib_notice( + { _hook, general_id, engine_id }: { + _hook: HookCollectionType + general_id: string + engine_id: string + }, +) { + const response = await hooked_fetch({ + url: `https://lib.bit.edu.cn/engine2/general/${general_id}/type/more-datas`, + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + }, + body: `engineInstanceId=${engine_id}`, + _hook, + }) const json = await response.json() as { - data: { datas: { datas: { url: string, '1': { value: string }, '6': { value: string }, id: string }[] } } + data: { + datas: { + datas: { + url: string + '1': { value: string } + '6': { value: string } + id: string + }[] + } + } } const original_data = json.data.datas.datas @@ -72,19 +88,24 @@ const raw_sources: SourceSpecialInterface[] = [ '党政部', '校内通知', ], - async fetch_notice ({ _hook }) { + async fetch_notice({ _hook }) { const response = await hooked_fetch({ url: 'https://dzb.bit.edu.cn/cms/web/notify/search?page=1&status=7&rows=20&order=1&sortFiled=publishDate', method: 'post', _hook, }) - const json: any = await response.json() - const rows = Array.from(json.object) as { notifyType: string, articleID: string, title: string }[] + const json = await response.json() + const rows = Array.from(json.object) as { + notifyType: string + articleID: string + title: string + }[] return rows.map( ({ notifyType, articleID, title }) => ({ type: notifyType.replace('通知', ''), - link: `https://dzb.bit.edu.cn/cms/web/search/download.jsp?id=${articleID}`, + link: + `https://dzb.bit.edu.cn/cms/web/search/download.jsp?id=${articleID}`, title, date: null, }), @@ -100,16 +121,26 @@ const raw_sources: SourceSpecialInterface[] = [ '新闻公告', ], url: 'http://mec.bit.edu.cn/infos/index.html', - async fetch_notice ({ _hook }) { - const response = - await hooked_fetch({ - url: 'http://mec.bit.edu.cn/pcmd/ajax.php?vpn-12-o1-mec.bit.edu.cn&act=getmanage_nologin&w=新闻公告', - headers: { - Referer: 'http://mec.bit.edu.cn/', - }, - _hook, - }) - const json = await response.json() as { data: { data: { id: string, type: string, jmtype: string, jmdate: string, jmtitle: string, jmnr: string }[] } } + async fetch_notice({ _hook }) { + const response = await hooked_fetch({ + url: 'http://mec.bit.edu.cn/pcmd/ajax.php?vpn-12-o1-mec.bit.edu.cn&act=getmanage_nologin&w=新闻公告', + headers: { + Referer: 'http://mec.bit.edu.cn/', + }, + _hook, + }) + const json = await response.json() as { + data: { + data: { + id: string + type: string + jmtype: string + jmdate: string + jmtitle: string + jmnr: string + }[] + } + } const original_data = json.data.data return original_data.map( @@ -131,8 +162,12 @@ const raw_sources: SourceSpecialInterface[] = [ '更多', ], url: 'https://lib.bit.edu.cn/engine2/m/7252A82F2C1BEA45', - async fetch_notice ({ _hook }) { - return await fetch_lib_notice({ general_id: '1430281', engine_id: '2047535', _hook }) + async fetch_notice({ _hook }) { + return await fetch_lib_notice({ + general_id: '1430281', + engine_id: '2047535', + _hook, + }) }, }, { @@ -144,8 +179,12 @@ const raw_sources: SourceSpecialInterface[] = [ '更多', ], url: 'https://lib.bit.edu.cn/engine2/m/57D956B0E35360B0', - async fetch_notice ({ _hook }) { - return await fetch_lib_notice({ general_id: '1387413', engine_id: '1722985', _hook }) + async fetch_notice({ _hook }) { + return await fetch_lib_notice({ + general_id: '1387413', + engine_id: '1722985', + _hook, + }) }, }, { @@ -159,17 +198,18 @@ const raw_sources: SourceSpecialInterface[] = [ '左边栏', '更新日志', ], - async fetch_notice ({ _hook }) { - const response = - await hooked_fetch({ - url: 'https://cbiz.yanhekt.cn/v1/notice/list?with_brief=false', - headers: { - Referer: 'https://www.yanhekt.cn/', - 'Xdomain-Client': 'web_user', - }, - _hook, - }) - const json = await response.json() as { data: { title: string, created_at: string, id: number }[] } + async fetch_notice({ _hook }) { + const response = await hooked_fetch({ + url: 'https://cbiz.yanhekt.cn/v1/notice/list?with_brief=false', + headers: { + Referer: 'https://www.yanhekt.cn/', + 'Xdomain-Client': 'web_user', + }, + _hook, + }) + const json = await response.json() as { + data: { title: string; created_at: string; id: number }[] + } const original_data = json.data return original_data.map( @@ -185,17 +225,17 @@ const raw_sources: SourceSpecialInterface[] = [ }, ] -const sources = raw_sources.map(raw => { +const sources = raw_sources.map((raw) => { const source = new Source(raw) source.fetch_notice = async ({ _hook }) => { const notices = await raw.fetch_notice({ _hook }) return notices.map(({ link, title, date, id }) => - new Notice({ link, title, date, source, id }), + new Notice({ link, title, date, source, id }) ) } return source }) -export default async function import_sources_special (): Promise { - return sources +export default function import_sources_special(): Promise { + return Promise.resolve(sources) } diff --git a/src/core/update_notices.ts b/src/core/update_notices.ts index d005ac4..73a1c6e 100644 --- a/src/core/update_notices.ts +++ b/src/core/update_notices.ts @@ -3,21 +3,30 @@ * @module */ -import type { HookCollectionType } from './hooks_type.js' -import type { Notice } from './models.js' -import { fetch_all_sources, merge, read_json, write_json } from './notices/index.js' -import import_sources from './sources/index.js' +import type { HookCollectionType } from './hooks_type.ts' +import type { Notice } from './models.ts' +import { + fetch_all_sources, + merge, + read_json, + write_json, +} from './notices/index.ts' +import import_sources from './sources/index.ts' type UpdateNoticesOptions = { - read_json_path: string, + read_json_path: string write_json_path: string sources_by_selectors_path: string save_for: number } -async function _update_notices ({ - sources_by_selectors_path, read_json_path, write_json_path, save_for, - _hook, ...options +async function _update_notices({ + sources_by_selectors_path, + read_json_path, + write_json_path, + save_for, + _hook, + ...options }: { _hook: HookCollectionType } & UpdateNoticesOptions) { const sources = await import_sources({ sources_by_selectors_path }) const { notices: latest_notices } = await fetch_all_sources({ @@ -33,7 +42,7 @@ async function _update_notices ({ // // 这两种情况都设置为当前日期。 const now = new Date() - latest_notices.forEach(n => { + latest_notices.forEach((n) => { if (!n.date || n.date > now) { n.date = new Date() } @@ -41,7 +50,8 @@ async function _update_notices ({ const existed_notices = await read_json({ path: read_json_path }) const { notices: notices_to_save, new_notices, change } = merge( - existed_notices, latest_notices, + existed_notices, + latest_notices, { days_ago: save_for, sort: true }, ) @@ -72,7 +82,9 @@ async function _update_notices ({ * @param options._hook (internal usage only) `update` * @returns */ -export function update_notices (options: { _hook: HookCollectionType } & UpdateNoticesOptions): Promise<{ +export function update_notices( + options: { _hook: HookCollectionType } & UpdateNoticesOptions, +): Promise<{ all_notices: Notice[] new_notices: Notice[] change: { diff --git a/src/examples/cli.ts b/src/examples/cli.ts index 678c5a2..35ccdfb 100644 --- a/src/examples/cli.ts +++ b/src/examples/cli.ts @@ -1,11 +1,13 @@ -import { hook, update_notices } from '../core/index.js' -import { add_hook } from '../plugin/cli/index.js' -import add_normalize_hook from '../plugin/normalize/index.js' +import { hook, update_notices } from '../core/index.ts' +import { add_hook } from '../plugin/cli/index.ts' +import add_normalize_hook from '../plugin/normalize/index.ts' +import add_retry_hook from '../plugin/retry/index.ts' add_hook.verbose(hook) add_hook.preview_output(hook) add_hook.progress_bar(hook) add_hook.recent_filter(hook, 90) +add_retry_hook(hook) add_normalize_hook(hook) await update_notices() diff --git a/src/examples/ding-cli.ts b/src/examples/ding-cli.ts index 9100f3b..7151307 100644 --- a/src/examples/ding-cli.ts +++ b/src/examples/ding-cli.ts @@ -2,14 +2,16 @@ * 更新通知 */ -import { hook, update_notices } from '../core/index.js' -import { add_hook } from '../plugin/cli/index.js' -import robot from '../plugin/ding/index.js' -import add_normalize_hook from '../plugin/normalize/index.js' -import { logger } from '../util/logger.js' +import { hook, update_notices } from '../core/index.ts' +import { add_hook } from '../plugin/cli/index.ts' +import robot from '../plugin/ding/index.ts' +import add_normalize_hook from '../plugin/normalize/index.ts' +import add_retry_hook from '../plugin/retry/index.ts' +import { logger } from '../util/logger.ts' add_hook.verbose(hook) add_hook.progress_bar(hook) +add_retry_hook(hook) add_normalize_hook(hook) const { all_notices, new_notices, change } = await update_notices() @@ -18,14 +20,14 @@ if (change.add === 0) { const message_rows = [ '未发现新通知。', '以下是最新的3项通知。', - ...all_notices.slice(0, 3).map(n => '- ' + n.to_markdown()), + ...all_notices.slice(0, 3).map((n) => '- ' + n.to_markdown()), ] await robot.markdown('未发现新通知', message_rows.join('\n\n')) } else { const message_rows = [ `发现 ${new_notices.length} 项新通知。`, - ...new_notices.slice(0, 20).map(n => '- ' + n.to_markdown()), + ...new_notices.slice(0, 20).map((n) => '- ' + n.to_markdown()), `新增 ${change.add} 项,过期 ${change.drop} 项。`, ] diff --git a/src/examples/proxy-cli.ts b/src/examples/proxy-cli.ts index c6abab6..cb0ff8c 100644 --- a/src/examples/proxy-cli.ts +++ b/src/examples/proxy-cli.ts @@ -1,12 +1,14 @@ -import { hook, update_notices } from '../core/index.js' -import { add_hook } from '../plugin/cli/index.js' -import add_proxy_hook from '../plugin/proxy/index.js' -import add_normalize_hook from '../plugin/normalize/index.js' +import { hook, update_notices } from '../core/index.ts' +import { add_hook } from '../plugin/cli/index.ts' +import add_normalize_hook from '../plugin/normalize/index.ts' +import add_proxy_hook from '../plugin/proxy/index.ts' +import add_retry_hook from '../plugin/retry/index.ts' add_hook.verbose(hook) add_hook.preview_output(hook) add_hook.progress_bar(hook) add_proxy_hook(hook) +add_retry_hook(hook) add_normalize_hook(hook) await update_notices() diff --git a/src/examples/rss-cli.ts b/src/examples/rss-cli.ts index 40b4ee3..85d438a 100644 --- a/src/examples/rss-cli.ts +++ b/src/examples/rss-cli.ts @@ -1,12 +1,14 @@ -import { hook, update_notices } from '../core/index.js' -import { add_hook } from '../plugin/cli/index.js' -import add_normalize_hook from '../plugin/normalize/index.js' -import add_rss_hook from '../plugin/rss/index.js' +import { hook, update_notices } from '../core/index.ts' +import { add_hook } from '../plugin/cli/index.ts' +import add_normalize_hook from '../plugin/normalize/index.ts' +import add_retry_hook from '../plugin/retry/index.ts' +import add_rss_hook from '../plugin/rss/index.ts' add_hook.verbose(hook) add_hook.progress_bar(hook) add_hook.recent_filter(hook, 90) add_normalize_hook(hook) +add_retry_hook(hook) add_rss_hook(hook) await update_notices() diff --git a/src/examples/server-cli.ts b/src/examples/server-cli.ts index d7c9709..9b5cae8 100644 --- a/src/examples/server-cli.ts +++ b/src/examples/server-cli.ts @@ -2,15 +2,17 @@ * 更新通知 */ -import { hook, update_notices } from '../core/index.js' -import { add_hook } from '../plugin/cli/index.js' -import add_proxy_hook from '../plugin/proxy/index.js' -import add_normalize_hook from '../plugin/normalize/index.js' -import add_rss_hook from '../plugin/rss/index.js' +import { hook, update_notices } from '../core/index.ts' +import { add_hook } from '../plugin/cli/index.ts' +import add_normalize_hook from '../plugin/normalize/index.ts' +import add_proxy_hook from '../plugin/proxy/index.ts' +import add_retry_hook from '../plugin/retry/index.ts' +import add_rss_hook from '../plugin/rss/index.ts' add_hook.verbose(hook) add_hook.progress_bar(hook) add_proxy_hook(hook) +add_retry_hook(hook) add_normalize_hook(hook) add_rss_hook(hook) diff --git a/src/examples/server-ding-cli.ts b/src/examples/server-ding-cli.ts index fe2a6bf..ef240d9 100644 --- a/src/examples/server-ding-cli.ts +++ b/src/examples/server-ding-cli.ts @@ -2,17 +2,19 @@ * 更新通知 */ -import { hook, update_notices } from '../core/index.js' -import { add_hook } from '../plugin/cli/index.js' -import robot from '../plugin/ding/index.js' -import add_proxy_hook from '../plugin/proxy/index.js' -import add_normalize_hook from '../plugin/normalize/index.js' -import add_rss_hook from '../plugin/rss/index.js' -import { logger } from '../util/logger.js' +import { hook, update_notices } from '../core/index.ts' +import { add_hook } from '../plugin/cli/index.ts' +import robot from '../plugin/ding/index.ts' +import add_normalize_hook from '../plugin/normalize/index.ts' +import add_proxy_hook from '../plugin/proxy/index.ts' +import add_retry_hook from '../plugin/retry/index.ts' +import add_rss_hook from '../plugin/rss/index.ts' +import { logger } from '../util/logger.ts' add_hook.verbose(hook) add_hook.progress_bar(hook) add_proxy_hook(hook) +add_retry_hook(hook) add_normalize_hook(hook) add_rss_hook(hook) @@ -27,7 +29,7 @@ if (change.add === 0) { } else { const message_rows = [ `发现 ${new_notices.length} 项新通知。`, - ...new_notices.slice(0, 20).map(n => '- ' + n.to_markdown()), + ...new_notices.slice(0, 20).map((n) => '- ' + n.to_markdown()), `新增 ${change.add} 项,过期 ${change.drop} 项。`, ] diff --git a/src/plugin/cli/hooks.ts b/src/plugin/cli/hooks.ts index 204355b..3030fe2 100644 --- a/src/plugin/cli/hooks.ts +++ b/src/plugin/cli/hooks.ts @@ -1,46 +1,70 @@ -import cliProgress from 'cli-progress' -import { FetchError } from 'node-fetch' -import type { HookCollectionType } from '../../core/index.js' -import { logger } from '../../util/logger.js' -import { recent_checker } from '../../util/my_date.js' -import { print_notices } from './util.js' +import { HTTPError, TimeoutError } from 'ky' +import cliProgress from 'npm:cli-progress' -export function verbose (hook: HookCollectionType) { +import type { HookCollectionType } from '../../core/index.ts' +import { logger } from '../../util/logger.ts' +import { recent_checker } from '../../util/my_date.ts' +import { print_notices } from './util.ts' + +export function verbose(hook: HookCollectionType) { hook.before('fetch', (options) => { const { sources } = options logger.info(`发现${sources.length}个通知来源。`, { plugin: 'cli' }) }) + hook.before('fetch_each', ({ source }) => { + logger.debug(`开始获取“${source.name}”。`, { + plugin: 'cli', + hook: 'fetch_each.before', + }) + }) hook.error('fetch_each', ( err, // @ts-ignore If `fetch_each` has an error hook, the after hook may get `undefined` { source } = { source: { name: undefined } }, ) => { - if (err instanceof FetchError && err.errno === 'ENOTFOUND') { - logger.warn(`未能访问“${source.name}”(ENOTFOUND)。将忽略。`, { plugin: 'cli' }) - } else if (err instanceof FetchError && err.errno === 'ETIMEDOUT') { - logger.error(`访问“${source.name}”(ETIMEDOUT)超时,可能因为访问太频繁。将忽略。`, { plugin: 'cli' }) - } else if (err instanceof FetchError) { - logger.error(err.toString(), { plugin: 'cli', hook: 'fetch_each.error' }) + // todo: Catch only errors about fetching + if (err instanceof Deno.errors.NotFound) { + logger.warn(`未能访问“${source.name}”(NotFound)。将忽略。`, { + plugin: 'cli', + }) + } else if (err instanceof TimeoutError) { + logger.error( + `访问“${source.name}”(Timeout)超时,可能因为访问太频繁。将忽略。`, + { plugin: 'cli' }, + ) + } else if (err instanceof HTTPError) { + logger.error( + `未能访问“${source.name}”(${err.message})。将忽略。`, + { plugin: 'cli' }, + ) } else { - throw err + logger.error(err.toString(), { + plugin: 'cli', + hook: 'fetch_each.error', + }) } }) hook.after('fetch_each', (result, { source }) => { if (result !== undefined && result.notices.length === 0) { - logger.warn(`未从“${source.name}”获取到任何通知。将忽略。`, { plugin: 'cli' }) + logger.warn(`未从“${source.name}”获取到任何通知。将忽略。`, { + plugin: 'cli', + }) } + logger.debug(`结束获取“${source.name}”。`, { + plugin: 'cli', + hook: 'fetch_each.after', + }) }) - hook.after('update', (result, { write_json_path }) => { + hook.after('update', (_result, { write_json_path }) => { logger.info(`已按需保存到“${write_json_path}”。`, { plugin: 'cli' }) }) } -export function preview_output (hook: HookCollectionType) { +export function preview_output(hook: HookCollectionType) { hook.after('update', ({ change, all_notices, new_notices }) => { if (change.add === 0) { console.log('未发现新通知。') - print_notices(all_notices, - { max: 3, remark_if_overflow: false }) + print_notices(all_notices, { max: 3, remark_if_overflow: false }) console.log('以上是最新的3项通知。') } else { console.log(`发现 ${change.add} 项新通知。`) @@ -50,10 +74,11 @@ export function preview_output (hook: HookCollectionType) { }) } -export function progress_bar (hook: HookCollectionType) { +export function progress_bar(hook: HookCollectionType) { hook.before('fetch', (options) => { const bar = new cliProgress.SingleBar({ - format: '抓取通知 {bar} {percentage}% | {value}/{total} | 已用{duration_formatted},预计还需{eta_formatted}', + format: + '抓取通知 {bar} {percentage}% | {value}/{total} | 已用{duration_formatted},预计还需{eta_formatted}', }, cliProgress.Presets.shades_classic) // @ts-ignore We add the bar for other hooks @@ -61,12 +86,12 @@ export function progress_bar (hook: HookCollectionType) { bar.start(options.sources.length, 0) }) - hook.after('fetch_each', (result, options) => { + hook.after('fetch_each', (_result, options) => { // @ts-ignore See the before hook const bar = options.bar as cliProgress.SingleBar bar.increment() }) - hook.after('fetch', (result, options) => { + hook.after('fetch', (_result, options) => { // @ts-ignore See the before hook const bar = options.bar as cliProgress.SingleBar bar.stop() @@ -78,7 +103,7 @@ export function progress_bar (hook: HookCollectionType) { * @param hook * @param days_ago 筛选多少天内的通知 */ -export function recent_filter (hook: HookCollectionType, days_ago: number) { +export function recent_filter(hook: HookCollectionType, days_ago: number) { hook.before('fetch', (options) => { // @ts-ignore For other hooks options.is_recent = recent_checker(days_ago) @@ -87,7 +112,7 @@ export function recent_filter (hook: HookCollectionType, days_ago: number) { // @ts-ignore See the before hook const is_recent = options.is_recent if (result?.notices) { - result.notices = result.notices.filter(n => is_recent(n.date)) + result.notices = result.notices.filter((n) => is_recent(n.date)) } }) } diff --git a/src/plugin/cli/index.ts b/src/plugin/cli/index.ts index 9dcc512..a8f6b28 100644 --- a/src/plugin/cli/index.ts +++ b/src/plugin/cli/index.ts @@ -3,4 +3,4 @@ * @module */ -export * as add_hook from './hooks.js' +export * as add_hook from './hooks.ts' diff --git a/src/plugin/cli/util.ts b/src/plugin/cli/util.ts index 655bd4e..ca6b63e 100644 --- a/src/plugin/cli/util.ts +++ b/src/plugin/cli/util.ts @@ -1,5 +1,5 @@ -import chalk from 'chalk' -import type { Notice } from '../../core/index.js' +import chalk from 'npm:chalk' +import type { Notice } from '../../core/index.ts' /** * 打印一系列通知 @@ -9,21 +9,27 @@ import type { Notice } from '../../core/index.js' * @param options.remark_if_overflow 通知太多而未全部打印时是否提示。 */ -export function print_notices (notices: Notice[], { max = 5, remark_if_overflow = true } = {}) { +export function print_notices( + notices: Notice[], + { max = 5, remark_if_overflow = true } = {}, +) { console.log( notices.slice(0, max || undefined) .map((notice, index) => { const rows = notice.to_human_readable_rows() return [ - chalk.underline(String(index + 1).padStart(2, ' ')) + ` ${rows[0]}`, - ...rows.slice(1).map(row => ` ${row}`), + chalk.underline(String(index + 1).padStart(2, ' ')) + + ` ${rows[0]}`, + ...rows.slice(1).map((row) => ` ${row}`), ].join('\n') }) .join('\n\n'), ) if (max !== 0 && remark_if_overflow && notices.length > max) { - console.log('\n' + chalk.underline('……') + - ` 另外还有${notices.length - max}项通知未显示。`) + console.log( + '\n' + chalk.underline('……') + + ` 另外还有${notices.length - max}项通知未显示。`, + ) } } diff --git a/src/plugin/ding/bot.ts b/src/plugin/ding/bot.ts index 64ccf2e..1c0933e 100644 --- a/src/plugin/ding/bot.ts +++ b/src/plugin/ding/bot.ts @@ -3,8 +3,7 @@ * @see https://github.com/x-cold/dingtalk-robot/blob/master/lib/bot.js */ -import sign from './sign.js' -import fetch from 'node-fetch' +import sign from './sign.ts' /* spell-checker: words msgtype */ @@ -15,7 +14,7 @@ import fetch from 'node-fetch' */ class ChatBot { webhook: string - secret: string + secret?: string /** * 机器人工厂,所有的消息推送项目都会调用 this.webhook 接口进行发送 @@ -23,13 +22,28 @@ class ChatBot { * @param options.webhook 完整的接口地址,含 access token,可用`base_url`和`access_token`替代 * @param options.base_url 接口地址,不含 access token */ - constructor (options: { webhook?: string, base_url?: string, access_token?: string, secret?: string }) { + constructor( + options: + & { + secret?: string + } + & ({ + webhook: string + base_url?: never + access_token?: never + } | { + base_url: string + access_token: string + webhook?: never + }), + ) { if (!options.webhook && !(options.access_token && options.base_url)) { throw new Error('Lack for arguments!') } // 优先使用 options.webhook // 次之将由 options.baseUrl 和 options.accessToken 组合成一个 webhook 地址 - this.webhook = options.webhook || `${options.base_url}?access_token=${options.access_token}` + this.webhook = options.webhook || + `${options.base_url}?access_token=${options.access_token}` this.secret = options.secret } @@ -38,11 +52,12 @@ class ChatBot { * * @param content 发动的消息对象 */ - send (content: object): Promise { + send(content: object): Promise { let signStr = '' if (this.secret) { const timestamp = Date.now() - signStr = '×tamp=' + timestamp + '&sign=' + sign(this.secret, timestamp + '\n' + this.secret) + signStr = '×tamp=' + timestamp + '&sign=' + + sign(this.secret, timestamp + '\n' + this.secret) } return fetch(this.webhook + signStr, { method: 'POST', @@ -60,7 +75,7 @@ class ChatBot { * @param at 群内@成员的手机号 * @return */ - text (content: string, at?: object): Promise { + text(content: string, at?: object): Promise { return this.send({ msgtype: 'text', text: { @@ -79,7 +94,14 @@ class ChatBot { * @param {String} link.picUrl 图片的链接 * @return {Promise} */ - link (link): Promise { + link( + link: { + title: string + text: string + messageUrl: string + picUrl: string + }, + ): Promise { return this.send({ msgtype: 'link', link, @@ -93,7 +115,7 @@ class ChatBot { * @param {String} text 消息内容(支持Markdown) * @return {Promise} */ - markdown (title: string, text: string, at?: object): Promise { + markdown(title: string, text: string, at?: object): Promise { return this.send({ msgtype: 'markdown', markdown: { @@ -115,7 +137,15 @@ class ChatBot { * @param {String} card.btns.actionURL 某个按钮链接 * @return {Promise} */ - actionCard (card): Promise { + actionCard( + card: { + title: string + text: string + btnOrientation: string + btns: { title: string; actionURL: string } + hideAvatar?: number + }, + ): Promise { return this.send({ msgtype: 'actionCard', actionCard: { @@ -137,7 +167,9 @@ class ChatBot { * @param {String} link.picURL 图片的链接 * @return {Promise} */ - feedCard (links): Promise { + feedCard( + links: { title: string; messageURL: string; picURL: string }[], + ): Promise { return this.send({ msgtype: 'feedCard', feedCard: { diff --git a/src/plugin/ding/index.ts b/src/plugin/ding/index.ts index 4a614a3..8460d7d 100644 --- a/src/plugin/ding/index.ts +++ b/src/plugin/ding/index.ts @@ -3,18 +3,18 @@ * @module */ -import { readFile } from 'fs/promises' -import { parse } from 'yaml' +import { parse } from 'npm:yaml' -import { config } from '../../core/index.js' +import { config } from '../../core/index.ts' -import Robot from './bot.js' +import Robot from './bot.ts' -async function load_config () { - // @ts-ignore - const { ding: { secrets_path } }: { ding: { secrets_path: string } } = config - const file = await readFile(secrets_path) - return parse(file.toString()) as { webhook: string, secret: string } +async function load_config() { + // @ts-ignore 允许扩展设置 + const { ding: { secrets_path } }: { ding: { secrets_path: string } } = + config + const file = await Deno.readTextFile(secrets_path) + return parse(file.toString()) as { webhook: string; secret: string } } const robot = new Robot(await load_config()) diff --git a/src/plugin/ding/sign.ts b/src/plugin/ding/sign.ts index ddf46af..caa51e7 100644 --- a/src/plugin/ding/sign.ts +++ b/src/plugin/ding/sign.ts @@ -3,7 +3,7 @@ * @see https://github.com/x-cold/dingtalk-robot/blob/master/lib/sign.js */ -import crypto from 'crypto' +import crypto from 'node:crypto' export default (secret: string, content: string) => { const str = crypto.createHmac('sha256', secret) diff --git a/src/plugin/normalize/index.ts b/src/plugin/normalize/index.ts index edc6b49..083a29b 100644 --- a/src/plugin/normalize/index.ts +++ b/src/plugin/normalize/index.ts @@ -3,17 +3,20 @@ * @module */ -import { type HookCollectionType } from '../../core/index.js' -import { normalize } from './normalize.js' +import { type HookCollectionType } from '../../core/index.ts' +import { normalize } from './normalize.ts' /** * `fetch_each`后重整不完整的标题 */ -export default function add_normalize_hook (hook: HookCollectionType) { - hook.after('fetch_each', async ( +export default function add_normalize_hook(hook: HookCollectionType) { + hook.after('fetch_each', ( // @ts-ignore If `fetch_each` has an error hook, the after hook may get `undefined` { notices } = { notices: [] }, ) => { - notices.forEach(n => { n.title = normalize(n.title) }) + notices.forEach((n) => { + n.title = normalize(n.title) + }) + return Promise.resolve() }) } diff --git a/src/plugin/normalize/normalize.test.ts b/src/plugin/normalize/normalize.test.ts index 8baeac3..2dd90b5 100644 --- a/src/plugin/normalize/normalize.test.ts +++ b/src/plugin/normalize/normalize.test.ts @@ -1,41 +1,39 @@ -import { assert } from 'chai' -import { describe, it } from 'mocha' +import { assertEquals } from 'std/assert/mod.ts' -import { normalize } from './normalize.js' +import { normalize } from './normalize.ts' -function assert_normalize (raw: string, expected: string) { - assert.equal(normalize(raw), expected) +function assert_normalize(raw: string, expected: string) { + assertEquals(normalize(raw), expected) } -describe('重整标题', () => { - it('保持完整标题', () => { - assert_normalize( - '2023年北京市成人高校招生录取信息与分数线查询', - '2023年北京市成人高校招生录取信息与分数线查询', - ) - }) - it('修正截断标题的省略号', () => { - assert_normalize( - '【通知】明德书院关于2023年社会捐助类奖助学金(部分)评选工...', - '【通知】明德书院关于2023年社会捐助类奖助学金(部分)评选工……', - ) - }) - it('重整残余特殊字符的标题', () => { - assert_normalize( - '北理工宇航学院2024年接收优秀应届本科毕业生推荐免试研究生&#...', - '北理工宇航学院2024年接收优秀应届本科毕业生推荐免试研究生……', - ) - assert_normalize( - '光电学院2024年接收优秀应届本科毕业生推荐免试研究生(含本直博生ÿ...', - '光电学院2024年接收优秀应届本科毕业生推荐免试研究生(含本直博生……', - ) - assert_normalize( - '北京理工大学管理与经济学院2024年接收优秀应届本科毕业生推荐免试攻读研究生(含本直博生\u000f...', - '北京理工大学管理与经济学院2024年接收优秀应届本科毕业生推荐免试攻读研究生(含本直博生……', - ) - assert_normalize( - '关于2023年社会捐助类奖助学金(部分࿰...', - '关于2023年社会捐助类奖助学金(部分……', - ) - }) +Deno.test('重整标题', () => { + // '保持完整标题' + assert_normalize( + '2023年北京市成人高校招生录取信息与分数线查询', + '2023年北京市成人高校招生录取信息与分数线查询', + ) + + // '修正截断标题的省略号' + assert_normalize( + '【通知】明德书院关于2023年社会捐助类奖助学金(部分)评选工...', + '【通知】明德书院关于2023年社会捐助类奖助学金(部分)评选工……', + ) + + // '重整残余特殊字符的标题' + assert_normalize( + '北理工宇航学院2024年接收优秀应届本科毕业生推荐免试研究生&#...', + '北理工宇航学院2024年接收优秀应届本科毕业生推荐免试研究生……', + ) + assert_normalize( + '光电学院2024年接收优秀应届本科毕业生推荐免试研究生(含本直博生ÿ...', + '光电学院2024年接收优秀应届本科毕业生推荐免试研究生(含本直博生……', + ) + assert_normalize( + '北京理工大学管理与经济学院2024年接收优秀应届本科毕业生推荐免试攻读研究生(含本直博生\u000f...', + '北京理工大学管理与经济学院2024年接收优秀应届本科毕业生推荐免试攻读研究生(含本直博生……', + ) + assert_normalize( + '关于2023年社会捐助类奖助学金(部分࿰...', + '关于2023年社会捐助类奖助学金(部分……', + ) }) diff --git a/src/plugin/normalize/normalize.ts b/src/plugin/normalize/normalize.ts index 372fa37..82eab33 100644 --- a/src/plugin/normalize/normalize.ts +++ b/src/plugin/normalize/normalize.ts @@ -3,7 +3,7 @@ * @param text 原始文字 * @returns 重整化的文字 */ -export function normalize (text: string) { +export function normalize(text: string) { // 保留完整标题 if (!text.endsWith('...')) { return text diff --git a/src/plugin/proxy/index.ts b/src/plugin/proxy/index.ts index 471f889..0927954 100644 --- a/src/plugin/proxy/index.ts +++ b/src/plugin/proxy/index.ts @@ -5,30 +5,42 @@ // spell-checker: words webvpn -import { readFile } from 'fs/promises' -import { Headers } from 'node-fetch' -import VirtualBIT, { cli, decrypt_URL, encrypt_URL } from 'virtual-bit-network' -import { parse } from 'yaml' -import { config as all_config, HookCollectionType } from '../../core/index.js' -import { logger } from '../../util/logger.js' +import VirtualBIT, { + cli, + decrypt_URL, + encrypt_URL, +} from './virtual-bit-network/index.ts' +import { parse } from 'npm:yaml' +import { config as all_config, HookCollectionType } from '../../core/index.ts' +import { logger } from '../../util/logger.ts' -async function load_config ({ secrets_path, match: hostnames }: { secrets_path: string, match: string[] }) { - const file = await readFile(secrets_path) - const secrets = parse(file.toString()) as { username: string, password: string } +async function load_config( + { secrets_path, match: hostnames }: { + secrets_path: string + match: string[] + }, +) { + const file = await Deno.readTextFile(secrets_path) + const secrets = parse(file.toString()) as { + username: string + password: string + } return { secrets, hostnames } } -// @ts-ignore +// @ts-ignore 允许扩展设置 const config = await load_config(all_config.proxy) const proxy = new VirtualBIT(config.secrets) -await proxy.sign_in(cli.display_captcha_then_ask_from_command_line({ width: '80%' })) +await proxy.sign_in( + cli.display_captcha_then_ask_from_command_line({ width: '80%' }), +) logger.info('Signed in successfully.', { plugin: 'proxy' }) // 下面一行是玄学。有些网站(如 mec)的二级页面需要先用`proxy`访问任意网址,不然会炸。 await proxy.fetch('http://mec.bit.edu.cn') -export default function add_proxy_hook (hook: HookCollectionType) { - hook.wrap('request', async (original_fetch, options) => { +export default function add_proxy_hook(hook: HookCollectionType) { + hook.wrap('request', (original_fetch, options) => { if (!config.hostnames.includes((new URL(options.url)).hostname)) { return original_fetch(options) } diff --git a/src/plugin/proxy/lib/encryptPassword.d.ts b/src/plugin/proxy/lib/encryptPassword.d.ts new file mode 100644 index 0000000..000477d --- /dev/null +++ b/src/plugin/proxy/lib/encryptPassword.d.ts @@ -0,0 +1,8 @@ +/** + * @param password 原始密码 + * @param salt {@link Preparation}中的`salt` + * @returns 加密后的密码 + * + * 在原网站中,后端只接收加密后的密码,前端匿名,因此有这一步骤。 + */ +export function encryptPassword(password: string, salt: string): string diff --git a/src/plugin/proxy/lib/encryptPassword.js b/src/plugin/proxy/lib/encryptPassword.js new file mode 100644 index 0000000..15cf38a --- /dev/null +++ b/src/plugin/proxy/lib/encryptPassword.js @@ -0,0 +1,744 @@ +/** + * [Original version on bit.edu.cn](https://login.bit.edu.cn/authserver/bitColor/static/common/encrypt.js). + * + * [Modified by flwfdd in February 2022.](https://github.com/flwfdd/BIT101/blob/e196258e6048db798baeaeb8a03d098ae7ca4479/src/utils/EncryptPassword.js) + */ + +// deno-lint-ignore-file +// deno-fmt-ignore-file +var CryptoJS = CryptoJS || function (u, p) { + var d = {}, + l = d.lib = {}, + s = function () { }, + t = l.Base = { + extend: function (a) { + s.prototype = this; + var c = new s; + a && c.mixIn(a); + c.hasOwnProperty("init") || (c.init = function () { + c.$super.init.apply(this, arguments) + }); + c.init.prototype = c; + c.$super = this; + return c + }, + create: function () { + var a = this.extend(); + a.init.apply(a, arguments); + return a + }, + init: function () { }, + mixIn: function (a) { + for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); + a.hasOwnProperty("toString") && (this.toString = a.toString) + }, + clone: function () { + return this.init.prototype.extend(this) + } + }, + r = l.WordArray = t.extend({ + init: function (a, c) { + a = this.words = a || []; + this.sigBytes = c != p ? c : 4 * a.length + }, + toString: function (a) { + return (a || v).stringify(this) + }, + concat: function (a) { + var c = this.words, + e = a.words, + j = this.sigBytes; + a = a.sigBytes; + this.clamp(); + if (j % 4) + for (var k = 0; k < a; k++) c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4); + else if (65535 < e.length) + for (k = 0; k < a; k += 4) c[j + k >>> 2] = e[k >>> 2]; + else c.push.apply(c, e); + this.sigBytes += a; + return this + }, + clamp: function () { + var a = this.words, + c = this.sigBytes; + a[c >>> 2] &= 4294967295 << + 32 - 8 * (c % 4); + a.length = u.ceil(c / 4) + }, + clone: function () { + var a = t.clone.call(this); + a.words = this.words.slice(0); + return a + }, + random: function (a) { + for (var c = [], e = 0; e < a; e += 4) c.push(4294967296 * u.random() | 0); + return new r.init(c, a) + } + }), + w = d.enc = {}, + v = w.Hex = { + stringify: function (a) { + var c = a.words; + a = a.sigBytes; + for (var e = [], j = 0; j < a; j++) { + var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255; + e.push((k >>> 4).toString(16)); + e.push((k & 15).toString(16)) + } + return e.join("") + }, + parse: function (a) { + for (var c = a.length, e = [], j = 0; j < c; j += 2) e[j >>> 3] |= parseInt(a.substr(j, + 2), 16) << 24 - 4 * (j % 8); + return new r.init(e, c / 2) + } + }, + b = w.Latin1 = { + stringify: function (a) { + var c = a.words; + a = a.sigBytes; + for (var e = [], j = 0; j < a; j++) e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); + return e.join("") + }, + parse: function (a) { + for (var c = a.length, e = [], j = 0; j < c; j++) e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4); + return new r.init(e, c) + } + }, + x = w.Utf8 = { + stringify: function (a) { + try { + return decodeURIComponent(escape(b.stringify(a))) + } catch (c) { + throw Error("Malformed UTF-8 data"); + } + }, + parse: function (a) { + return b.parse(unescape(encodeURIComponent(a))) + } + }, + q = l.BufferedBlockAlgorithm = t.extend({ + reset: function () { + this._data = new r.init; + this._nDataBytes = 0 + }, + _append: function (a) { + "string" == typeof a && (a = x.parse(a)); + this._data.concat(a); + this._nDataBytes += a.sigBytes + }, + _process: function (a) { + var c = this._data, + e = c.words, + j = c.sigBytes, + k = this.blockSize, + b = j / (4 * k), + b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0); + a = b * k; + j = u.min(4 * a, j); + if (a) { + for (var q = 0; q < a; q += k) this._doProcessBlock(e, q); + q = e.splice(0, a); + c.sigBytes -= j + } + return new r.init(q, j) + }, + clone: function () { + var a = t.clone.call(this); + a._data = this._data.clone(); + return a + }, + _minBufferSize: 0 + }); + l.Hasher = q.extend({ + cfg: t.extend(), + init: function (a) { + this.cfg = this.cfg.extend(a); + this.reset() + }, + reset: function () { + q.reset.call(this); + this._doReset() + }, + update: function (a) { + this._append(a); + this._process(); + return this + }, + finalize: function (a) { + a && this._append(a); + return this._doFinalize() + }, + blockSize: 16, + _createHelper: function (a) { + return function (b, e) { + return (new a.init(e)).finalize(b) + } + }, + _createHmacHelper: function (a) { + return function (b, e) { + return (new n.HMAC.init(a, + e)).finalize(b) + } + } + }); + var n = d.algo = {}; + return d +}(Math); +(function () { + var u = CryptoJS, + p = u.lib.WordArray; + u.enc.Base64 = { + stringify: function (d) { + var l = d.words, + p = d.sigBytes, + t = this._map; + d.clamp(); + d = []; + for (var r = 0; r < p; r += 3) + for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++) d.push(t.charAt(w >>> 6 * (3 - v) & 63)); + if (l = t.charAt(64)) + for (; d.length % 4;) d.push(l); + return d.join("") + }, + parse: function (d) { + var l = d.length, + s = this._map, + t = s.charAt(64); + t && (t = d.indexOf(t), -1 != t && (l = t)); + for (var t = [], r = 0, w = 0; w < + l; w++) + if (w % 4) { + var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), + b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4); + t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4); + r++ + } + return p.create(t, r) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + } +})(); +(function (u) { + function p(b, n, a, c, e, j, k) { + b = b + (n & a | ~n & c) + e + k; + return (b << j | b >>> 32 - j) + n + } + + function d(b, n, a, c, e, j, k) { + b = b + (n & c | a & ~c) + e + k; + return (b << j | b >>> 32 - j) + n + } + + function l(b, n, a, c, e, j, k) { + b = b + (n ^ a ^ c) + e + k; + return (b << j | b >>> 32 - j) + n + } + + function s(b, n, a, c, e, j, k) { + b = b + (a ^ (n | ~c)) + e + k; + return (b << j | b >>> 32 - j) + n + } + for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++) b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0; + r = r.MD5 = v.extend({ + _doReset: function () { + this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878]) + }, + _doProcessBlock: function (q, n) { + for (var a = 0; 16 > a; a++) { + var c = n + a, + e = q[c]; + q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360 + } + var a = this._hash.words, + c = q[n + 0], + e = q[n + 1], + j = q[n + 2], + k = q[n + 3], + z = q[n + 4], + r = q[n + 5], + t = q[n + 6], + w = q[n + 7], + v = q[n + 8], + A = q[n + 9], + B = q[n + 10], + C = q[n + 11], + u = q[n + 12], + D = q[n + 13], + E = q[n + 14], + x = q[n + 15], + f = a[0], + m = a[1], + g = a[2], + h = a[3], + f = p(f, m, g, h, c, 7, b[0]), + h = p(h, f, m, g, e, 12, b[1]), + g = p(g, h, f, m, j, 17, b[2]), + m = p(m, g, h, f, k, 22, b[3]), + f = p(f, m, g, h, z, 7, b[4]), + h = p(h, f, m, g, r, 12, b[5]), + g = p(g, h, f, m, t, 17, b[6]), + m = p(m, g, h, f, w, 22, b[7]), + f = p(f, m, g, h, v, 7, b[8]), + h = p(h, f, m, g, A, 12, b[9]), + g = p(g, h, f, m, B, 17, b[10]), + m = p(m, g, h, f, C, 22, b[11]), + f = p(f, m, g, h, u, 7, b[12]), + h = p(h, f, m, g, D, 12, b[13]), + g = p(g, h, f, m, E, 17, b[14]), + m = p(m, g, h, f, x, 22, b[15]), + f = d(f, m, g, h, e, 5, b[16]), + h = d(h, f, m, g, t, 9, b[17]), + g = d(g, h, f, m, C, 14, b[18]), + m = d(m, g, h, f, c, 20, b[19]), + f = d(f, m, g, h, r, 5, b[20]), + h = d(h, f, m, g, B, 9, b[21]), + g = d(g, h, f, m, x, 14, b[22]), + m = d(m, g, h, f, z, 20, b[23]), + f = d(f, m, g, h, A, 5, b[24]), + h = d(h, f, m, g, E, 9, b[25]), + g = d(g, h, f, m, k, 14, b[26]), + m = d(m, g, h, f, v, 20, b[27]), + f = d(f, m, g, h, D, 5, b[28]), + h = d(h, f, + m, g, j, 9, b[29]), + g = d(g, h, f, m, w, 14, b[30]), + m = d(m, g, h, f, u, 20, b[31]), + f = l(f, m, g, h, r, 4, b[32]), + h = l(h, f, m, g, v, 11, b[33]), + g = l(g, h, f, m, C, 16, b[34]), + m = l(m, g, h, f, E, 23, b[35]), + f = l(f, m, g, h, e, 4, b[36]), + h = l(h, f, m, g, z, 11, b[37]), + g = l(g, h, f, m, w, 16, b[38]), + m = l(m, g, h, f, B, 23, b[39]), + f = l(f, m, g, h, D, 4, b[40]), + h = l(h, f, m, g, c, 11, b[41]), + g = l(g, h, f, m, k, 16, b[42]), + m = l(m, g, h, f, t, 23, b[43]), + f = l(f, m, g, h, A, 4, b[44]), + h = l(h, f, m, g, u, 11, b[45]), + g = l(g, h, f, m, x, 16, b[46]), + m = l(m, g, h, f, j, 23, b[47]), + f = s(f, m, g, h, c, 6, b[48]), + h = s(h, f, m, g, w, 10, b[49]), + g = s(g, h, f, m, + E, 15, b[50]), + m = s(m, g, h, f, r, 21, b[51]), + f = s(f, m, g, h, u, 6, b[52]), + h = s(h, f, m, g, k, 10, b[53]), + g = s(g, h, f, m, B, 15, b[54]), + m = s(m, g, h, f, e, 21, b[55]), + f = s(f, m, g, h, v, 6, b[56]), + h = s(h, f, m, g, x, 10, b[57]), + g = s(g, h, f, m, t, 15, b[58]), + m = s(m, g, h, f, D, 21, b[59]), + f = s(f, m, g, h, z, 6, b[60]), + h = s(h, f, m, g, C, 10, b[61]), + g = s(g, h, f, m, j, 15, b[62]), + m = s(m, g, h, f, A, 21, b[63]); + a[0] = a[0] + f | 0; + a[1] = a[1] + m | 0; + a[2] = a[2] + g | 0; + a[3] = a[3] + h | 0 + }, + _doFinalize: function () { + var b = this._data, + n = b.words, + a = 8 * this._nDataBytes, + c = 8 * b.sigBytes; + n[c >>> 5] |= 128 << 24 - c % 32; + var e = u.floor(a / + 4294967296); + n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360; + n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360; + b.sigBytes = 4 * (n.length + 1); + this._process(); + b = this._hash; + n = b.words; + for (a = 0; 4 > a; a++) c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; + return b + }, + clone: function () { + var b = v.clone.call(this); + b._hash = this._hash.clone(); + return b + } + }); + t.MD5 = v._createHelper(r); + t.HmacMD5 = v._createHmacHelper(r) +})(Math); +(function () { + var u = CryptoJS, + p = u.lib, + d = p.Base, + l = p.WordArray, + p = u.algo, + s = p.EvpKDF = d.extend({ + cfg: d.extend({ + keySize: 4, + hasher: p.MD5, + iterations: 1 + }), + init: function (d) { + this.cfg = this.cfg.extend(d) + }, + compute: function (d, r) { + for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) { + n && s.update(n); + var n = s.update(d).finalize(r); + s.reset(); + for (var a = 1; a < p; a++) n = s.finalize(n), s.reset(); + b.concat(n) + } + b.sigBytes = 4 * q; + return b + } + }); + u.EvpKDF = function (d, l, p) { + return s.create(p).compute(d, + l) + } +})(); +CryptoJS.lib.Cipher || function (u) { + var p = CryptoJS, + d = p.lib, + l = d.Base, + s = d.WordArray, + t = d.BufferedBlockAlgorithm, + r = p.enc.Base64, + w = p.algo.EvpKDF, + v = d.Cipher = t.extend({ + cfg: l.extend(), + createEncryptor: function (e, a) { + return this.create(this._ENC_XFORM_MODE, e, a) + }, + createDecryptor: function (e, a) { + return this.create(this._DEC_XFORM_MODE, e, a) + }, + init: function (e, a, b) { + this.cfg = this.cfg.extend(b); + this._xformMode = e; + this._key = a; + this.reset() + }, + reset: function () { + t.reset.call(this); + this._doReset() + }, + process: function (e) { + this._append(e); + return this._process() + }, + finalize: function (e) { + e && this._append(e); + return this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function (e) { + return { + encrypt: function (b, k, d) { + return ("string" == typeof k ? c : a).encrypt(e, b, k, d) + }, + decrypt: function (b, k, d) { + return ("string" == typeof k ? c : a).decrypt(e, b, k, d) + } + } + } + }); + d.StreamCipher = v.extend({ + _doFinalize: function () { + return this._process(!0) + }, + blockSize: 1 + }); + var b = p.mode = {}, + x = function (e, a, b) { + var c = this._iv; + c ? this._iv = u : c = this._prevBlock; + for (var d = 0; d < b; d++) e[a + d] ^= + c[d] + }, + q = (d.BlockCipherMode = l.extend({ + createEncryptor: function (e, a) { + return this.Encryptor.create(e, a) + }, + createDecryptor: function (e, a) { + return this.Decryptor.create(e, a) + }, + init: function (e, a) { + this._cipher = e; + this._iv = a + } + })).extend(); + q.Encryptor = q.extend({ + processBlock: function (e, a) { + var b = this._cipher, + c = b.blockSize; + x.call(this, e, a, c); + b.encryptBlock(e, a); + this._prevBlock = e.slice(a, a + c) + } + }); + q.Decryptor = q.extend({ + processBlock: function (e, a) { + var b = this._cipher, + c = b.blockSize, + d = e.slice(a, a + c); + b.decryptBlock(e, a); + x.call(this, + e, a, c); + this._prevBlock = d + } + }); + b = b.CBC = q; + q = (p.pad = {}).Pkcs7 = { + pad: function (a, b) { + for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) l.push(d); + c = s.create(l, c); + a.concat(c) + }, + unpad: function (a) { + a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255 + } + }; + d.BlockCipher = v.extend({ + cfg: v.cfg.extend({ + mode: b, + padding: q + }), + reset: function () { + v.reset.call(this); + var a = this.cfg, + b = a.iv, + a = a.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; + else c = a.createDecryptor, this._minBufferSize = 1; + this._mode = c.call(a, + this, b && b.words) + }, + _doProcessBlock: function (a, b) { + this._mode.processBlock(a, b) + }, + _doFinalize: function () { + var a = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + a.pad(this._data, this.blockSize); + var b = this._process(!0) + } else b = this._process(!0), a.unpad(b); + return b + }, + blockSize: 4 + }); + var n = d.CipherParams = l.extend({ + init: function (a) { + this.mixIn(a) + }, + toString: function (a) { + return (a || this.formatter).stringify(this) + } + }), + b = (p.format = {}).OpenSSL = { + stringify: function (a) { + var b = a.ciphertext; + a = a.salt; + return (a ? s.create([1398893684, + 1701076831 + ]).concat(a).concat(b) : b).toString(r) + }, + parse: function (a) { + a = r.parse(a); + var b = a.words; + if (1398893684 == b[0] && 1701076831 == b[1]) { + var c = s.create(b.slice(2, 4)); + b.splice(0, 4); + a.sigBytes -= 16 + } + return n.create({ + ciphertext: a, + salt: c + }) + } + }, + a = d.SerializableCipher = l.extend({ + cfg: l.extend({ + format: b + }), + encrypt: function (a, b, c, d) { + d = this.cfg.extend(d); + var l = a.createEncryptor(c, d); + b = l.finalize(b); + l = l.cfg; + return n.create({ + ciphertext: b, + key: c, + iv: l.iv, + algorithm: a, + mode: l.mode, + padding: l.padding, + blockSize: a.blockSize, + formatter: d.format + }) + }, + decrypt: function (a, b, c, d) { + d = this.cfg.extend(d); + b = this._parse(b, d.format); + return a.createDecryptor(c, d).finalize(b.ciphertext) + }, + _parse: function (a, b) { + return "string" == typeof a ? b.parse(a, this) : a + } + }), + p = (p.kdf = {}).OpenSSL = { + execute: function (a, b, c, d) { + d || (d = s.random(8)); + a = w.create({ + keySize: b + c + }).compute(a, d); + c = s.create(a.words.slice(b), 4 * c); + a.sigBytes = 4 * b; + return n.create({ + key: a, + iv: c, + salt: d + }) + } + }, + c = d.PasswordBasedCipher = a.extend({ + cfg: a.cfg.extend({ + kdf: p + }), + encrypt: function (b, c, d, l) { + l = this.cfg.extend(l); + d = l.kdf.execute(d, + b.keySize, b.ivSize); + l.iv = d.iv; + b = a.encrypt.call(this, b, c, d.key, l); + b.mixIn(d); + return b + }, + decrypt: function (b, c, d, l) { + l = this.cfg.extend(l); + c = this._parse(c, l.format); + d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt); + l.iv = d.iv; + return a.decrypt.call(this, b, c, d.key, l) + } + }) +}(); +(function () { + for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) a[c] = 128 > c ? c << 1 : c << 1 ^ 283; + for (var e = 0, j = 0, c = 0; 256 > c; c++) { + var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, + k = k >>> 8 ^ k & 255 ^ 99; + l[e] = k; + s[k] = e; + var z = a[e], + F = a[z], + G = a[F], + y = 257 * a[k] ^ 16843008 * k; + t[e] = y << 24 | y >>> 8; + r[e] = y << 16 | y >>> 16; + w[e] = y << 8 | y >>> 24; + v[e] = y; + y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e; + b[k] = y << 24 | y >>> 8; + x[k] = y << 16 | y >>> 16; + q[k] = y << 8 | y >>> 24; + n[k] = y; + e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1 + } + var H = [0, 1, 2, 4, 8, + 16, 32, 64, 128, 27, 54 + ], + d = d.AES = p.extend({ + _doReset: function () { + for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++) + if (j < d) e[j] = c[j]; + else { + var k = e[j - 1]; + j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24); + e[j] = e[j - d] ^ k + } + c = this._invKeySchedule = []; + for (d = 0; d < a; d++) j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>> + 8 & 255]] ^ n[l[k & 255]] + }, + encryptBlock: function (a, b) { + this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l) + }, + decryptBlock: function (a, c) { + var d = a[c + 1]; + a[c + 1] = a[c + 3]; + a[c + 3] = d; + this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s); + d = a[c + 1]; + a[c + 1] = a[c + 3]; + a[c + 3] = d + }, + _doCryptBlock: function (a, b, c, d, e, j, l, f) { + for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], + s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], + t = + d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], + n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], + g = q, + h = s, + k = t; + q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++]; + s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++]; + t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++]; + n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++]; + a[b] = q; + a[b + 1] = s; + a[b + 2] = t; + a[b + 3] = n + }, + keySize: 8 + }); + u.AES = p._createHelper(d) +})(); + +function getAesString(data, key0, iv0) { + key0 = key0.replace(/(^\s+)|(\s+$)/g, ""); + var key = CryptoJS.enc.Utf8.parse(key0); + var iv = CryptoJS.enc.Utf8.parse(iv0); + var encrypted = CryptoJS.AES.encrypt(data, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); +} + +function encryptAES(data, aesKey) { + if (!aesKey) { + return data; + } + var encrypted = getAesString(randomString(64) + data, aesKey, randomString(16)); + return encrypted; +} + +function encryptPassword(pwd0, key) { + try { + return encryptAES(pwd0, key); + } catch (e) { } + return pwd0; +} +var $aes_chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; +var aes_chars_len = $aes_chars.length; + +function randomString(len) { + var retStr = ''; + for (var i = 0; i < len; i++) { + retStr += $aes_chars.charAt(Math.floor(Math.random() * aes_chars_len)); + } + return retStr; +} + +export { + encryptPassword +} \ No newline at end of file diff --git a/src/plugin/proxy/virtual-bit-network/captcha_handlers.ts b/src/plugin/proxy/virtual-bit-network/captcha_handlers.ts new file mode 100644 index 0000000..66b17ed --- /dev/null +++ b/src/plugin/proxy/virtual-bit-network/captcha_handlers.ts @@ -0,0 +1,56 @@ +/** + * {@link CaptchaHandler}示例 + */ + +import { Buffer } from 'node:buffer' +import inquirer from 'npm:inquirer' +import terminalImage from 'npm:terminal-image' +import type { CaptchaHandler } from './webvpn.ts' + +export async function ask_from_command_line( + message = "What's the captcha? (case-insensitive)", +): Promise { + const answers = await inquirer.prompt([{ + type: 'input', + name: 'captcha', + message, + }]) as { captcha: string } + return answers.captcha +} + +/** + * 保存验证码图像到某处,让人用其他方法查看并识别 + * @param save_path 保存验证码图像的路径 + * @returns + */ +export function save_captcha_then_ask_from_command_line( + save_path: string, +): CaptchaHandler { + return async (response) => { + const file = await Deno.open(save_path, { write: true, create: true }) + response.body?.pipeTo(file.writable) + return await ask_from_command_line( + `Please check “${save_path}”. What's the captcha? (case-insensitive)`, + ) + } +} + +/** + * 直接将验证码粗糙显示到终端,让人识别 + * @param options [terminal-image](https://www.npmjs.com/package/terminal-image)的选项 + * @returns + */ +export function display_captcha_then_ask_from_command_line(options: { + width?: string | number | undefined + height?: string | number | undefined + preserveAspectRatio?: boolean | undefined +} = {}): CaptchaHandler { + return async (response) => { + const buffer = Buffer.from(await response.arrayBuffer()) + console.log(await terminalImage.buffer(buffer, options)) + + return await ask_from_command_line( + "What's the captcha above? (case-insensitive)", + ) + } +} diff --git a/src/plugin/proxy/virtual-bit-network/convert.test.ts b/src/plugin/proxy/virtual-bit-network/convert.test.ts new file mode 100644 index 0000000..8db8584 --- /dev/null +++ b/src/plugin/proxy/virtual-bit-network/convert.test.ts @@ -0,0 +1,44 @@ +import { assertEquals } from 'std/assert/mod.ts' + +import { decrypt_URL, encrypt_URL } from './convert.ts' + +const pairs = [ + { + original: 'https://dzb.bit.edu.cn/', + encrypted: + 'https://webvpn.bit.edu.cn/https/77726476706e69737468656265737421f4ed43d225397c1e7b0c9ce29b5b/', + }, + { + original: 'https://dzb.bit.edu.cn/whatever', + encrypted: + 'https://webvpn.bit.edu.cn/https/77726476706e69737468656265737421f4ed43d225397c1e7b0c9ce29b5b/whatever', + }, + { + original: 'https://dzb.bit.edu.cn/whatever/', + encrypted: + 'https://webvpn.bit.edu.cn/https/77726476706e69737468656265737421f4ed43d225397c1e7b0c9ce29b5b/whatever/', + }, + { + original: 'http://jwms.bit.edu.cn/', + encrypted: + 'https://webvpn.bit.edu.cn/http/77726476706e69737468656265737421fae04c8f69326144300d8db9d6562d/', + }, + { + original: + 'http://stu.bit.edu.cn/xsfw/sys/jbxxapp/*default/index.do#/wdxx', + encrypted: + 'https://webvpn.bit.edu.cn/http/77726476706e69737468656265737421e3e354d225397c1e7b0c9ce29b5b/xsfw/sys/jbxxapp/*default/index.do#/wdxx', + }, +] + +Deno.test('Encrypt URL', () => { + for (const { original, encrypted } of pairs) { + assertEquals(encrypt_URL(original), encrypted) + } +}) + +Deno.test('Decrypt URL', () => { + for (const { original, encrypted } of pairs) { + assertEquals(decrypt_URL(encrypted), original) + } +}) diff --git a/src/plugin/proxy/virtual-bit-network/convert.ts b/src/plugin/proxy/virtual-bit-network/convert.ts new file mode 100644 index 0000000..edf9b0e --- /dev/null +++ b/src/plugin/proxy/virtual-bit-network/convert.ts @@ -0,0 +1,147 @@ +/** + * 两种 URL 相互转换 + * + * [Original version on bit.edu.cn](https://webvpn.bit.edu.cn/wengine-vpn/js/js/portal.js) + * + * [Cleaned by spencerwooo](https://github.com/spencerwooo/bit-webvpn-converter/blob/c97806011cc3113a5090d7b7f919c7d868bd090d/src/components/convert.ts). + * + * [Modified by Y.D.X. in August 2021.](https://github.com/YDX-2147483647/bit-webvpn-converter-bidirectional/blob/917110073e6547b4820d77b6d8a4e4ab7d855fa3/src/common/convert.js) + * + * (This's the 4th version.) + */ + +import aesjs from 'npm:aes-js' + +const utf8 = aesjs.utils.utf8 +const hex = aesjs.utils.hex +const AesCfb = aesjs.ModeOfOperation.cfb + +const magic_word = 'wrdvpnisthebest!' + +const textRightAppend = (text: string, mode: string) => { + const segmentByteSize = mode === 'utf8' ? 16 : 32 + if (text.length % segmentByteSize === 0) { + return text + } + + const appendLength = segmentByteSize - (text.length % segmentByteSize) + let i = 0 + while (i++ < appendLength) { + text += '0' + } + return text +} + +const encrypt = (text: string, key: string, iv: string) => { + const textLength = text.length + text = textRightAppend(text, 'utf8') + + const keyBytes = utf8.toBytes(key) + const ivBytes = utf8.toBytes(iv) + const textBytes = utf8.toBytes(text) + + const aesCfb = new AesCfb(keyBytes, ivBytes, 16) + const encryptBytes = aesCfb.encrypt(textBytes) + + return ( + hex.fromBytes(ivBytes) + + hex.fromBytes(encryptBytes).slice(0, textLength * 2) + ) +} + +// eslint-disable-next-line +const decrypt = (text: string, key: string) => { + const textLength = (text.length - 32) / 2 + text = textRightAppend(text, 'hex') + + const keyBytes = utf8.toBytes(key) + const ivBytes = hex.toBytes(text.slice(0, 32)) + const textBytes = hex.toBytes(text.slice(32)) + + const aesCfb = new AesCfb(keyBytes, ivBytes, 16) + const decryptBytes = aesCfb.decrypt(textBytes) + + return utf8.fromBytes(decryptBytes).slice(0, textLength) +} + +/** + * 猜测 URL 协议类型 + * @param url_str + * @returns 补足协议类型的 URL + */ +function guess_protocol(url_str: string): string { + if (!url_str.includes('://')) { + if (url_str.includes('.bit.edu.cn')) { + return 'http://' + url_str + } else { + return 'https://' + url_str + } + } else { + return url_str + } +} + +/** + * 普通 URL 转 WebVPN URL + * @param url_str 普通 URL + * @returns WebVPN URL + * @version 1.0 + * @description 与 0.0 版的区别:此版本返回值是完整 URL,使用 URL API(无需特别处理 IPv6);但无法处理 SSH 等。 + * @see {@link decrypt_URL} + */ +export function encrypt_URL(url_str: string): string { + const url = new URL(guess_protocol(url_str)) + + const protocol = url.protocol.slice(0, -1).toLowerCase() // "https:" -> "https" + const port = url.port + const pathname_etc = url.pathname + url.search + url.hash + + const protocol_and_port = port ? `${protocol}-${port}` : protocol + const cipher = encrypt(url.hostname, magic_word, magic_word) + + return `https://webvpn.bit.edu.cn/${protocol_and_port}/${cipher}${pathname_etc}` +} + +/** + * WebVPN URL 转普通 URL + * @param url_str WebVPN URL + * @returns 普通 URL + * @version 1.3 Node.js 的 URL 和浏览器中的不完全相同。 + * @description 非 WebVPN URL 将报错。 + * @see {@link encrypt_URL} + */ +export function decrypt_URL(url_str: string): string { + const url = new URL(guess_protocol(url_str)) + if (url.hostname !== 'webvpn.bit.edu.cn') { + throw RangeError('只能转换 WebVPN URL。') + } + if (url.pathname === '' || url.pathname === '/') { + return url.href + } + + const [, protocol_and_port, cipher] = url.pathname.split('/', 3) + const pathname_etc = + url.pathname.slice(`/${protocol_and_port}/${cipher}`.length) + + url.search + url.hash + + const hostname = decrypt(cipher, magic_word) // `hostname`无法修改 + // ↓ 这里原来是`nothing`,可能导致之后`protocol`无法更改。 + const host_etc = new URL('https://' + hostname) + + const match_obj = protocol_and_port.match( + /^(?[-0-9a-z]+?)(-(?\d+))?$/, + ) + if (match_obj === null || match_obj.groups === undefined) { + throw RangeError('无法识别 WebVPN URL 的协议或端口。') + } + // 以下两个 URL API 都会自动转换。 + host_etc.protocol = match_obj.groups.protocol + // 此后`host_etc.href`结尾可能有“/” + host_etc.port = match_obj.groups.port + + if (host_etc.href.endsWith('/')) { + return host_etc.href.slice(0, -1) + pathname_etc + } else { + return host_etc.href + pathname_etc + } +} diff --git a/src/plugin/proxy/virtual-bit-network/index.ts b/src/plugin/proxy/virtual-bit-network/index.ts new file mode 100644 index 0000000..97eff35 --- /dev/null +++ b/src/plugin/proxy/virtual-bit-network/index.ts @@ -0,0 +1,78 @@ +import { + ask_from_command_line, + display_captcha_then_ask_from_command_line, + save_captcha_then_ask_from_command_line, +} from './captcha_handlers.ts' +import { decrypt_URL, encrypt_URL } from './convert.ts' +import { type CaptchaHandler, prepare, sign_in } from './webvpn.ts' + +export { decrypt_URL, encrypt_URL } +export type { CaptchaHandler } +export const cli = { + ask_from_command_line, + save_captcha_then_ask_from_command_line, + display_captcha_then_ask_from_command_line, +} + +export class VirtualBIT { + username: string + password: string + cookie: string | null + + constructor( + { username, password }: { username: string; password: string }, + ) { + this.username = username + this.password = password + this.cookie = null + } + + async sign_in(resolve_captcha: CaptchaHandler = () => Promise.resolve('')) { + const prep = await prepare() + await sign_in( + { username: this.username, password: this.password }, + prep, + resolve_captcha, + ) + this.cookie = prep.cookie + } + + /** + * 原始`fetch`的包装 + * @param url + * @param init + * @returns + * 传入的 cookie 会丢失。 + */ + fetch(url: RequestInfo, init?: RequestInit | undefined): Promise { + if (this.cookie === null) { + throw new Error('Should sign in first.') + } + + // 1. Encrypt the URL + if (typeof url === 'string') { + url = encrypt_URL(url) + } else { + // `Request` objects' properties are read only. + url = new Request(encrypt_URL(url.url), url) + } + + // 2. Add cookie + if (typeof url !== 'string') { + url.headers.set('cookie', this.cookie) + } + if (init?.headers) { + const headers = new Headers(init.headers) + headers.set('cookie', this.cookie) + init.headers = headers + } else if (init) { + init.headers = { cookie: this.cookie } + } else { + init = { headers: { cookie: this.cookie } } + } + + return fetch(url, init) + } +} + +export default VirtualBIT diff --git a/src/plugin/proxy/virtual-bit-network/util.ts b/src/plugin/proxy/virtual-bit-network/util.ts new file mode 100644 index 0000000..effd2da --- /dev/null +++ b/src/plugin/proxy/virtual-bit-network/util.ts @@ -0,0 +1,9 @@ +export function to_form_data( + dict: { [key: string]: string | boolean | null }, +): FormData { + const form = new FormData() + for (const [key, value] of Object.entries(dict)) { + form.append(key, value?.toString() ?? '') + } + return form +} diff --git a/src/plugin/proxy/virtual-bit-network/webvpn.ts b/src/plugin/proxy/virtual-bit-network/webvpn.ts new file mode 100644 index 0000000..3bc16ac --- /dev/null +++ b/src/plugin/proxy/virtual-bit-network/webvpn.ts @@ -0,0 +1,117 @@ +/** + * 登录网站 + */ + +import { + DOMParser, + type HTMLDocument, +} from 'https://deno.land/x/deno_dom@v0.1.42/deno-dom-wasm.ts' +import { encryptPassword } from '../lib/encryptPassword.js' +import { to_form_data } from './util.ts' + +/** auth server URL with trailing slash */ +const auth_server = + 'https://webvpn.bit.edu.cn/https/77726476706e69737468656265737421fcf84695297e6a596a468ca88d1b203b/authserver/' + +export type CaptchaHandler = (image: Response) => Promise + +export interface Preparation { + salt: string + execution: string + cookie: string +} + +export async function prepare(): Promise { + const response = await fetch(auth_server + 'login') + const document = new DOMParser().parseFromString( + await response.text(), + 'text/html', + ) as HTMLDocument + + return { + salt: document.querySelector('input#pwdEncryptSalt')?.getAttribute( + 'value', + ) as string, + execution: document.querySelector('input#execution')?.getAttribute( + 'value', + ) as string, + cookie: response.headers.get('Set-Cookie') as string, + } +} + +/** 检查是否需要验证码 */ +async function need_captcha(username: string): Promise { + const url = new URL(auth_server + 'checkNeedCaptcha.htl') + url.searchParams.set('username', username) + + const response = await fetch(url.href) + const json = await response.json() as { isNeed: boolean } + return json.isNeed +} + +/** + * 获取验证码图像 + * @param cookie {@link prepare}返回的`cookie` + * @returns HTTP 响应 + * 不总需要获取验证码,请先{@link need_captcha}。 + * + * @example + * const res = await fetch_captcha(cookie) + * res.body?.pipe(fs.createWriteStream('captcha.png')) + */ +function fetch_captcha(cookie: string): Promise { + return fetch(auth_server + 'getCaptcha.htl', { + headers: { cookie }, + }) +} + +/** + * 登录 + * @param param0 + * @param param1 {@link prepare} + * @param resolve_captcha 如果需要验证码,会从`await resolve_captcha(image)`获取验证码,其中`image`会由{@link fetch_captcha}获取。默认不填验证码。 + */ +export async function sign_in( + { username, password }: { username: string; password: string }, + { execution, cookie, salt }: Preparation, + resolve_captcha: CaptchaHandler, +): Promise { + // 1. Handle captcha + + let captcha = null as string | null + if (await need_captcha(username)) { + captcha = await fetch_captcha(cookie).then(resolve_captcha) + } + + // 2. Post the sign in form + + const response = await fetch(auth_server + 'login', { + method: 'POST', + headers: { cookie }, + body: to_form_data({ + username, + password: encryptPassword(password, salt), + captcha, + rememberMe: true, + _eventId: 'submit', + cllt: 'userNameLogin', + dllt: 'generalLogin', + lt: '', + execution, + }), + }) + + // 3. Check why failed + + if (response.status !== 200) { + const document = new DOMParser().parseFromString( + await response.text(), + 'text/html', + ) as HTMLDocument + const reason = document.querySelector('#showErrorTip')?.innerText ?? + 'Unknown reason' + throw new Error( + `Sign in failed with ${response.status} ${response.statusText}: ${reason}.`, + ) + } +} diff --git a/src/plugin/retry/index.ts b/src/plugin/retry/index.ts new file mode 100644 index 0000000..3ca5d20 --- /dev/null +++ b/src/plugin/retry/index.ts @@ -0,0 +1,48 @@ +/** + * 超时后重试 + * + * ky 遇到超时并不会重试。 + * https://github.com/sindresorhus/ky/discussions/279#discussioncomment-187602 + * https://github.com/sindresorhus/ky/issues/546 + * @module + */ + +import ky, { TimeoutError } from 'ky' +import { delay } from 'std/async/delay.ts' + +import { config, type HookCollectionType } from '../../core/index.ts' +import { logger } from '../../util/logger.ts' + +const retry_options = Object.assign({ + delay: 10_000, +}, config.retry) as { + delay: number +} + +/** + * `request`出错时用 ky 重试一次 + * + * 建议在其它`request` hook 之后调用。 + */ +export default function add_retry_hook(hook: HookCollectionType) { + hook.error('request', (error, options) => { + if (error instanceof TimeoutError) { + logger.http( + `Time is out when requesting “${options.url}”. Retry later.`, + { + plugin: 'retry', + }, + ) + + return delay(retry_options.delay).then(() => { + logger.http(`Retry “${options.url}”.`, { + plugin: 'retry', + }) + const { url, ...init } = options + return ky(url, init) + }) + } else { + throw error + } + }) +} diff --git a/src/plugin/rss/index.ts b/src/plugin/rss/index.ts index f62e1a7..8c35a87 100644 --- a/src/plugin/rss/index.ts +++ b/src/plugin/rss/index.ts @@ -4,16 +4,23 @@ * @module */ -import { config, type HookCollectionType, type Source } from '../../core/index.js' -import { write_rss } from './rss.js' +import { + config, + type HookCollectionType, + type Source, +} from '../../core/index.ts' +import { write_rss } from './rss.ts' -const { output_path, ...rss_options } = Object.assign({ max_items: 30 }, config.rss) as { +const { output_path, ...rss_options } = Object.assign( + { max_items: 30 }, + config.rss, +) as { title: string description: string link: string rss_href: string - output_path: string, - max_items: number, + output_path: string + max_items: number } /** @@ -21,16 +28,18 @@ const { output_path, ...rss_options } = Object.assign({ max_items: 30 }, config. * * 副作用:`update`的`result.all_notices`会被`populate`。 */ -export default function add_hook (hook: HookCollectionType) { +export default function add_hook(hook: HookCollectionType) { let sources = null as Source[] | null hook.before('fetch', ({ sources: s }) => { sources = s }) hook.after('update', async ({ all_notices: notices }) => { if (sources === null) { - throw new Error("Cannot generate RSS because there's no known source.") + throw new Error( + "Cannot generate RSS because there's no known source.", + ) } - notices.forEach(n => n.populate({ sources })) + notices.forEach((n) => n.populate({ sources } as { sources: Source[] })) await write_rss(notices, output_path, rss_options) }) } diff --git a/src/plugin/rss/rss.ts b/src/plugin/rss/rss.ts index 9d68db2..f0825e2 100644 --- a/src/plugin/rss/rss.ts +++ b/src/plugin/rss/rss.ts @@ -1,16 +1,16 @@ -import { writeFile } from 'fs/promises' -import xml from 'xml' -import type { Notice } from '../../core/index.js' -import { logger } from '../../util/logger.js' -import { sort_by_date, format_date } from '../../util/my_date.js' +import xml from 'npm:xml' +import type { Notice } from '../../core/index.ts' +import { logger } from '../../util/logger.ts' +import { format_date, sort_by_date } from '../../util/my_date.ts' /** * @param notice 需要 source,因此请提前{@link Notice.populate} */ -function to_feed_item (notice: Notice) { +function to_feed_item(notice: Notice) { let description: string - if (notice.source.url) { - description = `来自${notice.source_name}。` + if (notice.source?.url) { + description = + `来自${notice.source_name}。` } else if (notice.source) { description = `来自${notice.source_name}。` } else { @@ -39,8 +39,11 @@ function to_feed_item (notice: Notice) { * @param notices 需要 source,因此请提前{@link Notice.populate} * @param options @see `config.schema.json`中的`rss` */ -export function build_feed (notices: Notice[], options: { - rss_href: string, title: string, link: string, description: string +export function build_feed(notices: Notice[], options: { + rss_href: string + title: string + link: string + description: string }) { const feed_obj = { rss: [ @@ -90,12 +93,19 @@ export function build_feed (notices: Notice[], options: { * @param notices 需要 source,因此请提前{@link Notice.populate} * @param options */ -export async function write_rss (notices: Notice[], path: string, options: { - rss_href: string; title: string; link: string; description: string, max_items: number +export async function write_rss(notices: Notice[], path: string, options: { + rss_href: string + title: string + link: string + description: string + max_items: number }) { const { max_items, ...rss_options } = options notices.sort(sort_by_date) - await writeFile(path, build_feed(notices.slice(0, max_items), rss_options)) + await Deno.writeTextFile( + path, + build_feed(notices.slice(0, max_items), rss_options), + ) logger.info(`已保存到“${path}”。`, { plugin: 'rss' }) } diff --git a/src/util/logger.ts b/src/util/logger.ts index 905538a..59c6c2b 100644 --- a/src/util/logger.ts +++ b/src/util/logger.ts @@ -1,4 +1,4 @@ -import { createLogger, format, transports } from 'winston' +import { createLogger, format, transports } from 'npm:winston' const logger = createLogger({ level: 'silly', @@ -11,18 +11,20 @@ const logger = createLogger({ ], }) -if (process.env.NODE_ENV !== 'production') { - logger.add(new transports.Console({ - level: 'info', - format: format.combine( - format.colorize({ all: true }), - format.simple(), - format.printf(info => { - const plugin = info.plugin ? `(${info.plugin})` : '' - return `${info.level}: ${info.message}${plugin}` - }), - ), - })) +if (Deno.env.get('NODE_ENV') !== 'production') { + logger.add( + new transports.Console({ + level: 'info', + format: format.combine( + format.colorize({ all: true }), + format.simple(), + format.printf((info) => { + const plugin = info.plugin ? `(${info.plugin})` : '' + return `${info.level}: ${info.message}${plugin}` + }), + ), + }), + ) } export { logger } diff --git a/src/util/my_date.test.ts b/src/util/my_date.test.ts index d4675ad..170dd76 100644 --- a/src/util/my_date.test.ts +++ b/src/util/my_date.test.ts @@ -1,72 +1,74 @@ -import { assert } from 'chai' -import { describe, it } from 'mocha' +import { assertEquals } from 'std/assert/mod.ts' -import { parse_date, sort_by_date, format_date } from './my_date.js' +import { format_date, parse_date, sort_by_date } from './my_date.ts' -function assert_date (actual: Date, expected: Date) { - assert.equal(actual.toString(), expected.toString()) +function assert_date(actual: Date, expected: Date) { + assertEquals(actual.toString(), expected.toString()) } -function assert_dates (actual: { date: Date | null }[], expected: { date: Date | null }[]) { - assert.equal(actual.length, expected.length) +function assert_dates( + actual: { date: Date | null }[], + expected: { date: Date | null }[], +) { + assertEquals(actual.length, expected.length) actual.forEach((a, index) => { const e = expected[index] - assert.equal(a.date?.toString() ?? a.date, - e.date?.toString() ?? e.date) + assertEquals(a.date?.toString() ?? a.date, e.date?.toString() ?? e.date) }) } -describe('解析日期', () => { - it('默认按本地时间解析(不按ISO)', () => { - assert_date(parse_date('2021-6-20'), new Date(2021, 5, 20)) - }) - it('完整的ISO字符串还是按ISO解析', () => { - assert_date(parse_date('2021-12-10T20:00:00.000Z'), new Date('2021-12-10T20:00:00.000Z')) - }) - it('用空格分隔的ISO日期和时间', () => { - assert_date(parse_date('2023-03-31 17:28:49'), new Date(2023, 2, 31, 17, 28, 49)) - }) - it('省略“年”时理解为当年', () => { - assert_date(parse_date('1-1'), new Date((new Date()).getFullYear(), 0, 1)) - assert_date(parse_date('08-14'), new Date((new Date()).getFullYear(), 7, 14)) - }) - it('忽略两边的字符', () => { - assert_date(parse_date('[2021-12-10]'), new Date(2021, 11, 10)) - }) - it('支持用“-”或“/”分隔', () => { - assert_date(parse_date('1935/12/09'), new Date(1935, 11, 9)) - }) - it('可以带“年”“月”“日”', () => { - assert_date(parse_date('1921年7月23日'), new Date(1921, 6, 23)) - }) - it('可以有小时', () => { - assert_date(parse_date('2021年12月27日21时'), new Date(2021, 11, 27, 21)) - }) +Deno.test('解析日期', () => { + // '默认按本地时间解析(不按ISO)' + assert_date(parse_date('2021-6-20'), new Date(2021, 5, 20)) + // '完整的ISO字符串还是按ISO解析' + assert_date( + parse_date('2021-12-10T20:00:00.000Z'), + new Date('2021-12-10T20:00:00.000Z'), + ) + // '用空格分隔的ISO日期和时间' + assert_date( + parse_date('2023-03-31 17:28:49'), + new Date(2023, 2, 31, 17, 28, 49), + ) + // '省略“年”时理解为当年' + assert_date(parse_date('1-1'), new Date((new Date()).getFullYear(), 0, 1)) + assert_date( + parse_date('08-14'), + new Date((new Date()).getFullYear(), 7, 14), + ) + // '忽略两边的字符' + assert_date(parse_date('[2021-12-10]'), new Date(2021, 11, 10)) + // '支持用“-”或“/”分隔' + assert_date(parse_date('1935/12/09'), new Date(1935, 11, 9)) + // '可以带“年”“月”“日”' + assert_date(parse_date('1921年7月23日'), new Date(1921, 6, 23)) + // '可以有小时' + assert_date(parse_date('2021年12月27日21时'), new Date(2021, 11, 27, 21)) }) -describe('排序日期', () => { - it('都有日期时可以排序', () => { - const [a, b, c] = ['2020-01-01', '2022-02-22', '2022-02-23'] - .map(d => new Date(d)) - - const actual = [{ date: b }, { date: a }, { date: c }] - actual.sort(sort_by_date) - - assert_dates(actual, [{ date: c }, { date: b }, { date: a }]) - }) - it('日期未知的压到最后', () => { - const [a, b, c] = ['2020-01-01', '2022-02-22', '2022-02-23'] - .map(d => new Date(d)) +Deno.test('排序日期', () => { + const [a, b, c] = ['2020-01-01', '2022-02-22', '2022-02-23'] + .map((d) => new Date(d)) - const actual = [{ date: b }, { date: null }, { date: a }, { date: c }, { date: null }] - actual.sort(sort_by_date) + // '都有日期时可以排序' + assert_dates([{ date: b }, { date: a }, { date: c }].sort(sort_by_date), [ + { date: c }, + { date: b }, + { date: a }, + ]) - assert_dates(actual, [{ date: c }, { date: b }, { date: a }, { date: null }, { date: null }]) - }) + // '日期未知的压到最后' + assert_dates( + [{ date: b }, { date: null }, { date: a }, { date: c }, { date: null }] + .sort(sort_by_date), + [{ date: c }, { date: b }, { date: a }, { date: null }, { date: null }], + ) }) -describe('格式化日期', () => { - it('不含“GMT”', () => { - assert.equal(format_date(new Date(2021, 5, 20)), 'Sat, 19 Jun 2021 16:00:00 +0000') - }) +Deno.test('格式化日期', () => { + // '不含“GMT”' + assertEquals( + format_date(new Date(2021, 5, 20)), + 'Sat, 19 Jun 2021 16:00:00 +0000', + ) }) diff --git a/src/util/my_date.ts b/src/util/my_date.ts index 96586e3..7b73a8b 100644 --- a/src/util/my_date.ts +++ b/src/util/my_date.ts @@ -3,10 +3,13 @@ * @param date 2021-6-20、1-1、…… * @description 会忽略日期两边的字符。未标时区时采用本地时间。 */ -export function parse_date (date: string) { - const match = date.match(/((?\d+)[-/年])?(?\d+)[-/月](?\d+)日?((?\d+)时)?(?![-/T\s\d])/) - if (match) { - return new Date(parseInt(match.groups.year) || (new Date()).getFullYear(), +export function parse_date(date: string) { + const match = date.match( + /((?\d+)[-/年])?(?\d+)[-/月](?\d+)日?((?\d+)时)?(?![-/T\s\d])/, + ) + if (match && match.groups) { + return new Date( + parseInt(match.groups.year) || (new Date()).getFullYear(), parseInt(match.groups.month) - 1, parseInt(match.groups.day), parseInt(match.groups.hour) || 0, @@ -25,7 +28,10 @@ export function parse_date (date: string) { * notices.sort(sort_by_date) * ``` */ -export function sort_by_date (a: { date: Date | null }, b: { date: Date | null }) { +export function sort_by_date( + a: { date: Date | null }, + b: { date: Date | null }, +) { if (a.date === null) { return 1 } @@ -41,14 +47,19 @@ export function sort_by_date (a: { date: Date | null }, b: { date: Date | null } * 日期未知的也算最近。 * @param days_ago 多少天内算最近,0表示都算。 */ -export function recent_checker (days_ago: number) { +export function recent_checker(days_ago: number) { if (days_ago === 0) { - return (date: Date | null) => true + return (_date: Date | null) => true } const today = new Date() - const ago = new Date(today.getFullYear(), today.getMonth(), today.getDate() - days_ago) - return (date: Date | null) => date === null || date.getTime() >= ago.getTime() + const ago = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() - days_ago, + ) + return (date: Date | null) => + date === null || date.getTime() >= ago.getTime() } /** @@ -58,6 +69,6 @@ export function recent_checker (days_ago: number) { * * 这是为了绕开 [Joda Time parser limitation](https://github.com/clj-time/clj-time/issues/97)。 */ -export function format_date (date: Date) { +export function format_date(date: Date) { return date.toUTCString().replace(/GMT$/, '+0000') } diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 8851f28..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "module": "ESNext", - "moduleResolution": "Node", - "target": "ESNext", - "allowSyntheticDefaultImports": true, - "outDir": "dist" - }, - "exclude": [ - "node_modules" - ], - "typedocOptions": { - "entryPointStrategy": "expand", - "entryPoints": [ - "src/" - ], - "out": "docs", - "name": "Bulletin Issues Transferred", - "includeVersion": true - } -} \ No newline at end of file