From 86e433339b9695109ca538f131e68cbf7da68d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=84=86=E8=96=AF=E9=A5=BC?= Date: Mon, 9 Dec 2024 14:28:48 +0800 Subject: [PATCH] feat: Console Update arguments-builder.config.ts Update boxjs.settings.json Update CHANGELOG.md Update response.dev.js Update request.dev.js Update database.mjs Update response.js Update request.js Update setENV.mjs Update types.d.ts --- .github/workflows/build.yml | 16 +- .github/workflows/deploy.yml | 37 + .github/workflows/dev.yml | 39 + .github/workflows/draft.yml | 10 +- .github/workflows/pre-release.yml | 8 +- .github/workflows/release.yml | 6 +- .gitmodules | 3 - .npmrc | 3 + CHANGELOG.md | 18 +- arguments-builder.config.ts | 153 + biome.json | 78 + modules/Siri.macOS.plugin | 32 - modules/Siri.macOS.sgmodule | 31 - modules/Siri.plugin | 22 - modules/Siri.sgmodule | 24 - modules/Siri.snippet | 24 - modules/Siri.srmodule | 24 - modules/iRingo.Search.plugin | 29 + modules/iRingo.Search.sgmodule | 23 + modules/iRingo.Search.snippet | 23 + ...ri.stoverride => iRingo.Search.stoverride} | 26 +- modules/iRingo.Search.yaml | 54 + modules/iRingo.Spotlight.plugin | 39 + modules/iRingo.Spotlight.sgmodule | 30 + ...stoverride => iRingo.Spotlight.stoverride} | 26 +- package-lock.json | 3239 +++++++++++++---- package.json | 36 +- rollup.config.js | 7 - rollup.debug.config.js | 24 - rollup.default.config.js | 25 - rspack.dev.config.js | 43 + src/class/PegasusAPI.mjs | 10 +- src/function/database.mjs | 224 +- src/function/modifyPegasusQueryContext.mjs | 9 +- src/function/setENV.mjs | 32 +- src/request.debug.js | 418 --- src/request.dev.js | 475 +++ src/request.js | 366 +- src/response.debug.js | 223 -- src/response.dev.js | 219 ++ src/response.js | 276 +- src/utils | 1 - template/boxjs.settings.json | 1 + 43 files changed, 4399 insertions(+), 2007 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 .github/workflows/dev.yml create mode 100644 .npmrc create mode 100644 arguments-builder.config.ts create mode 100644 biome.json delete mode 100644 modules/Siri.macOS.plugin delete mode 100644 modules/Siri.macOS.sgmodule delete mode 100644 modules/Siri.plugin delete mode 100644 modules/Siri.sgmodule delete mode 100644 modules/Siri.snippet delete mode 100644 modules/Siri.srmodule create mode 100644 modules/iRingo.Search.plugin create mode 100644 modules/iRingo.Search.sgmodule create mode 100644 modules/iRingo.Search.snippet rename modules/{Siri.stoverride => iRingo.Search.stoverride} (66%) create mode 100644 modules/iRingo.Search.yaml create mode 100644 modules/iRingo.Spotlight.plugin create mode 100644 modules/iRingo.Spotlight.sgmodule rename modules/{Siri.macOS.stoverride => iRingo.Spotlight.stoverride} (68%) delete mode 100644 rollup.config.js delete mode 100644 rollup.debug.config.js delete mode 100644 rollup.default.config.js create mode 100644 rspack.dev.config.js delete mode 100644 src/request.debug.js create mode 100644 src/request.dev.js delete mode 100644 src/response.debug.js create mode 100644 src/response.dev.js delete mode 160000 src/utils create mode 100644 template/boxjs.settings.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd6b902..a5c747d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,14 +23,24 @@ jobs: cache: 'npm' - name: Install dependencies run: npm install - - name: Build + env: + NODE_AUTH_TOKEN: ${{ secrets.PACKAGE_TOKEN }} + - name: Update local package.json version from release tag + if: github.ref_type == 'tag' + uses: BellCubeDev/update-package-version-by-release-tag@v2 + with: + version: ${{ github.ref_name }} + keep-v: "false" # If set to "true", will not remove any 'v' prefix from the version number. + ignore-semver-check: "false" # If set to "true", will not check if the version number is a valid semver version. + - name: Build scripts run: npm run build + - name: Generate modules + run: npm run build:args - name: Upload artifact uses: actions/upload-artifact@master with: - name: output + name: artifact path: | - .github/RELEASE-TEMPLATE.md CHANGELOG.md rulesets modules diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..e184e60 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,37 @@ +name: Deploy +on: + push: + # Sequence of patterns matched against refs/heads + branches: + - dev + +permissions: + actions: read + contents: read + +jobs: + debug: + uses: ./.github/workflows/dev.yml + secrets: inherit + deploy: + needs: debug + runs-on: ubuntu-latest + steps: + - name: Download artifact + uses: actions/download-artifact@master + with: + name: artifact + - name: Deploy + uses: exuanbo/actions-deploy-gist@main + with: + token: ${{ secrets.GIST_TOKEN }} + gist_id: b5f0de011fabe5637ff53e585e9d061d + gist_description: " iRingo: ⭕ Siri β" + file_path: dist/request.bundle.js + - name: Deploy + uses: exuanbo/actions-deploy-gist@main + with: + token: ${{ secrets.GIST_TOKEN }} + gist_id: b5f0de011fabe5637ff53e585e9d061d + gist_description: " iRingo: ⭕ Siri β" + file_path: dist/response.bundle.js diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml new file mode 100644 index 0000000..c57c4e3 --- /dev/null +++ b/.github/workflows/dev.yml @@ -0,0 +1,39 @@ +name: Dev +on: + workflow_call: + workflow_dispatch: + +permissions: + actions: read + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@main + with: + submodules: recursive + token: ${{ secrets.SUBMODULE_TOKEN }} + ref: dev + - name: Set up Node.js + uses: actions/setup-node@main + with: + node-version: 'latest' + cache: 'npm' + - name: Install dependencies + run: npm install + env: + NODE_AUTH_TOKEN: ${{ secrets.PACKAGE_TOKEN }} + - name: Build + run: npm run build:dev + - name: Upload artifact + uses: actions/upload-artifact@master + with: + name: artifact + path: | + CHANGELOG.md + rulesets + modules + dist diff --git a/.github/workflows/draft.yml b/.github/workflows/draft.yml index a40437d..64a96d2 100644 --- a/.github/workflows/draft.yml +++ b/.github/workflows/draft.yml @@ -10,24 +10,24 @@ permissions: contents: write jobs: - test: + build: uses: ./.github/workflows/build.yml secrets: inherit draft: - needs: test + needs: build runs-on: ubuntu-latest steps: - name: Download artifact uses: actions/download-artifact@master with: - name: output + name: artifact - name: Publish Draft uses: softprops/action-gh-release@v2 with: - body_path: .github/RELEASE-TEMPLATE.md + body_path: CHANGELOG.md token: ${{ secrets.GITHUB_TOKEN }} files: | rulesets/* - dist/*.js modules/* + dist/* draft: true diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index ee304e3..405e2b2 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -3,8 +3,8 @@ on: push: # Sequence of patterns matched against refs/tags tags: - - 'v*.*.*-alpha*' - - 'v*.*.*-beta*' + - v[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+ + - v[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+ permissions: actions: read @@ -21,7 +21,7 @@ jobs: - name: Download artifact uses: actions/download-artifact@master with: - name: output + name: artifact - name: Publish Pre-Release uses: softprops/action-gh-release@v2 with: @@ -29,6 +29,6 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} files: | rulesets/* - dist/*.js modules/* + dist/* prerelease: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0933fa6..fff06af 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ on: push: # Sequence of patterns matched against refs/tags tags: - - 'v*.*.*-rc*' + - v[0-9]+.[0-9]+.[0-9]+ permissions: actions: read @@ -20,7 +20,7 @@ jobs: - name: Download artifact uses: actions/download-artifact@master with: - name: output + name: artifact - name: Publish Release uses: softprops/action-gh-release@v2 with: @@ -28,6 +28,6 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} files: | rulesets/* - dist/*.js modules/* + dist/* make_latest: "true" diff --git a/.gitmodules b/.gitmodules index 64a85f5..ede279a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "src/proto"] path = src/proto url = https://github.com/NSRingo/proto.git -[submodule "src/utils"] - path = src/utils - url = https://github.com/NanoCat-Me/utils.git diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..1b54673 --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +registry=https://registry.npmjs.org/ +@nsnanocat:registry=https://npm.pkg.github.com/ +//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} diff --git a/CHANGELOG.md b/CHANGELOG.md index 64f09c7..6b1df70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,17 @@ - * 首次发布 +### 🛠️ Bug Fixes + * 修复 `$argument` 和 `$persistentStore` 载入顺序颠倒的问题 + * 正确顺序为先读取 `$argument` 再读取 `$persistentStore (BoxJs)` + * 即,有相同键名时,`$persistentStore (BoxJs)` 的值会覆盖 `$argument` 的值 + +### ‼️ Breaking Changes + * 从脚本中移除了 `@nsnanocat/url` polyfill + * 由于 `@nsnanocat/url` 已经被移除,所以 `⭕ Siri` 项目已完全不再支持 `🚀 ShadowRocket` + +### 🔣 Dependencies + * 升级了 `@nsnanocat/util` + * `util` 由 `submodule` 更改为 `package` + * `$platform` 改为 `$app` + * 使用了全新的 `Console` polyfill + +### 🔄 Other Changes + * 打包器由 `rollup` 更改为 `rspack` diff --git a/arguments-builder.config.ts b/arguments-builder.config.ts new file mode 100644 index 0000000..9467f47 --- /dev/null +++ b/arguments-builder.config.ts @@ -0,0 +1,153 @@ +import { defineConfig } from "@iringo/arguments-builder"; +export default defineConfig({ + output: { + surge: { + path: "./dist/iRingo.Siri.sgmodule", + transformEgern: { + enable: true, + path: "./dist/iRingo.Siri.yaml", + }, + }, + loon: { + path: "./dist/iRingo.Siri.plugin", + }, + customItems: [ + { + path: "./dist/iRingo.Siri.snippet", + template: "./template/quantumultx.handlebars", + }, + { + path: "./dist/iRingo.Siri.stoverride", + template: "./template/stash.handlebars", + }, + ], + dts: { isExported: true, path: "./src/types.d.ts" }, + boxjsSettings: { + path: "./template/boxjs.settings.json", + scope: "@iRingo.Spotlight.Settings", + }, + }, + args: [ + { + key: "CountryCode", + name: "国家或地区代码", + type: "string", + defaultValue: "SG", + description: "不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。", + options: [ + { key: "AUTO", label: "🇺🇳自动(跟随系统地区设置)" }, + { key: "CN", label: "🇨🇳中国大陆" }, + { key: "HK", label: "🇭🇰中国香港" }, + { key: "TW", label: "🇹🇼中国台湾" }, + { key: "SG", label: "🇸🇬新加坡" }, + { key: "US", label: "🇺🇸美国" }, + { key: "JP", label: "🇯🇵日本" }, + { key: "AU", label: "🇦🇺澳大利亚" }, + { key: "GB", label: "🇬🇧英国" }, + { key: "KR", label: "🇰🇷韩国" }, + { key: "CA", label: "🇨🇦加拿大" }, + { key: "IE", label: "🇮🇪爱尔兰" }, + ], + }, + { + key: "Domains", + name: "搜索领域", + type: "array", + defaultValue: ["web", "itunes", "app_store", "movies", "restaurants", "maps"], + description: "启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。", + options: [ + { + key: "web", + label: "网页", + }, + { + key: "itunes", + label: "iTunes", + }, + { + key: "app_store", + label: "App Store", + }, + { + key: "movies", + label: "电影", + }, + { + key: "restaurants", + label: "餐厅", + }, + { + key: "maps", + label: "地图", + }, + ], + }, + { + key: "Functions", + name: "功能", + type: "array", + defaultValue: ["flightutilities", "lookup", "mail", "messages", "news", "safari", "siri", "spotlight", "visualintelligence"], + description: "启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。", + options: [ + { + key: "flightutilities", + label: "航班工具", + }, + { + key: "lookup", + label: "查询", + }, + { + key: "mail", + label: "邮件", + }, + { + key: "messages", + label: "信息", + }, + { + key: "news", + label: "新闻", + }, + { + key: "safari", + label: "Safari浏览器", + }, + { + key: "siri", + label: "Siri", + }, + { + key: "spotlight", + label: "聚焦搜索", + }, + { + key: "visualintelligence", + label: "视觉智能", + }, + ], + }, + { + key: "SafariSmartHistory", + name: "Safari 智能历史记录", + type: "boolean", + defaultValue: true, + description: "是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。", + }, + { + key: "LogLevel", + name: "[调试] 日志等级", + type: "string", + defaultValue: "WARN", + description: "选择脚本日志的输出等级,低于所选等级的日志将全部输出。", + options: [ + { key: "OFF", label: "关闭" }, + { key: "ERROR", label: "❌ 错误" }, + { key: "WARN", label: "⚠️ 警告" }, + { key: "INFO", label: "ℹ️ 信息" }, + { key: "DEBUG", label: "🅱️ 调试" }, + { key: "ALL", label: "全部" }, + ], + }, + ], +}); diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..37d3d39 --- /dev/null +++ b/biome.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "files": { + "ignore": [ + "**/*.bundle.js" + ], + "ignoreUnknown": false + }, + "formatter": { + "enabled": true, + "indentStyle": "tab", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 320 + }, + "javascript": { + "formatter": { + "arrowParentheses": "asNeeded", + "bracketSameLine": true, + "quoteStyle": "double" + } + }, + "json": { + "parser": { + "allowComments": true, + "allowTrailingCommas": true + } + }, + "linter": { + "enabled": true, + "rules": { + "complexity": { + "noForEach": "off", + "noStaticOnlyClass": "off", + "noUselessSwitchCase": "off", + "useArrowFunction": "info", + "useFlatMap": "off", + "useLiteralKeys": "info" + }, + "correctness": { + "noInnerDeclarations": "info", + "noSelfAssign": "off", + "noSwitchDeclarations": "info", + "noUnsafeOptionalChaining": "info" + }, + "performance": { + "noDelete": "info" + }, + "recommended": true, + "style": { + "noNegationElse": "off", + "noParameterAssign": "off", + "noUselessElse": "off", + "noVar": "info", + "useDefaultParameterLast": "info", + "useForOf": "error", + "useNodejsImportProtocol": "error", + "useNumberNamespace": "error", + "useSingleVarDeclarator": "off" + }, + "suspicious": { + "noAssignInExpressions": "info", + "noDoubleEquals": "info", + "noFallthroughSwitchClause": "info", + "noGlobalIsNan": "off", + "useDefaultSwitchClauseLast": "off" + } + } + }, + "organizeImports": { + "enabled": true + }, + "vcs": { + "clientKind": "git", + "enabled": true, + "useIgnoreFile": true + } +} diff --git a/modules/Siri.macOS.plugin b/modules/Siri.macOS.plugin deleted file mode 100644 index 57da7d1..0000000 --- a/modules/Siri.macOS.plugin +++ /dev/null @@ -1,32 +0,0 @@ -#!name= iRingo: ⭕ Siri & Spotlight -#!desc=V1️⃣ & iOS 17.6⬇️\n全面自定义「Siri与聚焦」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与聚焦」中的「询问 Siri」功能。 -#!openUrl=http://boxjs.com/#/app/iRingo.Siri -#!author=VirgilClyne[https://github.com/VirgilClyne] -#!homepage=https://github.com/NSRingo -#!manual=https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索 -#!icon=https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png -#!tag= iRingo -#!system=macOS - -[Rule] -# > Look Up (Only for Wikipedia@macOS, TUN Mode enabled required) -PROCESS-NAME,LookupViewService -DOMAIN,lookup-api.apple.com -DOMAIN,lookup-api.apple.com.edgekey.net -DOMAIN,e16991.b.akamaiedge.net - -[Script] -# Bag (iOS/macOS) -http-request ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=⭕ Siri.Bag.request -http-response ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, requires-body=1, tag=⭕ Siri.Bag.response -# Siri Suggestions & Look Up Search (iOS/macOS) -http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=🔍 Siri.Search.request -http-response ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, requires-body=1, tag=🔍 Siri.Search.response -# Siri Infomation Card (macOS) -http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/card script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=📇 Siri.Card.request -http-response ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/card script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, requires-body=1, tag=📇 Siri.Card.response -# Flight Search (iOS/macOS) -http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/flight script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=🛫 Siri.Flight.request - -[MITM] -hostname = api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.macOS.sgmodule b/modules/Siri.macOS.sgmodule deleted file mode 100644 index f55145c..0000000 --- a/modules/Siri.macOS.sgmodule +++ /dev/null @@ -1,31 +0,0 @@ -#!name= iRingo: ⭕ Siri & Spotlight -#!desc=V1️⃣ & macOS 14.5⬇️\n全面自定义「Siri与聚焦」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与聚焦」中的「询问 Siri」功能。 -#!openUrl=http://boxjs.com/#/app/iRingo.Siri -#!author=VirgilClyne[https://github.com/VirgilClyne] -#!homepage=https://github.com/NSRingo -#!manual=https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索 -#!icon=https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png -#!category= iRingo -#!system=mac -#!arguments=CountryCode:SG,Proxy:🌑Proxy -#!arguments-desc=CountryCode: 国家或地区代码\nProxy: macOS‘查询’代理策略 - -[Rule] -# > Look Up (Only for Wikipedia@macOS, Surge Enhance Mode enabled required) -RULE-SET,https://github.com/NSRingo/Siri/releases/latest/download/LookUp.Wikipedia.list,{{{Proxy}}} - -[Script] -# Bag (iOS/macOS) -⭕ Siri.Bag.request = type=http-request, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} -⭕ Siri.Bag.response = type=http-response, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument=CountryCode={{{CountryCode}}} -# Siri Suggestions & Look Up Search (iOS/macOS) -🔍 Siri.Search.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} -🔍 Siri.Search.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument=CountryCode={{{CountryCode}}} -# Siri Infomation Card (macOS) -📇 Siri.Card.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} -📇 Siri.Card.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument=CountryCode={{{CountryCode}}} -# Flight Search (iOS/macOS) -🛫 Siri.Flight.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} - -[MITM] -hostname = %APPEND% api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.plugin b/modules/Siri.plugin deleted file mode 100644 index 496b787..0000000 --- a/modules/Siri.plugin +++ /dev/null @@ -1,22 +0,0 @@ -#!name= iRingo: ⭕ Siri & Search -#!desc=V1️⃣ & iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 -#!openUrl=http://boxjs.com/#/app/iRingo.Siri -#!author=VirgilClyne[https://github.com/VirgilClyne] -#!homepage=https://github.com/NSRingo -#!manual=https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索 -#!icon=https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png -#!tag= iRingo -#!system=iOS,iPadOS,watchOS - -[Script] -# Bag (iOS/macOS) -http-request ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=⭕ Siri.Bag.request -http-response ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, requires-body=1, tag=⭕ Siri.Bag.response -# Siri Suggestions & Look Up Search (iOS/macOS) -http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=🔍 Siri.Search.request -http-response ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, requires-body=1, tag=🔍 Siri.Search.response -# Flight Search (iOS/macOS) -http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/flight script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, tag=🛫 Siri.Flight.request - -[MITM] -hostname = api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.sgmodule b/modules/Siri.sgmodule deleted file mode 100644 index 0b6f5cc..0000000 --- a/modules/Siri.sgmodule +++ /dev/null @@ -1,24 +0,0 @@ -#!name= iRingo: ⭕ Siri & Search -#!desc=V1️⃣ & iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 -#!openUrl=http://boxjs.com/#/app/iRingo.Siri -#!author=VirgilClyne[https://github.com/VirgilClyne] -#!homepage=https://github.com/NSRingo -#!manual=https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索 -#!icon=https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png -#!category= iRingo -#!system=ios -#!arguments=CountryCode:SG -#!arguments-desc=CountryCode: 国家或地区代码 - -[Script] -# Bag (iOS/macOS) -⭕ Siri.Bag.request = type=http-request, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} -⭕ Siri.Bag.response = type=http-response, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument=CountryCode={{{CountryCode}}} -# Siri Suggestions & Look Up Search (iOS/macOS) -🔍 Siri.Search.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} -🔍 Siri.Search.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument=CountryCode={{{CountryCode}}} -# Flight Search (iOS/macOS) -🛫 Siri.Flight.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument=CountryCode={{{CountryCode}}} - -[MITM] -hostname = %APPEND% api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.snippet b/modules/Siri.snippet deleted file mode 100644 index c333299..0000000 --- a/modules/Siri.snippet +++ /dev/null @@ -1,24 +0,0 @@ -#!name= iRingo: ⭕ Siri & Search -#!desc=V1️⃣ & iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 -#!openUrl=http://boxjs.com/#/app/iRingo.Siri -#!author=VirgilClyne[https://github.com/VirgilClyne] -#!homepage=https://github.com/NSRingo -#!manual=https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索 -#!icon=https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png -#!category= iRingo - -#[rewrite_local] -# ⭕ Siri Bag (iOS/macOS) -^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag url script-request-header https://github.com/NSRingo/Siri/releases/latest/download/request.js -^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag url script-response-body https://github.com/NSRingo/Siri/releases/latest/download/response.js -# 🔍 Siri Suggestions & Look Up Search (iOS/macOS) -^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search url script-request-header https://github.com/NSRingo/Siri/releases/latest/download/request.js -^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search url script-response-body https://github.com/NSRingo/Siri/releases/latest/download/response.js -# 📇 Siri Infomation Card (macOS) -^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card url script-request-header https://github.com/NSRingo/Siri/releases/latest/download/request.js -^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card url script-response-body https://github.com/NSRingo/Siri/releases/latest/download/response.js -# 🛫 Siri Flight Search (iOS/macOS) -^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight url script-request-header https://github.com/NSRingo/Siri/releases/latest/download/request.js - -#[mitm] -hostname = api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.srmodule b/modules/Siri.srmodule deleted file mode 100644 index 46b4909..0000000 --- a/modules/Siri.srmodule +++ /dev/null @@ -1,24 +0,0 @@ -#!name= iRingo: ⭕ Siri & Search -#!desc=V1️⃣ & iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 -#!openUrl=http://boxjs.com/#/app/iRingo.Siri -#!author=VirgilClyne[https://github.com/VirgilClyne] -#!homepage=https://github.com/NSRingo -#!manual=https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索 -#!icon=https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png -#!category= iRingo - -[Script] -# Bag (iOS/macOS) -⭕ Siri.Bag.request = type=http-request, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=0, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument= -⭕ Siri.Bag.response = type=http-response, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=1, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument= -# Siri Suggestions & Look Up Search (iOS/macOS) -🔍 Siri.Search.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=0, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument= -🔍 Siri.Search.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=1, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument= -# Siri Infomation Card (macOS) -📇 Siri.Card.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card, requires-body=0, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument= -📇 Siri.Card.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card, requires-body=1, script-path=https://github.com/NSRingo/Siri/releases/latest/download/response.js, argument= -# Flight Search (iOS/macOS) -🛫 Siri.Flight.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight, requires-body=0, script-path=https://github.com/NSRingo/Siri/releases/latest/download/request.js, argument= - -[MITM] -hostname = %APPEND% api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/iRingo.Search.plugin b/modules/iRingo.Search.plugin new file mode 100644 index 0000000..8c953a8 --- /dev/null +++ b/modules/iRingo.Search.plugin @@ -0,0 +1,29 @@ +#!name =  iRingo: 🔍 Search +#!desc = iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 +#!openUrl = http://boxjs.com/#/app/iRingo.Spotlight +#!author = VirgilClyne[https://github.com/VirgilClyne] +#!manual = https://nsringo.github.io/guide/Siri/siri-and-search +#!icon = https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png +#!tag =  iRingo +#!system = iOS,iPadOS,watchOS +#!system_version = 15 + +[Argument] +CountryCode = select,"SG","AUTO","CN","HK","TW","US","JP","AU","GB","KR","CA","IE",tag=国家或地区代码,desc=不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。 +Domains = input,"web,itunes,app_store,movies,restaurants,maps",tag=搜索领域,desc=启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。 +Functions = input,"flightutilities,lookup,mail,messages,news,safari,siri,spotlight,visualintelligence",tag=功能,desc=启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。 +SafariSmartHistory = switch,true,tag=Safari 智能历史记录,desc=是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。 +LogLevel = select,"WARN","OFF","ERROR","INFO","DEBUG","ALL",tag=[调试] 日志等级,desc=选择脚本日志的输出等级,低于所选等级的日志将全部输出。 + +[Script] +# Bag (iOS/macOS) +http-request ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=⭕ Siri.Bag.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +http-response ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, requires-body=1, tag=⭕ Siri.Bag.response, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +# Siri Suggestions & Look Up Search (iOS/macOS) +http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=🔍 Siri.Search.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +http-response ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, requires-body=1, tag=🔍 Siri.Search.response, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +# Flight Search (iOS/macOS) +http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/flight script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=🛫 Siri.Flight.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] + +[MITM] +hostname = api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/iRingo.Search.sgmodule b/modules/iRingo.Search.sgmodule new file mode 100644 index 0000000..d3e3a07 --- /dev/null +++ b/modules/iRingo.Search.sgmodule @@ -0,0 +1,23 @@ +#!name =  iRingo: 🔍 Search +#!desc = iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 +#!openUrl = http://boxjs.com/#/app/iRingo.Spotlight +#!author = VirgilClyne[https://github.com/VirgilClyne] +#!manual = https://nsringo.github.io/guide/Siri/siri-and-search +#!icon = https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png +#!category =  iRingo +#!system = ios +#!arguments = CountryCode:"SG",Domains:"web,itunes,app_store,movies,restaurants,maps",Functions:"flightutilities,lookup,mail,messages,news,safari,siri,spotlight,visualintelligence",SafariSmartHistory:true,LogLevel:"WARN" +#!arguments-desc = CountryCode: 国家或地区代码\n ├ AUTO: 🇺🇳自动(跟随系统地区设置)\n ├ CN: 🇨🇳中国大陆\n ├ HK: 🇭🇰中国香港\n ├ TW: 🇹🇼中国台湾\n ├ SG: 🇸🇬新加坡\n ├ US: 🇺🇸美国\n ├ JP: 🇯🇵日本\n ├ AU: 🇦🇺澳大利亚\n ├ GB: 🇬🇧英国\n ├ KR: 🇰🇷韩国\n ├ CA: 🇨🇦加拿大\n └ IE: 🇮🇪爱尔兰\n不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。\n\nDomains: 搜索领域\n ├ web: 网页\n ├ itunes: iTunes\n ├ app_store: App Store\n ├ movies: 电影\n ├ restaurants: 餐厅\n └ maps: 地图\n启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。\n\nFunctions: 功能\n ├ flightutilities: 航班工具\n ├ lookup: 查询\n ├ mail: 邮件\n ├ messages: 信息\n ├ news: 新闻\n ├ safari: Safari浏览器\n ├ siri: Siri\n ├ spotlight: 聚焦搜索\n └ visualintelligence: 视觉智能\n启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。\n\nSafariSmartHistory: Safari 智能历史记录\n是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。\n\nLogLevel: [调试] 日志等级\n ├ OFF: 关闭\n ├ ERROR: ❌ 错误\n ├ WARN: ⚠️ 警告\n ├ INFO: ℹ️ 信息\n ├ DEBUG: 🅱️ 调试\n └ ALL: 全部\n选择脚本日志的输出等级,低于所选等级的日志将全部输出。\n + +[Script] +# Bag (iOS/macOS) +⭕ Siri.Bag.request = type=http-request, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +⭕ Siri.Bag.response = type=http-response, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +# Siri Suggestions & Look Up Search (iOS/macOS) +🔍 Siri.Search.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +🔍 Siri.Search.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +# Flight Search (iOS/macOS) +🛫 Siri.Flight.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + +[MITM] +hostname = %APPEND% api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/iRingo.Search.snippet b/modules/iRingo.Search.snippet new file mode 100644 index 0000000..3a2ee2b --- /dev/null +++ b/modules/iRingo.Search.snippet @@ -0,0 +1,23 @@ +#!name =  iRingo: 🔍 Search +#!desc = iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 +#!openUrl = http://boxjs.com/#/app/iRingo.Spotlight +#!author = VirgilClyne[https://github.com/VirgilClyne] +#!manual = https://nsringo.github.io/guide/Siri/siri-and-search +#!icon = https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png +#!category =  iRingo + +#[rewrite_local] +# ⭕ Siri Bag (iOS/macOS) +^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag url script-request-header https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js +^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag url script-response-body https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js +# 🔍 Siri Suggestions & Look Up Search (iOS/macOS) +^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search url script-request-header https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js +^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search url script-response-body https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js +# 📇 Siri Infomation Card (macOS) +^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card url script-request-header https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js +^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card url script-response-body https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js +# 🛫 Siri Flight Search (iOS/macOS) +^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight url script-request-header https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js + +#[mitm] +hostname = api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.stoverride b/modules/iRingo.Search.stoverride similarity index 66% rename from modules/Siri.stoverride rename to modules/iRingo.Search.stoverride index fee020d..382f0af 100644 --- a/modules/Siri.stoverride +++ b/modules/iRingo.Search.stoverride @@ -1,13 +1,12 @@ -name: " iRingo: ⭕ Siri & Search" +name: " iRingo: 🔍 Search" desc: |- - V1️⃣ & iOS 17.6⬇️ + iOS 17.6⬇️ 全面自定义「Siri与搜索」中的「Siri 建议」功能。 本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 -openUrl: "http://boxjs.com/#/app/iRingo.Siri" +openUrl: "http://boxjs.com/#/app/iRingo.Spotlight" author: "VirgilClyne[https://github.com/VirgilClyne]" -homepage: "https://github.com/NSRingo" -manual: "https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索" -icon: "https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png" +manual: "https://nsringo.github.io/guide/Siri/siri-and-search" +icon: "https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png" category: " iRingo" http: @@ -18,50 +17,39 @@ http: - match: ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag name: Siri.request type: request - require-body: false - timeout: 5 argument: - match: ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag name: Siri.response type: response require-body: true - timeout: 10 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search name: Siri.request type: request - require-body: false - timeout: 5 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search name: Siri.response type: response require-body: true - timeout: 10 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card name: Siri.request type: request - require-body: false - timeout: 5 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card name: Siri.response type: request require-body: true - timeout: 10 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight name: Siri.request type: request - require-body: false - timeout: 5 argument: script-providers: Siri.request: - url: https://github.com/NSRingo/Siri/releases/latest/download/request.js + url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js interval: 86400 Siri.response: - url: https://github.com/NSRingo/Siri/releases/latest/download/response.js + url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js interval: 86400 diff --git a/modules/iRingo.Search.yaml b/modules/iRingo.Search.yaml new file mode 100644 index 0000000..dd7dc82 --- /dev/null +++ b/modules/iRingo.Search.yaml @@ -0,0 +1,54 @@ +name: ' iRingo: 🔍 Search' +description: iOS 17.6⬇️\n全面自定义「Siri与搜索」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与搜索」中的「询问 Siri」功能。 +compat_arguments: + CountryCode: 'SG' + Domains: 'web,itunes,app_store,movies,restaurants,maps' + Functions: 'flightutilities,lookup,mail,messages,news,safari,siri,spotlight,visualintelligence' + SafariSmartHistory: 'true' + LogLevel: 'WARN' +compat_arguments_desc: 'CountryCode: 国家或地区代码\n ├ AUTO: 🇺🇳自动(跟随系统地区设置)\n ├ CN: 🇨🇳中国大陆\n ├ HK: 🇭🇰中国香港\n ├ TW: 🇹🇼中国台湾\n ├ SG: 🇸🇬新加坡\n ├ US: 🇺🇸美国\n ├ JP: 🇯🇵日本\n ├ AU: 🇦🇺澳大利亚\n ├ GB: 🇬🇧英国\n ├ KR: 🇰🇷韩国\n ├ CA: 🇨🇦加拿大\n └ IE: 🇮🇪爱尔兰\n不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。\n\nDomains: 搜索领域\n ├ web: 网页\n ├ itunes: iTunes\n ├ app_store: App Store\n ├ movies: 电影\n ├ restaurants: 餐厅\n └ maps: 地图\n启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。\n\nFunctions: 功能\n ├ flightutilities: 航班工具\n ├ lookup: 查询\n ├ mail: 邮件\n ├ messages: 信息\n ├ news: 新闻\n ├ safari: Safari浏览器\n ├ siri: Siri\n ├ spotlight: 聚焦搜索\n └ visualintelligence: 视觉智能\n启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。\n\nSafariSmartHistory: Safari 智能历史记录\n是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。\n\nLogLevel: [调试] 日志等级\n ├ OFF: 关闭\n ├ ERROR: ❌ 错误\n ├ WARN: ⚠️ 警告\n ├ INFO: ℹ️ 信息\n ├ DEBUG: 🅱️ 调试\n └ ALL: 全部\n选择脚本日志的输出等级,低于所选等级的日志将全部输出。\n' +open_url: http://boxjs.com/#/app/iRingo.Spotlight +author: VirgilClyne[https://github.com/VirgilClyne] +manual: https://nsringo.github.io/guide/Siri/siri-and-search +icon: https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png +scriptings: +- http_request: + name: ⭕ Siri.Bag.request + match: ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag + script_url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js + arguments: + _compat.$argument: CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + body_required: false +- http_response: + name: ⭕ Siri.Bag.response + match: ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag + script_url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js + arguments: + _compat.$argument: CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + body_required: true +- http_request: + name: 🔍 Siri.Search.request + match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search + script_url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js + arguments: + _compat.$argument: CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + body_required: false +- http_response: + name: 🔍 Siri.Search.response + match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search + script_url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js + arguments: + _compat.$argument: CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + body_required: true +- http_request: + name: 🛫 Siri.Flight.request + match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight + script_url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js + arguments: + _compat.$argument: CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + body_required: false +mitm: + hostnames: + includes: + - api*.smoot.apple.com + - api.smoot.apple.cn diff --git a/modules/iRingo.Spotlight.plugin b/modules/iRingo.Spotlight.plugin new file mode 100644 index 0000000..e001ef2 --- /dev/null +++ b/modules/iRingo.Spotlight.plugin @@ -0,0 +1,39 @@ +#!name =  iRingo: 🔍 Spotlight +#!desc = macOS 14.5⬇️\n全面自定义「Siri与聚焦」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与聚焦」中的「询问 Siri」功能。 +#!openUrl = http://boxjs.com/#/app/iRingo.Spotlight +#!author = VirgilClyne[https://github.com/VirgilClyne] +#!manual = https://nsringo.github.io/guide/Siri/siri-and-search +#!icon = https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png +#!tag =  iRingo +#!system = macOS +#!system_version = 15 + +[Argument] +CountryCode = select,"SG","AUTO","CN","HK","TW","US","JP","AU","GB","KR","CA","IE",tag=国家或地区代码,desc=不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。 +Domains = input,"web,itunes,app_store,movies,restaurants,maps",tag=搜索领域,desc=启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。 +Functions = input,"flightutilities,lookup,mail,messages,news,safari,siri,spotlight,visualintelligence",tag=功能,desc=启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。 +SafariSmartHistory = switch,true,tag=Safari 智能历史记录,desc=是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。 +LogLevel = select,"WARN","OFF","ERROR","INFO","DEBUG","ALL",tag=[调试] 日志等级,desc=选择脚本日志的输出等级,低于所选等级的日志将全部输出。 + +[Rule] +# > Look Up (Only for Wikipedia@macOS, TUN Mode enabled required) +PROCESS-NAME,LookupViewService +DOMAIN,lookup-api.apple.com +DOMAIN,lookup-api.apple.com.edgekey.net +DOMAIN,e16991.b.akamaiedge.net + +[Script] +# Bag (iOS/macOS) +http-request ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=⭕ Siri.Bag.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +http-response ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, requires-body=1, tag=⭕ Siri.Bag.response, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +# Siri Suggestions & Look Up Search (iOS/macOS) +http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=🔍 Siri.Search.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +http-response ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/search script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, requires-body=1, tag=🔍 Siri.Search.response, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +# Siri Infomation Card (macOS) +http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/card script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=📇 Siri.Card.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +http-response ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/card script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, requires-body=1, tag=📇 Siri.Card.response, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] +# Flight Search (iOS/macOS) +http-request ^https?:\/\/api(2|-.+)\.smoot\.apple\.(com|cn)\/flight script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, tag=🛫 Siri.Flight.request, argument=[{CountryCode},{Domains},{Functions},{SafariSmartHistory},{LogLevel}] + +[MITM] +hostname = api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/iRingo.Spotlight.sgmodule b/modules/iRingo.Spotlight.sgmodule new file mode 100644 index 0000000..c688a77 --- /dev/null +++ b/modules/iRingo.Spotlight.sgmodule @@ -0,0 +1,30 @@ +#!name =  iRingo: 🔍 Spotlight +#!desc = macOS 14.5⬇️\n全面自定义「Siri与聚焦」中的「Siri 建议」功能。\n⚠️本模块不含自定义「Siri与聚焦」中的「询问 Siri」功能。 +#!openUrl = http://boxjs.com/#/app/iRingo.Spotlight +#!author = VirgilClyne[https://github.com/VirgilClyne] +#!manual = https://nsringo.github.io/guide/Siri/siri-and-search +#!icon = https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png +#!category =  iRingo +#!system = mac +#!arguments = Proxy:"🌑Proxy",CountryCode:"SG",Domains:"web,itunes,app_store,movies,restaurants,maps",Functions:"flightutilities,lookup,mail,messages,news,safari,siri,spotlight,visualintelligence",SafariSmartHistory:true,LogLevel:"WARN" +#!arguments-desc = Proxy: macOS‘查询’代理策略\nCountryCode: 国家或地区代码\n ├ AUTO: 🇺🇳自动(跟随系统地区设置)\n ├ CN: 🇨🇳中国大陆\n ├ HK: 🇭🇰中国香港\n ├ TW: 🇹🇼中国台湾\n ├ SG: 🇸🇬新加坡\n ├ US: 🇺🇸美国\n ├ JP: 🇯🇵日本\n ├ AU: 🇦🇺澳大利亚\n ├ GB: 🇬🇧英国\n ├ KR: 🇰🇷韩国\n ├ CA: 🇨🇦加拿大\n └ IE: 🇮🇪爱尔兰\n不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。\n\nDomains: 搜索领域\n ├ web: 网页\n ├ itunes: iTunes\n ├ app_store: App Store\n ├ movies: 电影\n ├ restaurants: 餐厅\n └ maps: 地图\n启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。\n\nFunctions: 功能\n ├ flightutilities: 航班工具\n ├ lookup: 查询\n ├ mail: 邮件\n ├ messages: 信息\n ├ news: 新闻\n ├ safari: Safari浏览器\n ├ siri: Siri\n ├ spotlight: 聚焦搜索\n └ visualintelligence: 视觉智能\n启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。\n\nSafariSmartHistory: Safari 智能历史记录\n是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。\n\nLogLevel: [调试] 日志等级\n ├ OFF: 关闭\n ├ ERROR: ❌ 错误\n ├ WARN: ⚠️ 警告\n ├ INFO: ℹ️ 信息\n ├ DEBUG: 🅱️ 调试\n └ ALL: 全部\n选择脚本日志的输出等级,低于所选等级的日志将全部输出。\n + +[Rule] +# > Look Up (Only for Wikipedia@macOS, Surge Enhance Mode enabled required) +RULE-SET,https://github.com/NSRingo/Siri/releases/download/v4.1.0/LookUp.Wikipedia.list,{{{Proxy}}} + +[Script] +# Bag (iOS/macOS) +⭕ Siri.Bag.request = type=http-request, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +⭕ Siri.Bag.response = type=http-response, pattern=^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +# Siri Suggestions & Look Up Search (iOS/macOS) +🔍 Siri.Search.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +🔍 Siri.Search.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +# Siri Infomation Card (macOS) +📇 Siri.Card.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +📇 Siri.Card.response = type=http-response, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card, requires-body=1, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" +# Flight Search (iOS/macOS) +🛫 Siri.Flight.request = type=http-request, pattern=^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight, requires-body=0, engine=webview, script-path=https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js, argument=CountryCode="{{{CountryCode}}}"&Domains="{{{Domains}}}"&Functions="{{{Functions}}}"&SafariSmartHistory="{{{SafariSmartHistory}}}"&LogLevel="{{{LogLevel}}}" + +[MITM] +hostname = %APPEND% api*.smoot.apple.com, api.smoot.apple.cn diff --git a/modules/Siri.macOS.stoverride b/modules/iRingo.Spotlight.stoverride similarity index 68% rename from modules/Siri.macOS.stoverride rename to modules/iRingo.Spotlight.stoverride index 95edee9..6b2a1d0 100644 --- a/modules/Siri.macOS.stoverride +++ b/modules/iRingo.Spotlight.stoverride @@ -1,14 +1,13 @@ -name: " iRingo: ⭕ Siri & Spotlight" +name: " iRingo: 🔍 Spotlight" desc: |- - V1️⃣ & iOS 17.6⬇️ + macOS 14.5⬇️ 全面自定义「Siri与聚焦」中的「Siri 建议」功能。 本模块不含自定义「Siri与聚焦」中的「询问 Siri」功能。 注:该覆写包含代理规则。" -openUrl: "http://boxjs.com/#/app/iRingo.Siri" +openUrl: "http://boxjs.com/#/app/iRingo.Spotlight" author: "VirgilClyne[https://github.com/VirgilClyne]" -homepage: "https://github.com/NSRingo" -manual: "https://github.com/NSRingo/Siri/wiki/⭕-Siri与搜索" -icon: "https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png" +manual: "https://nsringo.github.io/guide/Siri/siri-and-search" +icon: "https://developer.apple.com/assets/elements/icons/spotlight/spotlight-128x128.png" category: " iRingo" rules: @@ -24,50 +23,39 @@ http: - match: ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag name: Siri.request type: request - require-body: false - timeout: 5 argument: - match: ^https?:\/\/api2?\.smoot\.apple\.(com|cn)\/bag name: Siri.response type: response require-body: true - timeout: 10 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search name: Siri.request type: request - require-body: false - timeout: 5 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/search name: Siri.response type: response require-body: true - timeout: 10 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card name: Siri.request type: request - require-body: false - timeout: 5 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/card name: Siri.response type: request require-body: true - timeout: 10 argument: - match: ^https?:\/\/api(2|-.+)\.smoot\.apple\.com\/flight name: Siri.request type: request - require-body: false - timeout: 5 argument: script-providers: Siri.request: - url: https://github.com/NSRingo/Siri/releases/latest/download/request.js + url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/request.bundle.js interval: 86400 Siri.response: - url: https://github.com/NSRingo/Siri/releases/latest/download/response.js + url: https://github.com/NSRingo/Siri/releases/download/v4.1.0/response.bundle.js interval: 86400 diff --git a/package-lock.json b/package-lock.json index 5750f11..2868ef3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,47 @@ { - "name": "siri", + "name": "@iringo/siri", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "siri", + "name": "@iringo/siri", "license": "Apache-2.0", + "dependencies": { + "@nsnanocat/util": "^1.7.5", + "@protobuf-ts/runtime": "^2.9.3", + "pako": "^2.1.0" + }, "devDependencies": { + "@iringo/arguments-builder": "^1.8.5", "@protobuf-ts/plugin": "^2.9.4", - "@protobuf-ts/runtime": "^2.9.3", "@rspack/cli": "^1.0.13", "@rspack/core": "^1.0.13", - "node-polyfill-webpack-plugin": "^4.0.0", - "pako": "^2.1.0" + "node-polyfill-webpack-plugin": "^4.1.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, "node_modules/@discoveryjs/json-ext": { @@ -25,6 +54,49 @@ "node": ">=10.0.0" } }, + "node_modules/@iringo/arguments-builder": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@iringo/arguments-builder/-/arguments-builder-1.8.5.tgz", + "integrity": "sha512-uBPK73vl85d9wKDRPFndxYIHGoKavErjlRSYyeC/TOaIUdJLo/s5HlUZbnpWRdlN6qyYOq1WZeaYIEgR4JtpDg==", + "dev": true, + "dependencies": { + "@iringo/surge2egern": "^1.2.0", + "@iringo/utils": "^1.0.2", + "commander": "^12.1.0", + "date-fns": "^4.1.0", + "handlebars": "^4.7.8", + "rslog": "^1.2.3", + "ts-morph": "^23.0.0", + "zod": "^3.23.8" + }, + "bin": { + "arguments-builder": "dist/lib/bin.js" + } + }, + "node_modules/@iringo/surge2egern": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@iringo/surge2egern/-/surge2egern-1.2.0.tgz", + "integrity": "sha512-xN9vIaexB3/WoZ7ouuCiFpRV1kcrnBmIExSvzyN1OlEyolWYBHuIXZVc3TfonCiC4kMvzCdISQcr8wW2TfxLKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ora": "^5.4.1", + "puppeteer": "^23.6.1" + } + }, + "node_modules/@iringo/utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@iringo/utils/-/utils-1.0.2.tgz", + "integrity": "sha512-/WI/BZRrL/Oeesh4VWQDSepe+oqCHVyc6rpkBs9LJXqnFzclns1ftKuvqhZZ6KEnP4l2VgEWBGI7HmZuOzcwPg==", + "dev": true, + "dependencies": { + "address": "^2.0.3", + "commander": "^12.1.0", + "jiti": "^2.1.0", + "lodash": "^4.17.21", + "rslog": "^1.2.3" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -43,6 +115,35 @@ "node": ">=12" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -131,9 +232,9 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", - "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.1.tgz", + "integrity": "sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -216,6 +317,53 @@ "@module-federation/sdk": "0.5.1" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "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.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nsnanocat/util": { + "version": "1.7.5", + "resolved": "https://npm.pkg.github.com/download/@nsnanocat/util/1.7.5/1960b48068f6dac20c28c9fb80fc3f339a30af95", + "integrity": "sha512-uzP8/TZpswK+6Ln6/iaVBaVuL+jU0p0gIjNQaULQOZGlc7/+MVUcCJhITg6fmoUUdSDqBQS9br0Eibc7fkeesQ==", + "license": "Apache-2.0", + "dependencies": { + "pako": "^2.1.0" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -239,6 +387,7 @@ "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@protobuf-ts/plugin-framework": "^2.9.4", "@protobuf-ts/protoc": "^2.9.4", @@ -256,6 +405,7 @@ "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)", "dependencies": { "@protobuf-ts/runtime": "^2.9.4", "typescript": "^3.9" @@ -266,6 +416,7 @@ "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", "dev": true, + "license": "Apache-2.0", "bin": { "protoc": "protoc.js" } @@ -274,39 +425,129 @@ "version": "2.9.4", "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==", - "dev": true + "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@protobuf-ts/runtime-rpc": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@protobuf-ts/runtime": "^2.9.4" } }, + "node_modules/@puppeteer/browsers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.5.0.tgz", + "integrity": "sha512-6TQAc/5uRILE6deixJ1CR8rXyTbzXIXNgO1D0Woi9Bqicz2FV5iKP3BHYEg6o4UATCMcbQQ0jbmeaOkn/HQk2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.3.7", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@puppeteer/browsers/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@puppeteer/browsers/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@rspack/binding": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.13.tgz", - "integrity": "sha512-mnSCZ3Qb/I3LzsYoo24AG4LgmaSOIc1CS38A9L9nv4MJj8x+1D2BaLErpaaMmhqI3lQBIcBSQkN7+WbpsCP3Uw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.1.5.tgz", + "integrity": "sha512-RsSkgi56Q5XUXut0qweLSE1C4Ogcm7g/ueKoOgsbHAYVKrCs9/dTFlPHWSIAaI7QWh0GWEePR/MM2O2HIu+1rw==", "dev": true, "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.0.13", - "@rspack/binding-darwin-x64": "1.0.13", - "@rspack/binding-linux-arm64-gnu": "1.0.13", - "@rspack/binding-linux-arm64-musl": "1.0.13", - "@rspack/binding-linux-x64-gnu": "1.0.13", - "@rspack/binding-linux-x64-musl": "1.0.13", - "@rspack/binding-win32-arm64-msvc": "1.0.13", - "@rspack/binding-win32-ia32-msvc": "1.0.13", - "@rspack/binding-win32-x64-msvc": "1.0.13" + "@rspack/binding-darwin-arm64": "1.1.5", + "@rspack/binding-darwin-x64": "1.1.5", + "@rspack/binding-linux-arm64-gnu": "1.1.5", + "@rspack/binding-linux-arm64-musl": "1.1.5", + "@rspack/binding-linux-x64-gnu": "1.1.5", + "@rspack/binding-linux-x64-musl": "1.1.5", + "@rspack/binding-win32-arm64-msvc": "1.1.5", + "@rspack/binding-win32-ia32-msvc": "1.1.5", + "@rspack/binding-win32-x64-msvc": "1.1.5" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.13.tgz", - "integrity": "sha512-HepE4V5Rj53o+o8AMzlkdeBxZnsyXKrOJ2oumVtqRLXihVlMguYwNTSkjfmjAqq/4PJAhEeaeIFyomZg+zKC0A==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", + "integrity": "sha512-eEynmyPPl+OGYQ9LRFwiQosyRfcca3OQB73akqY4mqDRl39OyiBjq7347DLHJysgbm9z+B1bsiLuh2xc6mdclQ==", "cpu": [ "arm64" ], @@ -318,9 +559,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.13.tgz", - "integrity": "sha512-ucHf0q2V+K19z75BvjU6EbQggNFiz1/xJ5tSgOXUfRu5omZF1jpN/epeMGqh0MkExRwOMYKJR/pVHDw5ITcU8g==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", + "integrity": "sha512-I6HPRgogewU5v1OKe3noEzq2U1FCEYAbW+smy+lPvpTW+3X6PlVMzTT4oelhB0EXDQ+KxjXH9KpOKON1hg/JGg==", "cpu": [ "x64" ], @@ -332,9 +573,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.13.tgz", - "integrity": "sha512-0fqLWDG9Z2VKxy3u6+jLVJgT2E24Xb2umP4Jtx2uNf2+aHLXifgqUdwgCElO+dj+PpOp/q8zmV5U2DXykvPU3w==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", + "integrity": "sha512-LQnqucNa6Dr6y3By+/M2ARO4jDR3AM+PuCsHgzlYT0RDRLS+Ow3f50WbNBf7eI/DhrEA0aucYL3sz1ljguB3EA==", "cpu": [ "arm64" ], @@ -346,9 +587,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.13.tgz", - "integrity": "sha512-eK72/jAofJRcZ23FTteUh1MfTbErWYNwVLuxnliyf1f1PwH0a7exGE6ik0/y/LdAt5PWP1r8r981EEjrpsTfRQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", + "integrity": "sha512-b9L/9HJxrWY4cezPWqgj28I9Xe2XxwLHu8x0CMGobwF2XKR0QQVLAst38RW/EusJ8TURdyvNEOuRZlWEIJuYOw==", "cpu": [ "arm64" ], @@ -360,9 +601,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.13.tgz", - "integrity": "sha512-C9wGDim1Euc10qRk5ztPvgK4NAi6bi6Ck3+ugaRzYXPFIVegnFyXu2fv42j3Y0LRhBjnKMXZJzME5nQUPuT6Ug==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", + "integrity": "sha512-0az52ZXTg/ErCGC1v/oFLWByKAiXvng4euv+prwMWF6p1pA7lfLRLzdibDFO4KgC16Zlfcg3hqs7YikLng4x+w==", "cpu": [ "x64" ], @@ -374,9 +615,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.13.tgz", - "integrity": "sha512-7bQyGEoMCxXUS+RDo6qej8JjqS8kYd8CvlnfYZVUqWgCxgn19j29lKvWVibey0lnFpoJrqReOdSypbk91tSrzA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", + "integrity": "sha512-EF/LJTtCTkuti2gJnCyvXHC5Q2L5M4+RXm5kj9Bfu/t0Zmmfe6Jd5QUsifgogioeL0ZsH/Pou5QiiVcOFcqFKQ==", "cpu": [ "x64" ], @@ -388,9 +629,9 @@ ] }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.13.tgz", - "integrity": "sha512-6QOHiCwaQeCZApWRe1y8ZNZGOj00EFdX1ypOc3R1GrfSjn+UjoKhbBtgVl2w+sPTaCZ4SvknOk9usSgcWO4gOQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", + "integrity": "sha512-VEqhK6HwIHby6gtOkxIx66SkqYndiaP1ddZ3X39RLE40TY3KlNgfG/SzbN9J5Qb+8jjq3ogV8n50+wLEGkhiWw==", "cpu": [ "arm64" ], @@ -402,9 +643,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.13.tgz", - "integrity": "sha512-ucm7emxYDjTsOGNwgYGz30oKcnzXLjg/Fcs0mNMmQgMEFpwBXhczfKJimCyMIlAhQCFPP4WzrXFdf03EPuw6CA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.1.5.tgz", + "integrity": "sha512-Yi2BwYehc5/sRVgI7zTGYJKjnV8UszAJt/stWdFHaq82chHiuuF/tQd1WcBUq0Iin9ylBMo16mRJAuFkFmJ74Q==", "cpu": [ "ia32" ], @@ -416,9 +657,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.13.tgz", - "integrity": "sha512-9G/hvr47ECjDEmBCyyQTZFilmEOIQJCQvpx6hUgDWsfUApwF9LZBW/PqBCSwhY+tIErr/AurJnBVAYub0MYpHA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", + "integrity": "sha512-4UArXYqJO1Ni7TmCw1T11JnrwfpoThDdiQ9k1P1voBWK3bDahPEBOptk9ZPu2+ZuRX8hFrvumRKkLY3oy7fTMw==", "cpu": [ "x64" ], @@ -430,16 +671,16 @@ ] }, "node_modules/@rspack/cli": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-1.0.13.tgz", - "integrity": "sha512-4h6X6GNJmvXnxJtXq7mv7R62gflQ23FC+Ftw6gTpPCAjrIS7qI3oAqRlT2JdcAvkd6neAQYTtiELG0iCV7aEsw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-1.1.5.tgz", + "integrity": "sha512-R08aM5gEvRV9zSE9fIaTxT77Nu/kRtoghj9TqItFk0xTbFxai9jF1fwRTbnDv23yVGNCwPfwvPOmpqvrf3SGnQ==", "dev": true, "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.7", - "@rspack/dev-server": "1.0.5", + "@rspack/dev-server": "1.0.9", "colorette": "2.0.19", - "exit-hook": "^3.2.0", + "exit-hook": "^4.0.0", "interpret": "^3.1.1", "rechoir": "^0.8.0", "semver": "^7.6.2", @@ -447,21 +688,21 @@ "yargs": "17.6.2" }, "bin": { - "rspack": "bin/rspack" + "rspack": "bin/rspack.js" }, "peerDependencies": { "@rspack/core": "^1.0.0-alpha || ^1.x" } }, "node_modules/@rspack/core": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.13.tgz", - "integrity": "sha512-lh8toWSWcYjlOuriQ8/h0U8riaaRQfzwU0oUNykFj1xokJMSKIQFH5WQWj2DQ386uHNv52nMbc+Jiuml1vYboA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.1.5.tgz", + "integrity": "sha512-/FmxDeMuW8fJkhz8fHuCu7OiJHFKW78xclEu7LkEujWl4PqJgdWjUL/6FWIj50spRwj6PRfuc31hFSL4hbNfCA==", "dev": true, "license": "MIT", "dependencies": { "@module-federation/runtime-tools": "0.5.1", - "@rspack/binding": "1.0.13", + "@rspack/binding": "1.1.5", "@rspack/lite-tapable": "1.0.1", "caniuse-lite": "^1.0.30001616" }, @@ -478,9 +719,9 @@ } }, "node_modules/@rspack/dev-server": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.0.5.tgz", - "integrity": "sha512-S1o1j9adjqNCiSWrIv1vmVHQPXFvcBa9JvPWIGxGjei72ejz0zvO6Fd948UkRlDgCPIoY4Cy+g1GLmBkJT5MKA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.0.9.tgz", + "integrity": "sha512-VF+apLFfl5LWIhVbfkJ5ccU0Atl5mi+sGTkx+XtE1tbUmMJkde0nm/4+eaQCud7oGl+ZCzt4kW14uuzLSiEGDw==", "dev": true, "license": "MIT", "dependencies": { @@ -508,6 +749,26 @@ "node": ">=16.0.0" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ts-morph/common": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", + "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" + } + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -550,6 +811,30 @@ "@types/node": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -572,9 +857,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", - "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz", + "integrity": "sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==", "dev": true, "license": "MIT", "dependencies": { @@ -629,13 +914,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.7.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.6.tgz", - "integrity": "sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==", + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.20.0" } }, "node_modules/@types/node-forge": { @@ -649,9 +934,9 @@ } }, "node_modules/@types/qs": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", - "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", "dev": true, "license": "MIT" }, @@ -713,90 +998,101 @@ } }, "node_modules/@types/ws": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", - "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", "peer": true, @@ -805,9 +1101,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -816,85 +1112,85 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -914,19 +1210,6 @@ "license": "Apache-2.0", "peer": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -942,9 +1225,9 @@ } }, "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -954,17 +1237,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-walk": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", @@ -978,17 +1250,38 @@ "node": ">=0.4.0" } }, + "node_modules/address": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-2.0.3.tgz", + "integrity": "sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { "type": "github", @@ -1013,20 +1306,42 @@ } } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "peerDependencies": { - "ajv": "^8.8.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-html-community": { + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", @@ -1040,16 +1355,13 @@ } }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -1082,6 +1394,13 @@ "node": ">= 8" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1102,9 +1421,9 @@ } }, "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, "license": "MIT" }, @@ -1122,6 +1441,19 @@ "util": "^0.12.5" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1138,6 +1470,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1145,6 +1484,57 @@ "dev": true, "license": "MIT" }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", + "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.20.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1166,6 +1556,16 @@ ], "license": "MIT" }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -1186,6 +1586,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", @@ -1219,9 +1631,9 @@ } }, "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, "license": "MIT", "dependencies": { @@ -1259,6 +1671,16 @@ "dev": true, "license": "MIT" }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.17.0" + } + }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -1394,9 +1816,9 @@ "license": "(MIT AND Zlib)" }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -1415,10 +1837,10 @@ "license": "MIT", "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1428,9 +1850,9 @@ } }, "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -1449,7 +1871,17 @@ "license": "MIT", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" } }, "node_modules/buffer-from": { @@ -1501,17 +1933,16 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -1520,10 +1951,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001687", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", + "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", "dev": true, "funding": [ { @@ -1594,15 +2049,59 @@ "node": ">=6.0" } }, + "node_modules/chromium-bidi": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.8.0.tgz", + "integrity": "sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cliui": { @@ -1620,16 +2119,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1652,19 +2141,6 @@ "node": ">=8" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -1683,6 +2159,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "dev": true, + "license": "MIT" + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1711,13 +2204,13 @@ "license": "MIT" }, "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=18" } }, "node_modules/compressible": { @@ -1734,41 +2227,34 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", + "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", + "negotiator": "~0.6.4", "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", @@ -1851,9 +2337,9 @@ } }, "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, "license": "MIT" }, @@ -1886,10 +2372,17 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1902,26 +2395,51 @@ } }, "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", "dev": true, "license": "MIT", "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" }, "engines": { - "node": "*" + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" } }, "node_modules/debug": { @@ -1977,6 +2495,19 @@ "node": ">= 10" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -2026,6 +2557,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2065,6 +2611,13 @@ "dev": true, "license": "MIT" }, + "node_modules/devtools-protocol": { + "version": "0.0.1367902", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", + "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -2078,9 +2631,9 @@ } }, "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, "license": "MIT" }, @@ -2098,22 +2651,37 @@ } }, "node_modules/domain-browser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-5.7.0.tgz", - "integrity": "sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", "dev": true, - "license": "Artistic-2.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" }, "funding": { "url": "https://bevry.me/fund" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true, "license": "MIT" }, @@ -2132,17 +2700,17 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.40", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.40.tgz", - "integrity": "sha512-LYm78o6if4zTasnYclgQzxEcgMoIcybWOhkATWepN95uwVVWV0/IW10v+2sIeHE+bIYWipLneTftVyQm45UY7g==", + "version": "1.5.71", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", + "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", "dev": true, "license": "ISC", "peer": true }, "node_modules/elliptic": { - "version": "6.5.7", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", - "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dev": true, "license": "MIT", "dependencies": { @@ -2156,9 +2724,9 @@ } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, "license": "MIT" }, @@ -2179,6 +2747,16 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -2194,15 +2772,32 @@ "node": ">=10.13.0" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2242,6 +2837,28 @@ "dev": true, "license": "MIT" }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -2257,6 +2874,31 @@ "node": ">=8.0.0" } }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -2271,26 +2913,24 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, "node_modules/etag": { @@ -2303,16 +2943,6 @@ "node": ">= 0.6" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -2365,23 +2995,36 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/exit-hook": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-3.2.0.tgz", - "integrity": "sha512-aIQN7Q04HGAV/I5BszisuHTZHXNoC23WtLkxdCLuYZMdWviRD0TMIt2bnUBi9MrHaF/hH8b3gwG9iaAUHKnJGA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz", + "integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", "dependencies": { @@ -2404,7 +3047,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -2419,8 +3062,58 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2428,6 +3121,30 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "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-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2443,6 +3160,16 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", @@ -2456,6 +3183,16 @@ "node": ">=0.8.0" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -2488,6 +3225,23 @@ "node": ">= 0.8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -2605,17 +3359,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", + "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -2625,18 +3382,61 @@ } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -2680,13 +3480,13 @@ "peer": true }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2722,6 +3522,28 @@ "dev": true, "license": "MIT" }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2745,23 +3567,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -2788,17 +3597,17 @@ } }, "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=4" + "node": ">= 0.10" } }, "node_modules/hash.js": { @@ -2946,26 +3755,65 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { "@types/express": { "optional": true } @@ -2978,6 +3826,45 @@ "dev": true, "license": "MIT" }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3032,6 +3919,23 @@ ], "license": "BSD-3-Clause" }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -3049,6 +3953,20 @@ "node": ">=10.13.0" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -3076,6 +3994,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3202,6 +4127,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -3284,6 +4219,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-wsl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", @@ -3314,6 +4262,16 @@ "dev": true, "license": "ISC" }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -3363,20 +4321,57 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jiti": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.1.tgz", + "integrity": "sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/launch-editor": { "version": "2.9.1", @@ -3389,6 +4384,13 @@ "shell-quote": "^1.8.1" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -3400,6 +4402,22 @@ "node": ">=6.11.5" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -3407,12 +4425,32 @@ "dev": true, "license": "MIT" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=12" + } }, "node_modules/md5.js": { "version": "1.3.5", @@ -3437,9 +4475,9 @@ } }, "node_modules/memfs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.14.0.tgz", - "integrity": "sha512-JUeY0F/fQZgIod31Ja1eJgiSxLn7BfQlCnqhwXFBzFHEw63OdLK7VJUJ7bnzNsWgCyoUP5tEp1VRY8rDaYzqOA==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.15.0.tgz", + "integrity": "sha512-q9MmZXd2rRWHS6GU3WEm3HyiXZyyoA1DqdOhEq0lxPBmKb5S7IAOwX0RgUCwJfqjelDCySa5h8ujOy24LqsWcw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3473,6 +4511,16 @@ "dev": true, "license": "MIT" }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -3512,9 +4560,9 @@ } }, "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, "license": "MIT" }, @@ -3594,6 +4642,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -3604,6 +4662,29 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -3650,8 +4731,17 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, "license": "MIT", - "peer": true + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/node-forge": { "version": "1.3.1", @@ -3664,36 +4754,14 @@ } }, "node_modules/node-polyfill-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-WLk77vLpbcpmTekRj6s6vYxk30XoyaY5MDZ4+9g8OaKoG3Ij+TjOqhpQjVUlfDZBPBgpNATDltaQkzuXSnnkwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-b4ei444EKkOagG/yFqojrD3QTYM5IOU1f8tn9o6uwrG4qL+brI7oVhjPVd0ZL2xy+Z6CP5bu9w8XTvlWgiXHcw==", "dev": true, "license": "MIT", "dependencies": { - "assert": "^2.1.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^5.7.0", - "events": "^3.3.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.3.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^4.5.2", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "type-fest": "^4.18.2", - "url": "^0.11.3", - "util": "^0.12.5", - "vm-browserify": "^1.1.2" + "node-stdlib-browser": "^1.3.0", + "type-fest": "^4.27.0" }, "engines": { "node": ">=14" @@ -3702,23 +4770,6 @@ "webpack": ">=5" } }, - "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -3727,20 +4778,59 @@ "license": "MIT", "peer": true }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/node-stdlib-browser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.0.tgz", + "integrity": "sha512-g/koYzOr9Fb1Jc+tHUHlFd5gODjGn48tHexUK8q6iqOVriEgSnd3/1T7myBYc+0KBVze/7F7n65ec9rW6OD7xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.4", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { @@ -3751,9 +4841,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, "license": "MIT", "engines": { @@ -3839,6 +4929,16 @@ "node": ">= 0.8" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -3884,6 +4984,30 @@ "opener": "bin/opener-bin.js" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "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": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -3891,6 +5015,38 @@ "dev": true, "license": "MIT" }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-retry": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", @@ -3905,6 +5061,65 @@ "node": ">=8" } }, + "node_modules/pac-proxy-agent": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", + "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -3916,7 +5131,20 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", - "dev": true + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/parse-asn1": { "version": "5.1.7", @@ -3936,6 +5164,25 @@ "node": ">= 0.10" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -3953,6 +5200,16 @@ "dev": true, "license": "MIT" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -3987,10 +5244,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, @@ -4011,6 +5275,13 @@ "node": ">=0.12" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4031,6 +5302,19 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -4058,6 +5342,16 @@ "dev": true, "license": "MIT" }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -4072,6 +5366,58 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -4088,20 +5434,136 @@ } }, "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, "license": "MIT" }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/puppeteer": { + "version": "23.10.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.1.tgz", + "integrity": "sha512-kbcO+vu91fgUyBzEwByPe4q5lEEuBq4cuOZnZeRL42G7r5UrfbUFlxBJayXBLBsD6pREdk/92ZFwFQq3MaN6ww==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.5.0", + "chromium-bidi": "0.8.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1367902", + "puppeteer-core": "23.10.1", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "23.10.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.1.tgz", + "integrity": "sha512-ey6NwixHYEUnhCA/uYi7uQQ4a0CZw4k+MatbHXGl5GEzaiRQziYUxc2HGpdQZ/gnh4KQWAKkocyIg1/dIm5d0g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.5.0", + "chromium-bidi": "0.8.0", + "debug": "^4.3.7", + "devtools-protocol": "0.0.1367902", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, "node_modules/qs": { @@ -4129,6 +5591,34 @@ "node": ">=0.4.x" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -4251,15 +5741,39 @@ "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, "node_modules/retry": { @@ -4272,6 +5786,17 @@ "node": ">= 4" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", @@ -4299,6 +5824,15 @@ "inherits": "^2.0.1" } }, + "node_modules/rslog": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/rslog/-/rslog-1.2.3.tgz", + "integrity": "sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ==", + "dev": true, + "engines": { + "node": ">=14.17.6" + } + }, "node_modules/run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", @@ -4312,6 +5846,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4341,19 +5899,19 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -4602,11 +6160,14 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4652,6 +6213,17 @@ "node": ">= 10" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -4664,13 +6236,67 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -4720,9 +6346,9 @@ } }, "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -4745,9 +6371,9 @@ "license": "MIT" }, "node_modules/spdy/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -4769,6 +6395,13 @@ "dev": true, "license": "MIT" }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -4803,6 +6436,21 @@ "xtend": "^4.0.2" } }, + "node_modules/streamx": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", + "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -4847,16 +6495,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -4864,20 +6502,20 @@ "dev": true, "license": "MIT" }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/strip-ansi": { + "node_modules/string-width/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", @@ -4893,8 +6531,7 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -4907,12 +6544,16 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -4964,10 +6605,37 @@ "node": ">=6" } }, + "node_modules/tar-fs": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -5020,63 +6688,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "peer": 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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -5085,6 +6696,16 @@ "license": "MIT", "peer": true }, + "node_modules/text-decoder": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz", + "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/thingies": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", @@ -5098,6 +6719,13 @@ "tslib": "^2" } }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -5168,10 +6796,21 @@ "tslib": "2" } }, + "node_modules/ts-morph": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", + "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.24.0", + "code-block-writer": "^13.0.1" + } + }, "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, @@ -5183,9 +6822,9 @@ "license": "MIT" }, "node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "version": "4.30.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz", + "integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -5209,11 +6848,19 @@ "node": ">= 0.6" } }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "dev": true, + "license": "MIT" + }, "node_modules/typescript": { "version": "3.9.10", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5222,10 +6869,35 @@ "node": ">=4.2.0" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -5276,10 +6948,21 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", "peer": true, - "dependencies": { - "punycode": "^2.1.0" + "engines": { + "node": ">=6" } }, "node_modules/url": { @@ -5296,10 +6979,10 @@ "node": ">= 0.4" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", "dev": true, "license": "MIT" }, @@ -5386,21 +7069,31 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -5458,6 +7151,16 @@ "node": ">= 10.13.0" } }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", @@ -5510,6 +7213,63 @@ } } }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/webpack-dev-server": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", @@ -5577,6 +7337,36 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", @@ -5587,10 +7377,17 @@ "node": ">= 10" } }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/webpack-dev-server/node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5605,72 +7402,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "license": "MIT", - "peer": 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" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "license": "MIT", "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=10.13.0" } }, "node_modules/websocket-driver": { @@ -5715,9 +7475,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", + "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5734,6 +7494,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -5771,16 +7538,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5803,17 +7560,17 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { @@ -5829,6 +7586,29 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -5900,16 +7680,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5932,17 +7702,38 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" - }, + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } } } diff --git a/package.json b/package.json index dd92b50..d7e56d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,22 @@ { - "name": "siri", - "homepage": "https://github.com/NSRingo/Siri/wiki", + "name": "@iringo/siri", + "organizationName": " iRingo", + "displayName": " iRingo: ⭕ Siri", + "description": "", + "homepage": "https://NSRingo.github.io/guide/Siri/siri-and-search", + "openUrl": "http://boxjs.com/#/app/iRingo.Siri", + "icon": "https://raw.githubusercontent.com/NSRingo/Siri/main/images/icon/v1/Siri%20-%20Icon.png", + "keywords": [], + "contributors": [ + "VirgilClyne[https://github.com/VirgilClyne]" + ], + "system": [ + "iOS", + "iPadOS", + "macOS" + ], + "systemVersion": 15, + "license": "Apache-2.0", "type": "module", "repository": { "type": "git", @@ -12,21 +28,23 @@ "scripts": { "serve": "webpack serve", "build": "rspack build", - "build:dev": "rspack build -c rspack.debug.config.js --mode=development", - "build:debug": "rollup --config --configDebug" + "build:dev": "rspack build -c rspack.dev.config.js --mode=development", + "build:args": "arguments-builder build", + "dts": "arguments-builder dts" }, "browserslist": [ "iOS >= 15" ], - "keywords": [], - "author": "VirgilClyne", - "license": "Apache-2.0", "devDependencies": { + "@iringo/arguments-builder": "^1.8.5", "@protobuf-ts/plugin": "^2.9.4", - "@protobuf-ts/runtime": "^2.9.3", "@rspack/cli": "^1.0.13", "@rspack/core": "^1.0.13", - "node-polyfill-webpack-plugin": "^4.0.0", + "node-polyfill-webpack-plugin": "^4.1.0" + }, + "dependencies": { + "@nsnanocat/util": "^1.7.5", + "@protobuf-ts/runtime": "^2.9.3", "pako": "^2.1.0" } } diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 849cd3c..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import defaultConfig from './rollup.default.config.js'; -import debugConfig from './rollup.debug.config.js'; - -export default commandLineArgs => { - if (commandLineArgs.configDebug === true) return debugConfig; - return defaultConfig; -}; diff --git a/rollup.debug.config.js b/rollup.debug.config.js deleted file mode 100644 index b427b1d..0000000 --- a/rollup.debug.config.js +++ /dev/null @@ -1,24 +0,0 @@ -import json from '@rollup/plugin-json'; -import commonjs from "@rollup/plugin-commonjs"; -import { nodeResolve } from '@rollup/plugin-node-resolve'; - -export default [ - { - input: 'src/request.debug.js', - output: { - file: 'debug/request.js', - //format: 'es', - banner: `/* README: https://github.com/NSRingo */\nconsole.log(' iRingo: ⭕ Siri β Request')\nconsole.log('${new Date().toLocaleString('zh-CN', {timeZone: 'PRC'})}')`, - }, - plugins: [json(), commonjs(), nodeResolve()] - }, - { - input: 'src/response.debug.js', - output: { - file: 'debug/response.js', - //format: 'es', - banner: `/* README: https://github.com/NSRingo */\nconsole.log(' iRingo: ⭕ Siri β Response')\nconsole.log('${new Date().toLocaleString('zh-CN', {timeZone: 'PRC'})}')`, - }, - plugins: [json(), commonjs(), nodeResolve()] - } -]; diff --git a/rollup.default.config.js b/rollup.default.config.js deleted file mode 100644 index 894d78b..0000000 --- a/rollup.default.config.js +++ /dev/null @@ -1,25 +0,0 @@ -import json from '@rollup/plugin-json'; -import commonjs from "@rollup/plugin-commonjs"; -import terser from '@rollup/plugin-terser'; -import { nodeResolve } from '@rollup/plugin-node-resolve'; - -export default [ - { - input: 'src/request.js', - output: { - file: 'dist/request.js', - format: 'es', - banner: `/* README: https://github.com/NSRingo */\nconsole.log(' iRingo: ⭕ Siri Request')\nconsole.log('${new Date().toLocaleString('zh-CN', {timeZone: 'PRC'})}')`, - }, - plugins: [json(), commonjs(), nodeResolve(), terser()] - }, - { - input: 'src/response.js', - output: { - file: 'dist/response.js', - format: 'es', - banner: `/* README: https://github.com/NSRingo */\nconsole.log(' iRingo: ⭕ Siri Response')\nconsole.log('${new Date().toLocaleString('zh-CN', {timeZone: 'PRC'})}')`, - }, - plugins: [json(), commonjs(), nodeResolve(), terser()] - } -]; diff --git a/rspack.dev.config.js b/rspack.dev.config.js new file mode 100644 index 0000000..6d3b2d9 --- /dev/null +++ b/rspack.dev.config.js @@ -0,0 +1,43 @@ +import { defineConfig } from "@rspack/cli"; +import rspack from "@rspack/core"; +import NodePolyfillPlugin from "node-polyfill-webpack-plugin"; +import pkg from "./package.json" with { type: "json" }; + +export default defineConfig({ + entry: { + "request": "./src/request.dev.js", + "response": "./src/response.dev.js", + }, + output: { + filename: "[name].bundle.js", + }, + optimization: { + minimize: false, + }, + plugins: [ + new NodePolyfillPlugin({ + //additionalAliases: ['console'], + }), + new rspack.BannerPlugin({ + banner: `console.log('Date: ${new Date().toLocaleString('zh-CN', {timeZone: 'PRC'})}');`, + raw: true, + }), + new rspack.BannerPlugin({ + banner: `console.log('Version: ${pkg.version}');`, + raw: true, + }), + new rspack.BannerPlugin({ + banner: "console.log('[file]');", + raw: true, + }), + new rspack.BannerPlugin({ + banner: `console.log('${pkg.displayName} β');`, + raw: true, + }), + new rspack.BannerPlugin({ + banner: pkg.homepage, + }), + ], + devtool: false, + performance: false, +}); diff --git a/src/class/PegasusAPI.mjs b/src/class/PegasusAPI.mjs index 493e6b8..d856cab 100644 --- a/src/class/PegasusAPI.mjs +++ b/src/class/PegasusAPI.mjs @@ -1,4 +1,4 @@ -import { log } from "../utils/utils.mjs"; +import { Console } from "@nsnanocat/util"; //import { MESSAGE_TYPE, reflectionMergePartial, BinaryReader, WireType, UnknownFieldHandler, isJsonObject, typeofJsonValue, jsonWriteOptions, MessageType } from "@protobuf-ts/runtime"; import { SiriPegasusRequest } from "../proto/apple/parsec/siri/v2alpha/SiriPegasusRequest"; import { SiriPegasusContext } from "../proto/apple/parsec/siri/v2alpha/SiriPegasusContext"; @@ -8,7 +8,7 @@ export default class PegasusAPI { static Version = "1.0.1"; static Author = "VirgilClyne"; static decode(rawBody = new Uint8Array([]), message = "SiriPegasusRequest") { - log("☑️ PegasusAPI.decode", ""); + Console.log("☑️ PegasusAPI.decode"); let body = {}; switch (message) { case "SiriPegasusRequest": @@ -23,11 +23,11 @@ export default class PegasusAPI { default: throw new Error(`Unknown message type: ${message}`); }; - log("✅ PegasusAPI.decode", ""); + Console.log("✅ PegasusAPI.decode"); return body; }; static encode(body = {}, message = "SiriPegasusRequest") { - log("☑️ PegasusAPI.encode", ""); + Console.log("☑️ PegasusAPI.encode"); let rawBody = new Uint8Array([]); switch (message) { case "SiriPegasusRequest": @@ -42,7 +42,7 @@ export default class PegasusAPI { default: throw new Error(`Unknown message type: ${message}`); }; - log("✅ PegasusAPI.encode", ""); + Console.log("✅ PegasusAPI.encode"); return rawBody; }; } diff --git a/src/function/database.mjs b/src/function/database.mjs index 270ad44..9b8d346 100644 --- a/src/function/database.mjs +++ b/src/function/database.mjs @@ -1,20 +1,210 @@ export default { - "Siri": { - "Settings": { - "Switch": true, - "CountryCode": "SG", - "Region": "AUTO", - "Domains": ["web", "itunes", "app_store", "movies", "restaurants", "maps"], - "Functions": ["flightutilities", "lookup", "mail", "messages", "news", "safari", "siri", "spotlight", "visualintelligence"], - "Safari_Smart_History": true, - "SiriResponseLanguageVariant": "zh_CN" + Siri: { + Settings: { + CountryCode: "US", + Region: "AUTO", + SiriResponseLanguageVariant: "zh_CN", }, - "Configs": { - "VisualIntelligence": { - "enabled_domains": ["pets", "media", "books", "art", "nature", "landmarks"], - "supported_domains": ["ART", "BOOK", "MEDIA", "LANDMARK", "ANIMALS", "BIRDS", "FOOD", "SIGN_SYMBOL", "AUTO_SYMBOL", "DOGS", "NATURE", "NATURAL_LANDMARK", "INSECTS", "REPTILES", "ALBUM", "STOREFRONT", "LAUNDRY_CARE_SYMBOL", "CATS", "OBJECT_2D", "SCULPTURE", "SKYLINE", "MAMMALS"] + }, + Spotlight: { + Settings: { + CountryCode: "SG", + Domains: ["web", "itunes", "app_store", "movies", "restaurants", "maps"], + Functions: ["flightutilities", "lookup", "mail", "messages", "news", "safari", "siri", "spotlight", "visualintelligence"], + SafariSmartHistory: true, + }, + Configs: { + VisualIntelligence: { + EnableDomains: ["pets", "media", "books", "art", "nature", "landmarks"], + SupportedDomains: ["ART", "BOOK", "MEDIA", "LANDMARK", "ANIMALS", "BIRDS", "FOOD", "SIGN_SYMBOL", "AUTO_SYMBOL", "DOGS", "NATURE", "NATURAL_LANDMARK", "INSECTS", "REPTILES", "ALBUM", "STOREFRONT", "LAUNDRY_CARE_SYMBOL", "CATS", "OBJECT_2D", "SCULPTURE", "SKYLINE", "MAMMALS"], }, - "Storefront": {"AE":"143481","AF":"143610","AG":"143540","AI":"143538","AL":"143575","AM":"143524","AO":"143564","AR":"143505","AT":"143445","AU":"143460","AZ":"143568","BA":"143612","BB":"143541","BD":"143490","BE":"143446","BF":"143578","BG":"143526","BH":"143559","BJ":"143576","BM":"143542","BN":"143560","BO":"143556","BR":"143503","BS":"143539","BT":"143577","BW":"143525","BY":"143565","BZ":"143555","CA":"143455","CD":"143613","CG":"143582","CH":"143459","CI":"143527","CL":"143483","CM":"143574","CN":"143465","CO":"143501","CR":"143495","CV":"143580","CY":"143557","CZ":"143489","DE":"143443","DK":"143458","DM":"143545","DO":"143508","DZ":"143563","EC":"143509","EE":"143518","EG":"143516","ES":"143454","FI":"143447","FJ":"143583","FM":"143591","FR":"143442","GA":"143614","GB":"143444","GD":"143546","GF":"143615","GH":"143573","GM":"143584","GR":"143448","GT":"143504","GW":"143585","GY":"143553","HK":"143463","HN":"143510","HR":"143494","HU":"143482","ID":"143476","IE":"143449","IL":"143491","IN":"143467","IQ":"143617","IS":"143558","IT":"143450","JM":"143511","JO":"143528","JP":"143462","KE":"143529","KG":"143586","KH":"143579","KN":"143548","KP":"143466","KR":"143466","KW":"143493","KY":"143544","KZ":"143517","TC":"143552","TD":"143581","TJ":"143603","TH":"143475","TM":"143604","TN":"143536","TO":"143608","TR":"143480","TT":"143551","TW":"143470","TZ":"143572","LA":"143587","LB":"143497","LC":"143549","LI":"143522","LK":"143486","LR":"143588","LT":"143520","LU":"143451","LV":"143519","LY":"143567","MA":"143620","MD":"143523","ME":"143619","MG":"143531","MK":"143530","ML":"143532","MM":"143570","MN":"143592","MO":"143515","MR":"143590","MS":"143547","MT":"143521","MU":"143533","MV":"143488","MW":"143589","MX":"143468","MY":"143473","MZ":"143593","NA":"143594","NE":"143534","NG":"143561","NI":"143512","NL":"143452","NO":"143457","NP":"143484","NR":"143606","NZ":"143461","OM":"143562","PA":"143485","PE":"143507","PG":"143597","PH":"143474","PK":"143477","PL":"143478","PT":"143453","PW":"143595","PY":"143513","QA":"143498","RO":"143487","RS":"143500","RU":"143469","RW":"143621","SA":"143479","SB":"143601","SC":"143599","SE":"143456","SG":"143464","SI":"143499","SK":"143496","SL":"143600","SN":"143535","SR":"143554","ST":"143598","SV":"143506","SZ":"143602","UA":"143492","UG":"143537","US":"143441","UY":"143514","UZ":"143566","VC":"143550","VE":"143502","VG":"143543","VN":"143471","VU":"143609","XK":"143624","YE":"143571","ZA":"143472","ZM":"143622","ZW":"143605"} - } - } -} + }, + }, + Default: { + Settings: { + LogLevel: "WARN", + }, + Configs: { + Storefront: { + AE: "143481", + AF: "143610", + AG: "143540", + AI: "143538", + AL: "143575", + AM: "143524", + AO: "143564", + AR: "143505", + AT: "143445", + AU: "143460", + AZ: "143568", + BA: "143612", + BB: "143541", + BD: "143490", + BE: "143446", + BF: "143578", + BG: "143526", + BH: "143559", + BJ: "143576", + BM: "143542", + BN: "143560", + BO: "143556", + BR: "143503", + BS: "143539", + BT: "143577", + BW: "143525", + BY: "143565", + BZ: "143555", + CA: "143455", + CD: "143613", + CG: "143582", + CH: "143459", + CI: "143527", + CL: "143483", + CM: "143574", + CN: "143465", + CO: "143501", + CR: "143495", + CV: "143580", + CY: "143557", + CZ: "143489", + DE: "143443", + DK: "143458", + DM: "143545", + DO: "143508", + DZ: "143563", + EC: "143509", + EE: "143518", + EG: "143516", + ES: "143454", + FI: "143447", + FJ: "143583", + FM: "143591", + FR: "143442", + GA: "143614", + GB: "143444", + GD: "143546", + GF: "143615", + GH: "143573", + GM: "143584", + GR: "143448", + GT: "143504", + GW: "143585", + GY: "143553", + HK: "143463", + HN: "143510", + HR: "143494", + HU: "143482", + ID: "143476", + IE: "143449", + IL: "143491", + IN: "143467", + IQ: "143617", + IS: "143558", + IT: "143450", + JM: "143511", + JO: "143528", + JP: "143462", + KE: "143529", + KG: "143586", + KH: "143579", + KN: "143548", + KP: "143466", + KR: "143466", + KW: "143493", + KY: "143544", + KZ: "143517", + TC: "143552", + TD: "143581", + TJ: "143603", + TH: "143475", + TM: "143604", + TN: "143536", + TO: "143608", + TR: "143480", + TT: "143551", + TW: "143470", + TZ: "143572", + LA: "143587", + LB: "143497", + LC: "143549", + LI: "143522", + LK: "143486", + LR: "143588", + LT: "143520", + LU: "143451", + LV: "143519", + LY: "143567", + MA: "143620", + MD: "143523", + ME: "143619", + MG: "143531", + MK: "143530", + ML: "143532", + MM: "143570", + MN: "143592", + MO: "143515", + MR: "143590", + MS: "143547", + MT: "143521", + MU: "143533", + MV: "143488", + MW: "143589", + MX: "143468", + MY: "143473", + MZ: "143593", + NA: "143594", + NE: "143534", + NG: "143561", + NI: "143512", + NL: "143452", + NO: "143457", + NP: "143484", + NR: "143606", + NZ: "143461", + OM: "143562", + PA: "143485", + PE: "143507", + PG: "143597", + PH: "143474", + PK: "143477", + PL: "143478", + PT: "143453", + PW: "143595", + PY: "143513", + QA: "143498", + RO: "143487", + RS: "143500", + RU: "143469", + RW: "143621", + SA: "143479", + SB: "143601", + SC: "143599", + SE: "143456", + SG: "143464", + SI: "143499", + SK: "143496", + SL: "143600", + SN: "143535", + SR: "143554", + ST: "143598", + SV: "143506", + SZ: "143602", + UA: "143492", + UG: "143537", + US: "143441", + UY: "143514", + UZ: "143566", + VC: "143550", + VE: "143502", + VG: "143543", + VN: "143471", + VU: "143609", + XK: "143624", + YE: "143571", + ZA: "143472", + ZM: "143622", + ZW: "143605", + }, + }, + }, +}; diff --git a/src/function/modifyPegasusQueryContext.mjs b/src/function/modifyPegasusQueryContext.mjs index d7b7f75..c36baf7 100644 --- a/src/function/modifyPegasusQueryContext.mjs +++ b/src/function/modifyPegasusQueryContext.mjs @@ -1,9 +1,12 @@ +import { Console } from "@nsnanocat/util"; + export default function modifyPegasusQueryContext(queryContext, Settings) { - console.log(`☑️ modify PegasusQueryContext`, ""); + Console.log("☑️ modify PegasusQueryContext"); const Locale = queryContext.locale; const [Language, CountryCode] = Locale?.split("_") ?? []; - console.log(`🚧 Locale: ${Locale}, Language: ${Language}, CountryCode: ${CountryCode}`); + Console.info(`Locale: ${Locale}`, `Language: ${Language}`, `CountryCode: ${CountryCode}`); switch (Settings.CountryCode) { + // biome-ignore lint/suspicious/noFallthroughSwitchClause: case "AUTO": Settings.CountryCode = CountryCode; //break; @@ -21,6 +24,6 @@ export default function modifyPegasusQueryContext(queryContext, Settings) { }; if (queryContext?.skuRegion === "CH") queryContext.skuRegion = "LL"; //delete queryContext?.location; - console.log(`✅ modify PegasusQueryContext`, ""); + Console.log("✅ modify PegasusQueryContext"); return queryContext; }; diff --git a/src/function/setENV.mjs b/src/function/setENV.mjs index 1a51041..2507ca0 100644 --- a/src/function/setENV.mjs +++ b/src/function/setENV.mjs @@ -1,5 +1,4 @@ -import getStorage from '../utils/getStorage.mjs' -import { _, log } from "../utils/utils.mjs"; +import { Console, getStorage, Lodash as _ } from "@nsnanocat/util"; /** * Set Environment Variables @@ -10,31 +9,24 @@ import { _, log } from "../utils/utils.mjs"; * @return {Object} { Settings, Caches, Configs } */ export default function setENV(name, platforms, database) { - log(`☑️ Set Environment Variables`, ""); - let { Settings, Caches, Configs } = getStorage(name, platforms, database); + Console.log("☑️ Set Environment Variables"); + const { Settings, Caches, Configs } = getStorage(name, platforms, database); /***************** Settings *****************/ switch (platforms) { - case "WeatherKit": - if (!Array.isArray(Settings?.AQI?.ReplaceProviders)) _.set(Settings, "AQI.ReplaceProviders", (Settings?.AQI?.ReplaceProviders) ? [Settings.AQI.ReplaceProviders.toString()] : []); - if (Settings.AQI.ReplaceProviders.includes("TWC")) Settings.AQI.ReplaceProviders.push("The Weather Channel"); - if (Settings.AQI.ReplaceProviders.includes("QWeather")) Settings.AQI.ReplaceProviders.push("和风天气"); - Settings.AQI.ReplaceProviders.push(undefined); - if (!Array.isArray(Settings?.AQI?.Local?.ReplaceScales)) _.set(Settings, "AQI.Local.ReplaceScales", (Settings?.AQI?.Local?.ReplaceScales) ? [Settings.AQI.Local.ReplaceScales.toString()] : []); - break; case "Siri": - if (!Array.isArray(Settings?.Domains)) _.set(Settings, "Domains", (Settings?.Domains) ? [Settings.Domains.toString()] : []); - if (!Array.isArray(Settings?.Functions)) _.set(Settings, "Functions", (Settings?.Functions) ? [Settings.Functions.toString()] : []); break; - case "TV": - if (!Array.isArray(Settings?.Tabs)) _.set(Settings, "Tabs", (Settings?.Tabs) ? [Settings.Tabs.toString()] : []); + case "Spotlight": + if (!Array.isArray(Settings?.Domains)) _.set(Settings, "Domains", Settings?.Domains ? [Settings.Domains.toString()] : []); + if (!Array.isArray(Settings?.Functions)) _.set(Settings, "Functions", Settings?.Functions ? [Settings.Functions.toString()] : []); break; - }; - log(`✅ Set Environment Variables, Settings: ${typeof Settings}, Settings内容: ${JSON.stringify(Settings)}`, ""); + } + Console.log(`typeof Settings: ${typeof Settings}`, `Settings: ${JSON.stringify(Settings, null, 2)}`); /***************** Caches *****************/ - //log(`✅ Set Environment Variables, Caches: ${typeof Caches}, Caches内容: ${JSON.stringify(Caches)}`, ""); + //Console.log(`typeof Caches: ${typeof Caches}`, `Caches: ${JSON.stringify(Caches)}`); /***************** Configs *****************/ //Configs.Storefront = new Map(Configs.Storefront); if (Configs.Locale) Configs.Locale = new Map(Configs.Locale); - if (Configs.i18n) for (let type in Configs.i18n) Configs.i18n[type] = new Map(Configs.i18n[type]); + if (Configs.i18n) for (const type in Configs.i18n) Configs.i18n[type] = new Map(Configs.i18n[type]); + Console.log("✅ Set Environment Variables"); return { Settings, Caches, Configs }; -}; +} diff --git a/src/request.debug.js b/src/request.debug.js deleted file mode 100644 index 246706c..0000000 --- a/src/request.debug.js +++ /dev/null @@ -1,418 +0,0 @@ -import { $platform, URL, _, Storage, fetch, notification, log, logError, wait, done, getScript, runScript } from "./utils/utils.mjs"; -import GRPC from "./utils/GRPC.mjs"; -import database from "./function/database.mjs"; -import setENV from "./function/setENV.mjs"; -import modifyPegasusQueryContext from "./function/modifyPegasusQueryContext.mjs"; -import { MESSAGE_TYPE, reflectionMergePartial, BinaryReader, WireType, UnknownFieldHandler, isJsonObject, typeofJsonValue, jsonWriteOptions, MessageType } from "@protobuf-ts/runtime"; -import { SiriPegasusRequest } from "./proto/apple/parsec/siri/v2alpha/SiriPegasusRequest.js"; -import { LookupSearchRequest } from "./proto/apple/parsec/lookup/v1alpha/LookupSearchRequest.js"; -import { VisualSearchRequest } from "./proto/apple/parsec/visualsearch/v2/VisualSearchRequest.js"; -import { PegasusQueryContext } from "./proto/apple/parsec/search/PegasusQueryContext.js"; -// 构造回复数据 -let $response = undefined; -/***************** Processing *****************/ -// 解构URL -const url = new URL($request.url); -log(`⚠ url: ${url.toJSON()}`, ""); -// 获取连接参数 -const METHOD = $request.method, HOST = url.hostname, PATH = url.pathname, PATHs = url.pathname.split("/").filter(Boolean); -log(`⚠ METHOD: ${METHOD}, HOST: ${HOST}, PATH: ${PATH}`, ""); -// 解析格式 -const FORMAT = ($request.headers?.["Content-Type"] ?? $request.headers?.["content-type"])?.split(";")?.[0]; -log(`⚠ FORMAT: ${FORMAT}`, ""); -!(async () => { - const { Settings, Caches, Configs } = setENV("iRingo", "Siri", database); - log(`⚠ Settings.Switch: ${Settings?.Switch}`, ""); - switch (Settings.Switch) { - case true: - default: - // 创建空数据 - let Locale, Language, CountryCode; - let body = {}; - // 方法判断 - switch (METHOD) { - case "POST": - case "PUT": - case "PATCH": - case "DELETE": - // 格式判断 - switch (FORMAT) { - case undefined: // 视为无body - break; - case "application/x-www-form-urlencoded": - case "text/plain": - default: - //log(`🚧 body: ${body}`, ""); - break; - case "application/x-mpegURL": - case "application/x-mpegurl": - case "application/vnd.apple.mpegurl": - case "audio/mpegurl": - //body = M3U8.parse($request.body); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - //$request.body = M3U8.stringify(body); - break; - case "text/xml": - case "text/html": - case "text/plist": - case "application/xml": - case "application/plist": - case "application/x-plist": - //body = XML.parse($request.body); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - //$request.body = XML.stringify(body); - break; - case "text/vtt": - case "application/vtt": - //body = VTT.parse($request.body); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - //$request.body = VTT.stringify(body); - break; - case "text/json": - case "application/json": - //body = JSON.parse($request.body ?? "{}"); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - //$request.body = JSON.stringify(body); - break; - case "application/protobuf": - case "application/x-protobuf": - case "application/vnd.google.protobuf": - case "application/grpc": - case "application/grpc+proto": - case "applecation/octet-stream": - //log(`🚧 $request.body: ${JSON.stringify($request.body)}`, ""); - let rawBody = ($platform === "Quantumult X") ? new Uint8Array($request.bodyBytes ?? []) : $request.body ?? new Uint8Array(); - //log(`🚧 isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, ""); - switch (FORMAT) { - case "application/protobuf": - case "application/x-protobuf": - case "application/vnd.google.protobuf": - break; - case "application/grpc": - case "application/grpc+proto": - rawBody = GRPC.decode(rawBody); - // 解析链接并处理protobuf数据 - // 主机判断 - switch (HOST) { - case "guzzoni.smoot.apple.com": - case "api-siri.smoot.apple.com": - case "api2.smoot.apple.com": - default: - //$request.headers["content-type"] = "application/grpc+proto"; - if ($request.headers["user-agent"]?.includes("grpc-node-js")) $request.headers["user-agent"] = "PegasusKit/1 (iPhone14,3; iPhone OS 18.1 22B5054e) siri/1"; - // 路径判断 - switch (PATH) { - case "/apple.parsec.siri.v2alpha.SiriSearch/SiriSearch": // Siri搜索 - body = SiriPegasusRequest.fromBinary(rawBody); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); - let fixLocation = true; - const utterance = (body?.queries?.[0]?.utterance ?? "").toLowerCase(); - switch (true) { - case utterance.includes("什么是") || utterance.includes("是什么") || utterance.includes("what's ") || utterance.includes("what is ") || utterance.includes("what does ") || utterance.includes("what do "): - case utterance.includes("怎么样") || utterance.includes("怎样") || utterance.includes("如何") || utterance.includes("how's ") || utterance.includes("how is ") || utterance.includes("how does ") || utterance.includes("how do "): - case utterance.includes("为什么") || utterance.includes("why ") || utterance.includes("why is ") || utterance.includes("why does "): - case utterance.includes("搜索") || utterance.includes("search "): - case utterance.includes(" mean") || utterance.includes("meaning") || utterance.includes("explain") || utterance.includes("look up ") || utterance.includes("translat") || (utterance.includes(" in ") && !utterance.includes(" here")) || utterance.includes("web") || utterance.includes(" internet") || utterance.includes("defin") || utterance.includes(" wikipedia") || utterance.includes("解释") || utterance.includes("翻译") || utterance.includes("怎么说") || utterance.includes("意思"): - fixLocation = true; - break; - /* - case utterance.includes("何时") || utterance.includes("几时") || utterance.includes("when "): - case utterance.includes("什么时") || utterance.includes("几点") || utterance.includes("what time "): - case utterance.includes("哪里") || utterance.includes("哪儿") || utterance.includes("何处") || utterance.includes("where "): - case utterance.includes("哪个") || utterance.includes("哪一个") || utterance.includes("which "): - // 反例:"When was the first plane invented?", "Where was Steve Jobs born?", etc. - fixLocation = false; - break; - */ - case utterance.includes("气压") || utterance.includes("air pressure") || utterance.includes("barometric pressure") || utterance.includes("atmospheric pressure") || utterance.includes("atmosphere pressure"): - case utterance.includes("湿度") || utterance.includes("humidity"): - case utterance.includes("温度") || utterance.includes("temperature"): - case utterance.includes("风速") || utterance.includes("wind speed"): - case utterance.includes("风向") || utterance.includes("wind direction"): - case utterance.includes("空气质量") || utterance.includes("air quality"): - case utterance.includes("月相") || (utterance.includes("moon") && utterance.includes("phase")): - case utterance.includes("紫外线") || utterance.includes("uv index") || utterance.includes("ultraviolet index outside"): - case utterance.includes("能见度") || utterance.includes("visibility"): - case utterance.includes("日出") || utterance.includes("sunrise"): - case utterance.includes("日落") || utterance.includes("sunset"): - case (utterance.includes("sun ") && (utterance.includes("rise") || utterance.includes("set") || utterance.includes("fall"))) || utterance.includes("sunrise") || utterance.includes("sunset"): - case (utterance.includes("太阳") && (utterance.includes("升") || utterance.includes("落") || utterance.includes("下山"))) || utterance.includes("日出") || utterance.includes("日落"): - case (utterance.includes("is it") || utterance.includes("it is") || utterance.includes("it\'s")) && (utterance.includes("humid") || utterance.includes("rain") || utterance.includes("shin") || utterance.includes("sunny") || utterance.includes("hot") || utterance.includes("cold") || utterance.includes("freez") || utterance.includes("warm") || utterance.includes("wind") || utterance.includes("fog") || utterance.includes("haz") || utterance.includes("thunder") || utterance.includes("storm") || utterance.includes("lightn") || utterance.includes("snow") || utterance.includes("hail") || utterance.includes("clear") || utterance.includes("tornado") || utterance.includes("hurricane")): - case (utterance.includes("有") || utterance.includes("会") || utterance.includes("吗")) && (utterance.includes("下雨") || utterance.includes("晒") || utterance.includes("晴") || utterance.includes("热") || utterance.includes("冷") || utterance.includes("暖") || utterance.includes("风") || utterance.includes("雾") || utterance.includes("霾") || utterance.includes("雷") || utterance.includes("风暴") || utterance.includes("电") || utterance.includes("雪") || utterance.includes("雹")): - case utterance.includes("precipitation") || utterance.includes("forecast") || ((utterance.includes("chance") || utterance.includes("possibilit")) && (utterance.includes(" rain") || utterance.includes(" snow"))): - case utterance.includes("降雪") || utterance.includes("降水") || utterance.includes("预报") || ((utterance.includes("概率") || utterance.includes("几率")) && (utterance.includes("降水") || utterance.includes("降雪"))): - fixLocation = false; - break; - case utterance.includes("附近") || utterance.includes(" nearby"): - case utterance.includes("周围") || utterance.includes(" around me") || utterance.includes(" around here"): - case utterance.includes("导航") || utterance.includes("navigat"): - case utterance.includes("方向") || utterance.includes(" direction"): - case utterance.includes("指引") || (utterance.includes("direct ") && utterance.includes(" to ")): - case utterance.includes("指引") || (utterance.includes("guide ") && utterance.includes(" to ")): - case utterance.includes("带我去") || utterance.includes("take me to "): - case utterance.includes("路线") || utterance.includes("route "): - case utterance.includes("路径") || utterance.includes("path to "): - case (utterance.includes("怎样") || utterance.includes("如何") || utterance.includes("怎么")) && (utterance.includes("到") || utterance.includes("去") || utterance.includes("抵达") || utterance.includes("走")): - case utterance.includes("how ") && (utterance.includes(" get ") || utterance.includes(" go ") || utterance.includes(" arrive ") || utterance.includes(" reach ")): - fixLocation = false; - break; - }; - body?.queries?.[0]?.profileSlices.forEach((profileSlice, index) => { - switch (profileSlice?.values?.[0]?.value?.typeUrl) { - case "type.googleapis.com/apple.parsec.siri.v2alpha.AppInfo": - /****************** initialization start *******************/ - class ApplicationInfomationRequest$Type extends MessageType { - constructor() { - super("ApplicationInfomationRequest", [ - { no: 2, name: "bundleID", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, - { no: 4, name: "launchIntent", kind: "scalar", T: 9 /*ScalarType.STRING*/ } - ]); - } - } - const ApplicationInfomationRequest = new ApplicationInfomationRequest$Type(); - /****************** initialization finish *******************/ - const AppInfo = ApplicationInfomationRequest.fromBinary(profileSlice?.values?.[0]?.value?.value); - log(`🚧 AppInfo: ${JSON.stringify(AppInfo)}`, ""); - switch (AppInfo?.bundleID) { - case "com.apple.weather": - case "com.heweather.weatherapp": - fixLocation = false; - break; - case "com.apple.store.Jolly": - fixLocation = false; - break; - case "com.apple.Music": - case "com.apple.AppStore": - fixLocation = false; - break; - default: - break; - }; - break; - case "type.googleapis.com/apple.parsec.siri.v2alpha.SiriKitAppInfo": - break; - case "type.googleapis.com/apple.parsec.siri.v2alpha.AmpUserState": - break; - case "type.googleapis.com/apple.parsec.siri.v2alpha.AudioQueueStateInfo": - break; - }; - }); - if (fixLocation) delete body?.queryContext?.location; - log(`🚧 body: ${JSON.stringify(body)}`, ""); - rawBody = SiriPegasusRequest.toBinary(body); - break; - case "/apple.parsec.lookup.v1alpha.LookupSearch/LookupSearch": // 查询搜索 - body = LookupSearchRequest.fromBinary(rawBody); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - rawBody = LookupSearchRequest.toBinary(body); - break; - case "/apple.parsec.visualsearch.v2.VisualSearch/VisualSearch": { // 视觉搜索 - body = VisualSearchRequest.fromBinary(rawBody); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - rawBody = VisualSearchRequest.toBinary(body); - break; - }; - case "/apple.parsec.responseframework.engagement.v1alpha.EngagementSearch/EngagementSearch": // - /****************** initialization start *******************/ - class EngagementRequest$Type extends MessageType { - constructor() { - super("EngagementRequest", [ - { no: 1, name: "queryContext", kind: "message", T: () => PegasusQueryContext } - ]); - } - } - const EngagementRequest = new EngagementRequest$Type(); - /****************** initialization finish *******************/ - body = EngagementRequest.fromBinary(rawBody); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - rawBody = EngagementRequest.toBinary(body); - break; - case "/apple.parsec.spotlight.v1alpha.ZkwSuggestService/Suggest": // 新闻建议 - /****************** initialization start *******************/ - class ZkwSuggestRequest$Type extends MessageType { - constructor() { - super("ZkwSuggestRequest", [ - //{ no: 1, name: "queries", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => Query }, - { no: 2, name: "queryContext", kind: "message", T: () => PegasusQueryContext } - ]); - } - } - const ZkwSuggestRequest = new ZkwSuggestRequest$Type(); - /****************** initialization finish *******************/ - body = ZkwSuggestRequest.fromBinary(rawBody); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); - log(`🚧 body: ${JSON.stringify(body)}`, ""); - rawBody = ZkwSuggestRequest.toBinary(body); - break; - }; - break; - }; - rawBody = GRPC.encode(rawBody); - break; - }; - // 写入二进制数据 - $request.body = rawBody; - break; - }; - //break; // 不中断,继续处理URL - case "GET": - case "HEAD": - case "OPTIONS": - default: - Locale = Locale ?? url.searchParams.get("locale"); - [Language, CountryCode] = Locale?.split("_") ?? []; - log(`🚧 Locale: ${Locale}, Language: ${Language}, CountryCode: ${CountryCode}`, ""); - switch (Settings.CountryCode) { - case "AUTO": - Settings.CountryCode = CountryCode; - break; - default: - if (url.searchParams.has("cc")) url.searchParams.set("cc", Settings.CountryCode); - break; - }; - // 主机判断 - switch (HOST) { - case "api.smoot.apple.cn": - case "api.smoot.apple.com": - case "api2.smoot.apple.com": - case "api-siri.smoot.apple.com": - default: // 其他主机 - let q = url.searchParams.get("q"); - // 路径判断 - switch (PATH) { - case "/bag": // 配置 - break; - case "/search": // 搜索 - switch (url.searchParams.get("qtype")) { - case "zkw": // 处理"新闻"小组件 - switch (Settings.CountryCode) { - case "CN": - case "HK": - case "MO": - case "TW": - case "SG": - url.searchParams.set("locale", `${Language}_SG`); - break; - case "US": - case "CA": - case "UK": - case "AU": - // 不做修正 - break; - default: - url.searchParams.set("locale", `${Language}_US`); - break; - }; - break; - default: // 其他搜索 - if (q?.startsWith?.("%E5%A4%A9%E6%B0%94%20")) { // 处理"天气"搜索,搜索词"天气 "开头 - console.log("'天气 '开头"); - url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" - if (/^weather%20.*%E5%B8%82$/.test(q)) url.searchParams.set("q", q.replace(/$/, "%E5%B8%82")); - } else if (q?.endsWith?.("%20%E5%A4%A9%E6%B0%94")) {// 处理"天气"搜索,搜索词" 天气"结尾 - console.log("' 天气'结尾"); - url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" - if (/.*%E5%B8%82%20weather$/.test(q)) url.searchParams.set("q", q.replace(/%20weather$/, "%E5%B8%82%20weather")); - }; - break; - }; - break; - case "/card": // 卡片 - switch (url.searchParams.get("include")) { - case "tv": - case "movies": - url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); - const storefront = url.searchParams.get("storefront")?.match(/[\d]{6}/g); - switch (storefront) { //StoreFront ID, from App Store Region - case "143463": // HK - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); - break; - case "143464": // SG - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-SG")); - break; - case "143465": // CN - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); - break; - case "143470": // TW - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-TW")); - break; - }; - break; - case "apps": - case "music": - url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); - break; - case "dictionary": - switch (Language) { - case "zh-Hans": - case "zh-Hant": - url.searchParams.set("card_locale", `en_${Settings.CountryCode}`); - break; - }; - break; - default: - url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); - break; - }; - break; - case "/warm": - break; - case "/render": - break; - case "/flight": // 航班 - break; - }; - break; - case "guzzoni.smoot.apple.com": - break; - case "fbs.smoot.apple.com": - break; - case "cdn.smoot.apple.com": - break; - }; - break; - case "CONNECT": - case "TRACE": - break; - }; - $request.url = url.toString(); - log(`🚧 调试信息`, `$request.url: ${$request.url}`, ""); - break; - case false: - break; - }; -})() - .catch((e) => logError(e)) - .finally(() => { - switch ($response) { - default: // 有构造回复数据,返回构造的回复数据 - //log(`🚧 finally`, `echo $response: ${JSON.stringify($response, null, 2)}`, ""); - if ($response.headers?.["Content-Encoding"]) $response.headers["Content-Encoding"] = "identity"; - if ($response.headers?.["content-encoding"]) $response.headers["content-encoding"] = "identity"; - switch ($platform) { - default: - done({ response: $response }); - break; - case "Quantumult X": - if (!$response.status) $response.status = "HTTP/1.1 200 OK"; - delete $response.headers?.["Content-Length"]; - delete $response.headers?.["content-length"]; - delete $response.headers?.["Transfer-Encoding"]; - done($response); - break; - }; - break; - case undefined: // 无构造回复数据,发送修改的请求数据 - //log(`🚧 finally`, `$request: ${JSON.stringify($request, null, 2)}`, ""); - done($request); - break; - }; - }) diff --git a/src/request.dev.js b/src/request.dev.js new file mode 100644 index 0000000..fbb1199 --- /dev/null +++ b/src/request.dev.js @@ -0,0 +1,475 @@ +import { $app, Console, done, gRPC, Lodash as _ } from "@nsnanocat/util"; +import database from "./function/database.mjs"; +import setENV from "./function/setENV.mjs"; +import modifyPegasusQueryContext from "./function/modifyPegasusQueryContext.mjs"; +import { MESSAGE_TYPE, reflectionMergePartial, BinaryReader, WireType, UnknownFieldHandler, isJsonObject, typeofJsonValue, jsonWriteOptions, MessageType } from "@protobuf-ts/runtime"; +import { SiriPegasusRequest } from "./proto/apple/parsec/siri/v2alpha/SiriPegasusRequest.js"; +import { LookupSearchRequest } from "./proto/apple/parsec/lookup/v1alpha/LookupSearchRequest.js"; +import { VisualSearchRequest } from "./proto/apple/parsec/visualsearch/v2/VisualSearchRequest.js"; +import { PegasusQueryContext } from "./proto/apple/parsec/search/PegasusQueryContext.js"; +// 构造回复数据 +// biome-ignore lint/style/useConst: +let $response = undefined; +/***************** Processing *****************/ +// 解构URL +const url = new URL($request.url); +Console.info(`url: ${url.toJSON()}`); +// 获取连接参数 +const PATHs = url.pathname.split("/").filter(Boolean); +Console.info(`PATHs: ${PATHs}`); +// 解析格式 +const FORMAT = ($request.headers?.["Content-Type"] ?? $request.headers?.["content-type"])?.split(";")?.[0]; +Console.info(`FORMAT: ${FORMAT}`); +(async () => { + const { Settings, Caches, Configs } = setENV("iRingo", "Spotlight", database); + Console.logLevel = Settings.LogLevel; + // 创建空数据 + let Locale, Language, CountryCode; + let body = {}; + // 方法判断 + switch ($request.method) { + case "POST": + case "PUT": + case "PATCH": + // biome-ignore lint/suspicious/noFallthroughSwitchClause: + case "DELETE": + // 格式判断 + switch (FORMAT) { + case undefined: // 视为无body + break; + case "application/x-www-form-urlencoded": + case "text/plain": + default: + //Console.debug(`body: ${body}`); + break; + case "application/x-mpegURL": + case "application/x-mpegurl": + case "application/vnd.apple.mpegurl": + case "audio/mpegurl": + //body = M3U8.parse($request.body); + //Console.debug(`body: ${JSON.stringify(body)}`); + //$request.body = M3U8.stringify(body); + break; + case "text/xml": + case "text/html": + case "text/plist": + case "application/xml": + case "application/plist": + case "application/x-plist": + //body = XML.parse($request.body); + //Console.debug(`body: ${JSON.stringify(body)}`); + //$request.body = XML.stringify(body); + break; + case "text/vtt": + case "application/vtt": + //body = VTT.parse($request.body); + //Console.debug(`body: ${JSON.stringify(body)}`); + //$request.body = VTT.stringify(body); + break; + case "text/json": + case "application/json": + //body = JSON.parse($request.body ?? "{}"); + //Console.debug(`body: ${JSON.stringify(body)}`); + //$request.body = JSON.stringify(body); + break; + case "application/protobuf": + case "application/x-protobuf": + case "application/vnd.google.protobuf": + case "application/grpc": + case "application/grpc+proto": + case "applecation/octet-stream": { + //Console.debug(`$request.body: ${JSON.stringify($request.body)}`); + let rawBody = $app === "Quantumult X" ? new Uint8Array($request.bodyBytes ?? []) : ($request.body ?? new Uint8Array()); + //Console.debug(`isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`); + switch (FORMAT) { + case "application/protobuf": + case "application/x-protobuf": + case "application/vnd.google.protobuf": + break; + case "application/grpc": + case "application/grpc+proto": + rawBody = gRPC.decode(rawBody); + // 解析链接并处理protobuf数据 + // 主机判断 + switch (url.hostname) { + case "guzzoni.smoot.apple.com": + case "api-siri.smoot.apple.com": + case "api2.smoot.apple.com": + default: + //$request.headers["content-type"] = "application/grpc+proto"; + if ($request.headers["user-agent"]?.includes("grpc-node-js")) $request.headers["user-agent"] = "PegasusKit/1 (iPhone14,3; iPhone OS 18.1 22B5054e) siri/1"; + // 路径判断 + switch (url.pathname) { + case "/apple.parsec.siri.v2alpha.SiriSearch/SiriSearch": { + // Siri搜索 + body = SiriPegasusRequest.fromBinary(rawBody); + Console.debug(`body: ${JSON.stringify(body)}`); + body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); + let fixLocation = true; + const utterance = (body?.queries?.[0]?.utterance ?? "").toLowerCase(); + switch (true) { + case utterance.includes("什么是") || utterance.includes("是什么") || utterance.includes("what's ") || utterance.includes("what is ") || utterance.includes("what does ") || utterance.includes("what do "): + case utterance.includes("怎么样") || utterance.includes("怎样") || utterance.includes("如何") || utterance.includes("how's ") || utterance.includes("how is ") || utterance.includes("how does ") || utterance.includes("how do "): + case utterance.includes("为什么") || utterance.includes("why ") || utterance.includes("why is ") || utterance.includes("why does "): + case utterance.includes("搜索") || utterance.includes("search "): + case utterance.includes(" mean") || + utterance.includes("meaning") || + utterance.includes("explain") || + utterance.includes("look up ") || + utterance.includes("translat") || + (utterance.includes(" in ") && !utterance.includes(" here")) || + utterance.includes("web") || + utterance.includes(" internet") || + utterance.includes("defin") || + utterance.includes(" wikipedia") || + utterance.includes("解释") || + utterance.includes("翻译") || + utterance.includes("怎么说") || + utterance.includes("意思"): + fixLocation = true; + break; + /* + case utterance.includes("何时") || utterance.includes("几时") || utterance.includes("when "): + case utterance.includes("什么时") || utterance.includes("几点") || utterance.includes("what time "): + case utterance.includes("哪里") || utterance.includes("哪儿") || utterance.includes("何处") || utterance.includes("where "): + case utterance.includes("哪个") || utterance.includes("哪一个") || utterance.includes("which "): + // 反例:"When was the first plane invented?", "Where was Steve Jobs born?", etc. + fixLocation = false; + break; + */ + case utterance.includes("气压") || utterance.includes("air pressure") || utterance.includes("barometric pressure") || utterance.includes("atmospheric pressure") || utterance.includes("atmosphere pressure"): + case utterance.includes("湿度") || utterance.includes("humidity"): + case utterance.includes("温度") || utterance.includes("temperature"): + case utterance.includes("风速") || utterance.includes("wind speed"): + case utterance.includes("风向") || utterance.includes("wind direction"): + case utterance.includes("空气质量") || utterance.includes("air quality"): + case utterance.includes("月相") || (utterance.includes("moon") && utterance.includes("phase")): + case utterance.includes("紫外线") || utterance.includes("uv index") || utterance.includes("ultraviolet index outside"): + case utterance.includes("能见度") || utterance.includes("visibility"): + case utterance.includes("日出") || utterance.includes("sunrise"): + case utterance.includes("日落") || utterance.includes("sunset"): + case (utterance.includes("sun ") && (utterance.includes("rise") || utterance.includes("set") || utterance.includes("fall"))) || utterance.includes("sunrise") || utterance.includes("sunset"): + case (utterance.includes("太阳") && (utterance.includes("升") || utterance.includes("落") || utterance.includes("下山"))) || utterance.includes("日出") || utterance.includes("日落"): + case (utterance.includes("is it") || utterance.includes("it is") || utterance.includes("it's")) && + (utterance.includes("humid") || + utterance.includes("rain") || + utterance.includes("shin") || + utterance.includes("sunny") || + utterance.includes("hot") || + utterance.includes("cold") || + utterance.includes("freez") || + utterance.includes("warm") || + utterance.includes("wind") || + utterance.includes("fog") || + utterance.includes("haz") || + utterance.includes("thunder") || + utterance.includes("storm") || + utterance.includes("lightn") || + utterance.includes("snow") || + utterance.includes("hail") || + utterance.includes("clear") || + utterance.includes("tornado") || + utterance.includes("hurricane")): + case (utterance.includes("有") || utterance.includes("会") || utterance.includes("吗")) && + (utterance.includes("下雨") || + utterance.includes("晒") || + utterance.includes("晴") || + utterance.includes("热") || + utterance.includes("冷") || + utterance.includes("暖") || + utterance.includes("风") || + utterance.includes("雾") || + utterance.includes("霾") || + utterance.includes("雷") || + utterance.includes("风暴") || + utterance.includes("电") || + utterance.includes("雪") || + utterance.includes("雹")): + case utterance.includes("precipitation") || utterance.includes("forecast") || ((utterance.includes("chance") || utterance.includes("possibilit")) && (utterance.includes(" rain") || utterance.includes(" snow"))): + case utterance.includes("降雪") || utterance.includes("降水") || utterance.includes("预报") || ((utterance.includes("概率") || utterance.includes("几率")) && (utterance.includes("降水") || utterance.includes("降雪"))): + fixLocation = false; + break; + case utterance.includes("附近") || utterance.includes(" nearby"): + case utterance.includes("周围") || utterance.includes(" around me") || utterance.includes(" around here"): + case utterance.includes("导航") || utterance.includes("navigat"): + case utterance.includes("方向") || utterance.includes(" direction"): + case utterance.includes("指引") || (utterance.includes("direct ") && utterance.includes(" to ")): + case utterance.includes("指引") || (utterance.includes("guide ") && utterance.includes(" to ")): + case utterance.includes("带我去") || utterance.includes("take me to "): + case utterance.includes("路线") || utterance.includes("route "): + case utterance.includes("路径") || utterance.includes("path to "): + case (utterance.includes("怎样") || utterance.includes("如何") || utterance.includes("怎么")) && (utterance.includes("到") || utterance.includes("去") || utterance.includes("抵达") || utterance.includes("走")): + case utterance.includes("how ") && (utterance.includes(" get ") || utterance.includes(" go ") || utterance.includes(" arrive ") || utterance.includes(" reach ")): + fixLocation = false; + break; + } + body?.queries?.[0]?.profileSlices.forEach((profileSlice, index) => { + switch (profileSlice?.values?.[0]?.value?.typeUrl) { + case "type.googleapis.com/apple.parsec.siri.v2alpha.AppInfo": { + /****************** initialization start *******************/ + class ApplicationInfomationRequest$Type extends MessageType { + constructor() { + super("ApplicationInfomationRequest", [ + { no: 2, name: "bundleID", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 4, name: "launchIntent", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + ]); + } + } + const ApplicationInfomationRequest = new ApplicationInfomationRequest$Type(); + /****************** initialization finish *******************/ + const AppInfo = ApplicationInfomationRequest.fromBinary(profileSlice?.values?.[0]?.value?.value); + Console.debug(`AppInfo: ${JSON.stringify(AppInfo)}`); + switch (AppInfo?.bundleID) { + case "com.apple.weather": + case "com.heweather.weatherapp": + fixLocation = false; + break; + case "com.apple.store.Jolly": + fixLocation = false; + break; + case "com.apple.Music": + case "com.apple.AppStore": + fixLocation = false; + break; + default: + break; + } + break; + } + case "type.googleapis.com/apple.parsec.siri.v2alpha.SiriKitAppInfo": + break; + case "type.googleapis.com/apple.parsec.siri.v2alpha.AmpUserState": + break; + case "type.googleapis.com/apple.parsec.siri.v2alpha.AudioQueueStateInfo": + break; + } + }); + if (fixLocation) delete body?.queryContext?.location; + Console.debug(`body: ${JSON.stringify(body)}`); + rawBody = SiriPegasusRequest.toBinary(body); + break; + } + case "/apple.parsec.lookup.v1alpha.LookupSearch/LookupSearch": // 查询搜索 + body = LookupSearchRequest.fromBinary(rawBody); + Console.debug(`body: ${JSON.stringify(body)}`); + body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); + Console.debug(`body: ${JSON.stringify(body)}`); + rawBody = LookupSearchRequest.toBinary(body); + break; + case "/apple.parsec.visualsearch.v2.VisualSearch/VisualSearch": { + // 视觉搜索 + body = VisualSearchRequest.fromBinary(rawBody); + Console.debug(`body: ${JSON.stringify(body)}`); + body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); + Console.debug(`body: ${JSON.stringify(body)}`); + rawBody = VisualSearchRequest.toBinary(body); + break; + } + case "/apple.parsec.responseframework.engagement.v1alpha.EngagementSearch/EngagementSearch": { + // + /****************** initialization start *******************/ + class EngagementRequest$Type extends MessageType { + constructor() { + super("EngagementRequest", [{ no: 1, name: "queryContext", kind: "message", T: () => PegasusQueryContext }]); + } + } + const EngagementRequest = new EngagementRequest$Type(); + /****************** initialization finish *******************/ + body = EngagementRequest.fromBinary(rawBody); + Console.debug(`body: ${JSON.stringify(body)}`); + body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); + Console.debug(`body: ${JSON.stringify(body)}`); + rawBody = EngagementRequest.toBinary(body); + break; + } + case "/apple.parsec.spotlight.v1alpha.ZkwSuggestService/Suggest": { + // 新闻建议 + /****************** initialization start *******************/ + class ZkwSuggestRequest$Type extends MessageType { + constructor() { + super("ZkwSuggestRequest", [ + //{ no: 1, name: "queries", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => Query }, + { no: 2, name: "queryContext", kind: "message", T: () => PegasusQueryContext }, + ]); + } + } + const ZkwSuggestRequest = new ZkwSuggestRequest$Type(); + /****************** initialization finish *******************/ + body = ZkwSuggestRequest.fromBinary(rawBody); + Console.debug(`body: ${JSON.stringify(body)}`); + body.queryContext = modifyPegasusQueryContext(body.queryContext, Settings); + Console.debug(`body: ${JSON.stringify(body)}`); + rawBody = ZkwSuggestRequest.toBinary(body); + break; + } + } + break; + } + rawBody = gRPC.encode(rawBody); + break; + } + // 写入二进制数据 + $request.body = rawBody; + break; + } + } + //break; // 不中断,继续处理URL + case "GET": + case "HEAD": + case "OPTIONS": + default: + Locale = Locale ?? url.searchParams.get("locale"); + [Language, CountryCode] = Locale?.split("_") ?? []; + Console.info(`Locale: ${Locale}`, `Language: ${Language}`, `CountryCode: ${CountryCode}`); + switch (Settings.CountryCode) { + case "AUTO": + Settings.CountryCode = CountryCode; + break; + default: + if (url.searchParams.has("cc")) url.searchParams.set("cc", Settings.CountryCode); + break; + } + // 主机判断 + switch (url.hostname) { + case "api.smoot.apple.cn": + case "api.smoot.apple.com": + case "api2.smoot.apple.com": + case "api-siri.smoot.apple.com": + default: { + // 其他主机 + const q = url.searchParams.get("q"); + // 路径判断 + switch (url.pathname) { + case "/bag": // 配置 + break; + case "/search": // 搜索 + switch (url.searchParams.get("qtype")) { + case "zkw": // 处理"新闻"小组件 + switch (Settings.CountryCode) { + case "CN": + case "HK": + case "MO": + case "TW": + case "SG": + url.searchParams.set("locale", `${Language}_SG`); + break; + case "US": + case "CA": + case "UK": + case "AU": + // 不做修正 + break; + default: + url.searchParams.set("locale", `${Language}_US`); + break; + } + break; + default: // 其他搜索 + if (q?.startsWith?.("%E5%A4%A9%E6%B0%94%20")) { + // 处理"天气"搜索,搜索词"天气 "开头 + Console.debug("'天气 '开头"); + url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" + if (/^weather%20.*%E5%B8%82$/.test(q)) url.searchParams.set("q", q.replace(/$/, "%E5%B8%82")); + } else if (q?.endsWith?.("%20%E5%A4%A9%E6%B0%94")) { + // 处理"天气"搜索,搜索词" 天气"结尾 + Console.debug("' 天气'结尾"); + url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" + if (/.*%E5%B8%82%20weather$/.test(q)) url.searchParams.set("q", q.replace(/%20weather$/, "%E5%B8%82%20weather")); + } + break; + } + break; + case "/card": // 卡片 + switch (url.searchParams.get("include")) { + case "tv": + case "movies": { + url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); + const storefront = url.searchParams.get("storefront")?.match(/[\d]{6}/g); + switch ( + storefront //StoreFront ID, from App Store Region + ) { + case "143463": // HK + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); + break; + case "143464": // SG + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-SG")); + break; + case "143465": // CN + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); + break; + case "143470": // TW + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-TW")); + break; + } + break; + } + case "apps": + case "music": + url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); + break; + case "dictionary": + switch (Language) { + case "zh-Hans": + case "zh-Hant": + url.searchParams.set("card_locale", `en_${Settings.CountryCode}`); + break; + } + break; + default: + url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); + break; + } + break; + case "/warm": + break; + case "/render": + break; + case "/flight": // 航班 + break; + } + break; + } + case "guzzoni.smoot.apple.com": + break; + case "fbs.smoot.apple.com": + break; + case "cdn.smoot.apple.com": + break; + } + break; + case "CONNECT": + case "TRACE": + break; + } + $request.url = url.toString(); + Console.debug(`$request.url: ${$request.url}`); +})() + .catch(e => Console.error(e)) + .finally(() => { + switch (typeof $response) { + case "object": // 有构造回复数据,返回构造的回复数据 + //Console.debug("finally", `echo $response: ${JSON.stringify($response, null, 2)}`); + if ($response.headers?.["Content-Encoding"]) $response.headers["Content-Encoding"] = "identity"; + if ($response.headers?.["content-encoding"]) $response.headers["content-encoding"] = "identity"; + switch ($app) { + default: + done({ response: $response }); + break; + case "Quantumult X": + if (!$response.status) $response.status = "HTTP/1.1 200 OK"; + delete $response.headers?.["Content-Length"]; + delete $response.headers?.["content-length"]; + delete $response.headers?.["Transfer-Encoding"]; + done($response); + break; + } + break; + case "undefined": // 无构造回复数据,发送修改的请求数据 + //Console.debug("finally", `$request: ${JSON.stringify($request, null, 2)}`); + done($request); + break; + default: + Console.error(`不合法的 $response 类型: ${typeof $response}`); + break; + } + }); diff --git a/src/request.js b/src/request.js index 71d3f2d..ee19efe 100644 --- a/src/request.js +++ b/src/request.js @@ -1,210 +1,218 @@ -import { $platform, URL, _, Storage, fetch, notification, log, logError, wait, done, getScript, runScript } from "./utils/utils.mjs"; +import { $app, Console, done, Lodash as _ } from "@nsnanocat/util"; import database from "./function/database.mjs"; import setENV from "./function/setENV.mjs"; -log("v4.0.1(4011)"); // 构造回复数据 +// biome-ignore lint/style/useConst: let $response = undefined; /***************** Processing *****************/ // 解构URL const url = new URL($request.url); -log(`⚠ url: ${url.toJSON()}`, ""); +Console.info(`url: ${url.toJSON()}`); // 获取连接参数 -const METHOD = $request.method, HOST = url.hostname, PATH = url.pathname, PATHs = url.pathname.split("/").filter(Boolean); -log(`⚠ METHOD: ${METHOD}, HOST: ${HOST}, PATH: ${PATH}`, ""); +const PATHs = url.pathname.split("/").filter(Boolean); +Console.info(`PATHs: ${PATHs}`); // 解析格式 const FORMAT = ($request.headers?.["Content-Type"] ?? $request.headers?.["content-type"])?.split(";")?.[0]; -log(`⚠ FORMAT: ${FORMAT}`, ""); -!(async () => { - const { Settings, Caches, Configs } = setENV("iRingo", "Siri", database); - log(`⚠ Settings.Switch: ${Settings?.Switch}`, ""); - switch (Settings.Switch) { - case true: - default: - // 创建空数据 - let Locale, Language, CountryCode; - let body = {}; - // 方法判断 - switch (METHOD) { - case "POST": - case "PUT": - case "PATCH": - case "DELETE": - // 格式判断 - switch (FORMAT) { - case undefined: // 视为无body - break; - case "application/x-www-form-urlencoded": - case "text/plain": - default: - break; - case "application/x-mpegURL": - case "application/x-mpegurl": - case "application/vnd.apple.mpegurl": - case "audio/mpegurl": - break; - case "text/xml": - case "text/html": - case "text/plist": - case "application/xml": - case "application/plist": - case "application/x-plist": - break; - case "text/vtt": - case "application/vtt": - break; - case "text/json": - case "application/json": +Console.info(`FORMAT: ${FORMAT}`); +(async () => { + const { Settings, Caches, Configs } = setENV("iRingo", "Spotlight", database); + Console.logLevel = Settings.LogLevel; + // 创建空数据 + let Locale, Language, CountryCode; + // biome-ignore lint/style/useConst: + let body = {}; + // 方法判断 + switch ($request.method) { + case "POST": + case "PUT": + case "PATCH": + // biome-ignore lint/suspicious/noFallthroughSwitchClause: + case "DELETE": + // 格式判断 + switch (FORMAT) { + case undefined: // 视为无body + break; + case "application/x-www-form-urlencoded": + case "text/plain": + default: + break; + case "application/x-mpegURL": + case "application/x-mpegurl": + case "application/vnd.apple.mpegurl": + case "audio/mpegurl": + break; + case "text/xml": + case "text/html": + case "text/plist": + case "application/xml": + case "application/plist": + case "application/x-plist": + break; + case "text/vtt": + case "application/vtt": + break; + case "text/json": + case "application/json": + break; + case "application/protobuf": + case "application/x-protobuf": + case "application/vnd.google.protobuf": + case "application/grpc": + case "application/grpc+proto": + case "applecation/octet-stream": { + // 路径判断 + switch (url.pathname) { + case "/apple.parsec.siri.v2alpha.SiriSearch/SiriSearch": { + // Siri搜索 break; - case "application/protobuf": - case "application/x-protobuf": - case "application/vnd.google.protobuf": - case "application/grpc": - case "application/grpc+proto": - case "applecation/octet-stream": - // 路径判断 - switch (PATH) { - case "/apple.parsec.siri.v2alpha.SiriSearch/SiriSearch": // Siri搜索 - break; - case "/apple.parsec.spotlight.v1alpha.ZkwSuggestService/Suggest": // 新闻建议 - break; - }; + } + case "/apple.parsec.spotlight.v1alpha.ZkwSuggestService/Suggest": { + // 新闻建议 break; - }; - //break; // 不中断,继续处理URL - case "GET": - case "HEAD": - case "OPTIONS": + } + } + break; + } + } + //break; // 不中断,继续处理URL + case "GET": + case "HEAD": + case "OPTIONS": + default: + Locale = Locale ?? url.searchParams.get("locale"); + [Language, CountryCode] = Locale?.split("_") ?? []; + Console.info(`Locale: ${Locale}`, `Language: ${Language}`, `CountryCode: ${CountryCode}`); + switch (Settings.CountryCode) { + case "AUTO": + Settings.CountryCode = CountryCode; + break; default: - Locale = Locale ?? url.searchParams.get("locale"); - [Language, CountryCode] = Locale?.split("_") ?? []; - log(`🚧 Locale: ${Locale}, Language: ${Language}, CountryCode: ${CountryCode}`, ""); - switch (Settings.CountryCode) { - case "AUTO": - Settings.CountryCode = CountryCode; - break; - default: - if (url.searchParams.has("cc")) url.searchParams.set("cc", Settings.CountryCode); + if (url.searchParams.has("cc")) url.searchParams.set("cc", Settings.CountryCode); + break; + } + // 主机判断 + switch (url.hostname) { + case "api.smoot.apple.cn": + case "api.smoot.apple.com": + case "api2.smoot.apple.com": + case "api-siri.smoot.apple.com": + default: { + // 其他主机 + const q = url.searchParams.get("q"); + // 路径判断 + switch (url.pathname) { + case "/bag": // 配置 break; - }; - // 主机判断 - switch (HOST) { - case "api.smoot.apple.cn": - case "api.smoot.apple.com": - case "api2.smoot.apple.com": - case "api-siri.smoot.apple.com": - default: // 其他主机 - let q = url.searchParams.get("q"); - // 路径判断 - switch (PATH) { - case "/bag": // 配置 - break; - case "/search": // 搜索 - switch (url.searchParams.get("qtype")) { - case "zkw": // 处理"新闻"小组件 - switch (Settings.CountryCode) { - case "CN": - case "HK": - case "MO": - case "TW": - case "SG": - url.searchParams.set("locale", `${Language}_SG`); - break; - case "US": - case "CA": - case "UK": - case "AU": - // 不做修正 - break; - default: - url.searchParams.set("locale", `${Language}_US`); - break; - }; + case "/search": // 搜索 + switch (url.searchParams.get("qtype")) { + case "zkw": // 处理"新闻"小组件 + switch (Settings.CountryCode) { + case "CN": + case "HK": + case "MO": + case "TW": + case "SG": + url.searchParams.set("locale", `${Language}_SG`); break; - default: // 其他搜索 - if (q?.startsWith?.("%E5%A4%A9%E6%B0%94%20")) { // 处理"天气"搜索,搜索词"天气 "开头 - console.log("'天气 '开头"); - url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" - if (/^weather%20.*%E5%B8%82$/.test(q)) url.searchParams.set("q", q.replace(/$/, "%E5%B8%82")); - } else if (q?.endsWith?.("%20%E5%A4%A9%E6%B0%94")) {// 处理"天气"搜索,搜索词" 天气"结尾 - console.log("' 天气'结尾"); - url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" - if (/.*%E5%B8%82%20weather$/.test(q)) url.searchParams.set("q", q.replace(/%20weather$/, "%E5%B8%82%20weather")); - }; + case "US": + case "CA": + case "UK": + case "AU": + // 不做修正 break; - }; + default: + url.searchParams.set("locale", `${Language}_US`); + break; + } break; - case "/card": // 卡片 - switch (url.searchParams.get("include")) { - case "tv": - case "movies": - url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); - const storefront = url.searchParams.get("storefront")?.match(/[\d]{6}/g); - switch (storefront) { //StoreFront ID, from App Store Region - case "143463": // HK - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); - break; - case "143464": // SG - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-SG")); - break; - case "143465": // CN - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); - break; - case "143470": // TW - url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-TW")); - break; - }; + default: // 其他搜索 + if (q?.startsWith?.("%E5%A4%A9%E6%B0%94%20")) { + // 处理"天气"搜索,搜索词"天气 "开头 + Console.debug("'天气 '开头"); + url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" + if (/^weather%20.*%E5%B8%82$/.test(q)) url.searchParams.set("q", q.replace(/$/, "%E5%B8%82")); + } else if (q?.endsWith?.("%20%E5%A4%A9%E6%B0%94")) { + // 处理"天气"搜索,搜索词" 天气"结尾 + Console.debug("' 天气'结尾"); + url.searchParams.set("q", q.replace(/%E5%A4%A9%E6%B0%94/, "weather")); // "天气"替换为"weather" + if (/.*%E5%B8%82%20weather$/.test(q)) url.searchParams.set("q", q.replace(/%20weather$/, "%E5%B8%82%20weather")); + } + break; + } + break; + case "/card": // 卡片 + switch (url.searchParams.get("include")) { + case "tv": + case "movies": { + url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); + const storefront = url.searchParams.get("storefront")?.match(/[\d]{6}/g); + switch ( + storefront //StoreFront ID, from App Store Region + ) { + case "143463": // HK + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); break; - case "apps": - case "music": - url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); + case "143464": // SG + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-SG")); break; - case "dictionary": - switch (Language) { - case "zh-Hans": - case "zh-Hant": - url.searchParams.set("card_locale", `en_${Settings.CountryCode}`); - break; - }; + case "143465": // CN + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-HK")); break; - default: - url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); + case "143470": // TW + url.searchParams.set("q", q.replace(/%2F[a-z]{2}-[A-Z]{2}/, "%2Fzh-TW")); break; - }; + } break; - case "/warm": + } + case "apps": + case "music": + url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); break; - case "/render": + case "dictionary": + switch (Language) { + case "zh-Hans": + case "zh-Hant": + url.searchParams.set("card_locale", `en_${Settings.CountryCode}`); + break; + } break; - case "/flight": // 航班 + default: + url.searchParams.set("card_locale", `${Language}_${Settings.CountryCode}`); break; - }; + } + break; + case "/warm": + break; + case "/render": break; - case "guzzoni.smoot.apple.com": - break; - case "fbs.smoot.apple.com": - break; - case "cdn.smoot.apple.com": - break; - }; + case "/flight": // 航班 + break; + } + break; + } + case "guzzoni.smoot.apple.com": break; - case "CONNECT": - case "TRACE": + case "fbs.smoot.apple.com": break; - }; - $request.url = url.toString(); - log(`🚧 调试信息`, `$request.url: ${$request.url}`, ""); + case "cdn.smoot.apple.com": + break; + } break; - case false: + case "CONNECT": + case "TRACE": break; - }; + } + $request.url = url.toString(); + Console.debug(`$request.url: ${$request.url}`); })() - .catch((e) => logError(e)) + .catch(e => Console.error(e)) .finally(() => { - switch ($response) { - default: // 有构造回复数据,返回构造的回复数据 + switch (typeof $response) { + case "object": // 有构造回复数据,返回构造的回复数据 + //Console.debug("finally", `echo $response: ${JSON.stringify($response, null, 2)}`); if ($response.headers?.["Content-Encoding"]) $response.headers["Content-Encoding"] = "identity"; if ($response.headers?.["content-encoding"]) $response.headers["content-encoding"] = "identity"; - switch ($platform) { + switch ($app) { default: done({ response: $response }); break; @@ -215,10 +223,14 @@ log(`⚠ FORMAT: ${FORMAT}`, ""); delete $response.headers?.["Transfer-Encoding"]; done($response); break; - }; + } break; - case undefined: // 无构造回复数据,发送修改的请求数据 + case "undefined": // 无构造回复数据,发送修改的请求数据 + //Console.debug("finally", `$request: ${JSON.stringify($request, null, 2)}`); done($request); break; - }; - }) + default: + Console.error(`不合法的 $response 类型: ${typeof $response}`); + break; + } + }); diff --git a/src/response.debug.js b/src/response.debug.js deleted file mode 100644 index 7f395d9..0000000 --- a/src/response.debug.js +++ /dev/null @@ -1,223 +0,0 @@ -import { $platform, URL, _, Storage, fetch, notification, log, logError, wait, done, getScript, runScript } from "./utils/utils.mjs"; -import GRPC from "./utils/GRPC.mjs"; -import database from "./function/database.mjs"; -import setENV from "./function/setENV.mjs"; -/***************** Processing *****************/ -// 解构URL -const url = new URL($request.url); -log(`⚠ url: ${url.toJSON()}`, ""); -// 获取连接参数 -const METHOD = $request.method, HOST = url.hostname, PATH = url.pathname, PATHs = url.pathname.split("/").filter(Boolean); -log(`⚠ METHOD: ${METHOD}, HOST: ${HOST}, PATH: ${PATH}`, ""); -// 解析格式 -const FORMAT = ($response.headers?.["Content-Type"] ?? $response.headers?.["content-type"])?.split(";")?.[0]; -log(`⚠ FORMAT: ${FORMAT}`, ""); -!(async () => { - const { Settings, Caches, Configs } = setENV("iRingo", "Siri", database); - log(`⚠ Settings.Switch: ${Settings?.Switch}`, ""); - switch (Settings.Switch) { - case true: - default: - // 创建空数据 - let body = {}; - // 格式判断 - switch (FORMAT) { - case undefined: // 视为无body - break; - case "application/x-www-form-urlencoded": - case "text/plain": - default: - break; - case "application/x-mpegURL": - case "application/x-mpegurl": - case "application/vnd.apple.mpegurl": - case "audio/mpegurl": - //body = M3U8.parse($response.body); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - //$response.body = M3U8.stringify(body); - break; - case "text/xml": - case "text/html": - case "text/plist": - case "application/xml": - case "application/plist": - case "application/x-plist": - //body = XML.parse($response.body); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - break; - case "text/vtt": - case "application/vtt": - //body = VTT.parse($response.body); - //log(`🚧 body: ${JSON.stringify(body)}`, ""); - //$response.body = VTT.stringify(body); - break; - case "text/json": - case "application/json": - body = JSON.parse($response.body ?? "{}"); - // 主机判断 - switch (HOST) { - case "api.smoot.apple.com": - case "api.smoot.apple.cn": - // 路径判断 - switch (PATH) { - case "/bag": // 配置 - body.enabled = true; - body.feedback_enabled = true; - //body.search_url = body?.search_url || "https:\/\/api-glb-apne1c.smoot.apple.com\/search"; - //body.feedback_url = body?.feedback_url || "https:\/\/fbs.smoot.apple.com\/fb"; - if (body?.enabled_domains) { - body.enabled_domains = [...new Set([...body?.enabled_domains ?? [], ...Settings.Domains])]; - log(`🎉 领域列表`, `enabled_domains: ${JSON.stringify(body.enabled_domains)}`, ""); - } - if (body?.scene_aware_lookup_enabled_domains) { - body.scene_aware_lookup_enabled_domains = [...new Set([...body?.scene_aware_lookup_enabled_domains ?? [], ...Settings.Domains])]; - log(`🎉 领域列表`, `scene_aware_lookup_enabled_domains: ${JSON.stringify(body.scene_aware_lookup_enabled_domains)}`, ""); - } - body.min_query_len = 3; - let Overrides = body?.overrides; - if (Overrides) [...new Set([...Object.keys(Overrides), ...Settings.Functions])].forEach(Function => { - log(`🎉 覆盖列表`, `Function: ${Function}`, ""); - //_.set(Overrides, `${Function}.enabled`, true); - //_.set(Overrides, `${Function}.feedback_enabled`, true); - switch (Function) { - case "flightutilities": - _.set(Overrides, "flightutilities.enabled", true); - _.set(Overrides, "flightutilities.feedback_enabled", true); - //_.set(Overrides, "flightutilities.flight_url", "https:\/\/api-glb-aps1b.smoot.apple.com\/flight"); - //_.set(Overrides, "flightutilities.fallback_flight_url", "https:\/\/api-glb-apse1c.smoot.apple.com\/flight"); - break; - case "lookup": - _.set(Overrides, "lookup.enabled", true); - _.set(Overrides, "lookup.feedback_enabled", true); - //_.set(Overrides, "lookup.min_query_len", 2); - //_.set(Overrides, "lookup.search_render_timeout", 2000); - break; - case "mail": - _.set(Overrides, "mail.enabled", true); - _.set(Overrides, "mail.feedback_enabled", true); - break; - case "messages": - _.set(Overrides, "messages.enabled", true); - _.set(Overrides, "messages.feedback_enabled", true); - break; - case "news": - _.set(Overrides, "news.enabled", true); - _.set(Overrides, "news.feedback_enabled", true); - break; - case "safari": - _.set(Overrides, "safari.enabled", true); - _.set(Overrides, "safari.feedback_enabled", true); - _.set(Overrides, "safari.experiments_custom_feedback_enabled", true); - break; - case "spotlight": - _.set(Overrides, "spotlight.enabled", true); - _.set(Overrides, "spotlight.feedback_enabled", true); - //_.set(Overrides, "spotlight.use_twolayer_ranking", true); - //_.set(Overrides, "spotlight.experiments_custom_feedback_enabled", true); - //_.set(Overrides, "spotlight.min_query_len", 2); - //_.set(Overrides, "spotlight.collect_scores", true); - //_.set(Overrides, "spotlight.collect_anonymous_metadata", true); - break; - case "visualintelligence": - _.set(Overrides, "visualintelligence.enabled", true); - _.set(Overrides, "visualintelligence.feedback_enabled", true); - _.set(Overrides, "visualintelligence.enabled_domains", [...new Set([...Overrides.visualIntelligence?.enabled_domains ?? [], ...Configs.VisualIntelligence.enabled_domains])]); - _.set(Overrides, "visualintelligence.supported_domains", [...new Set([...Overrides.visualIntelligence?.supported_domains ?? [], ...Configs.VisualIntelligence.supported_domains])]); - break; - } - }); - // Safari Smart History - body.safari_smart_history_enabled = (Settings.Safari_Smart_History) ? true : false; - body.smart_history_feature_feedback_enabled = (Settings.Safari_Smart_History) ? true : false; - /* - if (body?.mescal_enabled) { - body.mescal_enabled = true; - body.mescal_version = 200; - body.mescal_cert_url = "https://init.itunes.apple.com/WebObjects/MZInit.woa/wa/signSapSetupCert"; - body.mescal_setup_url = "https://play.itunes.apple.com/WebObjects/MZPlay.woa/wa/signSapSetup"; - } - let smart_search_v2 = body?.smart_search_v2_parameters; - if (smart_search_v2) { - smart_search_v2.smart_history_score_v2_enabled = true; - smart_search_v2.smart_history_score_v2_enable_count = true; - }; - body.session_experiment_metadata_enabled = true; - //body.sample_features = true; - //body.use_ledbelly = true; - */ - break; - }; - break; - case "fbs.smoot.apple.com": - break; - case "cdn.smoot.apple.com": - break; - default: // 其他主机 - // 路径判断 - switch (PATH) { - case "/warm": - case "/render": - case "/flight": // 航班 - break; - case "/search": // 搜索 - break; - case "/card": // 卡片 - break; - }; - break; - }; - $response.body = JSON.stringify(body); - break; - case "application/protobuf": - case "application/x-protobuf": - case "application/vnd.google.protobuf": - case "application/grpc": - case "application/grpc+proto": - case "application/octet-stream": - //log(`🚧 $response.body: ${JSON.stringify($response.body)}`, ""); - let rawBody = ($platform === "Quantumult X") ? new Uint8Array($response.bodyBytes ?? []) : $response.body ?? new Uint8Array(); - //log(`🚧 isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, ""); - switch (FORMAT) { - case "application/protobuf": - case "application/x-protobuf": - case "application/vnd.google.protobuf": - break; - case "application/grpc": - case "application/grpc+proto": - rawBody = GRPC.decode(rawBody); - // 解析链接并处理protobuf数据 - // 主机判断 - switch (HOST) { - case "guzzoni.smoot.apple.com": - // 路径判断 - switch (PATH) { - case "/apple.parsec.siri.v2alpha.SiriSearch/SiriSearch": // Siri搜索 - /****************** initialization start *******************/ - /****************** initialization finish *******************/ - break; - }; - break; - default: - // 路径判断 - switch (PATH) { - case "/apple.parsec.spotlight.v1alpha.ZkwSuggestService/Suggest": // 新闻建议 - /****************** initialization start *******************/ - /****************** initialization finish *******************/ - break; - }; - break; - }; - rawBody = GRPC.encode(rawBody); - break; - }; - // 写入二进制数据 - $response.body = rawBody; - break; - }; - break; - case false: - break; - }; -})() - .catch((e) => logError(e)) - .finally(() => done($response)) diff --git a/src/response.dev.js b/src/response.dev.js new file mode 100644 index 0000000..b35bab0 --- /dev/null +++ b/src/response.dev.js @@ -0,0 +1,219 @@ +import { $app, Console, done, gRPC, Lodash as _ } from "@nsnanocat/util"; +import database from "./function/database.mjs"; +import setENV from "./function/setENV.mjs"; +/***************** Processing *****************/ +// 解构URL +const url = new URL($request.url); +Console.info(`url: ${url.toJSON()}`); +// 获取连接参数 +const PATHs = url.pathname.split("/").filter(Boolean); +Console.info(`PATHs: ${PATHs}`); +// 解析格式 +const FORMAT = ($response.headers?.["Content-Type"] ?? $response.headers?.["content-type"])?.split(";")?.[0]; +Console.info(`FORMAT: ${FORMAT}`); +(async () => { + const { Settings, Caches, Configs } = setENV("iRingo", "Spotlight", database); + Console.logLevel = Settings.LogLevel; + // 创建空数据 + let body = {}; + // 格式判断 + switch (FORMAT) { + case undefined: // 视为无body + break; + case "application/x-www-form-urlencoded": + case "text/plain": + default: + break; + case "application/x-mpegURL": + case "application/x-mpegurl": + case "application/vnd.apple.mpegurl": + case "audio/mpegurl": + //body = M3U8.parse($response.body); + //Console.debug(`body: ${JSON.stringify(body)}`); + //$response.body = M3U8.stringify(body); + break; + case "text/xml": + case "text/html": + case "text/plist": + case "application/xml": + case "application/plist": + case "application/x-plist": + //body = XML.parse($response.body); + //Console.debug(`body: ${JSON.stringify(body)}`); + break; + case "text/vtt": + case "application/vtt": + //body = VTT.parse($response.body); + //Console.debug(`body: ${JSON.stringify(body)}`); + //$response.body = VTT.stringify(body); + break; + case "text/json": + case "application/json": + body = JSON.parse($response.body ?? "{}"); + // 主机判断 + switch (url.hostname) { + case "api.smoot.apple.com": + case "api.smoot.apple.cn": + // 路径判断 + switch (url.pathname) { + case "/bag": { + // 配置 + body.enabled = true; + body.feedback_enabled = true; + //body.search_url = body?.search_url || "https:\/\/api-glb-apne1c.smoot.apple.com\/search"; + //body.feedback_url = body?.feedback_url || "https:\/\/fbs.smoot.apple.com\/fb"; + if (body?.enabled_domains) { + body.enabled_domains = [...new Set([...(body?.enabled_domains ?? []), ...Settings.Domains])]; + Console.info("领域列表", `enabled_domains: ${JSON.stringify(body.enabled_domains)}`); + } + if (body?.scene_aware_lookup_enabled_domains) { + body.scene_aware_lookup_enabled_domains = [...new Set([...(body?.scene_aware_lookup_enabled_domains ?? []), ...Settings.Domains])]; + Console.info("领域列表", `scene_aware_lookup_enabled_domains: ${JSON.stringify(body.scene_aware_lookup_enabled_domains)}`); + } + body.min_query_len = 3; + const Overrides = body?.overrides; + if (Overrides) + [...new Set([...Object.keys(Overrides), ...Settings.Functions])].forEach(func => { + Console.info("覆盖列表", `Function: ${func}`); + //_.set(Overrides, `${func}.enabled`, true); + //_.set(Overrides, `${func}.feedback_enabled`, true); + switch (func) { + case "flightutilities": + _.set(Overrides, "flightutilities.enabled", true); + _.set(Overrides, "flightutilities.feedback_enabled", true); + //_.set(Overrides, "flightutilities.flight_url", "https:\/\/api-glb-aps1b.smoot.apple.com\/flight"); + //_.set(Overrides, "flightutilities.fallback_flight_url", "https:\/\/api-glb-apse1c.smoot.apple.com\/flight"); + break; + case "lookup": + _.set(Overrides, "lookup.enabled", true); + _.set(Overrides, "lookup.feedback_enabled", true); + //_.set(Overrides, "lookup.min_query_len", 2); + //_.set(Overrides, "lookup.search_render_timeout", 2000); + break; + case "mail": + _.set(Overrides, "mail.enabled", true); + _.set(Overrides, "mail.feedback_enabled", true); + break; + case "messages": + _.set(Overrides, "messages.enabled", true); + _.set(Overrides, "messages.feedback_enabled", true); + break; + case "news": + _.set(Overrides, "news.enabled", true); + _.set(Overrides, "news.feedback_enabled", true); + break; + case "safari": + _.set(Overrides, "safari.enabled", true); + _.set(Overrides, "safari.feedback_enabled", true); + _.set(Overrides, "safari.experiments_custom_feedback_enabled", true); + break; + case "spotlight": + _.set(Overrides, "spotlight.enabled", true); + _.set(Overrides, "spotlight.feedback_enabled", true); + //_.set(Overrides, "spotlight.use_twolayer_ranking", true); + //_.set(Overrides, "spotlight.experiments_custom_feedback_enabled", true); + //_.set(Overrides, "spotlight.min_query_len", 2); + //_.set(Overrides, "spotlight.collect_scores", true); + //_.set(Overrides, "spotlight.collect_anonymous_metadata", true); + break; + case "visualintelligence": + _.set(Overrides, "visualintelligence.enabled", true); + _.set(Overrides, "visualintelligence.feedback_enabled", true); + _.set(Overrides, "visualintelligence.enabled_domains", [...new Set([...(Overrides.visualIntelligence?.enabled_domains ?? []), ...Configs.VisualIntelligence.EnableDomains])]); + _.set(Overrides, "visualintelligence.supported_domains", [...new Set([...(Overrides.visualIntelligence?.supported_domains ?? []), ...Configs.VisualIntelligence.SupportedDomains])]); + break; + } + }); + // Safari Smart History + body.safari_smart_history_enabled = Settings.SafariSmartHistory; + body.smart_history_feature_feedback_enabled = Settings.SafariSmartHistory; + /* + if (body?.mescal_enabled) { + body.mescal_enabled = true; + body.mescal_version = 200; + body.mescal_cert_url = "https://init.itunes.apple.com/WebObjects/MZInit.woa/wa/signSapSetupCert"; + body.mescal_setup_url = "https://play.itunes.apple.com/WebObjects/MZPlay.woa/wa/signSapSetup"; + } + let smart_search_v2 = body?.smart_search_v2_parameters; + if (smart_search_v2) { + smart_search_v2.smart_history_score_v2_enabled = true; + smart_search_v2.smart_history_score_v2_enable_count = true; + }; + body.session_experiment_metadata_enabled = true; + //body.sample_features = true; + //body.use_ledbelly = true; + */ + break; + } + } + break; + case "fbs.smoot.apple.com": + break; + case "cdn.smoot.apple.com": + break; + default: // 其他主机 + // 路径判断 + switch (url.pathname) { + case "/warm": + case "/render": + case "/flight": // 航班 + break; + case "/search": // 搜索 + break; + case "/card": // 卡片 + break; + } + break; + } + $response.body = JSON.stringify(body); + break; + case "application/protobuf": + case "application/x-protobuf": + case "application/vnd.google.protobuf": + case "application/grpc": + case "application/grpc+proto": + case "application/octet-stream": { + //Console.debug(`$response.body: ${JSON.stringify($response.body)}`); + let rawBody = $app === "Quantumult X" ? new Uint8Array($response.bodyBytes ?? []) : ($response.body ?? new Uint8Array()); + //Console.debug(`isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`); + switch (FORMAT) { + case "application/protobuf": + case "application/x-protobuf": + case "application/vnd.google.protobuf": + break; + case "application/grpc": + case "application/grpc+proto": + rawBody = gRPC.decode(rawBody); + // 解析链接并处理protobuf数据 + // 主机判断 + switch (url.hostname) { + case "guzzoni.smoot.apple.com": + // 路径判断 + switch (url.pathname) { + case "/apple.parsec.siri.v2alpha.SiriSearch/SiriSearch": // Siri搜索 + /****************** initialization start *******************/ + /****************** initialization finish *******************/ + break; + } + break; + default: + // 路径判断 + switch (url.pathname) { + case "/apple.parsec.spotlight.v1alpha.ZkwSuggestService/Suggest": // 新闻建议 + /****************** initialization start *******************/ + /****************** initialization finish *******************/ + break; + } + break; + } + rawBody = gRPC.encode(rawBody); + break; + } + // 写入二进制数据 + $response.body = rawBody; + break; + } + } +})() + .catch(e => Console.error(e)) + .finally(() => done($response)); diff --git a/src/response.js b/src/response.js index 6aaf7f2..57c005d 100644 --- a/src/response.js +++ b/src/response.js @@ -1,159 +1,155 @@ -import { $platform, URL, _, Storage, fetch, notification, log, logError, wait, done, getScript, runScript } from "./utils/utils.mjs"; +import { Console, done, Lodash as _ } from "@nsnanocat/util"; import database from "./function/database.mjs"; import setENV from "./function/setENV.mjs"; -log("v4.0.3(4004)"); /***************** Processing *****************/ // 解构URL const url = new URL($request.url); -log(`⚠ url: ${url.toJSON()}`, ""); +Console.info(`url: ${url.toJSON()}`); // 获取连接参数 -const METHOD = $request.method, HOST = url.hostname, PATH = url.pathname, PATHs = url.pathname.split("/").filter(Boolean); -log(`⚠ METHOD: ${METHOD}, HOST: ${HOST}, PATH: ${PATH}`, ""); +const PATHs = url.pathname.split("/").filter(Boolean); +Console.info(`PATHs: ${PATHs}`); // 解析格式 const FORMAT = ($response.headers?.["Content-Type"] ?? $response.headers?.["content-type"])?.split(";")?.[0]; -log(`⚠ FORMAT: ${FORMAT}`, ""); -!(async () => { - const { Settings, Caches, Configs } = setENV("iRingo", "Siri", database); - log(`⚠ Settings.Switch: ${Settings?.Switch}`, ""); - switch (Settings.Switch) { - case true: +Console.info(`FORMAT: ${FORMAT}`); +(async () => { + const { Settings, Caches, Configs } = setENV("iRingo", "Spotlight", database); + Console.logLevel = Settings.LogLevel; + // 创建空数据 + let body = {}; + // 格式判断 + switch (FORMAT) { + case undefined: // 视为无body + break; + case "application/x-www-form-urlencoded": + case "text/plain": default: - // 创建空数据 - let body = {}; - // 格式判断 - switch (FORMAT) { - case undefined: // 视为无body - break; - case "application/x-www-form-urlencoded": - case "text/plain": - default: - break; - case "application/x-mpegURL": - case "application/x-mpegurl": - case "application/vnd.apple.mpegurl": - case "audio/mpegurl": + break; + case "application/x-mpegURL": + case "application/x-mpegurl": + case "application/vnd.apple.mpegurl": + case "audio/mpegurl": + break; + case "text/xml": + case "text/html": + case "text/plist": + case "application/xml": + case "application/plist": + case "application/x-plist": + break; + case "text/vtt": + case "application/vtt": + break; + case "text/json": + case "application/json": + body = JSON.parse($response.body ?? "{}"); + // 主机判断 + switch (url.hostname) { + case "api.smoot.apple.com": + case "api.smoot.apple.cn": + // 路径判断 + switch (url.pathname) { + case "/bag": { + // 配置 + body.enabled = true; + body.feedback_enabled = true; + if (body?.enabled_domains) { + body.enabled_domains = [...new Set([...(body?.enabled_domains ?? []), ...Settings.Domains])]; + Console.info("领域列表", `enabled_domains: ${JSON.stringify(body.enabled_domains)}`); + } + if (body?.scene_aware_lookup_enabled_domains) { + body.scene_aware_lookup_enabled_domains = [...new Set([...(body?.scene_aware_lookup_enabled_domains ?? []), ...Settings.Domains])]; + Console.info("领域列表", `scene_aware_lookup_enabled_domains: ${JSON.stringify(body.scene_aware_lookup_enabled_domains)}`); + } + body.min_query_len = 3; + const Overrides = body?.overrides; + if (Overrides) + [...new Set([...Object.keys(Overrides), ...Settings.Functions])].forEach(func => { + Console.info("覆盖列表", `Function: ${func}`); + //_.set(Overrides, `${func}.enabled`, true); + //_.set(Overrides, `${func}.feedback_enabled`, true); + switch (func) { + case "flightutilities": + _.set(Overrides, "flightutilities.enabled", true); + _.set(Overrides, "flightutilities.feedback_enabled", true); + //_.set(Overrides, "flightutilities.flight_url", "https:\/\/api-glb-aps1b.smoot.apple.com\/flight"); + //_.set(Overrides, "flightutilities.fallback_flight_url", "https:\/\/api-glb-apse1c.smoot.apple.com\/flight"); + break; + case "lookup": + _.set(Overrides, "lookup.enabled", true); + _.set(Overrides, "lookup.feedback_enabled", true); + //_.set(Overrides, "lookup.min_query_len", 2); + //_.set(Overrides, "lookup.search_render_timeout", 2000); + break; + case "mail": + _.set(Overrides, "mail.enabled", true); + _.set(Overrides, "mail.feedback_enabled", true); + break; + case "messages": + _.set(Overrides, "messages.enabled", true); + _.set(Overrides, "messages.feedback_enabled", true); + break; + case "news": + _.set(Overrides, "news.enabled", true); + _.set(Overrides, "news.feedback_enabled", true); + break; + case "safari": + _.set(Overrides, "safari.enabled", true); + _.set(Overrides, "safari.feedback_enabled", true); + _.set(Overrides, "safari.experiments_custom_feedback_enabled", true); + break; + case "spotlight": + _.set(Overrides, "spotlight.enabled", true); + _.set(Overrides, "spotlight.feedback_enabled", true); + //_.set(Overrides, "spotlight.use_twolayer_ranking", true); + //_.set(Overrides, "spotlight.experiments_custom_feedback_enabled", true); + //_.set(Overrides, "spotlight.min_query_len", 2); + //_.set(Overrides, "spotlight.collect_scores", true); + //_.set(Overrides, "spotlight.collect_anonymous_metadata", true); + break; + case "visualintelligence": + _.set(Overrides, "visualintelligence.enabled", true); + _.set(Overrides, "visualintelligence.feedback_enabled", true); + _.set(Overrides, "visualintelligence.enabled_domains", [...new Set([...(Overrides.visualIntelligence?.enabled_domains ?? []), ...Configs.VisualIntelligence.EnableDomains])]); + _.set(Overrides, "visualintelligence.supported_domains", [...new Set([...(Overrides.visualIntelligence?.supported_domains ?? []), ...Configs.VisualIntelligence.SupportedDomains])]); + break; + } + }); + // Safari Smart History + body.safari_smart_history_enabled = Settings.SafariSmartHistory; + body.smart_history_feature_feedback_enabled = Settings.SafariSmartHistory; + break; + } + } break; - case "text/xml": - case "text/html": - case "text/plist": - case "application/xml": - case "application/plist": - case "application/x-plist": + case "fbs.smoot.apple.com": break; - case "text/vtt": - case "application/vtt": + case "cdn.smoot.apple.com": break; - case "text/json": - case "application/json": - body = JSON.parse($response.body ?? "{}"); - // 主机判断 - switch (HOST) { - case "api.smoot.apple.com": - case "api.smoot.apple.cn": - // 路径判断 - switch (PATH) { - case "/bag": // 配置 - body.enabled = true; - body.feedback_enabled = true; - if (body?.enabled_domains) { - body.enabled_domains = [...new Set([...body?.enabled_domains ?? [], ...Settings.Domains])]; - log(`🎉 领域列表`, `enabled_domains: ${JSON.stringify(body.enabled_domains)}`, ""); - } - if (body?.scene_aware_lookup_enabled_domains) { - body.scene_aware_lookup_enabled_domains = [...new Set([...body?.scene_aware_lookup_enabled_domains ?? [], ...Settings.Domains])]; - log(`🎉 领域列表`, `scene_aware_lookup_enabled_domains: ${JSON.stringify(body.scene_aware_lookup_enabled_domains)}`, ""); - } - body.min_query_len = 3; - let Overrides = body?.overrides; - if (Overrides) [...new Set([...Object.keys(Overrides), ...Settings.Functions])].forEach(Function => { - log(`🎉 覆盖列表`, `Function: ${Function}`, ""); - //_.set(Overrides, `${Function}.enabled`, true); - //_.set(Overrides, `${Function}.feedback_enabled`, true); - switch (Function) { - case "flightutilities": - _.set(Overrides, "flightutilities.enabled", true); - _.set(Overrides, "flightutilities.feedback_enabled", true); - //_.set(Overrides, "flightutilities.flight_url", "https:\/\/api-glb-aps1b.smoot.apple.com\/flight"); - //_.set(Overrides, "flightutilities.fallback_flight_url", "https:\/\/api-glb-apse1c.smoot.apple.com\/flight"); - break; - case "lookup": - _.set(Overrides, "lookup.enabled", true); - _.set(Overrides, "lookup.feedback_enabled", true); - //_.set(Overrides, "lookup.min_query_len", 2); - //_.set(Overrides, "lookup.search_render_timeout", 2000); - break; - case "mail": - _.set(Overrides, "mail.enabled", true); - _.set(Overrides, "mail.feedback_enabled", true); - break; - case "messages": - _.set(Overrides, "messages.enabled", true); - _.set(Overrides, "messages.feedback_enabled", true); - break; - case "news": - _.set(Overrides, "news.enabled", true); - _.set(Overrides, "news.feedback_enabled", true); - break; - case "safari": - _.set(Overrides, "safari.enabled", true); - _.set(Overrides, "safari.feedback_enabled", true); - _.set(Overrides, "safari.experiments_custom_feedback_enabled", true); - break; - case "spotlight": - _.set(Overrides, "spotlight.enabled", true); - _.set(Overrides, "spotlight.feedback_enabled", true); - //_.set(Overrides, "spotlight.use_twolayer_ranking", true); - //_.set(Overrides, "spotlight.experiments_custom_feedback_enabled", true); - //_.set(Overrides, "spotlight.min_query_len", 2); - //_.set(Overrides, "spotlight.collect_scores", true); - //_.set(Overrides, "spotlight.collect_anonymous_metadata", true); - break; - case "visualintelligence": - _.set(Overrides, "visualintelligence.enabled", true); - _.set(Overrides, "visualintelligence.feedback_enabled", true); - _.set(Overrides, "visualintelligence.enabled_domains", [...new Set([...Overrides.visualIntelligence?.enabled_domains ?? [], ...Configs.VisualIntelligence.enabled_domains])]); - _.set(Overrides, "visualintelligence.supported_domains", [...new Set([...Overrides.visualIntelligence?.supported_domains ?? [], ...Configs.VisualIntelligence.supported_domains])]); - break; - } - }); - // Safari Smart History - body.safari_smart_history_enabled = (Settings.Safari_Smart_History) ? true : false; - body.smart_history_feature_feedback_enabled = (Settings.Safari_Smart_History) ? true : false; - break; - }; - break; - case "fbs.smoot.apple.com": + default: // 其他主机 + // 路径判断 + switch (url.pathname) { + case "/warm": + case "/render": + case "/flight": // 航班 break; - case "cdn.smoot.apple.com": + case "/search": // 搜索 break; - default: // 其他主机 - // 路径判断 - switch (PATH) { - case "/warm": - case "/render": - case "/flight": // 航班 - break; - case "/search": // 搜索 - break; - case "/card": // 卡片 - break; - }; + case "/card": // 卡片 break; - }; - $response.body = JSON.stringify(body); - break; - case "application/protobuf": - case "application/x-protobuf": - case "application/vnd.google.protobuf": - case "application/grpc": - case "application/grpc+proto": - case "application/octet-stream": + } break; - }; + } + $response.body = JSON.stringify(body); break; - case false: + case "application/protobuf": + case "application/x-protobuf": + case "application/vnd.google.protobuf": + case "application/grpc": + case "application/grpc+proto": + case "application/octet-stream": { break; - }; + } + } })() - .catch((e) => logError(e)) - .finally(() => done($response)) + .catch(e => Console.error(e)) + .finally(() => done($response)); diff --git a/src/utils b/src/utils deleted file mode 160000 index 40e91e8..0000000 --- a/src/utils +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 40e91e80011968370ba7ef400ff768dabf5cf583 diff --git a/template/boxjs.settings.json b/template/boxjs.settings.json new file mode 100644 index 0000000..0275256 --- /dev/null +++ b/template/boxjs.settings.json @@ -0,0 +1 @@ +[{"id":"@iRingo.Spotlight.Settings.CountryCode","name":"国家或地区代码","type":"selects","val":"SG","items":[{"key":"AUTO","label":"🇺🇳自动(跟随系统地区设置)"},{"key":"CN","label":"🇨🇳中国大陆"},{"key":"HK","label":"🇭🇰中国香港"},{"key":"TW","label":"🇹🇼中国台湾"},{"key":"SG","label":"🇸🇬新加坡"},{"key":"US","label":"🇺🇸美国"},{"key":"JP","label":"🇯🇵日本"},{"key":"AU","label":"🇦🇺澳大利亚"},{"key":"GB","label":"🇬🇧英国"},{"key":"KR","label":"🇰🇷韩国"},{"key":"CA","label":"🇨🇦加拿大"},{"key":"IE","label":"🇮🇪爱尔兰"}],"desc":"不同国家或地区提供的内容或有差别,此选项同时会影响分配给您不同地区的 Siri 服务器。"},{"id":"@iRingo.Spotlight.Settings.Domains","name":"搜索领域","type":"checkboxes","val":["web","itunes","app_store","movies","restaurants","maps"],"items":[{"key":"web","label":"网页"},{"key":"itunes","label":"iTunes"},{"key":"app_store","label":"App Store"},{"key":"movies","label":"电影"},{"key":"restaurants","label":"餐厅"},{"key":"maps","label":"地图"}],"desc":"启用搜索的领域,领域数据由国家或地区设置决定,此选项仅开启搜索的领域,不代表设置的地区一定有相应的数据和服务。"},{"id":"@iRingo.Spotlight.Settings.Functions","name":"功能","type":"checkboxes","val":["flightutilities","lookup","mail","messages","news","safari","siri","spotlight","visualintelligence"],"items":[{"key":"flightutilities","label":"航班工具"},{"key":"lookup","label":"查询"},{"key":"mail","label":"邮件"},{"key":"messages","label":"信息"},{"key":"news","label":"新闻"},{"key":"safari","label":"Safari浏览器"},{"key":"siri","label":"Siri"},{"key":"spotlight","label":"聚焦搜索"},{"key":"visualintelligence","label":"视觉智能"}],"desc":"启用的「Siri 建议」功能,未选的功能不代表关闭,仅代表还原到该地区默认设置状态。"},{"id":"@iRingo.Spotlight.Settings.SafariSmartHistory","name":"Safari 智能历史记录","type":"boolean","val":true,"desc":"是否在 Safari 浏览器中启用基于历史记录的Siri建议功能,启用后将在Safari浏览器起始页推荐基于时间地点跨设备等的相关浏览记录。"},{"id":"@iRingo.Spotlight.Settings.LogLevel","name":"[调试] 日志等级","type":"selects","val":"WARN","items":[{"key":"OFF","label":"关闭"},{"key":"ERROR","label":"❌ 错误"},{"key":"WARN","label":"⚠️ 警告"},{"key":"INFO","label":"ℹ️ 信息"},{"key":"DEBUG","label":"🅱️ 调试"},{"key":"ALL","label":"全部"}],"desc":"选择脚本日志的输出等级,低于所选等级的日志将全部输出。"}] \ No newline at end of file