From 483b554c3cd7ed5b996d8833cfde981701267ddd Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 31 Oct 2026 04:33:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20Web=20=E8=A3=85=E5=88=B0=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=EF=BC=88PWA=EF=BC=89=EF=BC=8C=E5=B8=A6=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E5=BC=95=E5=AF=BC=E4=B8=8E=E5=8F=91=E7=89=88=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用 vite-plugin-pwa 生成 manifest 与 Service Worker,不自己写缓存逻辑。 - 装到桌面:manifest 名字/主题色/三个图标(any + maskable + apple-touch-icon), 图标和页头、安卓桌面是同一枚;首页底部给安装引导,能装就弹「安装」, iOS 给「分享 → 添加到主屏幕」,关掉记在 localStorage - 发版提示:registerType=prompt,收到新版本只在底部提示,点「刷新」才换。 故意不自动刷新——Vditor、图表是懒加载分片,后台换 chunk 会让面板 404 - 缓存边界:只预缓存页面骨架(约 0.8MB),/api/ 一律 NetworkOnly, 离线宁可报错也不端旧数据;/vditor/ 走 CacheFirst,不拖慢首次安装 - 顺手修:UpdatePrompt 居中改用 flex 包一层,animate-slide-up 的 keyframes 自带 transform,会和 -translate-x-1/2 抢属性,手机窄屏会把卡片推出屏幕 验证:web/e2e/pwa.mjs 19 项全绿(manifest/SW 激活/预缓存/安装引导/iOS 文案/ 发版提示/断网仍能打开);tsc 通过、vite build 通过。 已知限制:Service Worker 只在 https 或 localhost 注册,生产入口还是 http, 所以内网 IP 上装不了——需要域名 + 证书反代或隧道,已写进 DEPLOY.md 第 6 节。 --- 2.Design/DEPLOY.md | 34 +- 2.Design/ROADMAP-M0-M1.md | 40 + web/e2e/pwa.mjs | 180 ++ web/index.html | 13 +- web/package-lock.json | 4272 ++++++++++++++++++++++++- web/package.json | 3 +- web/public/icons/apple-touch-icon.png | Bin 0 -> 3160 bytes web/public/icons/icon-192.png | Bin 0 -> 7153 bytes web/public/icons/icon-512.png | Bin 0 -> 22359 bytes web/public/icons/maskable-512.png | Bin 0 -> 8659 bytes web/src/App.tsx | 2 + web/src/components/InstallHint.tsx | 99 + web/src/components/UpdatePrompt.tsx | 58 + web/src/lib/pwa.ts | 54 + web/src/main.tsx | 4 + web/src/pages/Home.tsx | 2 + web/tsconfig.json | 2 +- web/vite.config.ts | 61 +- 18 files changed, 4798 insertions(+), 26 deletions(-) create mode 100644 web/e2e/pwa.mjs create mode 100644 web/public/icons/apple-touch-icon.png create mode 100644 web/public/icons/icon-192.png create mode 100644 web/public/icons/icon-512.png create mode 100644 web/public/icons/maskable-512.png create mode 100644 web/src/components/InstallHint.tsx create mode 100644 web/src/components/UpdatePrompt.tsx create mode 100644 web/src/lib/pwa.ts diff --git a/2.Design/DEPLOY.md b/2.Design/DEPLOY.md index 925ba91..2c82fd7 100644 --- a/2.Design/DEPLOY.md +++ b/2.Design/DEPLOY.md @@ -152,7 +152,35 @@ curl -sI http://192.168.8.188:8200/api/v1/app/release/download/dadaotask-0.2.0.a 手机端:装上新包 → 下次启动自动查一次;也可以在首页底部点「检查更新」。 装完再启动,`version_code` 已是最新,接口返回 `has_update=false`,不会再弹。 -## 6. 运维 +## 6. Web 装到桌面(PWA) + +前端已经打成 PWA:`/manifest.webmanifest` 与 `/sw.js` 由后端静态层直接返回(`_SPAStaticFiles` 挂在 `/`, +不需要额外配置),`node_modules/.bin` 之外没有额外依赖。发布流程不变。 + +**装的条件是安全上下文**——浏览器只允许 `https` 或 `localhost` 注册 Service Worker,也就是说: + +| 入口 | 能不能装 | +|---|---| +| `https://<域名>/` | 能,手机和电脑都会出现安装入口 | +| `http://127.0.0.1:8200/`(本机打开) | 能,仅限这台机器 | +| `http://192.168.8.188:8200/` | **不能**,非安全上下文:不弹安装、SW 也不注册 | + +内网 IP 目前就是这种情况,所以真要在手机上装到桌面,得给入口套一层 HTTPS: +在能装 nginx 的机器上(或 fnsvr-01 的 1Panel OpenResty)加一个 `443 → 127.0.0.1:8200` 的反代就好, +应用本身不用改;示例见 `deploy/prod/nginx.dadaotask.conf.example`。也可以用 Cloudflare Tunnel 之类的 +隧道拿一个 https 域名,同样不用碰应用代码。 + +装好之后的两个行为: + +- **图标**:来自 `web/public/icons/`(any + maskable 两套,iOS 吃 `apple-touch-icon.png`), + 与 Web 页头、安卓桌面图标是同一枚。 +- **发版提示**:SW 采用 `registerType: "prompt"`,检测到新版本只在页面底部提示「有新版了」, + 用户点「刷新」才切换。**故意不自动刷新**:Vditor、图表是懒加载分片,后台把 chunk 换掉之后, + 用户下一次点开面板就是 404(编辑器白屏)。 +- **离线**:只预缓存页面骨架(构建产物 + 图标,约 0.8MB),`/api/` 一律 NetworkOnly—— + 宁可报错,也不拿旧数据糊弄人。 + +## 7. 运维 ```bash systemctl --user status dadaotask-api # 状态 @@ -164,11 +192,11 @@ journalctl --user -u dadaotask-api -f # 日志(gunicorn 输出到 stdout - 回滚:`cd ~/app/dadaotask && git reset --hard <旧 commit> && bash deploy/prod/deploy.sh`;**数据库迁移不回滚**,回滚代码前确认旧代码兼容新表结构 - 端口:`8200`(systemd 单元与 `deploy.sh` 的 `PORT` 默认值,两处要一致) -## 7. 已知限制(当前阶段) +## 8. 已知限制(当前阶段) | 限制 | 影响 | 解除方式 | |---|---|---| -| 没有 HTTPS / 域名 | 只能内网 IP 访问,令牌明文传输 | 域名 + nginx + 证书(需 root) | +| 没有 HTTPS / 域名 | 只能内网 IP 访问,令牌明文传输;**PWA 装不上**(非安全上下文) | 域名 + nginx + 证书(需 root) | | 内测固定验证码 | 谁都能用任意手机号登录 | 接短信通道,关 `INTERNAL_TEST_LOGIN` | | 无 pgvector | 语义检索走 `real[]` 全表扫描,数据量大了会慢 | 上独立 pgvector 实例(`deploy/docker-compose.vector.yml`) | | 上传目录在本机磁盘 | 机器坏了附件就没了 | 备份 `backend/var/uploads`,或将来到对象存储 | diff --git a/2.Design/ROADMAP-M0-M1.md b/2.Design/ROADMAP-M0-M1.md index 01f6b97..32f1d02 100644 --- a/2.Design/ROADMAP-M0-M1.md +++ b/2.Design/ROADMAP-M0-M1.md @@ -501,3 +501,43 @@ ### 7.6 没做的 - 安卓端登录页仍只有验证码,账号页也没有——下一步对齐(密码登录 + 改昵称 + 退出) - 手机号换绑、头像上传未做(头像现在只有首字母) + +## 8. Web 装到桌面(PWA,2026-10-31) + +### 8.1 要解决的问题 +"web版本帮我封装成PWA,这样方便安装到手机桌面和电脑桌面。"(用户原话) + +现在每次用都要敲地址、开浏览器、找标签页;手机上还给不了"点了图标就进来"的感觉。 + +### 8.2 决定(写进注释了,别以后翻案) +- 用 `vite-plugin-pwa`(本就在 devDependencies 里,2.0.0)生成 SW 与 manifest,不自己写 +- `registerType: "prompt"` + `injectRegister: null`:**有新版只提示,点「刷新」才换**。 + 理由:Vditor、图表是懒加载分片,`autoUpdate` 会在用户开着页面时把 chunk 换掉, + 下一次点开面板就是 404(编辑器白屏) +- 预缓存只放构建产物与图标(约 0.8MB);`/api/` 一律 NetworkOnly——离线宁可报错,也不端旧数据 +- 图标复用 Web Logo 的 32 单位坐标生成,和页头、安卓桌面图标同一枚 + +### 8.3 实现 +| 位置 | 内容 | +|---|---| +| `web/vite.config.ts` | manifest(standalone、主题色 `#2f6054`、三个图标)+ workbox(`navigateFallback` 回退 `index.html`,`/vditor/` 走 CacheFirst,`/api/` NetworkOnly) | +| `web/index.html` | favicon 改成同款 Logo(内联 SVG)、`theme-color`、`apple-touch-icon`、`viewport-fit=cover` | +| `web/src/lib/pwa.ts` | 生产环境注册 SW、`dadao:pwa-update-ready` 事件、`applyServiceWorkerUpdate()`、`isStandalone()` | +| `web/src/components/UpdatePrompt.tsx` | 底部卡片「有新版了」+ 稍后 / 刷新(**居中用 flex 包一层**:`animate-slide-up` 的 keyframes 自带 transform,会和 `-translate-x-1/2` 抢属性,手机窄屏上卡片会被推出屏幕右侧) | +| `web/src/components/InstallHint.tsx` | 首页底部安装引导:能装就给「安装」按钮(拦 `beforeinstallprompt`),iOS 给"分享 → 添加到主屏幕",关掉记在 localStorage | +| `web/public/icons/` | `icon-192` / `icon-512`(any)、`maskable-512`、`apple-touch-icon`(180,iOS 不吃透明) | + +### 8.4 验证 +- `web/e2e/pwa.mjs`(**19 项全绿**):manifest 名字/standalone/三个图标 → 图标都能下载 200 → + SW 已 `activated` 且作用域是整站 → 页面骨架已进预缓存 → 主题色 → 桌面尺寸控制台零报错 → + 窄屏有安装引导 → iOS 文案是「分享 → 添加到主屏幕」→ 关掉后刷新不再出现 → + 有新版会提示 → 点「稍后」收起 → **断网后页面骨架仍能打开** +- 跑法:后端用 `WEB_DIST_DIR=/web/dist` 起一个同构站点(生产同形), + 然后 `node web/e2e/pwa.mjs`;`BASE` 可换环境 +- 截图:`web/e2e/artifacts/pwa-install-hint.png`、`pwa-update-prompt.png`、`pwa-offline.png` + +### 8.5 还没解开的 +- **生产入口还是 http**:Service Worker 只在 https / localhost 注册,所以内网 IP 上装不了、 + 也看不到安装提示(桌面用 `127.0.0.1` 打开可以)。要么加域名 + 证书反代(`443 → 127.0.0.1:8200`), + 要么用 Cloudflare Tunnel 之类拿个 https 域名;应用代码不用改。已写进 `DEPLOY.md` 第 6 节 +- 安卓端还在走自己的 OTA(原生包),和 PWA 是两条路;要不要让安卓也改成加载 Web,等产品定 diff --git a/web/e2e/pwa.mjs b/web/e2e/pwa.mjs new file mode 100644 index 0000000..20c2a51 --- /dev/null +++ b/web/e2e/pwa.mjs @@ -0,0 +1,180 @@ +/** + * PWA 验收脚本:装得上、离线开得开、有新版本提醒得了。 + * + * 跑法(必须先有一个"生产同构"的站点:后端用 WEB_DIST_DIR 指向 web/dist): + * WEB_DIST_DIR=/web/dist ../backend/.venv/Scripts/python.exe -m uvicorn app.main:app --port 8101 + * node web/e2e/pwa.mjs # 默认 BASE=http://127.0.0.1:8101 + * + * 两个坑: + * 1. Service Worker 只在安全上下文(https / localhost)注册,所以这里必须走 127.0.0.1, + * 不能换成内网 IP——那台机器上要真的装上,得先有 https。 + * 2. 无头 Chromium 不会触发 beforeinstallprompt,所以"安装"那段用 iPhone 的 UA 走 + * iOS 分支(分享 → 添加到主屏幕),这是唯一能稳定断言到的安装引导。 + */ +import { chromium } from "playwright-core"; +import { mkdirSync, readFileSync } from "node:fs"; + +const BASE = process.env.BASE ?? "http://127.0.0.1:8101"; +const PHONE = process.env.PHONE ?? "13900000001"; +const CODE = process.env.CODE ?? "123456"; +const PWD_FILE = new URL("../../.local/e2e-account-password.txt", import.meta.url); +const OUT = "e2e/artifacts"; +const CHROME = + process.env.CHROME ?? + `${process.env.LOCALAPPDATA}\\ms-playwright\\chromium-1223\\chrome-win64\\chrome.exe`; + +const IOS_UA = + "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1"; + +let pass = 0; +let fail = 0; +function check(name, ok, extra = "") { + if (ok) { + pass += 1; + console.log(`PASS ${name}`); + } else { + fail += 1; + console.log(`FAIL ${name} ${extra}`); + } +} + +async function token() { + // 先试密码(快、不撞短信节流),不行再发验证码 + try { + const saved = readFileSync(PWD_FILE, "utf8").trim(); + const r = await fetch(`${BASE}/api/v1/auth/login/password`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ phone: PHONE, password: saved }), + }); + const body = await r.json(); + if (body?.code === 0) return body.data.tokens; + } catch { + // 没存过密码:往下走验证码 + } + await fetch(`${BASE}/api/v1/auth/sms/send`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ phone: PHONE }), + }); + const r = await fetch(`${BASE}/api/v1/auth/login`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ phone: PHONE, code: CODE }), + }); + const body = await r.json(); + if (body?.code !== 0) throw new Error(`登录失败:${JSON.stringify(body)}`); + return body.data.tokens; +} + +async function main() { + mkdirSync(OUT, { recursive: true }); + const tokens = await token(); + const browser = await chromium.launch({ executablePath: CHROME }); + + // ── 一、桌面尺寸:Service Worker 与 manifest ───────────────────── + const desktop = await browser.newContext({ viewport: { width: 1440, height: 900 } }); + await desktop.addInitScript( + ([access, refresh]) => { + localStorage.setItem("dadao.access", access); + localStorage.setItem("dadao.refresh", refresh); + }, + [tokens.access_token, tokens.refresh_token], + ); + const page = await desktop.newPage(); + const errors = []; + page.on("pageerror", (e) => errors.push(String(e))); + await page.goto(`${BASE}/`, { waitUntil: "networkidle" }); + + const manifestHref = await page.getAttribute('link[rel="manifest"]', "href"); + check("页面挂了 manifest", Boolean(manifestHref), String(manifestHref)); + + const manifest = await (await fetch(`${BASE}${manifestHref}`)).json(); + check("manifest 名字是「达道Task」", manifest.short_name === "达道Task", JSON.stringify(manifest.name)); + check("独立窗口打开(display=standalone)", manifest.display === "standalone", String(manifest.display)); + check("三个图标齐全", (manifest.icons ?? []).length === 3, JSON.stringify(manifest.icons)); + check( + "有一个 maskable 图标", + (manifest.icons ?? []).some((i) => String(i.purpose).includes("maskable")), + ); + + for (const icon of manifest.icons ?? []) { + const res = await fetch(`${BASE}/${String(icon.src).replace(/^\//, "")}`); + check(`图标可下载 ${icon.sizes}`, res.ok && res.headers.get("content-type") === "image/png"); + } + + const sw = await page.evaluate(async () => { + const reg = await navigator.serviceWorker.ready; + return { scope: reg.scope, state: reg.active?.state ?? "none" }; + }); + check("Service Worker 已激活", sw.state === "activated", JSON.stringify(sw)); + check("作用域是整站", sw.scope.endsWith("/"), sw.scope); + + const shellCached = await page.evaluate(async () => { + const cache = await caches.open("workbox-precache-v2-" + location.origin + "/"); + const keys = await cache.keys(); + return keys.some((k) => k.url.includes("index.html")); + }); + check("页面骨架已预缓存", shellCached); + + const themeColor = await page.getAttribute('meta[name="theme-color"]', "content"); + check("主题色是墨绿", themeColor === "#2f6054", String(themeColor)); + check("桌面尺寸没有控制台报错", errors.length === 0, errors.join(" | ")); + await desktop.close(); + + // ── 二、iPhone 尺寸:安装引导(iOS 只能靠「分享 → 添加到主屏幕」)───── + const phone = await browser.newContext({ + viewport: { width: 390, height: 844 }, + userAgent: IOS_UA, + deviceScaleFactor: 2, + }); + await phone.addInitScript( + ([access, refresh]) => { + localStorage.setItem("dadao.access", access); + localStorage.setItem("dadao.refresh", refresh); + }, + [tokens.access_token, tokens.refresh_token], + ); + const m = await phone.newPage(); + await m.goto(`${BASE}/`, { waitUntil: "networkidle" }); + await m.waitForSelector("text=把达道Task装到桌面", { timeout: 10000 }); + const hint = await m.locator("text=把达道Task装到桌面").first().isVisible(); + check("窄屏首页有安装引导", hint); + const iosText = await m.locator("text=添加到主屏幕").count(); + check("iOS 给出的是「分享 → 添加到主屏幕」", iosText > 0); + await m.screenshot({ path: `${OUT}/pwa-install-hint.png` }); + + await m.getByRole("button", { name: "不再提示安装" }).click(); + await m.reload({ waitUntil: "networkidle" }); + const stillThere = await m.locator("text=把达道Task装到桌面").count(); + check("关掉之后不再打扰(刷新也不回来)", stillThere === 0); + + // ── 三、有新版时提醒,点「稍后」收起 ───────────────────────────── + await m.evaluate(() => window.dispatchEvent(new Event("dadao:pwa-update-ready"))); + await m.waitForSelector("text=有新版了", { timeout: 5000 }); + check("检测到新版本会提示刷新", (await m.locator("text=有新版了").count()) > 0); + await m.screenshot({ path: `${OUT}/pwa-update-prompt.png` }); + await m.getByRole("button", { name: "稍后" }).click(); + check("点「稍后」会收起", (await m.locator("text=有新版了").count()) === 0); + + // ── 四、断网还能打开(这是装到桌面的实际价值)───────────────────── + await m.evaluate(() => localStorage.clear()); + await m.reload({ waitUntil: "networkidle" }); + await phone.setOffline(true); + await m.reload({ waitUntil: "domcontentloaded" }).catch(() => {}); + const body = await m.locator("body").innerText(); + check("断网后页面骨架仍能打开", body.length > 0 && /登录|达道/.test(body), body.slice(0, 80)); + await phone.setOffline(false); + await m.screenshot({ path: `${OUT}/pwa-offline.png` }); + + await phone.close(); + await browser.close(); + + console.log(`\n${fail === 0 ? "ALL PASS" : "SOME FAILED"} — pass ${pass}, fail ${fail}`); + process.exit(fail === 0 ? 0 : 1); +} + +main().catch((err) => { + console.error("脚本异常 —", err?.message ?? err); + process.exit(1); +}); diff --git a/web/index.html b/web/index.html index c72aad7..c6eed9b 100644 --- a/web/index.html +++ b/web/index.html @@ -2,14 +2,21 @@ - + 达道Task - + + + + + + + +
diff --git a/web/package-lock.json b/web/package-lock.json index 66b6fba..e679a2e 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -24,7 +24,8 @@ "postcss": "^8.4.49", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", - "vite": "^6.0.5" + "vite": "^6.0.5", + "vite-plugin-pwa": "^2.0.0" } }, "node_modules/@alloc/quick-lru": { @@ -40,6 +41,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@apideck/better-ajv-errors": { + "version": "0.3.7", + "resolved": "https://registry.npmmirror.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.7.tgz", + "integrity": "sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonpointer": "^5.0.1", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -97,14 +115,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.8", - "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/generator/-/generator-7.29.8.tgz", - "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "version": "7.29.12", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.12.tgz", + "integrity": "sha512-2W76mhjrpQFO1lK5e8IvGYB2D0YZ7S2R1Z2BjO2ZUYuW+amcpK/z60U6ZZmzskwoa7sJ6XohP/Wg8H5KxXI/IA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.8", - "@babel/types": "^7.29.8", + "@babel/parser": "^7.29.12", + "@babel/types": "^7.29.11", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -113,6 +131,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", @@ -130,6 +161,63 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.12", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.12.tgz", + "integrity": "sha512-ACxGoWMV866q/QlZHeCOaQZAR5QclKsIvkAmlDemqjm6+6Bynijs1mH068BzH2N2e+wSuDmBWY87fqKfvhi1Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.12", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.10", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.10.tgz", + "integrity": "sha512-/YY9soQuWa8TURtHXHT+GbklpbAA+dZErxFGHIr6qgDg96xuGWrTAs1+MfjgVJPF0YLQsOVsOYs8lhgsPbOinQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.5.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/helper-globals": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/helper-globals/-/helper-globals-7.29.7.tgz", @@ -140,6 +228,20 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", @@ -172,6 +274,19 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-plugin-utils": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", @@ -182,6 +297,56 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.29.11", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.29.11.tgz", @@ -212,6 +377,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helpers": { "version": "7.29.10", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/helpers/-/helpers-7.29.10.tgz", @@ -227,9 +407,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.11", - "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.29.11.tgz", - "integrity": "sha512-OZ6+oaK7GMyg3IfCpj8JOmn8n+w2rJbDT0LLfVDTLb1ZFeKDh3AiNELgCMUw175IJHSkLl74hG0M0VLsvx+gag==", + "version": "7.29.12", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.12.tgz", + "integrity": "sha512-WJ7JBp/Q4+z/ImydtI7jS6NVco5++632ExBemSX+Ysb+G1lCwQ5BVo3SY+jGGOcZXI4ZccbZSUSJLNBW6eEpJg==", "dev": true, "license": "MIT", "dependencies": { @@ -242,6 +422,828 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.12.tgz", + "integrity": "sha512-nEreZBofjfd6FG621xe9Rk3+tMGBXf1nAuFrR6NUGF67fkQbSQf3NrbRuhgWRn+zb0qcy9XVok1GVFI/t9wWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.11.tgz", + "integrity": "sha512-f8kTDM/nTvpLeafb+TJ4jboFr/Y3BbC+QzgPpPGzSKJqWLnj9LW0WLqv4XKA11LX5sr+EgvLE6Ix3YsCEusodw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.10" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", @@ -274,6 +1276,314 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.11.tgz", + "integrity": "sha512-5xWGhfuMgbOfIjsk/I2c4uMnoqRwQdKYi4QjvybQrcEVE0G9/p3qmIkp2Sxe8YF8DGNNVs5whfwNqIM5684XoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.29.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/template/-/template-7.29.7.tgz", @@ -290,18 +1600,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.10", - "resolved": "http://mirrors.huaweicloud.com/repository/npm/@babel/traverse/-/traverse-7.29.10.tgz", - "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", + "version": "7.29.12", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.12.tgz", + "integrity": "sha512-MscXe/NAZcOkYEsRajHZFt3ynsb22PUi6CTrp5U7+RYycR9By84mn9mFN54YgfITiqK4hFx3Ju3tZSyzfpS5ew==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.8", + "@babel/generator": "^7.29.12", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.9", + "@babel/parser": "^7.29.12", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.8", + "@babel/types": "^7.29.11", "debug": "^4.3.1" }, "engines": { @@ -764,6 +2074,16 @@ "node": ">=18" } }, + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -796,6 +2116,17 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.6.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", @@ -888,6 +2219,139 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/plugin-babel": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz", + "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.3", + "resolved": "https://registry.npmmirror.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", + "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@rollup/plugin-terser/-/plugin-terser-1.0.2.tgz", + "integrity": "sha512-+UihHnuLnQDQ/9wog7ym+7oawCXkjTIo0WwkK7s//0mkktTN0VhYk6fGVxH+NtGzW064w5RCGgreMDxRVhHCzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^7.0.3", + "smob": "^1.0.0", + "terser": "^5.49.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.5.1", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.5.1.tgz", + "integrity": "sha512-P9ZvnfouRu4MSC+ilERaw6FmZs8zqKhpHxEs4aGDGWQAMzQGXnhvCSvoNwokfNvdt7t3Y5Y4p6gStQgezeIqug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.65.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.65.1.tgz", @@ -1277,6 +2741,22 @@ "win32" ] }, + "node_modules/@trickfilm400/rollup-plugin-off-main-thread": { + "version": "3.0.0-pre1", + "resolved": "https://registry.npmmirror.com/@trickfilm400/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-3.0.0-pre1.tgz", + "integrity": "sha512-/67zpWDBLV+oYAEL682s1ktXL0HgqX76f6gaVGkGnVZlBbm1zd0v4Bz8MFF2GGhoX9rvfq3KSQHubFHwa6w6/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.10", + "json5": "^2.2.3", + "magic-string": "^0.30.21", + "string.prototype.matchall": "^4.0.12" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1357,12 +2837,19 @@ "@types/react": "^18.0.0" } }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", @@ -1385,6 +2872,36 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, + "node_modules/acorn": { + "version": "8.19.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.19.0.tgz", + "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "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/any-promise": { "version": "1.3.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/any-promise/-/any-promise-1.3.0.tgz", @@ -1429,6 +2946,72 @@ ], "license": "PSF-2.0" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.6.2", "resolved": "http://mirrors.huaweicloud.com/repository/npm/autoprefixer/-/autoprefixer-10.6.2.tgz", @@ -1466,6 +3049,74 @@ "postcss": "^8.1.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/baseline-browser-mapping": { "version": "2.11.33", "resolved": "http://mirrors.huaweicloud.com/repository/npm/baseline-browser-mapping/-/baseline-browser-mapping-2.11.33.tgz", @@ -1492,6 +3143,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/braces/-/braces-3.0.3.tgz", @@ -1539,6 +3203,63 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -1618,6 +3339,16 @@ "node": ">= 6" } }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -1625,6 +3356,48 @@ "dev": true, "license": "MIT" }, + "node_modules/core-js-compat": { + "version": "3.51.0", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.51.0.tgz", + "integrity": "sha512-52r6fkXgxv4GLMjmFcMWRx7X9bw071xTTdrDcdyPGRqU2oE+9pCG0bAOMifSBdLw0JRBZKEF0q3B55qPlLuE8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.29.3" + }, + "engines": { + "node": ">=6.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/cssesc/-/cssesc-3.0.0.tgz", @@ -1645,6 +3418,60 @@ "dev": true, "license": "MIT" }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/debug/-/debug-4.4.3.tgz", @@ -1663,6 +3490,52 @@ } } }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "http://mirrors.huaweicloud.com/repository/npm/didyoumean/-/didyoumean-1.2.2.tgz", @@ -1692,6 +3565,37 @@ "@types/trusted-types": "^2.0.7" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.466", "resolved": "http://mirrors.huaweicloud.com/repository/npm/electron-to-chromium/-/electron-to-chromium-1.5.466.tgz", @@ -1711,6 +3615,104 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-errors": { "version": "1.3.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/es-errors/-/es-errors-1.3.0.tgz", @@ -1721,6 +3723,56 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.25.12", "resolved": "http://mirrors.huaweicloud.com/repository/npm/esbuild/-/esbuild-0.25.12.tgz", @@ -1773,6 +3825,43 @@ "node": ">=6" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/eta/-/eta-4.6.0.tgz", + "integrity": "sha512-lW6is4T1NFOYnmqGZIfvixqj7A7sSvScF+DN8EK6K58xI5MZ5UvYe0GjopxOXQtZvUn4eDdVuZ8XSoYWTMEKwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/bgub/eta?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/fast-glob/-/fast-glob-3.3.3.tgz", @@ -1803,6 +3892,30 @@ "node": ">= 6" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.9", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.9.tgz", + "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { "version": "1.20.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/fastq/-/fastq-1.20.3.tgz", @@ -1813,6 +3926,46 @@ "reusify": "^1.0.4" } }, + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/fill-range/-/fill-range-7.1.1.tgz", @@ -1826,6 +3979,39 @@ "node": ">=8" } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fraction.js": { "version": "5.3.4", "resolved": "http://mirrors.huaweicloud.com/repository/npm/fraction.js/-/fraction.js-5.3.4.tgz", @@ -1840,6 +4026,22 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/fsevents/-/fsevents-2.3.3.tgz", @@ -1865,6 +4067,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "http://mirrors.huaweicloud.com/repository/npm/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1875,6 +4121,94 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "http://mirrors.huaweicloud.com/repository/npm/glob-parent/-/glob-parent-6.0.2.tgz", @@ -1888,6 +4222,114 @@ "node": ">=10.13.0" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.4", "resolved": "http://mirrors.huaweicloud.com/repository/npm/hasown/-/hasown-2.0.4.tgz", @@ -1901,6 +4343,82 @@ "node": ">= 0.4" } }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1914,6 +4432,36 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.17.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/is-core-module/-/is-core-module-2.17.0.tgz", @@ -1930,6 +4478,57 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1940,6 +4539,42 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz", @@ -1953,6 +4588,39 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/is-number/-/is-number-7.0.0.tgz", @@ -1963,6 +4631,249 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmmirror.com/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jiti": { "version": "1.21.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/jiti/-/jiti-1.21.7.tgz", @@ -1992,6 +4903,13 @@ "node": ">=6" } }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/json5/-/json5-2.2.3.tgz", @@ -2005,6 +4923,39 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/lilconfig": { "version": "3.1.4", "resolved": "http://mirrors.huaweicloud.com/repository/npm/lilconfig/-/lilconfig-3.1.4.tgz", @@ -2044,6 +4995,13 @@ "uc.micro": "^3.0.0" } }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/loose-envify/-/loose-envify-1.4.0.tgz", @@ -2066,6 +5024,16 @@ "yallist": "^3.0.2" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/markdown-it": { "version": "15.0.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/markdown-it/-/markdown-it-15.0.3.tgz", @@ -2093,6 +5061,16 @@ "markdown-it": "bin/markdown-it.mjs" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdurl": { "version": "2.1.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/mdurl/-/mdurl-2.1.0.tgz", @@ -2123,6 +5101,32 @@ "node": ">=8.6" } }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/ms/-/ms-2.1.3.tgz", @@ -2201,6 +5205,86 @@ "node": ">= 6" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/own-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "http://mirrors.huaweicloud.com/repository/npm/path-parse/-/path-parse-1.0.7.tgz", @@ -2208,6 +5292,33 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz", @@ -2251,6 +5362,16 @@ "node": ">=18" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.5.32", "resolved": "http://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.32.tgz", @@ -2414,6 +5535,19 @@ "dev": true, "license": "MIT" }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/punycode.js/-/punycode.js-2.3.1.tgz", @@ -2531,6 +5665,118 @@ "node": ">=8.10.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.5.0.tgz", + "integrity": "sha512-1s+CxXjJ71i7LNVy8nYwg47XV4y6lAnOEhsMtSKq3WpmPfhl9LuKlTqKIn/3yUpE8lBz+W+TT88Bxyhnr0U4yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.3.0", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.3.0.tgz", + "integrity": "sha512-9ns8odR8e9q3otKeHj3DE80jZYKg6zVeZKE+zQmRKXFoVUcuiTGeO6iusDhPRoIQQPVPRvH+SfBhrTud4eczuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.5.3", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-6.5.3.tgz", + "integrity": "sha512-E8VgUoSK+LMQrLboDxavm76MTBGrQhx9RiNuomRmYnZ10Uw12HrI8fkxOOncktb2hBpzIZ9SV/347euQHG5z+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.5.0", + "regenerate-unicode-properties": "^10.3.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.4", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.13.4.tgz", + "integrity": "sha512-EWV80YgFaVgFrjGCAsV7oybp4GOxbls5RzBg8OB0nKEVXsBJR1JlV8Di1JhCROg3MzTfe1RI8yitIm1eOs68iA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.13", "resolved": "http://mirrors.huaweicloud.com/repository/npm/resolve/-/resolve-1.22.13.tgz", @@ -2634,6 +5880,61 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "http://mirrors.huaweicloud.com/repository/npm/scheduler/-/scheduler-0.23.2.tgz", @@ -2653,6 +5954,197 @@ "semver": "bin/semver.js" } }, + "node_modules/serialize-javascript": { + "version": "7.1.4", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-7.1.4.tgz", + "integrity": "sha512-FqlEuoTq/zRmA4Lg6aOqyH3lCHbUtCB0bmHCeFniX2GBdDqMJM3FwdvEhlE5Pim1dlt2FfBdVPmUNNiGhhKqpw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/smob": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/smob/-/smob-1.6.2.tgz", + "integrity": "sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.8.0.tgz", + "integrity": "sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, "node_modules/source-map-js": { "version": "1.2.2", "resolved": "http://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.2.tgz", @@ -2663,6 +6155,154 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/string.prototype.matchall/-/string.prototype.matchall-4.1.0.tgz", + "integrity": "sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "get-intrinsic": "^1.3.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.4", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/sucrase": { "version": "3.35.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/sucrase/-/sucrase-3.35.1.tgz", @@ -2737,6 +6377,61 @@ "node": ">=14.0.0" } }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.51.2", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.51.2.tgz", + "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/thenify/-/thenify-3.3.1.tgz", @@ -2828,6 +6523,96 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.5.tgz", + "integrity": "sha512-0FHJvLPqZ7KJzp17O13jfsAjsqazgrxBu2zEK95PmUz8lv2+GjRuxUInCr2Rk9Dms3ihN21zJ929ZO43yJ95QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "http://mirrors.huaweicloud.com/repository/npm/typescript/-/typescript-5.9.3.tgz", @@ -2848,6 +6633,103 @@ "integrity": "sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==", "license": "MIT" }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/update-browserslist-db": { "version": "1.3.4", "resolved": "http://mirrors.huaweicloud.com/repository/npm/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", @@ -2973,6 +6855,37 @@ } } }, + "node_modules/vite-plugin-pwa": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/vite-plugin-pwa/-/vite-plugin-pwa-2.0.0.tgz", + "integrity": "sha512-6G9dsPKT9QKYpeTuTLJM28zZL3HsXUTUM/QUZBEgQk2jbfrPJDq2i8gTewAKqi1c9Mt6MiidrL4SFI+HthiQMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.6", + "pretty-bytes": "^6.1.1", + "tinyglobby": "^0.2.10", + "workbox-build": "^7.4.1", + "workbox-window": "^7.4.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vite-pwa/assets-generator": "^1.0.0 || ^2.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "workbox-build": "^7.4.1", + "workbox-window": "^7.4.1" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } + } + }, "node_modules/vite/node_modules/fdir": { "version": "6.5.0", "resolved": "http://mirrors.huaweicloud.com/repository/npm/fdir/-/fdir-6.5.0.tgz", @@ -3004,6 +6917,331 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.24", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.24.tgz", + "integrity": "sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/workbox-background-sync": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-background-sync/-/workbox-background-sync-7.4.1.tgz", + "integrity": "sha512-HhT7KE8tOWDm02wRNshXUnUPofMlhenF2DBdUnDPOubhizzPeItkYTmAB6td1Z2cjYPa98vzEiPLEuzn5hN66g==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-broadcast-update/-/workbox-broadcast-update-7.4.1.tgz", + "integrity": "sha512-uAlgslKLvbQY+suirIdnBCSYrcgBhjp81Nj4l1lj/Jmj0MJO2CJERnCJjT0GFVwmReV0N+zs78K6gqd5gr9/+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-build": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-build/-/workbox-build-7.4.1.tgz", + "integrity": "sha512-SDhxIvEAde9Gy/5w4Yo1Jh/M49Z0qE3q0oteyE8zGq0DScxFqVBcCtIXFuLtmtxRQZCMbf0prco4VyEu3KBQuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@trickfilm400/rollup-plugin-off-main-thread": "^3.0.0-pre1", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "eta": "^4.5.1", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^11.0.1", + "pretty-bytes": "^5.3.0", + "rollup": "^4.53.3", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.4.1", + "workbox-broadcast-update": "7.4.1", + "workbox-cacheable-response": "7.4.1", + "workbox-core": "7.4.1", + "workbox-expiration": "7.4.1", + "workbox-google-analytics": "7.4.1", + "workbox-navigation-preload": "7.4.1", + "workbox-precaching": "7.4.1", + "workbox-range-requests": "7.4.1", + "workbox-recipes": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1", + "workbox-streams": "7.4.1", + "workbox-sw": "7.4.1", + "workbox-window": "7.4.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-cacheable-response/-/workbox-cacheable-response-7.4.1.tgz", + "integrity": "sha512-8xaFoJdDc2OjrlbbL3gEeBO1WKcMwRqwLRupgqahYXu75yXajPLuwrbXMrIGZuWYXrQwk0xDjOxZ/ujCy/oJYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-core": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-core/-/workbox-core-7.4.1.tgz", + "integrity": "sha512-DT+vu46eh/2vRsSHTY4Xmc32Z1rr9PRlQUXr1Dx30ZuXRWwOsvZgGgcwxcasubQLQmbTNYZjv44LkBAQ4tT5tQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-expiration/-/workbox-expiration-7.4.1.tgz", + "integrity": "sha512-lRKUF7b+OGbeXkQk1s6MHXOa3d7Xxf7Of31W6c6hCfipfIyrtdWZ89stq21AHZMaoG7VNFoHply4Ox+rU31TWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-google-analytics/-/workbox-google-analytics-7.4.1.tgz", + "integrity": "sha512-Mks1JwLEt++ZAkF6sS1OpSh9RtAMIsiDgRpK+codiHGIPXeaUOgi4cPc3GFadUl8V5QPeypEk8Oxgl3HlwVzHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.4.1", + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-navigation-preload/-/workbox-navigation-preload-7.4.1.tgz", + "integrity": "sha512-C4KVsjPcYKJOhr631AxR9XoG2rLF3QiTk5aMv36MXOjtWvm8axwNFAtKUPGsWUwLXXAMgYM1En7fsvndaXeXRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-precaching": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-precaching/-/workbox-precaching-7.4.1.tgz", + "integrity": "sha512-cdr/9qByww7yzEp7zg/qI4ukUrrNjQLgN+ONQRpjy/VqGQXwkgHwr00KksGJK8v0VifwDXBb8a4cWNZH71jn3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-range-requests/-/workbox-range-requests-7.4.1.tgz", + "integrity": "sha512-7i2oxAUE82gHdAJBCAQ04JzNOdRPqzuOzGfoUyJpFSmeqBNYGPrAH8GPoPjUQTfp+NycwrD2H68VtuF8qxv0vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-recipes": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-recipes/-/workbox-recipes-7.4.1.tgz", + "integrity": "sha512-gnbVfmV4/TtmQaM4x9AtuXhcdstJsep3XMVeztOrQVPT+R6+6DeBjGTCQ7fFCXm+4GEHUA5VEBTyi5+4gWGeog==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.4.1", + "workbox-core": "7.4.1", + "workbox-expiration": "7.4.1", + "workbox-precaching": "7.4.1", + "workbox-routing": "7.4.1", + "workbox-strategies": "7.4.1" + } + }, + "node_modules/workbox-routing": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-routing/-/workbox-routing-7.4.1.tgz", + "integrity": "sha512-yubJGErZOusuidAenaL5ypfhQOa7urxP/f8E0ws7FPb4039RiWXUWBAyUkmUoOL/BcQGen3h0J8872d51IYxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-strategies": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-strategies/-/workbox-strategies-7.4.1.tgz", + "integrity": "sha512-GZxpaw9NbmOelj7667uZ2kpk5BFpOGbO4X0qjwh5ls8XQ8C+Lha5LQchTiUzsTFSS+NlUpftYAyOVXvQUrcqOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1" + } + }, + "node_modules/workbox-streams": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-streams/-/workbox-streams-7.4.1.tgz", + "integrity": "sha512-HWWtraKUbJknd9kgqGcpQ3G114HOPYvqs8HaJMDs2ebLNAimDkVDaWfAXE6Ybl+m8U6KsCE6pWyLYuigWmnAXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.1", + "workbox-routing": "7.4.1" + } + }, + "node_modules/workbox-sw": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-sw/-/workbox-sw-7.4.1.tgz", + "integrity": "sha512-fez5f2DUlDJWTFYkCWQpY10N8gtztd849NswCbVFk0QlcSM4HT5A8x4g4ii650yem4I8tHY0R7JZahwp3ltIPw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/workbox-window/-/workbox-window-7.4.1.tgz", + "integrity": "sha512-notZDH2u8VXaqyuD7xaqIfEFi6SRM4SUSd7ewe9PDsVqADuepxX2ZMY3uvuZGxzY5ZOsGC/vD3A/3smFtJt4/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.4.1" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "http://mirrors.huaweicloud.com/repository/npm/yallist/-/yallist-3.1.1.tgz", diff --git a/web/package.json b/web/package.json index 572d449..e4d2678 100644 --- a/web/package.json +++ b/web/package.json @@ -29,6 +29,7 @@ "postcss": "^8.4.49", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", - "vite": "^6.0.5" + "vite": "^6.0.5", + "vite-plugin-pwa": "^2.0.0" } } diff --git a/web/public/icons/apple-touch-icon.png b/web/public/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d19f7d3c6d8e0cd244f6d072e129e4ec99fee4aa GIT binary patch literal 3160 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 literal 0 HcmV?d00001 diff --git a/web/src/App.tsx b/web/src/App.tsx index 5d50a5c..284b61c 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,6 +1,7 @@ import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react"; import { Navigate, Route, Routes, useNavigate } from "react-router-dom"; import { ToastProvider } from "./components/ui"; +import { UpdatePrompt } from "./components/UpdatePrompt"; import { api, authExpired, session } from "./lib/client"; import type { User, Workspace } from "./lib/types"; import { LoginPage } from "./pages/Login"; @@ -98,6 +99,7 @@ export function App() { } /> } /> + ); diff --git a/web/src/components/InstallHint.tsx b/web/src/components/InstallHint.tsx new file mode 100644 index 0000000..605f562 --- /dev/null +++ b/web/src/components/InstallHint.tsx @@ -0,0 +1,99 @@ +import { useEffect, useState } from "react"; +import { Download, X } from "./icons"; +import { isStandalone } from "../lib/pwa"; + +/** Chrome/Edge/安卓上那个「安装」事件,TS 的 DOM 库里还没有类型。 */ +interface InstallPromptEvent extends Event { + prompt: () => Promise; + userChoice: Promise<{ outcome: "accepted" | "dismissed" }>; +} + +const DISMISS_KEY = "dadao.install-hint-dismissed"; + +function isIos(): boolean { + const ua = window.navigator.userAgent; + return /iPad|iPhone|iPod/.test(ua) || (ua.includes("Macintosh") && "ontouchend" in document); +} + +/** + * 把达道Task装到桌面/主屏。 + * + * 有安装事件就自己弹一个按钮(浏览器自己那套横幅经常被无视); + * iOS 没有安装事件,只能告诉用户「分享 → 添加到主屏幕」这一步。 + * 从主屏启动(standalone)或者用户关过之后就不再出现。 + */ +export function InstallHint() { + const [promptEvent, setPromptEvent] = useState(null); + const [hidden, setHidden] = useState(() => localStorage.getItem(DISMISS_KEY) === "1"); + const [installing, setInstalling] = useState(false); + + useEffect(() => { + const onPrompt = (event: Event) => { + event.preventDefault(); // 拦住浏览器自带的横幅,换成我们自己的入口 + setPromptEvent(event as InstallPromptEvent); + }; + const onInstalled = () => setPromptEvent(null); + window.addEventListener("beforeinstallprompt", onPrompt); + window.addEventListener("appinstalled", onInstalled); + return () => { + window.removeEventListener("beforeinstallprompt", onPrompt); + window.removeEventListener("appinstalled", onInstalled); + }; + }, []); + + if (hidden || isStandalone()) return null; + + const ios = isIos(); + // 桌面 Safari、Firefox 既不给安装事件,也没有添加主屏,不必打扰 + if (!promptEvent && !ios) return null; + + function dismiss() { + localStorage.setItem(DISMISS_KEY, "1"); + setHidden(true); + } + + return ( +
+ + + +
+

把达道Task装到桌面

+

+ {promptEvent + ? "装好之后是一个独立窗口,不用再敲网址,也不会被浏览器标签页挤掉。" + : "在 Safari 里点底部的「分享」,选「添加到主屏幕」,就会和 App 一样有图标。"} +

+
+
+ {promptEvent ? ( + + ) : null} + +
+
+ ); +} diff --git a/web/src/components/UpdatePrompt.tsx b/web/src/components/UpdatePrompt.tsx new file mode 100644 index 0000000..113a124 --- /dev/null +++ b/web/src/components/UpdatePrompt.tsx @@ -0,0 +1,58 @@ +import { useEffect, useState } from "react"; +import { Button } from "./ui"; +import { applyServiceWorkerUpdate, PWA_EVENT } from "../lib/pwa"; + +/** + * 装到手机/桌面以后,发版就不是"让用户重新输网址"了: + * 有新版本时在这里提一句,点"刷新"才换,不点就继续用手上的这版。 + * + * 为什么不用自动刷新(registerType: "autoUpdate"):Vditor、图表这些是懒加载分片, + * 后台悄悄换掉之后,用户下一次点开某个面板就是 404 —— 编辑器直接白屏。 + */ +export function UpdatePrompt() { + const [ready, setReady] = useState(false); + const [applying, setApplying] = useState(false); + const [dismissed, setDismissed] = useState(false); + + useEffect(() => { + const onReady = () => setReady(true); + window.addEventListener(PWA_EVENT.updateReady, onReady); + return () => window.removeEventListener(PWA_EVENT.updateReady, onReady); + }, []); + + if (!ready || dismissed) return null; + + return ( + // 居中用 flex 包一层:animate-slide-up 的 keyframes 自带 transform, + // 会和 -translate-x-1/2 抢同一个属性,手机窄屏上卡片会被推出屏幕右侧。 +
+
+

有新版了。刷新一下就用上,手头的输入会丢,先存了再点。

+
+ + +
+
+
+ ); +} diff --git a/web/src/lib/pwa.ts b/web/src/lib/pwa.ts new file mode 100644 index 0000000..743b37f --- /dev/null +++ b/web/src/lib/pwa.ts @@ -0,0 +1,54 @@ +/** + * Service Worker 的注册与升级。 + * + * 只做三件事:生产环境注册、把"有新版本"和"可以离线用了"两个事件抛给界面、 + * 以及提供统一的一个"现在就换新版本"入口。注册本身交给 vite-plugin-pwa 生成的 + * `virtual:pwa-register`,这里不重复实现缓存逻辑。 + */ + +type ApplyUpdate = (reloadPage?: boolean) => Promise; + +let applyUpdate: ApplyUpdate | null = null; + +/** 界面用的事件名:有新版可换、首次离线可用。 */ +export const PWA_EVENT = { + updateReady: "dadao:pwa-update-ready", + offlineReady: "dadao:pwa-offline-ready", +} as const; + +export function startServiceWorker(): void { + // 开发环境没有 SW(devOptions.enabled = false),动态引入免得无谓地打包 + if (!import.meta.env.PROD || !("serviceWorker" in navigator)) return; + void import("virtual:pwa-register") + .then(({ registerSW }) => { + applyUpdate = registerSW({ + immediate: true, + onNeedRefresh() { + window.dispatchEvent(new Event(PWA_EVENT.updateReady)); + }, + onOfflineReady() { + window.dispatchEvent(new Event(PWA_EVENT.offlineReady)); + }, + }); + }) + .catch(() => { + // 注册失败不影响正常使用:下次打开页面还会再试一次 + }); +} + +/** 用户点了"刷新":让新 SW 立刻接管并重载页面。 */ +export async function applyServiceWorkerUpdate(): Promise { + if (applyUpdate) { + await applyUpdate(true); + return; + } + window.location.reload(); +} + +/** 这个页面是不是从主屏图标启动的(standalone)。 */ +export function isStandalone(): boolean { + return ( + window.matchMedia?.("(display-mode: standalone)").matches === true || + (window.navigator as { standalone?: boolean }).standalone === true + ); +} diff --git a/web/src/main.tsx b/web/src/main.tsx index 203a72a..7e7ad1a 100644 --- a/web/src/main.tsx +++ b/web/src/main.tsx @@ -2,8 +2,12 @@ import React from "react"; import ReactDOM from "react-dom/client"; import { BrowserRouter } from "react-router-dom"; import { App } from "./App"; +import { startServiceWorker } from "./lib/pwa"; import "./index.css"; +// 装到桌面之后才有意义:离线能打开、发版能提示。生产构建里才真的注册。 +startServiceWorker(); + ReactDOM.createRoot(document.getElementById("root")!).render( diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 1c5c5b7..4013e43 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { useAuth } from "../App"; import { ArrowRight, ChevronRight, Plus } from "../components/icons"; +import { InstallHint } from "../components/InstallHint"; import { SideRail } from "../components/SideRail"; import { Button, EmptyState, Field, InlineAlert } from "../components/ui"; import { ApiError, api } from "../lib/client"; @@ -186,6 +187,7 @@ export function HomePage() {

收到邀请链接(/join/…)直接打开即可加入,不需要别人手动拉你。

+ diff --git a/web/tsconfig.json b/web/tsconfig.json index bd0ffbe..2dce1d4 100644 --- a/web/tsconfig.json +++ b/web/tsconfig.json @@ -13,7 +13,7 @@ "isolatedModules": true, "resolveJsonModule": true, "noEmit": true, - "types": ["vite/client"] + "types": ["vite/client", "vite-plugin-pwa/client"] }, "include": ["src"] } diff --git a/web/vite.config.ts b/web/vite.config.ts index f7cd326..47a48d7 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -1,9 +1,68 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; +import { VitePWA } from "vite-plugin-pwa"; // 开发端口固定 5180,接口走代理,避免本地跨域配置漂移 export default defineConfig({ - plugins: [react()], + plugins: [ + react(), + VitePWA({ + // 有新版本时先不偷偷换掉:让用户自己点"刷新", + // 免得开着看板的时候后台把 chunk 换了,点一下就是 404。 + registerType: "prompt", + injectRegister: null, // main.tsx 里自己注册,好在拿到 onNeedRefresh + includeAssets: ["icons/apple-touch-icon.png"], + manifest: { + name: "达道Task", + short_name: "达道Task", + description: "任务、工单、知识库,一条道走到底。", + lang: "zh-CN", + dir: "ltr", + start_url: "/", + scope: "/", + display: "standalone", + orientation: "any", + background_color: "#f7f5f0", + theme_color: "#2f6054", + categories: ["productivity", "business"], + icons: [ + { src: "/icons/icon-192.png", sizes: "192x192", type: "image/png", purpose: "any" }, + { src: "/icons/icon-512.png", sizes: "512x512", type: "image/png", purpose: "any" }, + { + src: "/icons/maskable-512.png", + sizes: "512x512", + type: "image/png", + purpose: "maskable", + }, + ], + }, + workbox: { + // 只预缓存构建产物与图标;Vditor 那 3.7MB 运行时按需缓存,别拖慢首次安装 + globPatterns: ["**/*.{js,css,html,svg,png,ico,woff2}"], + globIgnores: ["vditor/**", "**/*.map"], + navigateFallback: "/index.html", + navigateFallbackDenylist: [/^\/api\//], + cleanupOutdatedCaches: true, + runtimeCaching: [ + { + // 接口一律走网络:离线时宁可报错,也不要把别人的旧数据端出来 + urlPattern: ({ url }) => url.pathname.startsWith("/api/"), + handler: "NetworkOnly", + }, + { + // 编辑器的 lute / 语言包 / 图标:用过一次就留着,离线也能写字 + urlPattern: ({ url }) => url.pathname.startsWith("/vditor/"), + handler: "CacheFirst", + options: { + cacheName: "vditor", + expiration: { maxEntries: 40, maxAgeSeconds: 60 * 60 * 24 * 30 }, + }, + }, + ], + }, + devOptions: { enabled: false }, + }), + ], server: { port: 5180, strictPort: true,