diff --git a/.github/actions/turbo-cache/action.yml b/.github/actions/turbo-cache/action.yml new file mode 100644 index 00000000..38b2d1a9 --- /dev/null +++ b/.github/actions/turbo-cache/action.yml @@ -0,0 +1,28 @@ +name: Turbo cache +description: > + Restore and persist the local Turbo cache (.turbo/cache) across CI runs. + Keyed on the OS, CPU arch and lockfile, with the commit SHA as a unique suffix + so each run writes a fresh entry while falling back to the closest prior cache. + Arch is part of the key because Turbo does not hash it into the native addon + build, so an x64 cache must not restore into an arm64 run. Turbo validates + restored entries by content hash, so a partial restore is always safe. + +inputs: + key-suffix: + description: > + Extra discriminator folded into the cache key. Set it when a job builds + under a config Turbo does not hash itself (e.g. a specific Node version + for the native addon ABI) so its cache stays separate. + required: false + default: "" + +runs: + using: composite + steps: + - uses: actions/cache@v4 + with: + path: .turbo/cache + key: turbo-${{ runner.os }}-${{ runner.arch }}-${{ inputs.key-suffix }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }} + restore-keys: | + turbo-${{ runner.os }}-${{ runner.arch }}-${{ inputs.key-suffix }}-${{ hashFiles('pnpm-lock.yaml') }}- + turbo-${{ runner.os }}-${{ runner.arch }}-${{ inputs.key-suffix }}- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a9dde28..db3745bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,8 +22,10 @@ jobs: with: cache: pnpm node-version-file: .nvmrc + - name: Restore turbo cache + uses: ./.github/actions/turbo-cache - run: pnpm install --frozen-lockfile --prefer-offline - - run: pnpm moon check --all + - run: pnpm turbo run lint typecheck test list-examples: runs-on: "ubuntu-latest" @@ -60,8 +62,12 @@ jobs: with: cache: pnpm node-version: ${{ matrix.node-version }} + - name: Restore turbo cache + uses: ./.github/actions/turbo-cache + with: + key-suffix: node${{ matrix.node-version }} - run: pnpm install --frozen-lockfile --prefer-offline - - run: pnpm moon run :build + - run: pnpm turbo run build - name: Run benchmarks with tinybench-plugin # use version from `main` branch to always test the latest version, in real projects, use a tag, like `@v2` @@ -94,15 +100,17 @@ jobs: with: cache: pnpm node-version-file: .nvmrc + - name: Restore turbo cache + uses: ./.github/actions/turbo-cache - run: pnpm install --frozen-lockfile --prefer-offline - - run: pnpm moon run :build + - run: pnpm turbo run build - name: Run benchmarks uses: CodSpeedHQ/action@main env: CODSPEED_SKIP_UPLOAD: "true" + # Samply fails to profile pnpm targets for now + CODSPEED_PROFILER_ENABLED: "false" with: - run: pnpm moon run vitest-plugin:bench + run: pnpm turbo run bench --filter=@codspeed/vitest-plugin mode: walltime - # TODO: Remove this once the runner has been released with macos support - runner-version: branch:main diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index 88eb1f69..4cb97a58 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -8,8 +8,26 @@ on: jobs: codspeed-instrumented: - name: Run CodSpeed instrumented + name: Run CodSpeed instrumented (${{ matrix.plugin }}) runs-on: "ubuntu-latest" + strategy: + fail-fast: false + # Shard by plugin so the benchmark groups run in parallel instead of + # sequentially. CodSpeed aggregates the per-shard uploads on the commit. + matrix: + include: + - plugin: tinybench + bench: | + pnpm turbo run bench --filter=@codspeed/tinybench-plugin + pnpm --workspace-concurrency 1 -r bench-tinybench + - plugin: vitest + bench: | + pnpm turbo run bench --filter=@codspeed/vitest-plugin + pnpm --workspace-concurrency 1 -r bench-vitest + - plugin: benchmark.js + bench: | + pnpm turbo run bench --filter=@codspeed/benchmark.js-plugin + pnpm --workspace-concurrency 1 -r bench-benchmark-js steps: - uses: "actions/checkout@v4" with: @@ -20,32 +38,24 @@ jobs: with: cache: pnpm node-version-file: .nvmrc + - name: Restore turbo cache + uses: ./.github/actions/turbo-cache + with: + key-suffix: ${{ matrix.plugin }} - run: pnpm install --frozen-lockfile --prefer-offline - - run: pnpm moon run :build + - run: pnpm turbo run build - name: Run simulation benchmarks uses: CodSpeedHQ/action@main with: mode: simulation - run: | - pnpm moon run tinybench-plugin:bench - pnpm moon run vitest-plugin:bench - pnpm moon run benchmark.js-plugin:bench - pnpm --workspace-concurrency 1 -r bench-tinybench - pnpm --workspace-concurrency 1 -r bench-benchmark-js - pnpm --workspace-concurrency 1 -r bench-vitest + run: ${{ matrix.bench }} - name: Run memory benchmarks uses: CodSpeedHQ/action@main with: mode: memory - run: | - pnpm moon run tinybench-plugin:bench - pnpm moon run vitest-plugin:bench - pnpm moon run benchmark.js-plugin:bench - pnpm --workspace-concurrency 1 -r bench-tinybench - pnpm --workspace-concurrency 1 -r bench-benchmark-js - pnpm --workspace-concurrency 1 -r bench-vitest + run: ${{ matrix.bench }} codspeed-walltime: name: Run CodSpeed walltime @@ -60,8 +70,10 @@ jobs: with: cache: pnpm node-version-file: .nvmrc + - name: Restore turbo cache + uses: ./.github/actions/turbo-cache - run: pnpm install --frozen-lockfile --prefer-offline - - run: pnpm moon run :build + - run: pnpm turbo run build - name: Run benchmarks # use version from `main` branch to always test the latest version, in real projects, use a tag, like `@v2` @@ -69,8 +81,71 @@ jobs: with: mode: walltime run: | - pnpm moon run tinybench-plugin:bench - pnpm moon run vitest-plugin:bench - pnpm moon run benchmark.js-plugin:bench + pnpm turbo run bench --filter=@codspeed/tinybench-plugin + pnpm turbo run bench --filter=@codspeed/vitest-plugin + pnpm turbo run bench --filter=@codspeed/benchmark.js-plugin pnpm --workspace-concurrency 1 -r bench-tinybench pnpm --workspace-concurrency 1 -r bench-vitest + + electron-e2e: + name: Run electron inbox e2e + runs-on: codspeed-macro + permissions: + contents: read + id-token: write + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + submodules: true + + - name: Set up pnpm + uses: pnpm/action-setup@v4 + + # The example links @codspeed/playwright to packages/playwright via the + # `link:` protocol, so the in-repo plugin must be built (under the repo's + # own Node version) before the example installs and resolves the symlink. + - name: Set up Node.js (repo) + uses: actions/setup-node@v6 + with: + node-version-file: .nvmrc + cache: pnpm + + - name: Restore turbo cache + uses: ./.github/actions/turbo-cache + + - name: Install repo dependencies + run: pnpm install --frozen-lockfile --prefer-offline + + - name: Build @codspeed/playwright + run: pnpm turbo run build --filter=@codspeed/playwright + + - name: Set up Node.js (example) + uses: actions/setup-node@v6 + with: + node-version-file: examples/with-electron-and-walltime/package.json + cache: pnpm + cache-dependency-path: examples/with-electron-and-walltime/pnpm-lock.yaml + + - name: Install dependencies + working-directory: examples/with-electron-and-walltime + run: pnpm install --frozen-lockfile + + - name: Build electron app + working-directory: examples/with-electron-and-walltime + run: pnpm --filter @mail-client-demo/electron build + + - name: Install Playwright browsers + working-directory: examples/with-electron-and-walltime + run: pnpm --filter @mail-client-demo/electron exec playwright install --with-deps chromium + + - name: Run electron inbox e2e under codspeed + uses: CodSpeedHQ/action@runner-alpha + env: + CODSPEED_WALLTIME_PROFILER: "samply" + with: + working-directory: examples/with-electron-and-walltime + run: xvfb-run -a pnpm bench:electron + mode: walltime + runner-version: 4.16.2-alpha.2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index de7dd79b..70b284ad 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: platform: - # The x86_64 Linux prebuild is generated when running pnpm moon run :build in the `build` job + # The x86_64 Linux prebuild is generated when running pnpm turbo run build in the `build` job - runs-on: codspeedhq-arm64-ubuntu-22.04 name: linux-arm - runs-on: macos-latest @@ -35,7 +35,7 @@ jobs: node-version-file: .nvmrc - run: pnpm install --frozen-lockfile --prefer-offline - name: Build native addon - run: pnpm moon core:build-native-addon + run: pnpm turbo run build-native-addon --filter=@codspeed/core - name: Upload prebuilds uses: actions/upload-artifact@v4 with: @@ -59,7 +59,7 @@ jobs: registry-url: "https://registry.npmjs.org" - run: pnpm install --frozen-lockfile --prefer-offline - name: Build the libraries - run: pnpm moon run :build + run: pnpm turbo run build - name: Download prebuilds uses: actions/download-artifact@v4 diff --git a/.gitignore b/.gitignore index 3dd48dfe..5233f61e 100644 --- a/.gitignore +++ b/.gitignore @@ -129,7 +129,6 @@ packages/app/.env .vercel .DS_Store -# moon -.moon/cache -.moon/docker +# turbo +.turbo/ .rollup.cache/ diff --git a/.husky/pre-commit b/.husky/pre-commit index 91a89558..093ed2ee 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,5 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -pnpm moon run :lint :format :typecheck --affected --status=staged +pnpm turbo run lint format typecheck --affected diff --git a/.prettierignore b/.prettierignore index b35be79e..4efcc4b7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,5 +2,6 @@ node_modules .rollup.cache dist generated +**/build packages/core/src/native_core/instruments/hooks **/pnpm-lock.yaml diff --git a/examples/with-electron-and-walltime/.gitignore b/examples/with-electron-and-walltime/.gitignore new file mode 100644 index 00000000..87982dc4 --- /dev/null +++ b/examples/with-electron-and-walltime/.gitignore @@ -0,0 +1,9 @@ +node_modules/ +dist/ +out/ +.codspeed/ +*.log +.DS_Store +.vscode/ +.idea/ +coverage/ diff --git a/examples/with-electron-and-walltime/README.md b/examples/with-electron-and-walltime/README.md new file mode 100644 index 00000000..22cba3b9 --- /dev/null +++ b/examples/with-electron-and-walltime/README.md @@ -0,0 +1,50 @@ +# mail-client benchmarks + +A TypeScript mail-client backend-for-frontend with a small Electron client on top, instrumented with [CodSpeed](https://codspeed.io) so the performance-sensitive surface (search, threading, bulk mutations, persistence) is benchmarked in CI. + +## Why + +Mail clients have a strict performance bar — every interaction needs to feel instant. This repo isolates the data-and-state layer of such a client, benchmarks its hot paths in walltime and memory mode, and exercises the same code from an Electron renderer so the user-facing impact of a code change is visible alongside the CodSpeed numbers. + +## Stack + +- **TypeScript** on Node.js `24.11.1` (pinned via `package.json` `engines`). +- **pnpm workspaces** — model, electron app, and benches live as separate packages. +- Two benchmark-authoring paths, both with first-class CodSpeed support: + - **vitest** `bench()` + **`@codspeed/vitest-plugin`** — declarative, sits next to test suites. + - **tinybench** + **`@codspeed/tinybench-plugin`** — standalone scripts, fine-grained control. +- **electron-vite** + **vanilla TS** for the client — minimal renderer code, straightforward to profile. + +## Layout + +``` +packages/ + model/ @mail-client-demo/model + src/ Email, Inbox, seed generator, store + persistence + bench/ vitest benchmarks +apps/ + electron/ @mail-client-demo/electron + src/main/ Electron main process — owns the AppState + IPC + src/preload/ contextBridge for the renderer + src/renderer/ vanilla TS inbox UI +``` + +## Run + +```bash +pnpm install +pnpm electron # launch the Electron client (dev mode) +pnpm bench # local wall-clock benches +pnpm bench:codspeed # instrumented run (walltime), uploads to CodSpeed +pnpm typecheck # typecheck all workspace packages +``` + +## CI + +This example is benchmarked in CI by the repository-root +`.github/workflows/codspeed-electron-example.yml` workflow, which runs the +Electron inbox e2e on the CodSpeed macro runner, with OIDC auth (no static token +required). + +To benchmark the model package (walltime/memory) locally, use the `bench` and +`bench:codspeed` scripts described above. diff --git a/examples/with-electron-and-walltime/apps/electron/electron.vite.config.ts b/examples/with-electron-and-walltime/apps/electron/electron.vite.config.ts new file mode 100644 index 00000000..aa258f60 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/electron.vite.config.ts @@ -0,0 +1,32 @@ +import { resolve } from "node:path"; +import { defineConfig, externalizeDepsPlugin } from "electron-vite"; + +export default defineConfig({ + main: { + plugins: [externalizeDepsPlugin({ exclude: ["@mail-client-demo/model"] })], + build: { + rollupOptions: { + input: { index: resolve(import.meta.dirname, "src/main/index.ts") }, + output: { + format: "es", + }, + }, + }, + }, + preload: { + plugins: [externalizeDepsPlugin()], + build: { + rollupOptions: { + input: { index: resolve(import.meta.dirname, "src/preload/index.ts") }, + }, + }, + }, + renderer: { + root: resolve(import.meta.dirname, "src/renderer"), + build: { + rollupOptions: { + input: { index: resolve(import.meta.dirname, "src/renderer/index.html") }, + }, + }, + }, +}); diff --git a/examples/with-electron-and-walltime/apps/electron/package.json b/examples/with-electron-and-walltime/apps/electron/package.json new file mode 100644 index 00000000..6aa30971 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/package.json @@ -0,0 +1,27 @@ +{ + "name": "@mail-client-demo/electron", + "version": "0.1.0", + "private": true, + "description": "Electron mail-client that renders the @mail-client-demo/model inbox.", + "type": "module", + "main": "out/main/index.js", + "scripts": { + "dev": "electron-vite dev", + "build": "electron-vite build", + "preview": "electron-vite preview", + "typecheck": "tsc --noEmit", + "bench": "node test/inbox.e2e.ts" + }, + "dependencies": { + "@mail-client-demo/model": "workspace:*" + }, + "devDependencies": { + "@codspeed/playwright": "link:../../../../packages/playwright", + "@types/node": "^25.9.1", + "electron": "^42.2.0", + "electron-vite": "^5.0.0", + "playwright": "^1.60.0", + "tsx": "^4.22.3", + "vite": "^7.3.3" + } +} diff --git a/examples/with-electron-and-walltime/apps/electron/src/main/index.ts b/examples/with-electron-and-walltime/apps/electron/src/main/index.ts new file mode 100644 index 00000000..3c104ff7 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/src/main/index.ts @@ -0,0 +1,145 @@ +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import type { Action, AppState, EmailId } from "@mail-client-demo/model"; +import { + generateEmails, + Inbox, + makeInitialState, + openDatabase, + reduce, + syncStateToDisk, +} from "@mail-client-demo/model"; +import { app, BrowserWindow, ipcMain } from "electron"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +// Big enough that the naive implementations FEEL slow: +// buildThreads (O(n²)) ~1.5–2 s +// sync (full JSON snapshot of 50k emails) ~150–300 ms PER ACTION +// bulkArchive of 500 ids ~150–250 ms +// Every IPC mutation runs through store.dispatch -> reduce -> syncStateToDisk, +// so the sync cost is paid on every keystroke / button click and every UI +// interaction feels the lag. Optimization will collapse all of it. +const EMAIL_COUNT = 50_000; + +let state: AppState | null = null; +let db: ReturnType | null = null; + +interface Timed { + result: T; + durationMs: number; +} + +function timed(fn: () => T): Timed { + const t0 = performance.now(); + const result = fn(); + return { result, durationMs: performance.now() - t0 }; +} + +function dispatch(action: Action): { durationMs: number; syncMs: number } { + const t0 = performance.now(); + if (!state || !db) return { durationMs: 0, syncMs: 0 }; + state = reduce(state, action); + const sync = syncStateToDisk(state, db); + return { + durationMs: performance.now() - t0, + syncMs: sync.durationMs, + }; +} + +/** + * Sync the current state to disk. Called from every read-only IPC handler so + * the audit-trail file stays current with each user interaction (and so the + * naive full-snapshot cost is felt on every UI op, not just mutations). + */ +function syncCurrentState(): number { + if (!state || !db) return 0; + return syncStateToDisk(state, db).durationMs; +} + +function getInbox(): Inbox { + return new Inbox(state ? state.emails : []); +} + +function createWindow() { + const win = new BrowserWindow({ + width: 1200, + height: 800, + title: "Inbox", + backgroundColor: "#0f1419", + webPreferences: { + preload: join(__dirname, "../preload/index.mjs"), + contextIsolation: true, + sandbox: false, + }, + }); + + if (process.env.ELECTRON_RENDERER_URL) { + win.loadURL(process.env.ELECTRON_RENDERER_URL); + } else { + win.loadFile(join(__dirname, "../renderer/index.html")); + } +} + +app.whenReady().then(() => { + const seedStart = performance.now(); + const emails = generateEmails({ count: EMAIL_COUNT }); + state = makeInitialState(emails); + const dbPath = join(app.getPath("userData"), "state.json"); + db = openDatabase(dbPath); + console.log( + `[main] seeded ${EMAIL_COUNT} emails in ${(performance.now() - seedStart).toFixed(1)} ms`, + ); + console.log(`[main] persistence path: ${dbPath}`); + + // Initial sync so disk reflects the seeded state. + const initialSync = syncStateToDisk(state, db); + console.log(`[main] initial sync: ${initialSync.durationMs.toFixed(1)} ms`); + + ipcMain.handle("inbox:list", () => { + const t = timed(() => getInbox().sortByDate(getInbox().visible()).slice(0, 200)); + const syncMs = syncCurrentState(); + return { ...t, syncMs }; + }); + + ipcMain.handle("inbox:search", (_evt, query: string) => { + const t = timed(() => getInbox().sortByDate(getInbox().search(query)).slice(0, 50)); + const syncMs = syncCurrentState(); + return { ...t, syncMs }; + }); + + ipcMain.handle("inbox:threads", () => { + const t = timed(() => { + const threads = getInbox().buildThreads(); + threads.sort((a, b) => b.lastReceivedAt - a.lastReceivedAt); + return threads.slice(0, 50); + }); + const syncMs = syncCurrentState(); + return { ...t, syncMs }; + }); + + ipcMain.handle("inbox:archive", (_evt, ids: EmailId[]) => { + const { durationMs, syncMs } = dispatch({ type: "ARCHIVE", ids, at: Date.now() }); + return { result: ids.length, durationMs, syncMs }; + }); + + ipcMain.handle("inbox:stats", () => { + if (!state) return { total: 0, visible: 0, pendingOps: 0 }; + const inbox = getInbox(); + return { + total: state.emails.length, + visible: inbox.visible().length, + pendingOps: state.pendingOps.length, + }; + }); + + createWindow(); +}); + +app.on("window-all-closed", () => { + if (process.platform !== "darwin") app.quit(); +}); + +app.on("activate", () => { + if (BrowserWindow.getAllWindows().length === 0) createWindow(); +}); diff --git a/examples/with-electron-and-walltime/apps/electron/src/preload/index.ts b/examples/with-electron-and-walltime/apps/electron/src/preload/index.ts new file mode 100644 index 00000000..6f683e05 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/src/preload/index.ts @@ -0,0 +1,33 @@ +import type { Email, EmailId, Thread } from "@mail-client-demo/model"; +import { contextBridge, ipcRenderer } from "electron"; + +export interface TimedWithSync { + result: T; + durationMs: number; + syncMs: number; +} + +export interface ArchiveResult { + result: number; + durationMs: number; + syncMs: number; +} + +export interface InboxStats { + total: number; + visible: number; + pendingOps: number; +} + +const api = { + list: (): Promise> => ipcRenderer.invoke("inbox:list"), + search: (query: string): Promise> => + ipcRenderer.invoke("inbox:search", query), + threads: (): Promise> => ipcRenderer.invoke("inbox:threads"), + archive: (ids: EmailId[]): Promise => ipcRenderer.invoke("inbox:archive", ids), + stats: (): Promise => ipcRenderer.invoke("inbox:stats"), +}; + +contextBridge.exposeInMainWorld("inbox", api); + +export type InboxBridge = typeof api; diff --git a/examples/with-electron-and-walltime/apps/electron/src/renderer/index.html b/examples/with-electron-and-walltime/apps/electron/src/renderer/index.html new file mode 100644 index 00000000..ebb29227 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/src/renderer/index.html @@ -0,0 +1,41 @@ + + + + + + Inbox + + + +
+ +
+
+ + + + + +
+ + +
+ +
+
    +
    +
    + + + diff --git a/examples/with-electron-and-walltime/apps/electron/src/renderer/src/renderer.ts b/examples/with-electron-and-walltime/apps/electron/src/renderer/src/renderer.ts new file mode 100644 index 00000000..9a38ec73 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/src/renderer/src/renderer.ts @@ -0,0 +1,204 @@ +import type { Email, EmailId, Thread } from "@mail-client-demo/model"; +import type { InboxBridge } from "../../preload/index.ts"; + +declare global { + interface Window { + inbox: InboxBridge; + } +} + +const list = document.getElementById("email-list") as HTMLUListElement; +const search = document.getElementById("search") as HTMLInputElement; +const statusText = document.getElementById("status-text") as HTMLSpanElement; +const stats = document.getElementById("stats") as HTMLDivElement; +const actionBar = document.getElementById("action-bar") as HTMLDivElement; +const selectionCount = document.getElementById("selection-count") as HTMLSpanElement; +const archiveBtn = document.getElementById("archive-btn") as HTMLButtonElement; +const clearSelectionBtn = document.getElementById("clear-selection-btn") as HTMLButtonElement; +const selectVisibleBtn = document.getElementById("select-visible-btn") as HTMLButtonElement; +const navButtons = document.querySelectorAll("#sidebar nav button"); +const mainEl = document.getElementById("main") as HTMLElement; +const progressBar = document.getElementById("progress-bar") as HTMLDivElement; + +type View = "inbox" | "threads"; +let currentView: View = "inbox"; +let lastVisibleIds: EmailId[] = []; +const selected = new Set(); + +let activeRequests = 0; +function beginLoading(): void { + activeRequests++; + if (activeRequests === 1) { + mainEl.classList.add("loading"); + progressBar.hidden = false; + } +} +function endLoading(): void { + activeRequests = Math.max(0, activeRequests - 1); + if (activeRequests === 0) { + mainEl.classList.remove("loading"); + progressBar.hidden = true; + } +} +async function withLoading(label: string, fn: () => Promise): Promise { + beginLoading(); + statusText.textContent = label; + try { + return await fn(); + } finally { + endLoading(); + } +} + +function fmtTime(ts: number): string { + const d = new Date(ts); + const now = new Date(); + if (d.toDateString() === now.toDateString()) { + return d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }); + } + return d.toLocaleDateString([], { month: "short", day: "numeric" }); +} + +function escapeHtml(s: string): string { + return s.replace(/&/g, "&").replace(//g, ">"); +} + +function renderEmails(emails: Email[]): void { + lastVisibleIds = emails.map((e) => e.id); + list.innerHTML = emails + .map( + (e) => ` +
  • + +
    +
    +
    ${escapeHtml(e.from.name)}
    + +
    +
    ${escapeHtml(e.subject)}
    +
    ${escapeHtml(e.snippet)}
    +
    +
  • `, + ) + .join(""); +} + +function renderThreads(threads: Thread[]): void { + lastVisibleIds = []; + list.innerHTML = threads + .map( + (t) => ` +
  • +
    +
    +
    ${escapeHtml(t.participants.map((p) => p.name).join(", "))}
    + +
    +
    ${escapeHtml(t.subject)} ${t.emails.length}
    +
    ${t.unreadCount} unread
    +
    +
  • `, + ) + .join(""); +} + +function updateActionBar(): void { + const n = selected.size; + selectionCount.textContent = `${n} selected`; + actionBar.hidden = n === 0; + archiveBtn.disabled = n === 0; +} + +async function refreshStats(): Promise { + const s = await window.inbox.stats(); + const pendingLabel = s.pendingOps > 0 ? ` · ${s.pendingOps} pending ops` : ""; + stats.textContent = `${s.visible.toLocaleString()} visible / ${s.total.toLocaleString()} total${pendingLabel}`; +} + +async function refresh(): Promise { + if (currentView === "threads") { + const { result, durationMs, syncMs } = await withLoading("loading threads…", () => + window.inbox.threads(), + ); + renderThreads(result); + statusText.textContent = `${result.length} threads · buildThreads ${durationMs.toFixed(0)} ms · sync ${syncMs.toFixed(0)} ms`; + } else { + const q = search.value.trim(); + const label = q ? `searching "${q}"…` : "loading inbox…"; + const { result, durationMs, syncMs } = await withLoading(label, () => + q ? window.inbox.search(q) : window.inbox.list(), + ); + renderEmails(result); + const opLabel = q ? `search "${q}"` : "list"; + statusText.textContent = `${result.length} emails · ${opLabel} ${durationMs.toFixed(0)} ms · sync ${syncMs.toFixed(0)} ms`; + } + updateActionBar(); + refreshStats(); +} + +list.addEventListener("click", (evt) => { + const target = evt.target as HTMLElement; + if (target.tagName !== "INPUT") return; + const id = target.getAttribute("data-id"); + if (!id) return; + const li = target.closest("li"); + if ((target as HTMLInputElement).checked) { + selected.add(id); + li?.classList.add("selected"); + } else { + selected.delete(id); + li?.classList.remove("selected"); + } + updateActionBar(); +}); + +selectVisibleBtn.addEventListener("click", () => { + for (const id of lastVisibleIds) selected.add(id); + for (const cb of list.querySelectorAll("input[type=checkbox]")) { + cb.checked = true; + } + for (const li of list.querySelectorAll("li")) { + li.classList.add("selected"); + } + updateActionBar(); +}); + +clearSelectionBtn.addEventListener("click", () => { + selected.clear(); + for (const cb of list.querySelectorAll("input[type=checkbox]")) { + cb.checked = false; + } + for (const li of list.querySelectorAll("li")) { + li.classList.remove("selected"); + } + updateActionBar(); +}); + +archiveBtn.addEventListener("click", async () => { + if (selected.size === 0) return; + const ids = [...selected]; + const { result, durationMs, syncMs } = await withLoading(`archiving ${ids.length}…`, () => + window.inbox.archive(ids), + ); + selected.clear(); + await refresh(); + statusText.textContent = `archived ${result} · dispatch ${durationMs.toFixed(0)} ms (sync ${syncMs.toFixed(0)} ms)`; +}); + +search.addEventListener("input", () => { + if (currentView !== "inbox") return; + refresh(); +}); + +for (const btn of navButtons) { + btn.addEventListener("click", () => { + for (const b of navButtons) b.classList.remove("active"); + btn.classList.add("active"); + currentView = btn.dataset.view as View; + search.disabled = currentView !== "inbox"; + selectVisibleBtn.disabled = currentView !== "inbox"; + refresh(); + }); +} + +refresh(); diff --git a/examples/with-electron-and-walltime/apps/electron/src/renderer/src/styles.css b/examples/with-electron-and-walltime/apps/electron/src/renderer/src/styles.css new file mode 100644 index 00000000..c88dd7a8 --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/src/renderer/src/styles.css @@ -0,0 +1,333 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, +body, +#app { + height: 100%; + font-family: + -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Helvetica, Arial, sans-serif; + font-size: 13px; + color: #e6e6e6; + background: #0f1419; +} + +#app { + display: grid; + grid-template-columns: 220px 1fr; +} + +#sidebar { + border-right: 1px solid #1f2937; + padding: 16px 12px; + background: #0b1015; +} + +.brand { + font-weight: 600; + letter-spacing: 0.2px; + margin-bottom: 16px; + color: #9ca3af; + font-size: 12px; + text-transform: uppercase; +} + +#sidebar nav { + display: flex; + flex-direction: column; + gap: 2px; +} + +#sidebar nav button { + text-align: left; + background: transparent; + border: none; + color: #d1d5db; + padding: 8px 10px; + border-radius: 6px; + cursor: pointer; + font: inherit; +} + +#sidebar nav button.active, +#sidebar nav button:hover { + background: #1f2937; + color: #fff; +} + +#main { + display: flex; + flex-direction: column; + min-height: 0; +} + +#main header { + display: flex; + align-items: center; + gap: 12px; + padding: 12px 16px; + border-bottom: 1px solid #1f2937; +} + +#main header input { + flex: 1; + background: #111827; + border: 1px solid #1f2937; + color: #e6e6e6; + padding: 8px 12px; + border-radius: 8px; + font: inherit; + outline: none; +} + +#main header input:focus { + border-color: #3b82f6; +} + +#status { + color: #6b7280; + font-size: 11px; + font-variant-numeric: tabular-nums; + display: inline-flex; + align-items: center; + gap: 6px; +} + +#status-spinner { + width: 10px; + height: 10px; + border: 2px solid #1f2937; + border-top-color: #3b82f6; + border-radius: 50%; + animation: status-spin 0.7s linear infinite; + display: none; +} + +#main.loading #status-spinner { + display: inline-block; +} + +@keyframes status-spin { + to { + transform: rotate(360deg); + } +} + +#progress-bar { + position: relative; + height: 2px; + background: transparent; + overflow: hidden; +} + +#progress-bar::before { + content: ""; + position: absolute; + inset: 0; + background: #1f2937; +} + +#progress-bar::after { + content: ""; + position: absolute; + top: 0; + left: -40%; + width: 40%; + height: 100%; + background: linear-gradient(90deg, transparent, #3b82f6 30%, #60a5fa, #3b82f6 70%, transparent); + animation: progress-slide 1.1s ease-in-out infinite; +} + +@keyframes progress-slide { + 0% { + left: -40%; + } + 100% { + left: 100%; + } +} + +#main.loading #email-list { + opacity: 0.45; + pointer-events: none; + transition: opacity 80ms ease-out; +} + +#email-list { + transition: opacity 120ms ease-in; +} + +#main.loading #archive-btn, +#main.loading #select-visible-btn, +#main.loading #clear-selection-btn { + pointer-events: none; + opacity: 0.5; +} + +#email-list { + list-style: none; + overflow-y: auto; + flex: 1; +} + +#email-list li { + display: grid; + grid-template-columns: 24px 1fr; + gap: 8px; + padding: 10px 16px; + border-bottom: 1px solid #111827; + cursor: pointer; +} + +#email-list li.thread { + grid-template-columns: 1fr; +} + +#email-list li:hover { + background: #111827; +} + +#email-list li.selected { + background: #1e293b; +} + +#email-list li input[type="checkbox"] { + align-self: center; + cursor: pointer; + accent-color: #3b82f6; +} + +#email-list .meta { + min-width: 0; +} + +#email-list .row { + display: flex; + justify-content: space-between; + align-items: baseline; +} + +#email-list .from { + color: #d1d5db; + font-size: 12px; +} + +#email-list .subject { + color: #d1d5db; + margin-top: 2px; +} + +#email-list time { + color: #6b7280; + font-size: 11px; + font-variant-numeric: tabular-nums; +} + +#email-list li.unread .from, +#email-list li.unread .subject { + color: #fff; + font-weight: 600; +} + +#email-list .snippet { + color: #6b7280; + margin-top: 2px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#email-list .count { + display: inline-block; + margin-left: 6px; + padding: 1px 6px; + background: #1f2937; + border-radius: 10px; + font-size: 10px; + color: #9ca3af; + vertical-align: middle; +} + +.stats { + margin-top: auto; + padding-top: 12px; + border-top: 1px solid #1f2937; + font-size: 11px; + color: #6b7280; + font-variant-numeric: tabular-nums; +} + +#sidebar { + display: flex; + flex-direction: column; +} + +#action-bar { + display: flex; + align-items: center; + gap: 12px; + padding: 8px 16px; + background: #0b1015; + border-bottom: 1px solid #1f2937; +} + +#action-bar #selection-count { + color: #d1d5db; + font-variant-numeric: tabular-nums; +} + +#action-bar button { + background: #1f2937; + border: 1px solid #374151; + color: #e6e6e6; + padding: 4px 10px; + border-radius: 6px; + cursor: pointer; + font: inherit; + font-size: 12px; +} + +#action-bar #archive-btn { + background: #1e40af; + border-color: #2563eb; +} + +#action-bar button:hover { + filter: brightness(1.15); +} + +#action-bar button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +#list-toolbar { + display: flex; + padding: 6px 16px; + border-bottom: 1px solid #1f2937; + background: #0d1218; +} + +#list-toolbar button { + background: transparent; + border: 1px solid #1f2937; + color: #9ca3af; + padding: 3px 10px; + border-radius: 6px; + cursor: pointer; + font: inherit; + font-size: 11px; +} + +#list-toolbar button:hover { + background: #111827; + color: #d1d5db; +} + +#list-toolbar button:disabled { + opacity: 0.4; + cursor: not-allowed; +} diff --git a/examples/with-electron-and-walltime/apps/electron/test/inbox.e2e.ts b/examples/with-electron-and-walltime/apps/electron/test/inbox.e2e.ts new file mode 100644 index 00000000..3e5cf86a --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/test/inbox.e2e.ts @@ -0,0 +1,38 @@ +import { bench, type Page } from "@codspeed/playwright"; +import electronExecutable from "electron"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const appRoot = path.resolve(__dirname, ".."); + +async function waitUntilSettled(page: Page): Promise { + await page.waitForFunction(() => { + const main = document.getElementById("main"); + return !!main && !main.classList.contains("loading"); + }); +} + +await bench( + "inbox-search-archive-threads", + async ({ page }) => { + await page.fill("#search", "update"); + await waitUntilSettled(page); + + await page.click("#select-visible-btn"); + await page.click("#archive-btn"); + await waitUntilSettled(page); + + await page.click('#sidebar nav button[data-view="threads"]'); + await waitUntilSettled(page); + }, + { + appPath: path.join(appRoot, "out/main/index.js"), + cwd: appRoot, + setup: async ({ page }) => { + page.setDefaultTimeout(180_000); + await page.waitForSelector("#main"); + await waitUntilSettled(page); + }, + }, +); diff --git a/examples/with-electron-and-walltime/apps/electron/tsconfig.json b/examples/with-electron-and-walltime/apps/electron/tsconfig.json new file mode 100644 index 00000000..74d67a2c --- /dev/null +++ b/examples/with-electron-and-walltime/apps/electron/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "types": ["node", "electron-vite/node"] + }, + "include": ["src", "test", "electron.vite.config.ts"] +} diff --git a/examples/with-electron-and-walltime/biome.json b/examples/with-electron-and-walltime/biome.json new file mode 100644 index 00000000..49353390 --- /dev/null +++ b/examples/with-electron-and-walltime/biome.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json", + "files": { + "includes": ["**", "!**/node_modules", "!**/dist", "!**/out", "!**/.codspeed"] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noExplicitAny": "off" + } + } + }, + "assist": { + "enabled": true, + "actions": { + "source": { + "organizeImports": "on" + } + } + } +} diff --git a/examples/with-electron-and-walltime/package.json b/examples/with-electron-and-walltime/package.json new file mode 100644 index 00000000..87c01d8b --- /dev/null +++ b/examples/with-electron-and-walltime/package.json @@ -0,0 +1,24 @@ +{ + "name": "mail-client-demo", + "version": "0.1.0", + "private": true, + "description": "Mail-client model + Electron client, benchmarked under CodSpeed", + "scripts": { + "bench": "pnpm --filter @mail-client-demo/model bench", + "bench:codspeed": "pnpm --filter @mail-client-demo/model bench:codspeed", + "bench:electron": "pnpm --filter @mail-client-demo/electron bench", + "electron": "pnpm --filter @mail-client-demo/electron dev", + "build:electron": "pnpm --filter @mail-client-demo/electron build", + "typecheck": "pnpm -r typecheck", + "format": "biome format --write .", + "lint": "biome check ." + }, + "devDependencies": { + "@biomejs/biome": "^2.4.15", + "typescript": "^6.0.3" + }, + "engines": { + "node": "24.11.1" + }, + "packageManager": "pnpm@10.25.0" +} diff --git a/examples/with-electron-and-walltime/packages/model/bench/inbox.bench.ts b/examples/with-electron-and-walltime/packages/model/bench/inbox.bench.ts new file mode 100644 index 00000000..2721f6e4 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/bench/inbox.bench.ts @@ -0,0 +1,42 @@ +import { bench, describe } from "vitest"; +import { Inbox } from "../src/inbox.ts"; +import { generateEmails } from "../src/seed.ts"; + +const EMAIL_COUNT = 10_000; + +const emails = generateEmails({ count: EMAIL_COUNT }); +const inbox = new Inbox(emails); + +// 50 ids spread evenly through the inbox so findIndex has to scan varied +// distances. Mirrors a user selecting messages across the visible viewport +// and pressing the archive shortcut. +const archiveIds = Array.from({ length: 50 }, (_, i) => { + // biome-ignore lint/style/noNonNullAssertion: index within bounds (50 * 200 == EMAIL_COUNT) + return emails[i * (EMAIL_COUNT / 50)]!.id; +}); + +describe("Inbox.search — full-text over 10k inbox", () => { + bench("'quarterly report' (common phrase)", () => { + inbox.search("quarterly report"); + }); + + bench("'kickoff' (single token, common)", () => { + inbox.search("kickoff"); + }); + + bench("'zzznomatch' (worst case: zero matches, full scan)", () => { + inbox.search("zzznomatch"); + }); +}); + +describe("Inbox.buildThreads — reconstruct conversation threads", () => { + bench("10k flat emails -> threads", () => { + inbox.buildThreads(); + }); +}); + +describe("Inbox bulk mutations", () => { + bench("archive 50 emails by id", () => { + inbox.archive(archiveIds); + }); +}); diff --git a/examples/with-electron-and-walltime/packages/model/bench/store.bench.ts b/examples/with-electron-and-walltime/packages/model/bench/store.bench.ts new file mode 100644 index 00000000..be5e1829 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/bench/store.bench.ts @@ -0,0 +1,40 @@ +import { mkdtempSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { bench, describe } from "vitest"; +import { openDatabase, syncStateToDisk } from "../src/persistence.ts"; +import { generateEmails } from "../src/seed.ts"; +import { type AppState, makeInitialState, reduce } from "../src/store.ts"; + +const EMAIL_COUNT = 10_000; +const emails = generateEmails({ count: EMAIL_COUNT }); +const initial: AppState = makeInitialState(emails); + +// 50 ids spread evenly through the inbox. +const archiveIds = Array.from({ length: 50 }, (_, i) => { + // biome-ignore lint/style/noNonNullAssertion: index within bounds + return emails[i * (EMAIL_COUNT / 50)]!.id; +}); + +describe("Store.reduce — pure mutation actions", () => { + bench("ARCHIVE 50 ids over 10k state", () => { + reduce(initial, { type: "ARCHIVE", ids: archiveIds, at: Date.now() }); + }); + + bench("MARK_READ 50 ids over 10k state", () => { + reduce(initial, { type: "MARK_READ", ids: archiveIds, at: Date.now() }); + }); +}); + +describe("syncStateToDisk — full JSON snapshot to disk", () => { + const tmp = mkdtempSync(join(tmpdir(), "model-bench-")); + const dbPath = join(tmp, "state.json"); + const db = openDatabase(dbPath); + + // One ARCHIVE dispatched so the journal has a pending op. + const archived = reduce(initial, { type: "ARCHIVE", ids: archiveIds, at: Date.now() }); + + bench("sync 10k emails snapshot + 1 pending op", () => { + syncStateToDisk(archived, db); + }); +}); diff --git a/examples/with-electron-and-walltime/packages/model/package.json b/examples/with-electron-and-walltime/packages/model/package.json new file mode 100644 index 00000000..13c2746b --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/package.json @@ -0,0 +1,24 @@ +{ + "name": "@mail-client-demo/model", + "version": "0.1.0", + "private": true, + "type": "module", + "description": "Mail-client backend-for-frontend model (Email, Inbox, seed). Benchmarked under CodSpeed.", + "exports": { + ".": "./src/index.ts" + }, + "scripts": { + "bench": "vitest bench --run", + "bench:codspeed": "codspeed run --mode walltime pnpm bench", + "bench:codspeed:memory": "codspeed run --mode memory pnpm bench", + "typecheck": "tsc --noEmit" + }, + "devDependencies": { + "@codspeed/tinybench-plugin": "^5.4.0", + "@codspeed/vitest-plugin": "^5.4.0", + "@types/node": "^25.9.1", + "tinybench": "^6.0.2", + "vite": "^7.3.3", + "vitest": "^4.1.7" + } +} diff --git a/examples/with-electron-and-walltime/packages/model/src/inbox.ts b/examples/with-electron-and-walltime/packages/model/src/inbox.ts new file mode 100644 index 00000000..4372d7df --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/src/inbox.ts @@ -0,0 +1,233 @@ +import type { Address, Email, EmailId, LabelId, Thread, ThreadId } from "./types.ts"; + +/** + * Mail-client backend-for-frontend model. + * + * Public methods compose small named helpers and pass *named* callbacks to + * built-in array methods (`.filter`, `.find`, `.sort`, `.reduce`). Those + * callbacks survive V8's inliner because the iteration runs in C++ and calls + * back into JS — that keeps the CodSpeed flamegraph attributing time to the + * specific work (haystack build, thread-member scan, ...) rather than + * collapsing everything onto the public method. + * + * Implementations are deliberately the naive path; an optimization PR will + * replace them with linear-time variants while preserving the same call shape. + */ +export class Inbox { + emails: Email[]; + + constructor(emails: Email[]) { + this.emails = emails; + } + + visible(): Email[] { + return this.emails.filter(isVisibleEmail); + } + + byLabel(label: LabelId): Email[] { + return filterByLabel(this.emails, label); + } + + /** + * Full-text search across subject, body, and from-name. + * Naive: linear scan; the haystack is rebuilt and case-folded per email. + */ + search(query: string): Email[] { + const needle = normalizeQuery(query); + return this.emails.filter(function emailMatchesNeedle(email) { + return emailContainsNeedle(email, needle); + }); + } + + /** + * Reconstruct conversation threads from the flat list. + * Naive: for each unique thread we discover, re-scan the whole email list + * to gather members — O(n × t) where t is the number of threads. + */ + buildThreads(): Thread[] { + const threadIds = collectUniqueThreadIds(this.emails); + const threads: Thread[] = []; + for (const threadId of threadIds) { + const members = collectThreadMembers(this.emails, threadId); + sortThreadByDate(members); + threads.push(buildThreadSummary(threadId, members)); + } + return threads; + } + + sortByDate(emails: Email[], dir: "asc" | "desc" = "desc"): Email[] { + return sortEmailsByDate(emails, dir); + } + + paginate(emails: Email[], offset: number, limit: number): Email[] { + return emails.slice(offset, offset + limit); + } + + /** + * Bulk-apply archive to a set of ids. + * Naive: linear .find per id — O(n × k). + */ + archive(ids: EmailId[]): void { + for (const id of ids) { + const target = findEmailById(this.emails, id); + if (target) markArchived(target); + } + } + + markRead(ids: EmailId[]): void { + for (const id of ids) { + const target = findEmailById(this.emails, id); + if (target) markEmailRead(target); + } + } + + trash(ids: EmailId[]): void { + for (const id of ids) { + const target = findEmailById(this.emails, id); + if (target) markTrashed(target); + } + } +} + +// ---------------------------------------------------------------------------- +// Visibility / label predicates +// ---------------------------------------------------------------------------- + +function isVisibleEmail(email: Email): boolean { + return !email.archived && !email.trashed; +} + +export function filterByLabel(emails: Email[], label: LabelId): Email[] { + return emails.filter(function emailCarriesLabel(email) { + return email.labels.includes(label); + }); +} + +// ---------------------------------------------------------------------------- +// Search +// ---------------------------------------------------------------------------- + +export function normalizeQuery(query: string): string { + return query.toLowerCase(); +} + +export function emailContainsNeedle(email: Email, needle: string): boolean { + const haystack = buildSearchHaystack(email); + return haystack.includes(needle); +} + +export function buildSearchHaystack(email: Email): string { + return `${email.subject} ${email.body} ${email.from.name}`.toLowerCase(); +} + +// ---------------------------------------------------------------------------- +// Threading — three phases, each a discrete function with substantial work +// ---------------------------------------------------------------------------- + +export function collectUniqueThreadIds(emails: Email[]): ThreadId[] { + const seen = new Set(); + const ordered: ThreadId[] = []; + for (const email of emails) { + if (seen.has(email.threadId)) continue; + seen.add(email.threadId); + ordered.push(email.threadId); + } + return ordered; +} + +export function collectThreadMembers(emails: Email[], threadId: ThreadId): Email[] { + return emails.filter(function emailIsInThread(email) { + return email.threadId === threadId; + }); +} + +export function sortThreadByDate(members: Email[]): void { + members.sort(compareByReceivedAtAsc); +} + +function compareByReceivedAtAsc(a: Email, b: Email): number { + return a.receivedAt - b.receivedAt; +} + +function compareByReceivedAtDesc(a: Email, b: Email): number { + return b.receivedAt - a.receivedAt; +} + +export function buildThreadSummary(threadId: ThreadId, members: Email[]): Thread { + return { + id: threadId, + emails: members, + subject: extractCleanSubject(members), + participants: extractParticipants(members), + lastReceivedAt: extractLatestTimestamp(members), + unreadCount: countUnread(members), + }; +} + +function extractCleanSubject(members: Email[]): string { + // biome-ignore lint/style/noNonNullAssertion: members non-empty by construction + return stripReplyFwdPrefix(members[0]!.subject); +} + +function stripReplyFwdPrefix(subject: string): string { + return subject.replace(/^(Re: |Fwd: )+/, ""); +} + +function extractParticipants(members: Email[]): Address[] { + const seen = new Set(); + const out: Address[] = []; + for (const email of members) { + if (seen.has(email.from.email)) continue; + seen.add(email.from.email); + out.push(email.from); + } + return out; +} + +function extractLatestTimestamp(members: Email[]): number { + return members.reduce(reduceMaxReceivedAt, 0); +} + +function reduceMaxReceivedAt(acc: number, email: Email): number { + return email.receivedAt > acc ? email.receivedAt : acc; +} + +function countUnread(members: Email[]): number { + return members.filter(isUnreadEmail).length; +} + +function isUnreadEmail(email: Email): boolean { + return !email.read; +} + +// ---------------------------------------------------------------------------- +// Sorting / pagination +// ---------------------------------------------------------------------------- + +export function sortEmailsByDate(emails: Email[], dir: "asc" | "desc"): Email[] { + const copy = [...emails]; + copy.sort(dir === "asc" ? compareByReceivedAtAsc : compareByReceivedAtDesc); + return copy; +} + +// ---------------------------------------------------------------------------- +// Bulk mutations +// ---------------------------------------------------------------------------- + +export function findEmailById(emails: Email[], id: EmailId): Email | undefined { + return emails.find(function emailHasId(email) { + return email.id === id; + }); +} + +function markArchived(email: Email): void { + email.archived = true; +} + +function markEmailRead(email: Email): void { + email.read = true; +} + +function markTrashed(email: Email): void { + email.trashed = true; +} diff --git a/examples/with-electron-and-walltime/packages/model/src/index.ts b/examples/with-electron-and-walltime/packages/model/src/index.ts new file mode 100644 index 00000000..7641d2b7 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/src/index.ts @@ -0,0 +1,24 @@ +export { Inbox } from "./inbox.ts"; +export { + closeDatabase, + type Db, + openDatabase, + type SyncResult, + syncStateToDisk, +} from "./persistence.ts"; +export { generateEmails, type SeedOptions } from "./seed.ts"; +export { + type Action, + type AppState, + makeInitialState, + type PendingOp, + reduce, +} from "./store.ts"; +export type { + Address, + Email, + EmailId, + LabelId, + Thread, + ThreadId, +} from "./types.ts"; diff --git a/examples/with-electron-and-walltime/packages/model/src/persistence.ts b/examples/with-electron-and-walltime/packages/model/src/persistence.ts new file mode 100644 index 00000000..c3b8c8b7 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/src/persistence.ts @@ -0,0 +1,73 @@ +import { existsSync, readFileSync, writeFileSync } from "node:fs"; +import type { AppState, PendingOp } from "./store.ts"; +import type { Email } from "./types.ts"; + +/** + * Local-file persistence for the AppState. + * + * Each sync re-serialises the full state to JSON and writes the whole file. + * An incremental journal that appended only the new pending ops would + * obviously scale better; the snapshot-on-every-flush approach is the + * intentional starting point so the cost is visible on the bench dashboard + * before we optimise it. + */ + +export interface Db { + path: string; +} + +export function openDatabase(path: string): Db { + return { path }; +} + +export function closeDatabase(_db: Db): void { + /* no-op for the file-backed implementation */ +} + +export interface PersistedSnapshot { + emails: Email[]; + pendingOps: PendingOp[]; + syncedAt: number; + formatVersion: 1; +} + +export interface SyncResult { + durationMs: number; + bytesWritten: number; +} + +export function syncStateToDisk(state: AppState, db: Db): SyncResult { + const start = performance.now(); + + const snapshot = serializeStateForSync(state); + const payload = stringifySnapshot(snapshot); + writeSnapshotFile(db.path, payload); + + return { + durationMs: performance.now() - start, + bytesWritten: payload.length, + }; +} + +function serializeStateForSync(state: AppState): PersistedSnapshot { + return { + emails: state.emails, + pendingOps: state.pendingOps, + syncedAt: Date.now(), + formatVersion: 1, + }; +} + +function stringifySnapshot(snapshot: PersistedSnapshot): string { + return JSON.stringify(snapshot); +} + +function writeSnapshotFile(path: string, payload: string): void { + writeFileSync(path, payload); +} + +export function loadStateFromDisk(db: Db): PersistedSnapshot | null { + if (!existsSync(db.path)) return null; + const raw = readFileSync(db.path, "utf8"); + return JSON.parse(raw) as PersistedSnapshot; +} diff --git a/examples/with-electron-and-walltime/packages/model/src/seed.ts b/examples/with-electron-and-walltime/packages/model/src/seed.ts new file mode 100644 index 00000000..05f5aa76 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/src/seed.ts @@ -0,0 +1,218 @@ +import type { Address, Email, EmailId, LabelId, ThreadId } from "./types.ts"; + +const CONTACTS: Address[] = [ + { name: "Rahul Vora", email: "rahul@acme.io" }, + { name: "Mei Tanaka", email: "mei@northwind.dev" }, + { name: "Sofia García", email: "sofia.garcia@fastmail.com" }, + { name: "Liam O'Connor", email: "liam@octopus.energy" }, + { name: "Ava Nguyen", email: "ava@stripe.com" }, + { name: "Noah Patel", email: "noah@linear.app" }, + { name: "Zara Khan", email: "zara@vercel.com" }, + { name: "Ethan Brooks", email: "ethan@notion.so" }, + { name: "Yuki Sato", email: "yuki@figma.com" }, + { name: "Diego Ramírez", email: "diego@cloudflare.com" }, + { name: "Aanya Iyer", email: "aanya@anthropic.com" }, + { name: "Mateo Silva", email: "mateo@github.com" }, + { name: "Hana Park", email: "hana@spotify.com" }, + { name: "Theo Laurent", email: "theo@datadoghq.com" }, + { name: "Priya Bhatt", email: "priya@retool.com" }, + { name: "Jonas Berg", email: "jonas@sentry.io" }, + { name: "Maya Fischer", email: "maya@plaid.com" }, + { name: "Omar Saleh", email: "omar@brex.com" }, + { name: "Lin Wei", email: "lin@bytedance.com" }, + { name: "Erika Holm", email: "erika@klarna.com" }, + { name: "Jamal Carter", email: "jamal@warp.dev" }, + { name: "Ines Costa", email: "ines@n26.com" }, + { name: "Hugo Martin", email: "hugo@scaleway.com" }, + { name: "Sara Akhtar", email: "sara@deepl.com" }, + { name: "Daniel Hoffman", email: "daniel@1password.com" }, + { name: "Lucia Rossi", email: "lucia@checkout.com" }, + { name: "Kenji Mori", email: "kenji@line.me" }, + { name: "Naomi Schwartz", email: "naomi@coinbase.com" }, + { name: "Ravi Subramanian", email: "ravi@razorpay.com" }, + { name: "Camille Dubois", email: "camille@blablacar.com" }, +]; + +const SUBJECT_FRAGMENTS = [ + "Re: ", + "Fwd: ", + "[Action Required] ", + "Update: ", + "Quick question on ", + "Heads up — ", + "Follow-up: ", + "Reminder: ", + "", + "", +]; + +const SUBJECT_TOPICS = [ + "quarterly report", + "kickoff meeting notes", + "design review feedback", + "production incident postmortem", + "compensation review cycle", + "onboarding checklist", + "API rate-limit changes", + "billing portal launch", + "performance regression in checkout", + "candidate panel for the staff role", + "hiring loop debrief", + "new analytics dashboard", + "infra migration cutover", + "vendor contract renewal", + "RFC: caching strategy", + "OKR draft for next quarter", + "1:1 reschedule", + "customer escalation: Acme Corp", + "EU compliance update", + "snippets for the all-hands", +]; + +const BODY_SENTENCES = [ + "Pinging again on this — let me know if it slipped through.", + "Attaching the deck for tomorrow's review, would love your eyes on slide 4.", + "We saw a spike in p95 between 14:02 and 14:18 UTC; root cause was a cold cache rollover.", + "Pushed a draft PR; gating on the migration before we ship to canary.", + "Two open questions remain: pricing tier and SLA wording.", + "Looping in the platform team for visibility.", + "Could you confirm the timeline before I send the final?", + "Quick note: the metric definition changed last week, so prior numbers don't compare cleanly.", + "Let me know if Tuesday at 10:00 works on your end.", + "Closing the loop here — the issue was a stale config, redeploy fixed it.", + "Sharing the doc with edit access so you can leave inline comments.", + "We're holding the launch until legal signs off on the DPA.", + "Following up after our chat last week.", + "The dashboard now renders under 80ms p50, which clears the bar we set in Q2.", + "Heads up: I'll be OOO Thu–Fri, please ping Mei for anything urgent.", +]; + +const LABEL_POOL: LabelId[] = [ + "inbox", + "work", + "personal", + "newsletters", + "updates", + "promotions", + "important", + "follow-up", +]; + +function mulberry32(seed: number): () => number { + let t = seed >>> 0; + return () => { + t = (t + 0x6d2b79f5) >>> 0; + let r = t; + r = Math.imul(r ^ (r >>> 15), r | 1); + r ^= r + Math.imul(r ^ (r >>> 7), r | 61); + return ((r ^ (r >>> 14)) >>> 0) / 4294967296; + }; +} + +function pick(rng: () => number, arr: readonly T[]): T { + const idx = Math.floor(rng() * arr.length); + // biome-ignore lint/style/noNonNullAssertion: idx is bounded by arr.length + return arr[idx]!; +} + +function pickN(rng: () => number, arr: readonly T[], n: number): T[] { + const out: T[] = []; + const used = new Set(); + while (out.length < n && used.size < arr.length) { + const idx = Math.floor(rng() * arr.length); + if (used.has(idx)) continue; + used.add(idx); + // biome-ignore lint/style/noNonNullAssertion: idx within bounds + out.push(arr[idx]!); + } + return out; +} + +export interface SeedOptions { + count: number; + seed?: number; + /** Fraction of emails that start a new thread (vs. reply to existing). Default 0.25. */ + newThreadRate?: number; +} + +/** + * Build a deterministic inbox with realistic-ish threading, labels, and read state. + * + * Emits emails ordered by `receivedAt` descending (most recent first) — matches + * how a mail client actually presents its inbox. + */ +export function generateEmails(opts: SeedOptions): Email[] { + const { count, seed = 42, newThreadRate = 0.25 } = opts; + const rng = mulberry32(seed); + + const emails: Email[] = []; + const openThreads: { id: ThreadId; lastEmailId: EmailId; refs: EmailId[]; subject: string }[] = + []; + + // ~2 years of history, evenly stepping back from "now" + const now = Date.UTC(2026, 4, 20, 12, 0, 0); + const stepMs = Math.floor((1000 * 60 * 60 * 24 * 730) / count); + + for (let i = 0; i < count; i++) { + const id: EmailId = `e_${i.toString(36)}`; + const receivedAt = now - i * stepMs - Math.floor(rng() * stepMs); + + const startNewThread = openThreads.length === 0 || rng() < newThreadRate; + + let threadId: ThreadId; + let inReplyTo: EmailId | null; + let references: EmailId[]; + let subject: string; + + if (startNewThread) { + threadId = `t_${openThreads.length.toString(36)}`; + inReplyTo = null; + references = []; + subject = `${pick(rng, SUBJECT_FRAGMENTS)}${pick(rng, SUBJECT_TOPICS)}`; + openThreads.push({ id: threadId, lastEmailId: id, refs: [id], subject }); + } else { + // biome-ignore lint/style/noNonNullAssertion: openThreads non-empty guarded above + const t = openThreads[Math.floor(rng() * openThreads.length)]!; + threadId = t.id; + inReplyTo = t.lastEmailId; + references = [...t.refs]; + subject = t.subject.startsWith("Re: ") ? t.subject : `Re: ${t.subject}`; + t.lastEmailId = id; + t.refs.push(id); + // After ~6 replies, retire the thread so it doesn't grow forever + if (t.refs.length > 6) { + const idx = openThreads.indexOf(t); + openThreads.splice(idx, 1); + } + } + + const from = pick(rng, CONTACTS); + const to = pickN(rng, CONTACTS, 1 + Math.floor(rng() * 2)); + const cc = rng() < 0.25 ? pickN(rng, CONTACTS, 1 + Math.floor(rng() * 2)) : []; + const body = pickN(rng, BODY_SENTENCES, 2 + Math.floor(rng() * 3)).join(" "); + const snippet = body.slice(0, 120); + const labels = pickN(rng, LABEL_POOL, 1 + Math.floor(rng() * 2)); + + emails.push({ + id, + threadId, + inReplyTo, + references, + from, + to, + cc, + subject, + body, + snippet, + receivedAt, + read: rng() > 0.3, + starred: rng() < 0.1, + archived: rng() < 0.05, + trashed: rng() < 0.02, + labels, + sizeBytes: 1024 + Math.floor(rng() * 8192), + }); + } + + return emails; +} diff --git a/examples/with-electron-and-walltime/packages/model/src/store.ts b/examples/with-electron-and-walltime/packages/model/src/store.ts new file mode 100644 index 00000000..b01f5664 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/src/store.ts @@ -0,0 +1,126 @@ +import type { Email, EmailId } from "./types.ts"; + +/** + * Redux-like store. Immutable state, pure reducer, action log. + * + * Designed so the flamegraph shows a chain of named frames per dispatch: + * dispatch -> reduce -> reduceMutation -> applyMutationToEmails + * -> applyXToEmail (map callback) + * -> enqueuePendingOp -> makePendingOp + * + * Each `.map`/`.filter` callback below is a named function expression — V8 + * cannot inline through the C++ iteration boundary, so the named frame + * survives in the profile. + */ + +export interface AppState { + emails: Email[]; + pendingOps: PendingOp[]; + lastSyncedAt: number | null; +} + +export interface PendingOp { + id: string; + type: "archive" | "markRead" | "trash"; + ids: EmailId[]; + at: number; +} + +export type Action = + | { type: "ARCHIVE"; ids: EmailId[]; at: number } + | { type: "MARK_READ"; ids: EmailId[]; at: number } + | { type: "TRASH"; ids: EmailId[]; at: number } + | { type: "SYNC_FLUSHED"; flushedOpIds: string[]; at: number }; + +export function makeInitialState(emails: Email[]): AppState { + return { emails, pendingOps: [], lastSyncedAt: null }; +} + +export function reduce(state: AppState, action: Action): AppState { + switch (action.type) { + case "ARCHIVE": + return reduceMutation(state, action, "archive", applyArchiveToEmail); + case "MARK_READ": + return reduceMutation(state, action, "markRead", applyMarkReadToEmail); + case "TRASH": + return reduceMutation(state, action, "trash", applyTrashToEmail); + case "SYNC_FLUSHED": + return reduceSyncFlushed(state, action); + } +} + +function reduceMutation( + state: AppState, + action: { ids: EmailId[]; at: number }, + opType: "archive" | "markRead" | "trash", + applyToEmail: (email: Email) => Email, +): AppState { + const updatedEmails = applyMutationToEmails(state.emails, action.ids, applyToEmail); + const enqueuedOps = enqueuePendingOp( + state.pendingOps, + makePendingOp(opType, action.ids, action.at), + ); + return { + ...state, + emails: updatedEmails, + pendingOps: enqueuedOps, + }; +} + +export function applyMutationToEmails( + emails: Email[], + ids: EmailId[], + applyToEmail: (email: Email) => Email, +): Email[] { + return emails.map(function applyMutationIfTargeted(email) { + if (targetsEmail(ids, email.id)) return applyToEmail(email); + return email; + }); +} + +function targetsEmail(ids: EmailId[], target: EmailId): boolean { + return ids.includes(target); +} + +function applyArchiveToEmail(email: Email): Email { + return { ...email, archived: true }; +} + +function applyMarkReadToEmail(email: Email): Email { + return { ...email, read: true }; +} + +function applyTrashToEmail(email: Email): Email { + return { ...email, trashed: true }; +} + +function enqueuePendingOp(existing: PendingOp[], op: PendingOp): PendingOp[] { + return [...existing, op]; +} + +let opIdCounter = 0; +function makePendingOp(type: PendingOp["type"], ids: EmailId[], at: number): PendingOp { + opIdCounter++; + return { id: `op_${opIdCounter.toString(36)}`, type, ids, at }; +} + +function reduceSyncFlushed( + state: AppState, + action: { flushedOpIds: string[]; at: number }, +): AppState { + return { + ...state, + pendingOps: dropFlushedOps(state.pendingOps, action.flushedOpIds), + lastSyncedAt: action.at, + }; +} + +function dropFlushedOps(pending: PendingOp[], flushedIds: string[]): PendingOp[] { + return pending.filter(function pendingOpIsNotFlushed(op) { + return !opIsFlushed(flushedIds, op.id); + }); +} + +function opIsFlushed(flushed: string[], opId: string): boolean { + return flushed.includes(opId); +} diff --git a/examples/with-electron-and-walltime/packages/model/src/types.ts b/examples/with-electron-and-walltime/packages/model/src/types.ts new file mode 100644 index 00000000..99b5de57 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/src/types.ts @@ -0,0 +1,37 @@ +export type EmailId = string; +export type ThreadId = string; +export type LabelId = string; + +export interface Address { + name: string; + email: string; +} + +export interface Email { + id: EmailId; + threadId: ThreadId; + inReplyTo: EmailId | null; + references: EmailId[]; + from: Address; + to: Address[]; + cc: Address[]; + subject: string; + body: string; + snippet: string; + receivedAt: number; + read: boolean; + starred: boolean; + archived: boolean; + trashed: boolean; + labels: LabelId[]; + sizeBytes: number; +} + +export interface Thread { + id: ThreadId; + emails: Email[]; + subject: string; + participants: Address[]; + lastReceivedAt: number; + unreadCount: number; +} diff --git a/examples/with-electron-and-walltime/packages/model/tsconfig.json b/examples/with-electron-and-walltime/packages/model/tsconfig.json new file mode 100644 index 00000000..6404a070 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "types": ["node", "vitest/globals"] + }, + "include": ["src", "bench", "vitest.config.ts"] +} diff --git a/examples/with-electron-and-walltime/packages/model/vitest.config.ts b/examples/with-electron-and-walltime/packages/model/vitest.config.ts new file mode 100644 index 00000000..21281407 --- /dev/null +++ b/examples/with-electron-and-walltime/packages/model/vitest.config.ts @@ -0,0 +1,12 @@ +import codspeedPlugin from "@codspeed/vitest-plugin"; +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + plugins: [codspeedPlugin()], + test: { + include: ["bench/**/*.bench.ts"], + benchmark: { + include: ["bench/**/*.bench.ts"], + }, + }, +}); diff --git a/examples/with-electron-and-walltime/pnpm-lock.yaml b/examples/with-electron-and-walltime/pnpm-lock.yaml new file mode 100644 index 00000000..8a407afc --- /dev/null +++ b/examples/with-electron-and-walltime/pnpm-lock.yaml @@ -0,0 +1,2477 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@biomejs/biome': + specifier: ^2.4.15 + version: 2.4.15 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + + apps/electron: + dependencies: + '@mail-client-demo/model': + specifier: workspace:* + version: link:../../packages/model + devDependencies: + '@codspeed/playwright': + specifier: link:../../../../packages/playwright + version: link:../../../../packages/playwright + '@types/node': + specifier: ^25.9.1 + version: 25.9.1 + electron: + specifier: ^42.2.0 + version: 42.2.0 + electron-vite: + specifier: ^5.0.0 + version: 5.0.0(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)) + playwright: + specifier: ^1.60.0 + version: 1.60.0 + tsx: + specifier: ^4.22.3 + version: 4.22.3 + vite: + specifier: ^7.3.3 + version: 7.3.3(@types/node@25.9.1)(tsx@4.22.3) + + packages/model: + devDependencies: + '@codspeed/tinybench-plugin': + specifier: ^5.4.0 + version: 5.4.0(tinybench@6.0.2) + '@codspeed/vitest-plugin': + specifier: ^5.4.0 + version: 5.4.0(tinybench@6.0.2)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3))(vitest@4.1.7(@types/node@25.9.1)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3))) + '@types/node': + specifier: ^25.9.1 + version: 25.9.1 + tinybench: + specifier: ^6.0.2 + version: 6.0.2 + vite: + specifier: ^7.3.3 + version: 7.3.3(@types/node@25.9.1)(tsx@4.22.3) + vitest: + specifier: ^4.1.7 + version: 4.1.7(@types/node@25.9.1)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)) + +packages: + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@biomejs/biome@2.4.15': + resolution: {integrity: sha512-j5VH3a/h/HXTKBM50MDMxRCzkeLv9S2XJcW2WgnZT1+xyisi+0bISrXR82gCX+8S9lvK0skEvHJRN+3Ktr2hlw==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.4.15': + resolution: {integrity: sha512-rF3PPqLq1yoST79zaQbDjVJwsuIeci/O+9bgNmC5QpgOqz6aqYuzA4abyAGx+mgyiDXn4A049xAN8gijbuR1Qg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.4.15': + resolution: {integrity: sha512-/5KHXYMfSJs1fNXiX30xFtI8JcCFV6zaVVLxOa0M2sfqBKHkpQhRTv94yxQWxeTY2lzo2OuTlNvPC+hDQt2wcQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.4.15': + resolution: {integrity: sha512-ZPcxznxm0pogHBLZhYntyR3sR+MrZjqJIKEr7ZqVen0Rl+P/4upVmfYXjftizi9RoqZntg33fv/1fbdhbYXpEQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@2.4.15': + resolution: {integrity: sha512-owaAMZD/T4LrD0ELNCk0Km3qrRHuM0X6EAyVE1FSqGY0rbLoiDLrO4Us2tllm6cAeB2Ioa9C2C08NZPdr8+0Ug==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@2.4.15': + resolution: {integrity: sha512-CNq/9W38SYSH023lfcQ4KKU8K0YX8T//FZUhcgtMMRABDojx5XsMV7jlweAvGSl389wJQB29Qo6Zb/a+jdvt+w==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@2.4.15': + resolution: {integrity: sha512-0jj7THz12GbUOLmMibktK6DZjqz2zV64KFxyBtcFTKPiiOIY0a7vns1elpO1dERvxpsZ5ik0oFfz0oGwFde1+g==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@2.4.15': + resolution: {integrity: sha512-ouhkYdlhp/1GghEJPdWwD/Vi3gQ1nFxuSpMolWsbq3Lsq3QUR4jl6UdhhscdCugKU5vOEuMiJhvKj66O0OCq+w==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.4.15': + resolution: {integrity: sha512-zBrGq5mx5wwpnow4+2BxUvleDM+GNd4sLbPaMapsSLQLD0NGRCquqPBTgN+7XkUteHvj7M+BstuI8tmnV7+HgQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@codspeed/core@5.4.0': + resolution: {integrity: sha512-SwGjXDixN/zX1awBR95LzS0KxIs931qwf7Hbk7BRWv1jAdlMYf9o9GlSnWER4zGBHz941BvzFQJ1O2RIofW3cg==} + + '@codspeed/tinybench-plugin@5.4.0': + resolution: {integrity: sha512-jzuFoyyoGxc3Lc+TTl54PnRsgqO3CYbbbnwYSVp/m/4rqvCwSUZChY9EuQJ6uZFbamT3UhWF2N6tDEGShkvsrw==} + peerDependencies: + tinybench: '>=4.0.1' + + '@codspeed/vitest-plugin@5.4.0': + resolution: {integrity: sha512-Xa9HaZHUjYXn1T39bTipV5hmguk1vIuDZs3Gc5OYA8X4ohftYbKfyoFtBqVFfB/ii/p1ihuwt+tltraKMcRDsA==} + peerDependencies: + tinybench: '>=2.9.0' + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + vitest: ^3.2 || ^4 + + '@electron/get@5.0.0': + resolution: {integrity: sha512-pjoBpru1KdEtcExBnuHAP1cAc/5faoedw0hzJkL3o4/IJp7HNF1+fbrdxT3gMYRX2oJfvnA/WXeCTVQpYYxyJA==} + engines: {node: '>=22.12.0'} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.28.0': + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.28.0': + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.28.0': + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.28.0': + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.28.0': + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.0': + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.28.0': + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.0': + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.28.0': + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.28.0': + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.28.0': + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.28.0': + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.28.0': + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.28.0': + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.0': + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.28.0': + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.28.0': + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.28.0': + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.0': + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.28.0': + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.0': + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.28.0': + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.28.0': + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.28.0': + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.28.0': + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.28.0': + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@rollup/rollup-android-arm-eabi@4.60.4': + resolution: {integrity: sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.60.4': + resolution: {integrity: sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.60.4': + resolution: {integrity: sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.60.4': + resolution: {integrity: sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.60.4': + resolution: {integrity: sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.60.4': + resolution: {integrity: sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.60.4': + resolution: {integrity: sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.60.4': + resolution: {integrity: sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.60.4': + resolution: {integrity: sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.60.4': + resolution: {integrity: sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.60.4': + resolution: {integrity: sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.4': + resolution: {integrity: sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.60.4': + resolution: {integrity: sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.4': + resolution: {integrity: sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.60.4': + resolution: {integrity: sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.60.4': + resolution: {integrity: sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.60.4': + resolution: {integrity: sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.60.4': + resolution: {integrity: sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.60.4': + resolution: {integrity: sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.60.4': + resolution: {integrity: sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.4': + resolution: {integrity: sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.4': + resolution: {integrity: sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.60.4': + resolution: {integrity: sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.60.4': + resolution: {integrity: sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.4': + resolution: {integrity: sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/node@24.12.4': + resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + + '@types/node@25.9.1': + resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@vitest/expect@4.1.7': + resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==} + + '@vitest/mocker@4.1.7': + resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.7': + resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==} + + '@vitest/runner@4.1.7': + resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==} + + '@vitest/snapshot@4.1.7': + resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==} + + '@vitest/spy@4.1.7': + resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==} + + '@vitest/utils@4.1.7': + resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.16.1: + resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==} + + baseline-browser-mapping@2.10.31: + resolution: {integrity: sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001793: + resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.360: + resolution: {integrity: sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==} + + electron-vite@5.0.0: + resolution: {integrity: sha512-OHp/vjdlubNlhNkPkL/+3JD34ii5ov7M0GpuXEVdQeqdQ3ulvVR7Dg/rNBLfS5XPIFwgoBLDf9sjjrL+CuDyRQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@swc/core': ^1.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + '@swc/core': + optional: true + + electron@42.2.0: + resolution: {integrity: sha512-b2Tc7sIKiZEl0tBVwFM5GJ+FT5KYhmy9QJHjx8BGVZPVW2SctXWEvrE959ElB56qw7H05dBkhlikDA1DmpaAMw==} + engines: {node: '>= 22.12.0'} + hasBin: true + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-releases@2.0.45: + resolution: {integrity: sha512-iIbHXV9eBB2nB0wa7oTsrrXq+qQt+9SIlx9AX3T96YgobtEQfis5n6TJ6vV+3QP8DwdriEAcGhARaFCu37peBg==} + engines: {node: '>=18'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + + rollup@4.60.4: + resolution: {integrity: sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.0: + resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + engines: {node: '>=10'} + hasBin: true + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stack-trace@1.0.0-pre2: + resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==} + engines: {node: '>=16'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinybench@6.0.2: + resolution: {integrity: sha512-FlHoQpcFvCzeXK5kVPvV7IVgW/hs/B36QWTz876iSdeJguBDfdTSRQmYmaHX+fQNt4hp+gEFB2XXw+8hT4/y8A==} + engines: {node: '>=20.0.0'} + + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tsx@4.22.3: + resolution: {integrity: sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + vite@7.3.3: + resolution: {integrity: sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.7: + resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.7 + '@vitest/browser-preview': 4.1.7 + '@vitest/browser-webdriverio': 4.1.7 + '@vitest/coverage-istanbul': 4.1.7 + '@vitest/coverage-v8': 4.1.7 + '@vitest/ui': 4.1.7 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + +snapshots: + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.3': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@biomejs/biome@2.4.15': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.4.15 + '@biomejs/cli-darwin-x64': 2.4.15 + '@biomejs/cli-linux-arm64': 2.4.15 + '@biomejs/cli-linux-arm64-musl': 2.4.15 + '@biomejs/cli-linux-x64': 2.4.15 + '@biomejs/cli-linux-x64-musl': 2.4.15 + '@biomejs/cli-win32-arm64': 2.4.15 + '@biomejs/cli-win32-x64': 2.4.15 + + '@biomejs/cli-darwin-arm64@2.4.15': + optional: true + + '@biomejs/cli-darwin-x64@2.4.15': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.4.15': + optional: true + + '@biomejs/cli-linux-arm64@2.4.15': + optional: true + + '@biomejs/cli-linux-x64-musl@2.4.15': + optional: true + + '@biomejs/cli-linux-x64@2.4.15': + optional: true + + '@biomejs/cli-win32-arm64@2.4.15': + optional: true + + '@biomejs/cli-win32-x64@2.4.15': + optional: true + + '@codspeed/core@5.4.0': + dependencies: + axios: 1.16.1 + find-up: 6.3.0 + form-data: 4.0.5 + node-gyp-build: 4.8.4 + transitivePeerDependencies: + - debug + - supports-color + + '@codspeed/tinybench-plugin@5.4.0(tinybench@6.0.2)': + dependencies: + '@codspeed/core': 5.4.0 + stack-trace: 1.0.0-pre2 + tinybench: 6.0.2 + transitivePeerDependencies: + - debug + - supports-color + + '@codspeed/vitest-plugin@5.4.0(tinybench@6.0.2)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3))(vitest@4.1.7(@types/node@25.9.1)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)))': + dependencies: + '@codspeed/core': 5.4.0 + tinybench: 6.0.2 + vite: 7.3.3(@types/node@25.9.1)(tsx@4.22.3) + vitest: 4.1.7(@types/node@25.9.1)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)) + transitivePeerDependencies: + - debug + - supports-color + + '@electron/get@5.0.0': + dependencies: + debug: 4.4.3 + env-paths: 3.0.0 + graceful-fs: 4.2.11 + progress: 2.0.3 + semver: 7.8.0 + sumchecker: 3.0.1 + optionalDependencies: + undici: 7.25.0 + transitivePeerDependencies: + - supports-color + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/aix-ppc64@0.28.0': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.28.0': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-arm@0.28.0': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/android-x64@0.28.0': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.28.0': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.28.0': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.28.0': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.28.0': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.28.0': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-arm@0.28.0': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.28.0': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.28.0': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.28.0': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.28.0': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.28.0': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.28.0': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/linux-x64@0.28.0': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.28.0': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.28.0': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.28.0': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.28.0': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.28.0': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.28.0': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.28.0': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.28.0': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@esbuild/win32-x64@0.28.0': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@rollup/rollup-android-arm-eabi@4.60.4': + optional: true + + '@rollup/rollup-android-arm64@4.60.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.4': + optional: true + + '@rollup/rollup-darwin-x64@4.60.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.4': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.4': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.4': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.4': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.4': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.4': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.4': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.4': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.4': + optional: true + + '@standard-schema/spec@1.1.0': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/estree@1.0.9': {} + + '@types/node@24.12.4': + dependencies: + undici-types: 7.16.0 + + '@types/node@25.9.1': + dependencies: + undici-types: 7.24.6 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 25.9.1 + optional: true + + '@vitest/expect@4.1.7': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.7(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3))': + dependencies: + '@vitest/spy': 4.1.7 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.3(@types/node@25.9.1)(tsx@4.22.3) + + '@vitest/pretty-format@4.1.7': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.7': + dependencies: + '@vitest/utils': 4.1.7 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.7': + dependencies: + '@vitest/pretty-format': 4.1.7 + '@vitest/utils': 4.1.7 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.7': {} + + '@vitest/utils@4.1.7': + dependencies: + '@vitest/pretty-format': 4.1.7 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + axios@1.16.1: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.5 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + - supports-color + + baseline-browser-mapping@2.10.31: {} + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.31 + caniuse-lite: 1.0.30001793 + electron-to-chromium: 1.5.360 + node-releases: 2.0.45 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer-crc32@0.2.13: {} + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + caniuse-lite@1.0.30001793: {} + + chai@6.2.2: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + convert-source-map@2.0.0: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + delayed-stream@1.0.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.360: {} + + electron-vite@5.0.0(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + cac: 6.7.14 + esbuild: 0.25.12 + magic-string: 0.30.21 + picocolors: 1.1.1 + vite: 7.3.3(@types/node@25.9.1)(tsx@4.22.3) + transitivePeerDependencies: + - supports-color + + electron@42.2.0: + dependencies: + '@electron/get': 5.0.0 + '@types/node': 24.12.4 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + env-paths@3.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + esbuild@0.28.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 + + escalade@3.2.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + expect-type@1.3.0: {} + + extract-zip@2.0.1: + dependencies: + debug: 4.4.3 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + follow-redirects@1.16.0: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.3 + mime-types: 2.1.35 + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + 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.3 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json5@2.2.3: {} + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + ms@2.1.3: {} + + nanoid@3.3.12: {} + + node-gyp-build@4.8.4: {} + + node-releases@2.0.45: {} + + obug@2.1.1: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.2 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + path-exists@5.0.0: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.4: {} + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + progress@2.0.3: {} + + proxy-from-env@2.1.0: {} + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + rollup@4.60.4: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.4 + '@rollup/rollup-android-arm64': 4.60.4 + '@rollup/rollup-darwin-arm64': 4.60.4 + '@rollup/rollup-darwin-x64': 4.60.4 + '@rollup/rollup-freebsd-arm64': 4.60.4 + '@rollup/rollup-freebsd-x64': 4.60.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.4 + '@rollup/rollup-linux-arm-musleabihf': 4.60.4 + '@rollup/rollup-linux-arm64-gnu': 4.60.4 + '@rollup/rollup-linux-arm64-musl': 4.60.4 + '@rollup/rollup-linux-loong64-gnu': 4.60.4 + '@rollup/rollup-linux-loong64-musl': 4.60.4 + '@rollup/rollup-linux-ppc64-gnu': 4.60.4 + '@rollup/rollup-linux-ppc64-musl': 4.60.4 + '@rollup/rollup-linux-riscv64-gnu': 4.60.4 + '@rollup/rollup-linux-riscv64-musl': 4.60.4 + '@rollup/rollup-linux-s390x-gnu': 4.60.4 + '@rollup/rollup-linux-x64-gnu': 4.60.4 + '@rollup/rollup-linux-x64-musl': 4.60.4 + '@rollup/rollup-openbsd-x64': 4.60.4 + '@rollup/rollup-openharmony-arm64': 4.60.4 + '@rollup/rollup-win32-arm64-msvc': 4.60.4 + '@rollup/rollup-win32-ia32-msvc': 4.60.4 + '@rollup/rollup-win32-x64-gnu': 4.60.4 + '@rollup/rollup-win32-x64-msvc': 4.60.4 + fsevents: 2.3.3 + + semver@6.3.1: {} + + semver@7.8.0: {} + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + stack-trace@1.0.0-pre2: {} + + stackback@0.0.2: {} + + std-env@4.1.0: {} + + sumchecker@3.0.1: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + tinybench@2.9.0: {} + + tinybench@6.0.2: {} + + tinyexec@1.1.2: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tsx@4.22.3: + dependencies: + esbuild: 0.28.0 + optionalDependencies: + fsevents: 2.3.3 + + typescript@6.0.3: {} + + undici-types@7.16.0: {} + + undici-types@7.24.6: {} + + undici@7.25.0: + optional: true + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.60.4 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 25.9.1 + fsevents: 2.3.3 + tsx: 4.22.3 + + vitest@4.1.7(@types/node@25.9.1)(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)): + dependencies: + '@vitest/expect': 4.1.7 + '@vitest/mocker': 4.1.7(vite@7.3.3(@types/node@25.9.1)(tsx@4.22.3)) + '@vitest/pretty-format': 4.1.7 + '@vitest/runner': 4.1.7 + '@vitest/snapshot': 4.1.7 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 7.3.3(@types/node@25.9.1)(tsx@4.22.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.9.1 + transitivePeerDependencies: + - msw + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wrappy@1.0.2: {} + + yallist@3.1.1: {} + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yocto-queue@1.2.2: {} diff --git a/examples/with-electron-and-walltime/pnpm-workspace.yaml b/examples/with-electron-and-walltime/pnpm-workspace.yaml new file mode 100644 index 00000000..aed51f6c --- /dev/null +++ b/examples/with-electron-and-walltime/pnpm-workspace.yaml @@ -0,0 +1,7 @@ +packages: + - "packages/*" + - "apps/*" +onlyBuiltDependencies: + - electron +ignoredBuiltDependencies: + - esbuild diff --git a/examples/with-electron-and-walltime/tsconfig.base.json b/examples/with-electron-and-walltime/tsconfig.base.json new file mode 100644 index 00000000..43c27b5a --- /dev/null +++ b/examples/with-electron-and-walltime/tsconfig.base.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["ES2022"], + "strict": true, + "noUncheckedIndexedAccess": true, + "esModuleInterop": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "verbatimModuleSyntax": true, + "isolatedModules": true, + "noEmit": true, + "allowImportingTsExtensions": true + } +} diff --git a/lerna.json b/lerna.json index 07a784df..b49898cd 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,5 @@ { "npmClient": "pnpm", - "useWorkspaces": true, "packages": ["packages/*"], "$schema": "node_modules/lerna/schemas/lerna-schema.json", "version": "5.4.0" diff --git a/package.json b/package.json index 59cfe746..dfc7eeaf 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,45 @@ { "name": "root", "private": true, + "scripts": { + "build": "turbo run build", + "test": "turbo run test", + "lint": "turbo run lint", + "typecheck": "turbo run typecheck", + "format": "turbo run format", + "fix-format": "turbo run fix-format", + "clean": "turbo run clean", + "check": "turbo run lint typecheck test" + }, "devDependencies": { "@commitlint/cli": "^17.5.1", "@commitlint/config-conventional": "^17.4.4", - "@moonrepo/cli": "1.37.3", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.0.1", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-typescript": "^11.1.5", "@types/jest": "^29.5.0", "@types/node": "^20.5.1", - "@typescript-eslint/eslint-plugin": "^5.58.0", - "@typescript-eslint/parser": "^5.58.0", + "@typescript-eslint/eslint-plugin": "^8.57.0", + "@typescript-eslint/parser": "^8.57.0", "esbuild": "^0.17.16", "esbuild-register": "^3.4.2", - "eslint": "^7.32.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-import": "^2.27.5", + "eslint": "^8.57.1", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.32.0", "husky": "^7.0.4", "jest": "^29.5.0", "jest-config": "^29.5.0", - "lerna": "^6.6.1", - "prettier": "^2.8.7", - "prettier-plugin-organize-imports": "^3.2.2", + "lerna": "^8.2.4", + "prettier": "^3.8.3", + "prettier-plugin-organize-imports": "^4.3.0", "rollup": "^4.47.1", "rollup-plugin-dts": "^6.1.0", "rollup-plugin-esbuild": "^6.1.0", "ts-jest": "^29.1.0", "tslib": "^2.5.0", - "typescript": "4.9.4" + "turbo": "^2.5.6", + "typescript": "^5.6.3" }, "packageManager": "pnpm@10.12.4", "engines": { diff --git a/packages/benchmark.js-plugin/benches/parsePr.ts b/packages/benchmark.js-plugin/benches/parsePr.ts index 877bc18f..6acbd956 100644 --- a/packages/benchmark.js-plugin/benches/parsePr.ts +++ b/packages/benchmark.js-plugin/benches/parsePr.ts @@ -13,7 +13,7 @@ function sendEvent(numberOfOperations: number): void { function logMetrics( numberOfOperations: number, - numberOfDeepOperations: number + numberOfDeepOperations: number, ): void { for (let i = 0; i < numberOfOperations; i++) { for (let i = 0; i < numberOfOperations; i++) { diff --git a/packages/benchmark.js-plugin/benches/sample.ts b/packages/benchmark.js-plugin/benches/sample.ts index a793be30..5a96a935 100644 --- a/packages/benchmark.js-plugin/benches/sample.ts +++ b/packages/benchmark.js-plugin/benches/sample.ts @@ -5,7 +5,7 @@ import parsePr from "./parsePr"; const LONG_BODY = new Array(1_000) .fill( - "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non." + "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non.", ) .join("\n") + "fixes #123"; @@ -16,6 +16,7 @@ suite /o/.test("Hello World!"); }) .add("String#indexOf", function () { + // eslint-disable-next-line @typescript-eslint/no-unused-expressions "Hello World!".indexOf("o") > -1; }) .add("short body", () => { diff --git a/packages/benchmark.js-plugin/moon.yml b/packages/benchmark.js-plugin/moon.yml deleted file mode 100644 index f5aefb78..00000000 --- a/packages/benchmark.js-plugin/moon.yml +++ /dev/null @@ -1,9 +0,0 @@ -tasks: - bench: - command: node -r esbuild-register benches/sample.ts - inputs: - - "benches/**" - local: true - platform: "system" - options: - cache: false diff --git a/packages/benchmark.js-plugin/package.json b/packages/benchmark.js-plugin/package.json index 4e573ddd..5b9893b4 100644 --- a/packages/benchmark.js-plugin/package.json +++ b/packages/benchmark.js-plugin/package.json @@ -14,6 +14,17 @@ "files": [ "dist" ], + "scripts": { + "build": "NODE_NO_WARNINGS=1 rollup -c rollup.config.ts --configPlugin typescript", + "test": "jest --passWithNoTests --silent", + "test/integ": "jest --passWithNoTests --silent -c jest.config.integ.js", + "lint": "eslint .", + "typecheck": "tsc --noEmit --pretty", + "format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check .", + "fix-format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write .", + "bench": "node -r esbuild-register benches/sample.ts", + "clean": "rm -rf dist" + }, "author": "Arthur Pastel ", "repository": "https://github.com/CodSpeedHQ/codspeed-node", "homepage": "https://codspeed.io", @@ -22,14 +33,12 @@ "@babel/preset-env": "^7.22.5", "@types/benchmark": "^2.1.2", "@types/lodash": "^4.14.195", - "@types/stack-trace": "^0.0.30", "benchmark": "^2.1.4", "jest-mock-extended": "^3.0.4" }, "dependencies": { "@codspeed/core": "workspace:^5.4.0", - "lodash": "^4.17.10", - "stack-trace": "1.0.0-pre2" + "lodash": "^4.17.10" }, "peerDependencies": { "benchmark": "^2.1.0" diff --git a/packages/benchmark.js-plugin/rollup.config.ts b/packages/benchmark.js-plugin/rollup.config.ts index 15f0fedf..4fc972e6 100644 --- a/packages/benchmark.js-plugin/rollup.config.ts +++ b/packages/benchmark.js-plugin/rollup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "rollup"; import { declarationsPlugin, jsPlugins } from "../../rollup.options"; -import pkg from "./package.json" assert { type: "json" }; +import pkg from "./package.json" with { type: "json" }; const entrypoint = "src/index.ts"; diff --git a/packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts b/packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts index 72b68a3b..d9a22017 100644 --- a/packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts +++ b/packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts @@ -18,8 +18,8 @@ describe("buildSuiteAdd", () => { suite.add({ name: "test", fn: emptyBench }); suite.forEach((bench: CodSpeedBenchmark) => expect(bench.uri).toBe( - "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test" - ) + "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test", + ), ); }); @@ -28,8 +28,8 @@ describe("buildSuiteAdd", () => { suite.add(emptyBench, { name: "test" }); suite.forEach((bench: CodSpeedBenchmark) => expect(bench.uri).toBe( - "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test" - ) + "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test", + ), ); }); @@ -38,8 +38,8 @@ describe("buildSuiteAdd", () => { suite.add("test", { fn: emptyBench }); suite.forEach((bench: CodSpeedBenchmark) => expect(bench.uri).toBe( - "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test" - ) + "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test", + ), ); }); @@ -48,8 +48,8 @@ describe("buildSuiteAdd", () => { suite.add("test", emptyBench); suite.forEach((bench: CodSpeedBenchmark) => expect(bench.uri).toBe( - "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test" - ) + "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::test", + ), ); }); @@ -59,8 +59,8 @@ describe("buildSuiteAdd", () => { suite.add("test", emptyBench); suite.forEach((bench: CodSpeedBenchmark) => expect(bench.uri).toBe( - "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::suite::test" - ) + "packages/benchmark.js-plugin/src/__tests__/buildSuiteAdd.test.ts::suite::test", + ), ); }); diff --git a/packages/benchmark.js-plugin/src/buildSuiteAdd.ts b/packages/benchmark.js-plugin/src/buildSuiteAdd.ts index e7b93a2d..73c3febf 100644 --- a/packages/benchmark.js-plugin/src/buildSuiteAdd.ts +++ b/packages/benchmark.js-plugin/src/buildSuiteAdd.ts @@ -1,6 +1,6 @@ +import { getCallingFile } from "@codspeed/core"; import { Options, Suite } from "benchmark"; import { isFunction, isPlainObject } from "lodash"; -import getCallingFile from "./getCallingFile"; function isOptions(options: unknown): options is Options { return isPlainObject(options); @@ -22,10 +22,10 @@ export default function buildSuiteAdd(suite: Suite) { } function add(options: Options): Suite; - // eslint-disable-next-line @typescript-eslint/ban-types + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type function add(fn: Function, options?: Options): Suite; function add(name: string, options?: Options): Suite; - // eslint-disable-next-line @typescript-eslint/ban-types + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type function add(name: string, fn: Function, options?: Options): Suite; function add(name: unknown, fn?: unknown, opts?: unknown) { // 1 argument: (options: Options) diff --git a/packages/benchmark.js-plugin/src/getCallingFile.ts b/packages/benchmark.js-plugin/src/getCallingFile.ts deleted file mode 100644 index a3b00b63..00000000 --- a/packages/benchmark.js-plugin/src/getCallingFile.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { getGitDir } from "@codspeed/core"; -import path from "path"; -import { get as getStackTrace } from "stack-trace"; -import { fileURLToPath } from "url"; - -export default function getCallingFile(depth: number): string { - const stack = getStackTrace(); - let callingFile = stack[depth + 1].getFileName(); - const gitDir = getGitDir(callingFile); - if (gitDir === undefined) { - throw new Error("Could not find a git repository"); - } - if (callingFile.startsWith("file://")) { - callingFile = fileURLToPath(callingFile); - } - return path.relative(gitDir, callingFile); -} diff --git a/packages/benchmark.js-plugin/src/index.ts b/packages/benchmark.js-plugin/src/index.ts index 01971b53..20a7cc13 100644 --- a/packages/benchmark.js-plugin/src/index.ts +++ b/packages/benchmark.js-plugin/src/index.ts @@ -1,4 +1,5 @@ import { + getCallingFile, InstrumentHooks, mongoMeasurement, optimizeFunction, @@ -11,24 +12,22 @@ import { } from "@codspeed/core"; import Benchmark from "benchmark"; import buildSuiteAdd from "./buildSuiteAdd"; -import getCallingFile from "./getCallingFile"; import { CodSpeedBenchmark } from "./types"; declare const __VERSION__: string; tryIntrospect(); -interface WithCodSpeedBenchmark - extends Omit< - Benchmark, - "run" | "abort" | "clone" | "compare" | "emit" | "off" | "on" | "reset" - > { +interface WithCodSpeedBenchmark extends Omit< + Benchmark, + "run" | "abort" | "clone" | "compare" | "emit" | "off" | "on" | "reset" +> { abort(): WithCodSpeedBenchmark; clone(options: Benchmark.Options): WithCodSpeedBenchmark; compare(benchmark: Benchmark): number; off( type?: string, - listener?: CallableFunction + listener?: CallableFunction, ): Benchmark | Promise; off(types: string[]): WithCodSpeedBenchmark; on(type?: string, listener?: CallableFunction): WithCodSpeedBenchmark; @@ -38,31 +37,30 @@ interface WithCodSpeedBenchmark run(options?: Benchmark.Options): Benchmark | Promise; } -export interface WithCodSpeedSuite - extends Omit< - Benchmark.Suite, - | "run" - | "abort" - | "clone" - | "compare" - | "emit" - | "off" - | "on" - | "reset" - | "add" - | "filter" - | "each" - | "forEach" - > { +export interface WithCodSpeedSuite extends Omit< + Benchmark.Suite, + | "run" + | "abort" + | "clone" + | "compare" + | "emit" + | "off" + | "on" + | "reset" + | "add" + | "filter" + | "each" + | "forEach" +> { abort(): WithCodSpeedSuite; add( name: string, fn: CallableFunction | string, - options?: Benchmark.Options + options?: Benchmark.Options, ): WithCodSpeedSuite; add( fn: CallableFunction | string, - options?: Benchmark.Options + options?: Benchmark.Options, ): WithCodSpeedSuite; add(name: string, options?: Benchmark.Options): WithCodSpeedSuite; add(options: Benchmark.Options): WithCodSpeedSuite; @@ -94,7 +92,7 @@ function withCodSpeedBenchmark(bench: Benchmark): WithCodSpeedBenchmark { const rawRun = bench.run; bench.run = (options?: Benchmark.Options) => { console.warn( - `[CodSpeed] bench detected but no instrumentation found, falling back to benchmark.js` + `[CodSpeed] bench detected but no instrumentation found, falling back to benchmark.js`, ); return rawRun.bind(bench)(options); }; @@ -124,7 +122,7 @@ function withCodSpeedSuite(suite: Benchmark.Suite): WithCodSpeedSuite { const rawRun = suite.run; suite.run = (options?: Benchmark.Options) => { console.warn( - `[CodSpeed] ${suite.length} benches detected but no instrumentation found, falling back to benchmark.js` + `[CodSpeed] ${suite.length} benches detected but no instrumentation found, falling back to benchmark.js`, ); return rawRun.bind(suite)(options); }; @@ -135,7 +133,7 @@ function withCodSpeedSuite(suite: Benchmark.Suite): WithCodSpeedSuite { // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/ban-ts-comment // @ts-ignore suite.run = async function ( - options?: Benchmark.Options + options?: Benchmark.Options, ): Promise { const suiteName = suite.name; const benches = this as unknown as BenchmarkWithOptions[]; @@ -231,7 +229,7 @@ async function runBenchmarks({ * Dynamically setup the CodSpeed instruments. */ export async function setupInstruments( - body: SetupInstrumentsRequestBody + body: SetupInstrumentsRequestBody, ): Promise { if (!InstrumentHooks.isInstrumented()) { console.warn("[CodSpeed] No instrumentation found, using default mongoUrl"); diff --git a/packages/benchmark.js-plugin/tests/index.integ.test.ts b/packages/benchmark.js-plugin/tests/index.integ.test.ts index aa183a34..d6543609 100644 --- a/packages/benchmark.js-plugin/tests/index.integ.test.ts +++ b/packages/benchmark.js-plugin/tests/index.integ.test.ts @@ -8,7 +8,9 @@ import { registerBenchmarks } from "./registerBenchmarks"; import { registerOtherBenchmarks } from "./registerOtherBenchmarks"; jest.mock("@codspeed/core", () => { - mockCore.getGitDir = jest.requireActual("@codspeed/core").getGitDir; + const actual = jest.requireActual("@codspeed/core"); + mockCore.getGitDir = actual.getGitDir; + mockCore.getCallingFile = actual.getCallingFile; return mockCore; }); @@ -30,8 +32,8 @@ describe("Benchmark", () => { function () { /o/.test("Hello World!"); }, - benchOptions - ) + benchOptions, + ), ); const onComplete = jest.fn(); bench.on("complete", onComplete); @@ -40,7 +42,7 @@ describe("Benchmark", () => { expect(mockCore.InstrumentHooks.startBenchmark).not.toHaveBeenCalled(); expect(mockCore.InstrumentHooks.stopBenchmark).not.toHaveBeenCalled(); expect( - mockCore.InstrumentHooks.setExecutedBenchmark + mockCore.InstrumentHooks.setExecutedBenchmark, ).not.toHaveBeenCalled(); }); it("check core methods are called", async () => { @@ -52,8 +54,8 @@ describe("Benchmark", () => { function () { /o/.test("Hello World!"); }, - benchOptions - ) + benchOptions, + ), ); const onComplete = jest.fn(); bench.on("complete", onComplete); @@ -63,7 +65,7 @@ describe("Benchmark", () => { expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/index.integ.test.ts::RegExpSingle" + "packages/benchmark.js-plugin/tests/index.integ.test.ts::RegExpSingle", ); }); it("check error handling", async () => { @@ -74,8 +76,8 @@ describe("Benchmark", () => { () => { throw new Error("test"); }, - benchOptions - ) + benchOptions, + ), ); await expect(bench.run()).rejects.toThrowError("test"); }); @@ -91,14 +93,14 @@ describe("Benchmark", () => { function () { /o/.test("Hello World!"); }, - benchOptions - ) + benchOptions, + ), ).run(); if (instrumented) { expect(logSpy).toHaveBeenCalledWith( expect.stringContaining( - "[CodSpeed] running with @codspeed/benchmark.js v" - ) + "[CodSpeed] running with @codspeed/benchmark.js v", + ), ); expect({ log: logSpy.mock.calls.slice(1), @@ -110,7 +112,7 @@ describe("Benchmark", () => { warn: warnSpy.mock.calls, }).toMatchSnapshot(); } - } + }, ); it("should call setup and teardown", async () => { mockCore.InstrumentHooks.isInstrumented.mockReturnValue(true); @@ -122,8 +124,8 @@ describe("Benchmark", () => { function () { /o/.test("Hello World!"); }, - { ...benchOptions, setup, teardown } - ) + { ...benchOptions, setup, teardown }, + ), ); await bench.run(); expect(setup).toHaveBeenCalled(); @@ -140,7 +142,7 @@ describe("Benchmark.Suite", () => { function () { /o/.test("Hello World!"); }, - benchOptions + benchOptions, ); const onComplete = jest.fn(); suite.on("complete", onComplete); @@ -149,7 +151,7 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.startBenchmark).not.toHaveBeenCalled(); expect(mockCore.InstrumentHooks.stopBenchmark).not.toHaveBeenCalled(); expect( - mockCore.InstrumentHooks.setExecutedBenchmark + mockCore.InstrumentHooks.setExecutedBenchmark, ).not.toHaveBeenCalled(); }); it("check core methods are called", async () => { @@ -159,7 +161,7 @@ describe("Benchmark.Suite", () => { function () { /o/.test("Hello World!"); }, - benchOptions + benchOptions, ); const onComplete = jest.fn(); suite.on("complete", onComplete); @@ -168,7 +170,7 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/index.integ.test.ts::RegExp" + "packages/benchmark.js-plugin/tests/index.integ.test.ts::RegExp", ); }); it("check suite name is in the uri", async () => { @@ -179,7 +181,7 @@ describe("Benchmark.Suite", () => { function () { /o/.test("Hello World!"); }, - benchOptions + benchOptions, ) .add(() => { /o/.test("Hello World!"); @@ -188,11 +190,11 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalledTimes(2); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/index.integ.test.ts::thesuite::RegExp" + "packages/benchmark.js-plugin/tests/index.integ.test.ts::thesuite::RegExp", ); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/index.integ.test.ts::thesuite::unknown_1" + "packages/benchmark.js-plugin/tests/index.integ.test.ts::thesuite::unknown_1", ); }); it("check error handling", async () => { @@ -201,7 +203,7 @@ describe("Benchmark.Suite", () => { "throwing", () => { throw new Error("test"); - } + }, ); await expect(bench.run()).rejects.toThrowError("test"); }); @@ -217,7 +219,7 @@ describe("Benchmark.Suite", () => { function () { /o/.test("Hello World!"); }, - benchOptions + benchOptions, ) .add(() => { /o/.test("Hello World!"); @@ -226,8 +228,8 @@ describe("Benchmark.Suite", () => { if (instrumented) { expect(logSpy).toHaveBeenCalledWith( expect.stringContaining( - "[CodSpeed] running with @codspeed/benchmark.js v" - ) + "[CodSpeed] running with @codspeed/benchmark.js v", + ), ); expect({ log: logSpy.mock.calls.slice(1), @@ -239,7 +241,7 @@ describe("Benchmark.Suite", () => { warn: warnSpy.mock.calls, }).toMatchSnapshot(); } - } + }, ); it("check nested file path is in the uri when bench is registered in another file", async () => { mockCore.InstrumentHooks.isInstrumented.mockReturnValue(true); @@ -252,7 +254,7 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/registerBenchmarks.ts::thesuite::RegExp" + "packages/benchmark.js-plugin/tests/registerBenchmarks.ts::thesuite::RegExp", ); }); it("check that benchmarks with same name have different URIs when registered in different files", async () => { @@ -267,11 +269,11 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalledTimes(2); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/registerBenchmarks.ts::thesuite::RegExp" + "packages/benchmark.js-plugin/tests/registerBenchmarks.ts::thesuite::RegExp", ); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/benchmark.js-plugin/tests/registerOtherBenchmarks.ts::thesuite::RegExp" + "packages/benchmark.js-plugin/tests/registerOtherBenchmarks.ts::thesuite::RegExp", ); }); it("should call setupCore and teardownCore only once after run()", async () => { @@ -298,7 +300,7 @@ describe("Benchmark.Suite", () => { function () { /o/.test("Hello World!"); }, - { ...benchOptions, setup, teardown } + { ...benchOptions, setup, teardown }, ); await suite.run(); diff --git a/packages/benchmark.js-plugin/tests/registerBenchmarks.ts b/packages/benchmark.js-plugin/tests/registerBenchmarks.ts index f894c4f4..b13fdeb0 100644 --- a/packages/benchmark.js-plugin/tests/registerBenchmarks.ts +++ b/packages/benchmark.js-plugin/tests/registerBenchmarks.ts @@ -6,6 +6,6 @@ export function registerBenchmarks(suite: WithCodSpeedSuite) { function () { /o/.test("Hello World!"); }, - { maxTime: 0.1 } + { maxTime: 0.1 }, ); } diff --git a/packages/benchmark.js-plugin/tests/registerOtherBenchmarks.ts b/packages/benchmark.js-plugin/tests/registerOtherBenchmarks.ts index 99b6fab0..0d6e0f68 100644 --- a/packages/benchmark.js-plugin/tests/registerOtherBenchmarks.ts +++ b/packages/benchmark.js-plugin/tests/registerOtherBenchmarks.ts @@ -6,6 +6,6 @@ export function registerOtherBenchmarks(suite: WithCodSpeedSuite) { function () { /o/.test("Hello World!"); }, - { maxTime: 0.1 } + { maxTime: 0.1 }, ); } diff --git a/packages/core/binding.gyp b/packages/core/binding.gyp index 68c4e179..710ab1c0 100644 --- a/packages/core/binding.gyp +++ b/packages/core/binding.gyp @@ -16,8 +16,16 @@ "-Wno-unused-but-set-variable", "-Wno-type-limits", "-Wno-format", - "-Wno-format-security" + "-Wno-format-security", + "-Wno-error=format-security" ], + "xcode_settings": { + "OTHER_CFLAGS": [ + "-Wno-format", + "-Wno-format-security", + "-Wno-error=format-security" + ] + }, "cflags_cc": [ "-Wno-maybe-uninitialized", "-Wno-unused-variable", diff --git a/packages/core/moon.yml b/packages/core/moon.yml deleted file mode 100644 index 0202b691..00000000 --- a/packages/core/moon.yml +++ /dev/null @@ -1,34 +0,0 @@ -tasks: - clean: - args: - - build - - generated/openapi - build: - deps: - - build-native-addon - - build-tracer-client - - build-native-addon: - command: prebuildify --napi --strip - inputs: - - "src/native_core/**/*.cc" - - "src/native_core/**/*.c" - - "src/native_core/**/*.h" - - "binding.gyp" - outputs: - - "prebuilds" - - build-tracer-client: - inputs: - - "./tracer.spec.json" - outputs: - - "src/generated/openapi" - command: openapi --client axios --input ./tracer.spec.json --name MongoTracer --output ./src/generated/openapi - - typecheck: - deps: - - build-tracer-client - - lint: - deps: - - build-tracer-client diff --git a/packages/core/package.json b/packages/core/package.json index e0c35452..602a6118 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -15,12 +15,25 @@ "module": "dist/index.es5.js", "types": "dist/index.d.ts", "gypfile": true, + "scripts": { + "build": "NODE_NO_WARNINGS=1 rollup -c rollup.config.ts --configPlugin typescript", + "build-native-addon": "prebuildify --napi --strip", + "build-tracer-client": "openapi --client axios --input ./tracer.spec.json --name MongoTracer --output ./src/generated/openapi", + "test": "jest --passWithNoTests --silent", + "test/integ": "jest --passWithNoTests --silent -c jest.config.integ.js", + "lint": "eslint .", + "typecheck": "tsc --noEmit --pretty", + "format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check .", + "fix-format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write .", + "clean": "rm -rf dist build generated/openapi" + }, "author": "Arthur Pastel ", "repository": "https://github.com/CodSpeedHQ/codspeed-node", "homepage": "https://codspeed.io", "license": "Apache-2.0", "devDependencies": { "@types/find-up": "^4.0.0", + "@types/stack-trace": "^0.0.30", "node-addon-api": "^5.1.0", "node-gyp": "^12.2.0", "openapi-typescript-codegen": "^0.23.0", @@ -30,6 +43,7 @@ "axios": "^1.4.0", "find-up": "^6.3.0", "form-data": "^4.0.4", - "node-gyp-build": "^4.6.0" + "node-gyp-build": "^4.6.0", + "stack-trace": "1.0.0-pre2" } } diff --git a/packages/core/rollup.config.ts b/packages/core/rollup.config.ts index edcf0c9a..36b8214b 100644 --- a/packages/core/rollup.config.ts +++ b/packages/core/rollup.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from "rollup"; import { declarationsPlugin, jsPlugins } from "../../rollup.options"; +import pkg from "./package.json" with { type: "json" }; -import pkg from "./package.json" assert { type: "json" }; const entrypoint = "src/index.ts"; export default defineConfig([ diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index d32c171c..5a6e9873 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -34,7 +34,7 @@ export function getCodspeedRunnerMode(): CodSpeedRunnerMode { } console.warn( - `Unknown codspeed runner mode: ${codspeedRunnerMode}, defaulting to disabled` + `Unknown codspeed runner mode: ${codspeedRunnerMode}, defaulting to disabled`, ); return "disabled"; } @@ -51,7 +51,7 @@ export function getInstrumentMode(): InstrumentMode { export const setupCore = () => { if (!native_core.isBound) { throw new Error( - "Native core module is not bound, CodSpeed integration will not work properly" + "Native core module is not bound, CodSpeed integration will not work properly", ); } @@ -81,3 +81,14 @@ export * from "./utils"; export * from "./walltime"; export type { InstrumentMode }; export const InstrumentHooks = native_core.InstrumentHooks; + +// Marker type constants, sourced from the native addon (which reads them from +// core.h) so they never drift from the native definitions. +export const MARKER_TYPE_SAMPLE_START = + native_core.InstrumentHooks.MARKER_TYPE_SAMPLE_START; +export const MARKER_TYPE_SAMPLE_END = + native_core.InstrumentHooks.MARKER_TYPE_SAMPLE_END; +export const MARKER_TYPE_BENCHMARK_START = + native_core.InstrumentHooks.MARKER_TYPE_BENCHMARK_START; +export const MARKER_TYPE_BENCHMARK_END = + native_core.InstrumentHooks.MARKER_TYPE_BENCHMARK_END; diff --git a/packages/core/src/introspection.ts b/packages/core/src/introspection.ts index 877683dd..77dcfed0 100644 --- a/packages/core/src/introspection.ts +++ b/packages/core/src/introspection.ts @@ -20,7 +20,7 @@ export const getV8Flags = () => { "--expose-gc", "--no-concurrent-sweeping", "--max-old-space-size=4096", - ] + ], ); if (nodeVersionMajor < 18) { flags.push("--no-randomize-hashes"); @@ -40,7 +40,7 @@ export const tryIntrospect = () => { }; writeFileSync( process.env.__CODSPEED_NODE_CORE_INTROSPECTION_PATH__, - JSON.stringify(introspectionMetadata) + JSON.stringify(introspectionMetadata), ); process.exit(CUSTOM_INTROSPECTION_EXIT_CODE); } @@ -50,11 +50,11 @@ export const checkV8Flags = () => { const requiredFlags = getV8Flags(); const actualFlags = process.execArgv; const missingFlags = requiredFlags.filter( - (flag) => !actualFlags.includes(flag) + (flag) => !actualFlags.includes(flag), ); if (missingFlags.length > 0) { console.warn( - `[CodSpeed] missing required flags: ${missingFlags.join(", ")}` + `[CodSpeed] missing required flags: ${missingFlags.join(", ")}`, ); } }; diff --git a/packages/core/src/mongoMeasurement.ts b/packages/core/src/mongoMeasurement.ts index 642d2c19..86cdb828 100644 --- a/packages/core/src/mongoMeasurement.ts +++ b/packages/core/src/mongoMeasurement.ts @@ -20,7 +20,7 @@ export class MongoMeasurement { } public async setupInstruments( - body: SetupInstrumentsRequestBody + body: SetupInstrumentsRequestBody, ): Promise { if (this.tracerClient === undefined) { throw new Error("MongoDB Instrumentation is not enabled"); diff --git a/packages/core/src/native_core/index.ts b/packages/core/src/native_core/index.ts index 73499d31..365f544e 100644 --- a/packages/core/src/native_core/index.ts +++ b/packages/core/src/native_core/index.ts @@ -13,9 +13,9 @@ interface NativeCoreWithBindingStatus extends NativeCore { let native_core: NativeCoreWithBindingStatus; try { - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-require-imports const nativeCore = require("node-gyp-build")( - path.dirname(__dirname) + path.dirname(__dirname), ) as NativeCore; native_core = { ...nativeCore, @@ -59,9 +59,21 @@ try { writeEnvironment: (_pid: number) => { return 0; }, + currentTimestamp: () => { + return 0n; + }, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + addMarker: (_pid: number, _markerType: number, _timestamp: bigint) => { + return 0; + }, __codspeed_root_frame__: (callback: () => T): T => { return callback(); }, + // Mirror of core.h's marker types for the no-native-binding fallback. + MARKER_TYPE_SAMPLE_START: 0, + MARKER_TYPE_SAMPLE_END: 1, + MARKER_TYPE_BENCHMARK_START: 2, + MARKER_TYPE_BENCHMARK_END: 3, }, isBound: false, }; diff --git a/packages/core/src/native_core/instruments/hooks b/packages/core/src/native_core/instruments/hooks index ecdf31a3..d83209f9 160000 --- a/packages/core/src/native_core/instruments/hooks +++ b/packages/core/src/native_core/instruments/hooks @@ -1 +1 @@ -Subproject commit ecdf31a3afd0fb879823e40df65129ec823d374b +Subproject commit d83209f91683cf4c1677bdde28e0e43ca201f6ed diff --git a/packages/core/src/native_core/instruments/hooks.ts b/packages/core/src/native_core/instruments/hooks.ts index 24e3c9cd..b5ddebea 100644 --- a/packages/core/src/native_core/instruments/hooks.ts +++ b/packages/core/src/native_core/instruments/hooks.ts @@ -48,9 +48,33 @@ export interface InstrumentHooks { */ writeEnvironment(pid: number): number; + /** + * Returns a high-resolution timestamp (nanoseconds) suitable for marker + * emission. Mirrors `instrument_hooks_current_timestamp` in the C API. + */ + currentTimestamp(): bigint; + + /** + * Emit a marker for the given pid at the given timestamp. + * @param pid Process ID + * @param markerType One of MARKER_TYPE_* + * @param timestamp Timestamp (typically obtained from `currentTimestamp()`) + * @returns 0 on success, non-zero on error + */ + addMarker(pid: number, markerType: number, timestamp: bigint): number; + /** * Execute a callback function with __codspeed_root_frame__ in its stack trace * @param callback Function to execute */ __codspeed_root_frame__(callback: () => T): T; + + /** + * Marker type constants, exposed by the native addon from core.h. + * Used as the `markerType` argument to {@link addMarker}. + */ + readonly MARKER_TYPE_SAMPLE_START: number; + readonly MARKER_TYPE_SAMPLE_END: number; + readonly MARKER_TYPE_BENCHMARK_START: number; + readonly MARKER_TYPE_BENCHMARK_END: number; } diff --git a/packages/core/src/native_core/instruments/hooks_wrapper.cc b/packages/core/src/native_core/instruments/hooks_wrapper.cc index 490761be..dc280319 100644 --- a/packages/core/src/native_core/instruments/hooks_wrapper.cc +++ b/packages/core/src/native_core/instruments/hooks_wrapper.cc @@ -129,6 +129,48 @@ Napi::Number WriteEnvironment(const Napi::CallbackInfo &info) { return Napi::Number::New(env, result); } +Napi::BigInt CurrentTimestamp(const Napi::CallbackInfo &info) { + Napi::Env env = info.Env(); + uint64_t ts = instrument_hooks_current_timestamp(); + return Napi::BigInt::New(env, ts); +} + +Napi::Number AddMarker(const Napi::CallbackInfo &info) { + Napi::Env env = info.Env(); + + if (info.Length() != 3) { + Napi::TypeError::New(env, + "Expected 3 arguments: pid, markerType, timestamp") + .ThrowAsJavaScriptException(); + return Napi::Number::New(env, 1); + } + + if (!info[0].IsNumber() || !info[1].IsNumber() || + !(info[2].IsBigInt() || info[2].IsNumber())) { + Napi::TypeError::New( + env, + "Expected number (pid), number (markerType), bigint|number (timestamp)") + .ThrowAsJavaScriptException(); + return Napi::Number::New(env, 1); + } + + int32_t pid = info[0].As().Int32Value(); + uint8_t marker_type = + static_cast(info[1].As().Uint32Value()); + uint64_t timestamp; + if (info[2].IsBigInt()) { + bool lossless = false; + timestamp = info[2].As().Uint64Value(&lossless); + } else { + timestamp = + static_cast(info[2].As().DoubleValue()); + } + + uint8_t result = + instrument_hooks_add_marker(hooks, pid, marker_type, timestamp); + return Napi::Number::New(env, result); +} + Napi::Value __attribute__ ((noinline)) __codspeed_root_frame__(const Napi::CallbackInfo &info) { Napi::Env env = info.Env(); @@ -169,9 +211,24 @@ Napi::Object Initialize(Napi::Env env, Napi::Object exports) { Napi::Function::New(env, SetEnvironment)); instrumentHooksObj.Set(Napi::String::New(env, "writeEnvironment"), Napi::Function::New(env, WriteEnvironment)); + instrumentHooksObj.Set(Napi::String::New(env, "currentTimestamp"), + Napi::Function::New(env, CurrentTimestamp)); + instrumentHooksObj.Set(Napi::String::New(env, "addMarker"), + Napi::Function::New(env, AddMarker)); instrumentHooksObj.Set(Napi::String::New(env, "__codspeed_root_frame__"), Napi::Function::New(env, __codspeed_root_frame__)); + // Marker type constants, sourced from core.h so they never drift from the + // native definitions. + instrumentHooksObj.Set(Napi::String::New(env, "MARKER_TYPE_SAMPLE_START"), + Napi::Number::New(env, MARKER_TYPE_SAMPLE_START)); + instrumentHooksObj.Set(Napi::String::New(env, "MARKER_TYPE_SAMPLE_END"), + Napi::Number::New(env, MARKER_TYPE_SAMPLE_END)); + instrumentHooksObj.Set(Napi::String::New(env, "MARKER_TYPE_BENCHMARK_START"), + Napi::Number::New(env, MARKER_TYPE_BENCHMARK_START)); + instrumentHooksObj.Set(Napi::String::New(env, "MARKER_TYPE_BENCHMARK_END"), + Napi::Number::New(env, MARKER_TYPE_BENCHMARK_END)); + exports.Set(Napi::String::New(env, "InstrumentHooks"), instrumentHooksObj); return exports; diff --git a/packages/core/src/native_core/instruments/hooks_wrapper.h b/packages/core/src/native_core/instruments/hooks_wrapper.h index f63c4351..793103bc 100644 --- a/packages/core/src/native_core/instruments/hooks_wrapper.h +++ b/packages/core/src/native_core/instruments/hooks_wrapper.h @@ -19,6 +19,8 @@ Napi::Number SetExecutedBenchmark(const Napi::CallbackInfo &info); Napi::Number SetIntegration(const Napi::CallbackInfo &info); Napi::Number SetEnvironment(const Napi::CallbackInfo &info); Napi::Number WriteEnvironment(const Napi::CallbackInfo &info); +Napi::BigInt CurrentTimestamp(const Napi::CallbackInfo &info); +Napi::Number AddMarker(const Napi::CallbackInfo &info); Napi::Object Initialize(Napi::Env env, Napi::Object exports); } // namespace hooks_wrapper diff --git a/packages/core/src/utils.ts b/packages/core/src/utils.ts index 6477df7e..da252118 100644 --- a/packages/core/src/utils.ts +++ b/packages/core/src/utils.ts @@ -1,5 +1,7 @@ -import { findUpSync, Options as FindupOptions } from "find-up"; -import { dirname } from "path"; +import { Options as FindupOptions, findUpSync } from "find-up"; +import path, { dirname } from "path"; +import { get as getStackTrace } from "stack-trace"; +import { fileURLToPath } from "url"; export function getGitDir(path: string): string | undefined { const dotGitPath = findUpSync(".git", { @@ -9,6 +11,28 @@ export function getGitDir(path: string): string | undefined { return dotGitPath ? dirname(dotGitPath) : undefined; } +/** + * Return the file that called the function this is invoked from, expressed as + * a path relative to the enclosing git repository root. + * + * The `depth` parameter is the number of stack frames to skip past + * `getCallingFile` itself. Pass `0` to get the file of the function that + * called `getCallingFile`, `1` to skip one further frame (for indirection + * through a helper), and so on. + */ +export function getCallingFile(depth: number): string { + const stack = getStackTrace(); + let callingFile = stack[depth + 1].getFileName(); + const gitDir = getGitDir(callingFile); + if (gitDir === undefined) { + throw new Error("Could not find a git repository"); + } + if (callingFile.startsWith("file://")) { + callingFile = fileURLToPath(callingFile); + } + return path.relative(gitDir, callingFile); +} + /** * Log debug messages if the environment variable `CODSPEED_DEBUG` is set. */ diff --git a/packages/core/src/walltime/index.ts b/packages/core/src/walltime/index.ts index 7632fa80..b2d86059 100644 --- a/packages/core/src/walltime/index.ts +++ b/packages/core/src/walltime/index.ts @@ -10,7 +10,7 @@ export function getProfileFolder(): string | null { export function writeWalltimeResults( benchmarks: Benchmark[], - asyncWarning = false + asyncWarning = false, ): void { const profileFolder = getProfileFolder(); @@ -30,7 +30,7 @@ export function writeWalltimeResults( if (fs.existsSync(resultPath)) { try { const existingData = JSON.parse( - fs.readFileSync(resultPath, "utf-8") + fs.readFileSync(resultPath, "utf-8"), ) as ResultData; existingBenchmarks = existingData.benchmarks || []; } catch (error) { @@ -55,7 +55,7 @@ export function writeWalltimeResults( fs.writeFileSync(resultPath, JSON.stringify(data, null, 2)); console.log( - `[CodSpeed] Results written to ${resultPath} (${data.benchmarks.length} total benchmarks)` + `[CodSpeed] Results written to ${resultPath} (${data.benchmarks.length} total benchmarks)`, ); } diff --git a/packages/core/src/walltime/quantiles.ts b/packages/core/src/walltime/quantiles.ts index f5ee7499..3f893a38 100644 --- a/packages/core/src/walltime/quantiles.ts +++ b/packages/core/src/walltime/quantiles.ts @@ -44,13 +44,13 @@ export function calculateQuantiles({ const iqr_outlier_rounds = sortedTimesNs.filter( (t) => t < q1_ns - IQR_OUTLIER_FACTOR * iqr_ns || - t > q3_ns + IQR_OUTLIER_FACTOR * iqr_ns + t > q3_ns + IQR_OUTLIER_FACTOR * iqr_ns, ).length; const stdev_outlier_rounds = sortedTimesNs.filter( (t) => t < meanNs - STDEV_OUTLIER_FACTOR * stdevNs || - t > meanNs + STDEV_OUTLIER_FACTOR * stdevNs + t > meanNs + STDEV_OUTLIER_FACTOR * stdevNs, ).length; return { diff --git a/packages/core/tests/index.integ.test.ts b/packages/core/tests/index.integ.test.ts index 46f01baa..f57c3f2f 100644 --- a/packages/core/tests/index.integ.test.ts +++ b/packages/core/tests/index.integ.test.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-require-imports */ export {}; // Make this a module beforeEach(() => { diff --git a/packages/playwright/README.md b/packages/playwright/README.md new file mode 100644 index 00000000..097c8212 --- /dev/null +++ b/packages/playwright/README.md @@ -0,0 +1,94 @@ +
    +

    @codspeed/playwright

    + +[Playwright](https://playwright.dev) integration for [CodSpeed](https://codspeed.io), to benchmark [Electron](https://www.electronjs.org) apps end-to-end + +[![CI](https://github.com/CodSpeedHQ/codspeed-node/actions/workflows/ci.yml/badge.svg)](https://github.com/CodSpeedHQ/codspeed-node/actions/workflows/ci.yml) +[![npm (scoped)](https://img.shields.io/npm/v/@codspeed/playwright)](https://www.npmjs.com/package/@codspeed/playwright) +[![Discord](https://img.shields.io/badge/chat%20on-discord-7289da.svg)](https://discord.com/invite/MxpaCfKSqF) +[![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/CodSpeedHQ/codspeed-node) + +
    + +## Documentation + +Check out the [documentation](https://docs.codspeed.io/benchmarks/nodejs) for complete integration instructions. + +## Installation + +Install the plugin [`@codspeed/playwright`](https://www.npmjs.com/package/@codspeed/playwright) alongside `playwright` and your `electron` app dependency: + +```sh +npm install --save-dev @codspeed/playwright playwright electron +``` + +or with `yarn`: + +```sh +yarn add --dev @codspeed/playwright playwright electron +``` + +or with `pnpm`: + +```sh +pnpm add --save-dev @codspeed/playwright playwright electron +``` + +## Usage + +This integration measures an Electron app driven through Playwright. Build your +app first so the Electron main entrypoint exists (e.g. `out/main/index.js`), +then write a benchmark with the `bench` function. + +`bench` launches the app once per round, drives it through the provided +function, and reports the time spent inside that function to CodSpeed: + +```ts title="bench/inbox.bench.ts" +import { bench } from "@codspeed/playwright"; +import path from "node:path"; + +bench( + "inbox-search", + async ({ page }) => { + await page.fill("#search", "quarterly report"); + await page.waitForSelector("#results"); + }, + { + appPath: path.resolve("out/main/index.js"), + // Bring the app to a steady state before each measured round (not measured). + setup: async ({ page }) => { + await page.waitForSelector("#main:not(.loading)"); + }, + rounds: 5, + }, +); +``` + +### Options + +| Option | Type | Default | Description | +| ------------------------ | ------------------------------------- | ------------------- | ----------------------------------------------------------------------------------------- | +| `appPath` | `string` | _(required)_ | Absolute path to the Electron main entrypoint (e.g. `out/main/index.js`). | +| `rounds` | `number` | `1` | Number of measurement rounds. Overridable via the `CODSPEED_ROUNDS` environment variable. | +| `electronArgs` | `string[]` | `[]` | Extra CLI flags forwarded to Electron. | +| `cwd` | `string` | `process.cwd()` | Working directory for the Electron process. Also where `electron` is resolved from. | +| `electronExecutablePath` | `string` | resolved `electron` | Absolute path to the Electron binary. Set only to override the default resolution. | +| `setup` | `({ page }) => void \| Promise` | — | Runs before each round, after the window opens. Not measured. | +| `teardown` | `({ page }) => void \| Promise` | — | Runs after each round, before the app closes. Not measured. | + +The function receives a Playwright [`Page`](https://playwright.dev/docs/api/class-page) for the Electron window as `page`. + +## Running the benchmarks + +Run your benchmark file with Node (or `tsx` for TypeScript): + +```bash +$ node bench/inbox.bench.ts +[CodSpeed] [round 1/5] 42.13 ms +... +``` + +Locally this simply runs the app and prints per-round timings. Instrumentation +and uploads to CodSpeed only happen in the +[CI environment](https://docs.codspeed.io/benchmarks/nodejs#running-the-benchmarks-in-your-ci), +where the CodSpeed runner picks up the results. diff --git a/packages/playwright/package.json b/packages/playwright/package.json new file mode 100644 index 00000000..25ccf7e0 --- /dev/null +++ b/packages/playwright/package.json @@ -0,0 +1,49 @@ +{ + "name": "@codspeed/playwright", + "version": "5.4.0", + "description": "Playwright benchmarking integration for CodSpeed", + "keywords": [ + "codspeed", + "benchmark", + "playwright", + "electron", + "performance" + ], + "main": "dist/index.cjs", + "module": "dist/index.es5.js", + "types": "dist/index.d.ts", + "type": "module", + "exports": { + "types": "./dist/index.d.ts", + "import": "./dist/index.es5.js", + "require": "./dist/index.cjs" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "NODE_NO_WARNINGS=1 rollup -c rollup.config.ts --configPlugin typescript", + "test": "echo 'no tests'", + "test/integ": "echo 'no integ tests'", + "lint": "eslint .", + "typecheck": "tsc --noEmit --pretty", + "format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check .", + "fix-format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write .", + "clean": "rm -rf dist" + }, + "author": "Guillaume Lagrange ", + "repository": "https://github.com/CodSpeedHQ/codspeed-node", + "homepage": "https://codspeed.io", + "license": "Apache-2.0", + "devDependencies": { + "playwright": "^1.48.0", + "playwright-core": "^1.48.0", + "vitest": "^3.2.4" + }, + "dependencies": { + "@codspeed/core": "workspace:^5.4.0" + }, + "peerDependencies": { + "playwright": ">=1.40.0" + } +} diff --git a/packages/playwright/rollup.config.ts b/packages/playwright/rollup.config.ts new file mode 100644 index 00000000..c091fb7d --- /dev/null +++ b/packages/playwright/rollup.config.ts @@ -0,0 +1,32 @@ +import { defineConfig } from "rollup"; +import { declarationsPlugin, jsPlugins } from "../../rollup.options"; +import pkg from "./package.json" assert { type: "json" }; + +const entrypoint = "src/index.ts"; + +export default defineConfig([ + { + input: entrypoint, + output: [ + { + file: pkg.types, + format: "es", + sourcemap: true, + }, + ], + plugins: declarationsPlugin({ compilerOptions: { composite: false } }), + }, + { + input: entrypoint, + output: [ + { + file: pkg.main, + format: "cjs", + sourcemap: true, + }, + { file: pkg.module, format: "es", sourcemap: true }, + ], + plugins: jsPlugins(pkg.version), + external: ["@codspeed/core", "playwright", "playwright-core"], + }, +]); diff --git a/packages/playwright/src/index.ts b/packages/playwright/src/index.ts new file mode 100644 index 00000000..fe31ba40 --- /dev/null +++ b/packages/playwright/src/index.ts @@ -0,0 +1,265 @@ +import { + calculateQuantiles, + getCallingFile, + InstrumentHooks, + MARKER_TYPE_BENCHMARK_END, + MARKER_TYPE_BENCHMARK_START, + msToS, + writeWalltimeResults, + type Benchmark, + type BenchmarkStats, +} from "@codspeed/core"; +import { createRequire } from "node:module"; +import { pathToFileURL } from "node:url"; +import { _electron as electron } from "playwright"; +import type { ElectronApplication, Page } from "playwright-core"; + +declare const __VERSION__: string; + +const DEFAULT_ROUNDS = 1; +const DEFAULT_PROFILING_JS_FLAGS = + "--perf-prof --perf-prof-annotate-wasm --interpreted-frames-native-stack --no-turbo-inlining --no-sandbox"; + +/** + * The fixtures passed to a benchmark function, mirroring Playwright's `test` + * API. Currently exposes the Electron window as `page`. + */ +export interface BenchFixtures { + page: Page; +} + +/** + * The function whose execution is measured. Everything that runs inside it is + * included in the reported timing. + */ +export type BenchFunction = (fixtures: BenchFixtures) => void | Promise; + +export type BenchHook = (fixtures: BenchFixtures) => void | Promise; + +/** + * Minimal options for a benchmark. Inspired by Vitest's `bench`, but kept + * deliberately small. + */ +export interface BenchOptions { + /** + * Number of measurement rounds to perform. Defaults to 1, can be overridden + * via the `CODSPEED_ROUNDS` environment variable. + */ + rounds?: number; + /** + * Absolute path to the Electron main entrypoint (e.g. `out/main/index.js`). + */ + appPath: string; + /** + * CLI flags forwarded to Electron. + */ + electronArgs?: string[]; + /** + * Working directory for the Electron process. Defaults to `process.cwd()`. + */ + cwd?: string; + /** + * Absolute path to the Electron executable. When omitted, it is resolved from + * the `electron` package in `cwd`. Set this only to override that default. + */ + electronExecutablePath?: string; + /** + * Run before each round, after the window opens. Use it to bring the app to + * a steady state (initial render done, data loaded, …). Not measured. + */ + setup?: BenchHook; + /** + * Run after each round, before the app is closed. Use it for teardown that + * should not be measured. + */ + teardown?: BenchHook; +} + +let integrationInitialized = false; + +/** + * Register the integration and environment with the instrumentation. This is + * process-global, so it only needs to run once regardless of how many + * benchmarks are defined. + */ +function ensureIntegrationSetup(): void { + if (integrationInitialized) return; + integrationInitialized = true; + + InstrumentHooks.setIntegration("node-custom", __VERSION__); + InstrumentHooks.setEnvironment("nodejs", "version", process.versions.node); + InstrumentHooks.setEnvironment("nodejs", "v8", process.versions.v8); + InstrumentHooks.writeEnvironment(process.pid); +} + +function resolveRounds(optionRounds: number | undefined): number { + const envValue = process.env.CODSPEED_ROUNDS; + const raw = envValue ?? optionRounds; + if (raw === undefined) return DEFAULT_ROUNDS; + const n = Number(raw); + if (!Number.isInteger(n) || n < 1) { + throw new Error(`Invalid rounds value: ${raw} (expected positive integer)`); + } + return n; +} + +/** + * Resolve the path to the Electron binary. + * + * Playwright resolves Electron via `require("electron/index.js")` from inside + * its own package directory. Under isolated installs (e.g. pnpm), Playwright + * cannot see the project's `electron` dependency and bails out with + * "Electron executablePath not found!". We resolve it ourselves from the + * benchmark's working directory, where `electron` is a real dependency. + */ +function resolveElectronExecutable(cwd: string): string { + const require = createRequire(pathToFileURL(`${cwd}/`)); + // `electron`'s main module exports the absolute path to its binary. + return require("electron") as string; +} + +async function launchApp(options: BenchOptions): Promise { + const cwd = options.cwd ?? process.cwd(); + return electron.launch({ + args: [ + options.appPath, + ...(options.electronArgs ?? []), + `--js-flags=${DEFAULT_PROFILING_JS_FLAGS}`, + ], + cwd, + executablePath: + options.electronExecutablePath ?? resolveElectronExecutable(cwd), + }); +} + +async function runOneSample( + fn: BenchFunction, + options: BenchOptions, +): Promise { + const app = await launchApp(options); + const page = await app.firstWindow(); + + try { + if (options.setup) { + await options.setup({ page }); + } + + const startTs = InstrumentHooks.currentTimestamp(); + await fn({ page }); + const endTs = InstrumentHooks.currentTimestamp(); + + InstrumentHooks.addMarker( + process.pid, + MARKER_TYPE_BENCHMARK_START, + startTs, + ); + InstrumentHooks.addMarker(process.pid, MARKER_TYPE_BENCHMARK_END, endTs); + + if (options.teardown) { + await options.teardown({ page }); + } + + return endTs - startTs; + } finally { + await app.close(); + } +} + +function buildStats(sampleTimesNs: bigint[]): BenchmarkStats { + const sortedTimesNs = sampleTimesNs + .map((n) => Number(n)) + .sort((a, b) => a - b); + + const sum = sortedTimesNs.reduce((acc, t) => acc + t, 0); + const meanNs = sum / sortedTimesNs.length; + const variance = + sortedTimesNs.reduce((acc, t) => acc + (t - meanNs) ** 2, 0) / + sortedTimesNs.length; + const stdevNs = Math.sqrt(variance); + + const { q1_ns, median_ns, q3_ns, iqr_outlier_rounds, stdev_outlier_rounds } = + calculateQuantiles({ + meanNs, + stdevNs, + sortedTimesNs, + }); + + return { + min_ns: sortedTimesNs[0], + max_ns: sortedTimesNs[sortedTimesNs.length - 1], + mean_ns: meanNs, + stdev_ns: stdevNs, + q1_ns, + median_ns, + q3_ns, + rounds: sortedTimesNs.length, + total_time: msToS(sum / 1e6), + iqr_outlier_rounds, + stdev_outlier_rounds, + iter_per_round: 1, + warmup_iters: 0, + }; +} + +/** + * Define and run a CodSpeed-instrumented Electron benchmark, mirroring + * Playwright's `test` API. + * + * Launches the Electron app once per round, runs the user-provided function + * around a measured region, and writes walltime results to disk so that the + * CodSpeed runner can pick them up. + * + * @example + * ```ts + * import { bench } from "@codspeed/playwright"; + * + * bench( + * "renders the dashboard", + * async ({ page }) => { + * await page.getByRole("link", { name: "Dashboard" }).click(); + * await page.getByRole("heading", { name: "Overview" }).waitFor(); + * }, + * { appPath: "out/main/index.js", rounds: 5 }, + * ); + * ``` + */ +export async function bench( + name: string, + fn: BenchFunction, + options: BenchOptions, +): Promise { + const rounds = resolveRounds(options.rounds); + const uri = `${getCallingFile(0)}::${name}`; + + ensureIntegrationSetup(); + + InstrumentHooks.setExecutedBenchmark(process.pid, uri); + InstrumentHooks.startBenchmark(); + + const sampleTimesNs: bigint[] = []; + for (let i = 0; i < rounds; i++) { + const elapsedNs = await runOneSample(fn, options); + sampleTimesNs.push(elapsedNs); + console.log( + `[CodSpeed] [round ${i + 1}/${rounds}] ${(Number(elapsedNs) / 1e6).toFixed(2)} ms`, + ); + } + + InstrumentHooks.stopBenchmark(); + + const benchmark: Benchmark = { + name, + uri, + config: { + warmup_time_ns: null, + min_round_time_ns: null, + max_rounds: rounds, + max_time_ns: null, + }, + stats: buildStats(sampleTimesNs), + }; + + writeWalltimeResults([benchmark]); +} + +export type { Page } from "playwright-core"; diff --git a/packages/playwright/tsconfig.json b/packages/playwright/tsconfig.json new file mode 100644 index 00000000..b0bd0584 --- /dev/null +++ b/packages/playwright/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "typeRoots": ["node_modules/@types", "../../node_modules/@types"] + }, + "references": [{ "path": "../core" }], + "include": ["src/**/*.ts"] +} diff --git a/packages/tinybench-plugin/benches/parsePr.ts b/packages/tinybench-plugin/benches/parsePr.ts index 877bc18f..6acbd956 100644 --- a/packages/tinybench-plugin/benches/parsePr.ts +++ b/packages/tinybench-plugin/benches/parsePr.ts @@ -13,7 +13,7 @@ function sendEvent(numberOfOperations: number): void { function logMetrics( numberOfOperations: number, - numberOfDeepOperations: number + numberOfDeepOperations: number, ): void { for (let i = 0; i < numberOfOperations; i++) { for (let i = 0; i < numberOfOperations; i++) { diff --git a/packages/tinybench-plugin/benches/sample.ts b/packages/tinybench-plugin/benches/sample.ts index 4cc40ecf..123b9023 100644 --- a/packages/tinybench-plugin/benches/sample.ts +++ b/packages/tinybench-plugin/benches/sample.ts @@ -6,7 +6,7 @@ import { registerTimingBenchmarks } from "./timing"; const LONG_BODY = new Array(1_000) .fill( - "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non." + "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non.", ) .join("\n") + "fixes #123"; @@ -39,7 +39,7 @@ bench console.table(bench.table()); const timingBench = withCodSpeed( - new Bench({ name: "timing", iterations: 5, warmup: false }) + new Bench({ name: "timing", iterations: 5, warmup: false }), ); registerTimingBenchmarks(timingBench); diff --git a/packages/tinybench-plugin/moon.yml b/packages/tinybench-plugin/moon.yml deleted file mode 100644 index bc808099..00000000 --- a/packages/tinybench-plugin/moon.yml +++ /dev/null @@ -1,19 +0,0 @@ -tasks: - bench: - command: node --loader esbuild-register/loader -r esbuild-register benches/sample.ts - inputs: - - "benches/**" - local: true - platform: "system" - options: - cache: false - deps: - - build - - test: - command: vitest --run - inputs: - - "./vitest.config.ts" - - test/integ: - command: noop diff --git a/packages/tinybench-plugin/package.json b/packages/tinybench-plugin/package.json index 5b6f1b3f..494c945d 100644 --- a/packages/tinybench-plugin/package.json +++ b/packages/tinybench-plugin/package.json @@ -20,19 +20,28 @@ "files": [ "dist" ], + "scripts": { + "build": "NODE_NO_WARNINGS=1 rollup -c rollup.config.ts --configPlugin typescript", + "test": "vitest --run", + "test/integ": "echo 'no integ tests'", + "lint": "eslint .", + "typecheck": "tsc --noEmit --pretty", + "format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check .", + "fix-format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write .", + "bench": "node --loader esbuild-register/loader -r esbuild-register benches/sample.ts", + "clean": "rm -rf dist" + }, "author": "Arthur Pastel ", "repository": "https://github.com/CodSpeedHQ/codspeed-node", "homepage": "https://codspeed.io", "license": "Apache-2.0", "devDependencies": { - "@types/stack-trace": "^0.0.30", "esbuild-register": "^3.4.2", "tinybench": "^4.0.1", "vitest": "^3.2.4" }, "dependencies": { - "@codspeed/core": "workspace:^5.4.0", - "stack-trace": "1.0.0-pre2" + "@codspeed/core": "workspace:^5.4.0" }, "peerDependencies": { "tinybench": ">=4.0.1" diff --git a/packages/tinybench-plugin/rollup.config.ts b/packages/tinybench-plugin/rollup.config.ts index 15f0fedf..4fc972e6 100644 --- a/packages/tinybench-plugin/rollup.config.ts +++ b/packages/tinybench-plugin/rollup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "rollup"; import { declarationsPlugin, jsPlugins } from "../../rollup.options"; -import pkg from "./package.json" assert { type: "json" }; +import pkg from "./package.json" with { type: "json" }; const entrypoint = "src/index.ts"; diff --git a/packages/tinybench-plugin/src/analysis.ts b/packages/tinybench-plugin/src/analysis.ts index 76ba4755..c549567a 100644 --- a/packages/tinybench-plugin/src/analysis.ts +++ b/packages/tinybench-plugin/src/analysis.ts @@ -9,7 +9,7 @@ import { BaseBenchRunner } from "./shared"; export function setupCodspeedAnalysisBench( bench: Bench, - rootCallingFile: string + rootCallingFile: string, ): void { const runner = new AnalysisBenchRunner(bench, rootCallingFile); runner.setupBenchMethods(); @@ -52,7 +52,7 @@ class AnalysisBenchRunner extends BaseBenchRunner { global.gc?.(); await this.wrapWithInstrumentHooksAsync( this.wrapFunctionWithFrame(fn, true), - uri + uri, ); await mongoMeasurement.stop(uri); diff --git a/packages/tinybench-plugin/src/index.ts b/packages/tinybench-plugin/src/index.ts index e009c5ff..64be2d8d 100644 --- a/packages/tinybench-plugin/src/index.ts +++ b/packages/tinybench-plugin/src/index.ts @@ -1,6 +1,6 @@ import { + getCallingFile, getCodspeedRunnerMode, - getGitDir, getInstrumentMode, InstrumentHooks, mongoMeasurement, @@ -8,10 +8,7 @@ import { SetupInstrumentsResponse, tryIntrospect, } from "@codspeed/core"; -import path from "path"; -import { get as getStackTrace } from "stack-trace"; import { Bench } from "tinybench"; -import { fileURLToPath } from "url"; import { setupCodspeedAnalysisBench } from "./analysis"; import { getOrCreateUriMap } from "./uri"; import { setupCodspeedWalltimeBench } from "./walltime"; @@ -24,13 +21,13 @@ export function withCodSpeed(bench: Bench): Bench { return bench; } - const rootCallingFile = getCallingFile(); + const rootCallingFile = getCallingFile(1); // Compute and register URI for bench const uriMap = getOrCreateUriMap(bench); const rawAdd = bench.add; bench.add = (name, fn, opts?) => { - const callingFile = getCallingFile(); + const callingFile = getCallingFile(1); let uri = callingFile; if (bench.name !== undefined) { uri += `::${bench.name}`; @@ -50,24 +47,11 @@ export function withCodSpeed(bench: Bench): Bench { return bench; } -function getCallingFile(): string { - const stack = getStackTrace(); - let callingFile = stack[2].getFileName(); // [here, withCodSpeed, actual caller] - const gitDir = getGitDir(callingFile); - if (gitDir === undefined) { - throw new Error("Could not find a git repository"); - } - if (callingFile.startsWith("file://")) { - callingFile = fileURLToPath(callingFile); - } - return path.relative(gitDir, callingFile); -} - /** * Dynamically setup the CodSpeed instruments. */ export async function setupInstruments( - body: SetupInstrumentsRequestBody + body: SetupInstrumentsRequestBody, ): Promise { if (!InstrumentHooks.isInstrumented()) { console.warn("[CodSpeed] No instrumentation found, using default mongoUrl"); diff --git a/packages/tinybench-plugin/src/shared.ts b/packages/tinybench-plugin/src/shared.ts index bc38e3b6..e5eeed1c 100644 --- a/packages/tinybench-plugin/src/shared.ts +++ b/packages/tinybench-plugin/src/shared.ts @@ -20,7 +20,7 @@ export abstract class BaseBenchRunner { private logStart(): void { console.log( - `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (${this.getModeName()})` + `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (${this.getModeName()})`, ); } @@ -48,7 +48,7 @@ export abstract class BaseBenchRunner { protected async wrapWithInstrumentHooksAsync( fn: Fn, - uri: string + uri: string, ): Promise { InstrumentHooks.startBenchmark(); const result = await fn(); diff --git a/packages/tinybench-plugin/src/uri.ts b/packages/tinybench-plugin/src/uri.ts index c8b64a25..cc707ab5 100644 --- a/packages/tinybench-plugin/src/uri.ts +++ b/packages/tinybench-plugin/src/uri.ts @@ -6,7 +6,7 @@ export const taskUriMap = new WeakMap>(); export function getTaskUri( bench: Bench, taskName: string, - rootCallingFile: string + rootCallingFile: string, ): string { const uriMap = taskUriMap.get(bench); return uriMap?.get(taskName) || `${rootCallingFile}::${taskName}`; diff --git a/packages/tinybench-plugin/src/walltime.ts b/packages/tinybench-plugin/src/walltime.ts index 0c86e1b3..95ccd27d 100644 --- a/packages/tinybench-plugin/src/walltime.ts +++ b/packages/tinybench-plugin/src/walltime.ts @@ -4,15 +4,15 @@ import { msToNs, msToS, writeWalltimeResults, - type Benchmark as CodspeedBenchmark, type BenchmarkStats, + type Benchmark as CodspeedBenchmark, } from "@codspeed/core"; import { Bench, Fn, Task, TaskResult } from "tinybench"; import { BaseBenchRunner } from "./shared"; export function setupCodspeedWalltimeBench( bench: Bench, - rootCallingFile: string + rootCallingFile: string, ): void { const runner = new WalltimeBenchRunner(bench, rootCallingFile); runner.setupBenchMethods(); @@ -90,11 +90,11 @@ class WalltimeBenchRunner extends BaseBenchRunner { } const warmupIterations = this.bench.opts.warmup - ? this.bench.opts.warmupIterations ?? TINYBENCH_WARMUP_DEFAULT + ? (this.bench.opts.warmupIterations ?? TINYBENCH_WARMUP_DEFAULT) : 0; const stats = convertTinybenchResultToBenchmarkStats( task.result, - warmupIterations + warmupIterations, ); this.codspeedBenchmarks.push({ @@ -122,7 +122,7 @@ class WalltimeBenchRunner extends BaseBenchRunner { } console.log( - `[CodSpeed] Done collecting walltime data for ${this.bench.tasks.length} benches.` + `[CodSpeed] Done collecting walltime data for ${this.bench.tasks.length} benches.`, ); return this.bench.tasks; } @@ -132,7 +132,7 @@ const TINYBENCH_WARMUP_DEFAULT = 16; function convertTinybenchResultToBenchmarkStats( result: TaskResult, - warmupIterations: number + warmupIterations: number, ): BenchmarkStats { const { min, max, mean, sd, samples } = result.latency; diff --git a/packages/tinybench-plugin/tests/index.integ.test.ts b/packages/tinybench-plugin/tests/index.integ.test.ts index b0d44751..4620c6c6 100644 --- a/packages/tinybench-plugin/tests/index.integ.test.ts +++ b/packages/tinybench-plugin/tests/index.integ.test.ts @@ -51,14 +51,14 @@ describe("Benchmark.Suite", () => { .run(); expect(mockCore.mongoMeasurement.start).toHaveBeenCalledWith( - "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp" + "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp", ); expect(mockCore.mongoMeasurement.stop).toHaveBeenCalledTimes(1); expect(mockCore.InstrumentHooks.startBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp" + "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp", ); }); it("check suite name is in the uri", async () => { @@ -73,21 +73,21 @@ describe("Benchmark.Suite", () => { .run(); expect(mockCore.mongoMeasurement.start).toHaveBeenCalledWith( - "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp" + "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp", ); expect(mockCore.mongoMeasurement.start).toHaveBeenCalledWith( - "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp2" + "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp2", ); expect(mockCore.mongoMeasurement.stop).toHaveBeenCalledTimes(2); expect(mockCore.InstrumentHooks.startBenchmark).toHaveBeenCalledTimes(2); expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalledTimes(2); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp" + "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp", ); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp2" + "packages/tinybench-plugin/tests/index.integ.test.ts::RegExp2", ); }); it("check error handling", async () => { @@ -116,8 +116,8 @@ describe("Benchmark.Suite", () => { if (instrumented) { expect(logSpy).toHaveBeenCalledWith( expect.stringContaining( - "[CodSpeed] running with @codspeed/tinybench v" - ) + "[CodSpeed] running with @codspeed/tinybench v", + ), ); expect({ log: logSpy.mock.calls.slice(1), @@ -129,7 +129,7 @@ describe("Benchmark.Suite", () => { warn: warnSpy.mock.calls, }).toMatchSnapshot(); } - } + }, ); it("check nested file path is in the uri when bench is registered in another file", async () => { mockCore.InstrumentHooks.isInstrumented.mockReturnValue(true); @@ -140,7 +140,7 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.setExecutedBenchmark).toHaveBeenCalledWith( process.pid, - "packages/tinybench-plugin/tests/registerBenchmarks.ts::RegExp" + "packages/tinybench-plugin/tests/registerBenchmarks.ts::RegExp", ); }); // TODO: this is not supported at the moment as tinybench does not support tasks with same name @@ -156,18 +156,18 @@ describe("Benchmark.Suite", () => { expect(mockCore.InstrumentHooks.startBenchmark).toHaveBeenCalled(); expect(mockCore.InstrumentHooks.stopBenchmark).toHaveBeenCalled(); expect( - mockCore.InstrumentHooks.setExecutedBenchmark + mockCore.InstrumentHooks.setExecutedBenchmark, ).toHaveBeenCalledWith( process.pid, - "packages/tinybench-plugin/tests/registerBenchmarks.ts::RegExp" + "packages/tinybench-plugin/tests/registerBenchmarks.ts::RegExp", ); expect( - mockCore.InstrumentHooks.setExecutedBenchmark + mockCore.InstrumentHooks.setExecutedBenchmark, ).toHaveBeenCalledWith( process.pid, - "packages/tinybench-plugin/tests/registerOtherBenchmarks.ts::RegExp" + "packages/tinybench-plugin/tests/registerOtherBenchmarks.ts::RegExp", ); - } + }, ); it("should run before and after hooks", async () => { @@ -186,14 +186,14 @@ describe("Benchmark.Suite", () => { function () { /o/.test("Hello World!"); }, - { afterAll, afterEach, beforeAll, beforeEach } + { afterAll, afterEach, beforeAll, beforeEach }, ) .add( "RegExp2", () => { /o/.test("Hello World!"); }, - { afterAll, afterEach, beforeAll, beforeEach } + { afterAll, afterEach, beforeAll, beforeEach }, ) .run(); diff --git a/packages/vitest-plugin/benches/flat.bench.ts b/packages/vitest-plugin/benches/flat.bench.ts index 4ef02729..74e67b9d 100644 --- a/packages/vitest-plugin/benches/flat.bench.ts +++ b/packages/vitest-plugin/benches/flat.bench.ts @@ -4,7 +4,7 @@ import parsePr from "./parsePr"; const LONG_BODY = new Array(1_000) .fill( - "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non." + "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non.", ) .join("\n") + "fixes #123"; diff --git a/packages/vitest-plugin/benches/parsePr.bench.ts b/packages/vitest-plugin/benches/parsePr.bench.ts index fafbc42c..91c0adee 100644 --- a/packages/vitest-plugin/benches/parsePr.bench.ts +++ b/packages/vitest-plugin/benches/parsePr.bench.ts @@ -4,7 +4,7 @@ import parsePr from "./parsePr"; const LONG_BODY = new Array(1_000) .fill( - "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non." + "Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, earum. Atque architecto vero veniam est tempora fugiat sint quo praesentium quia. Autem, veritatis omnis beatae iste delectus recusandae animi non.", ) .join("\n") + "fixes #123"; diff --git a/packages/vitest-plugin/benches/parsePr.ts b/packages/vitest-plugin/benches/parsePr.ts index 877bc18f..6acbd956 100644 --- a/packages/vitest-plugin/benches/parsePr.ts +++ b/packages/vitest-plugin/benches/parsePr.ts @@ -13,7 +13,7 @@ function sendEvent(numberOfOperations: number): void { function logMetrics( numberOfOperations: number, - numberOfDeepOperations: number + numberOfDeepOperations: number, ): void { for (let i = 0; i < numberOfOperations; i++) { for (let i = 0; i < numberOfOperations; i++) { diff --git a/packages/vitest-plugin/benches/timing.bench.ts b/packages/vitest-plugin/benches/timing.bench.ts index eb451a50..83331ad6 100644 --- a/packages/vitest-plugin/benches/timing.bench.ts +++ b/packages/vitest-plugin/benches/timing.bench.ts @@ -18,7 +18,7 @@ describe("timing tests", () => { async () => { busySleep(1); }, - timingBenchOptions + timingBenchOptions, ); bench( @@ -26,7 +26,7 @@ describe("timing tests", () => { async () => { busySleep(500); }, - timingBenchOptions + timingBenchOptions, ); bench( @@ -34,6 +34,6 @@ describe("timing tests", () => { async () => { busySleep(1_000); }, - timingBenchOptions + timingBenchOptions, ); }); diff --git a/packages/vitest-plugin/moon.yml b/packages/vitest-plugin/moon.yml deleted file mode 100644 index cf23e215..00000000 --- a/packages/vitest-plugin/moon.yml +++ /dev/null @@ -1,18 +0,0 @@ -tasks: - bench: - command: vitest bench --run - inputs: - - "benches/**" - local: true - options: - cache: false - deps: - - build - - test: - command: vitest --run - inputs: - - "./vitest.config.ts" - - test/integ: - command: noop diff --git a/packages/vitest-plugin/package.json b/packages/vitest-plugin/package.json index f96cb277..eaafab2e 100644 --- a/packages/vitest-plugin/package.json +++ b/packages/vitest-plugin/package.json @@ -25,7 +25,15 @@ "homepage": "https://codspeed.io", "license": "Apache-2.0", "scripts": { - "bench": "vitest bench" + "build": "NODE_NO_WARNINGS=1 rollup -c rollup.config.ts --configPlugin typescript", + "test": "vitest --run", + "test/integ": "echo 'no integ tests'", + "lint": "eslint .", + "typecheck": "tsc --noEmit --pretty", + "format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --check .", + "fix-format": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore --write .", + "bench": "vitest bench --run", + "clean": "rm -rf dist" }, "dependencies": { "@codspeed/core": "workspace:^5.4.0" diff --git a/packages/vitest-plugin/rollup.config.ts b/packages/vitest-plugin/rollup.config.ts index 2a421b34..fe9ff81a 100644 --- a/packages/vitest-plugin/rollup.config.ts +++ b/packages/vitest-plugin/rollup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "rollup"; import { declarationsPlugin, jsPlugins } from "../../rollup.options"; -import pkg from "./package.json" assert { type: "json" }; +import pkg from "./package.json" with { type: "json" }; export default defineConfig([ { diff --git a/packages/vitest-plugin/src/__tests__/globalSetup.test.ts b/packages/vitest-plugin/src/__tests__/globalSetup.test.ts index 38fd871f..178b3ecb 100644 --- a/packages/vitest-plugin/src/__tests__/globalSetup.test.ts +++ b/packages/vitest-plugin/src/__tests__/globalSetup.test.ts @@ -8,13 +8,13 @@ describe("globalSetup", () => { const teardown = globalSetup(); expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] @codspeed/vitest-plugin v1.0.0 - setup" + "[CodSpeed] @codspeed/vitest-plugin v1.0.0 - setup", ); teardown(); expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] @codspeed/vitest-plugin v1.0.0 - teardown" + "[CodSpeed] @codspeed/vitest-plugin v1.0.0 - teardown", ); expect(() => teardown()).toThrowError("teardown called twice"); diff --git a/packages/vitest-plugin/src/__tests__/index.test.ts b/packages/vitest-plugin/src/__tests__/index.test.ts index 42f5c2a5..98bb38e0 100644 --- a/packages/vitest-plugin/src/__tests__/index.test.ts +++ b/packages/vitest-plugin/src/__tests__/index.test.ts @@ -68,7 +68,7 @@ describe("codSpeedPlugin", () => { it("should not apply the plugin when the mode is not benchmark", async () => { const applyPlugin = applyPluginFunction( {}, - fromPartial({ mode: "test" }) + fromPartial({ mode: "test" }), ); expect(applyPlugin).toBe(false); @@ -79,11 +79,11 @@ describe("codSpeedPlugin", () => { const applyPlugin = applyPluginFunction( {}, - fromPartial({ mode: "benchmark" }) + fromPartial({ mode: "benchmark" }), ); expect(console.warn).toHaveBeenCalledWith( - "[CodSpeed] bench detected but no instrumentation found" + "[CodSpeed] bench detected but no instrumentation found", ); expect(applyPlugin).toBe(true); }); @@ -93,7 +93,7 @@ describe("codSpeedPlugin", () => { const applyPlugin = applyPluginFunction( {}, - fromPartial({ mode: "benchmark" }) + fromPartial({ mode: "benchmark" }), ); expect(applyPlugin).toBe(true); @@ -126,7 +126,7 @@ describe("codSpeedPlugin", () => { "--max-old-space-size=4096", ], runner: expect.stringContaining( - "packages/vitest-plugin/src/analysis.ts" + "packages/vitest-plugin/src/analysis.ts", ), }, }); @@ -167,7 +167,7 @@ describe("codSpeedPlugin", () => { }, }, runner: expect.stringContaining( - "packages/vitest-plugin/src/analysis.ts" + "packages/vitest-plugin/src/analysis.ts", ), }, }); diff --git a/packages/vitest-plugin/src/__tests__/instrumented.test.ts b/packages/vitest-plugin/src/__tests__/instrumented.test.ts index 9dbc6120..ee880797 100644 --- a/packages/vitest-plugin/src/__tests__/instrumented.test.ts +++ b/packages/vitest-plugin/src/__tests__/instrumented.test.ts @@ -60,24 +60,24 @@ describe("CodSpeedRunner", () => { // setup expect(coreMocks.setupCore).toHaveBeenCalledTimes(1); expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts" + "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts", ); // run expect(coreMocks.mongoMeasurement.start).toHaveBeenCalledWith( - "packages/vitest-plugin/src/__tests__/instrumented.test.ts::test bench" + "packages/vitest-plugin/src/__tests__/instrumented.test.ts::test bench", ); expect(coreMocks.InstrumentHooks.startBenchmark).toHaveBeenCalledTimes(1); expect(benchFn).toHaveBeenCalledTimes(8); expect(coreMocks.InstrumentHooks.stopBenchmark).toHaveBeenCalledTimes(1); expect(coreMocks.mongoMeasurement.stop).toHaveBeenCalledTimes(1); expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] packages/vitest-plugin/src/__tests__/instrumented.test.ts::test bench done" + "[CodSpeed] packages/vitest-plugin/src/__tests__/instrumented.test.ts::test bench done", ); // teardown expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts done" + "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts done", ); expect(coreMocks.teardownCore).toHaveBeenCalledTimes(1); }); @@ -112,24 +112,24 @@ describe("CodSpeedRunner", () => { // setup expect(coreMocks.setupCore).toHaveBeenCalledTimes(1); expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts" + "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts", ); // run expect(coreMocks.mongoMeasurement.start).toHaveBeenCalledWith( - "packages/vitest-plugin/src/__tests__/instrumented.test.ts::nested suite::test bench" + "packages/vitest-plugin/src/__tests__/instrumented.test.ts::nested suite::test bench", ); expect(coreMocks.InstrumentHooks.startBenchmark).toHaveBeenCalledTimes(1); expect(benchFn).toHaveBeenCalledTimes(8); expect(coreMocks.InstrumentHooks.stopBenchmark).toHaveBeenCalledTimes(1); expect(coreMocks.mongoMeasurement.stop).toHaveBeenCalledTimes(1); expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] packages/vitest-plugin/src/__tests__/instrumented.test.ts::nested suite::test bench done" + "[CodSpeed] packages/vitest-plugin/src/__tests__/instrumented.test.ts::nested suite::test bench done", ); // teardown expect(console.log).toHaveBeenCalledWith( - "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts done" + "[CodSpeed] running suite packages/vitest-plugin/src/__tests__/instrumented.test.ts done", ); expect(coreMocks.teardownCore).toHaveBeenCalledTimes(1); }); diff --git a/packages/vitest-plugin/src/analysis.ts b/packages/vitest-plugin/src/analysis.ts index ec6f971e..529f99f6 100644 --- a/packages/vitest-plugin/src/analysis.ts +++ b/packages/vitest-plugin/src/analysis.ts @@ -32,7 +32,7 @@ function logCodSpeed(message: string) { async function runAnalysisBench( benchmark: Benchmark, suite: RunnerTestSuite, - currentSuiteName: string + currentSuiteName: string, ) { const uri = `${currentSuiteName}::${benchmark.name}`; const fn = getBenchFn(benchmark); @@ -62,7 +62,7 @@ async function runAnalysisBench( async function runAnalysisBenchmarkSuite( suite: RunnerTestSuite, - parentSuiteName?: string + parentSuiteName?: string, ) { const currentSuiteName = parentSuiteName ? parentSuiteName + "::" + suite.name diff --git a/packages/vitest-plugin/src/common.ts b/packages/vitest-plugin/src/common.ts index 9aa5ea0d..9ef422a7 100644 --- a/packages/vitest-plugin/src/common.ts +++ b/packages/vitest-plugin/src/common.ts @@ -11,7 +11,7 @@ function getSuiteHooks(suite: RunnerTestSuite, name: keyof SuiteHooks) { export async function callSuiteHook( suite: RunnerTestSuite, currentTask: RunnerTask, - name: T + name: T, ): Promise { if (name === "beforeEach" && suite?.suite) { await callSuiteHook(suite.suite, currentTask, name); diff --git a/packages/vitest-plugin/src/index.ts b/packages/vitest-plugin/src/index.ts index d9df55be..2bdf59ed 100644 --- a/packages/vitest-plugin/src/index.ts +++ b/packages/vitest-plugin/src/index.ts @@ -105,7 +105,7 @@ export default function codspeedPlugin(): Plugin { * Dynamically setup the CodSpeed instruments. */ export async function setupInstruments( - body: SetupInstrumentsRequestBody + body: SetupInstrumentsRequestBody, ): Promise { if (!InstrumentHooks.isInstrumented()) { console.warn("[CodSpeed] No instrumentation found, using default mongoUrl"); diff --git a/packages/vitest-plugin/src/walltime/index.ts b/packages/vitest-plugin/src/walltime/index.ts index fa4d8524..0d068941 100644 --- a/packages/vitest-plugin/src/walltime/index.ts +++ b/packages/vitest-plugin/src/walltime/index.ts @@ -36,11 +36,11 @@ export class WalltimeRunner extends NodeBenchmarkRunner { if (benchmarks.length > 0) { writeWalltimeResults(benchmarks); console.log( - `[CodSpeed] Done collecting walltime data for ${benchmarks.length} benches.` + `[CodSpeed] Done collecting walltime data for ${benchmarks.length} benches.`, ); } else { console.warn( - `[CodSpeed] No benchmark results found after suite execution` + `[CodSpeed] No benchmark results found after suite execution`, ); } } @@ -57,7 +57,7 @@ export class WalltimeRunner extends NodeBenchmarkRunner { } } - async importTinybench(): Promise { + async importTinybench() { const tinybench = await super.importTinybench(); if (this.isTinybenchHookedWithCodspeed) { @@ -100,7 +100,7 @@ export class WalltimeRunner extends NodeBenchmarkRunner { // Allow tinybench to retrieve the path to the currently running suite async onTaskUpdate( _: RunnerTaskResultPack[], - events: RunnerTaskEventPack[] + events: RunnerTaskEventPack[], ): Promise { events.map((event) => { const [id, eventName] = event; diff --git a/packages/vitest-plugin/src/walltime/utils.ts b/packages/vitest-plugin/src/walltime/utils.ts index db31d962..2b3c1f33 100644 --- a/packages/vitest-plugin/src/walltime/utils.ts +++ b/packages/vitest-plugin/src/walltime/utils.ts @@ -6,16 +6,16 @@ import { type BenchmarkStats, } from "@codspeed/core"; import { - type Benchmark as VitestBenchmark, type RunnerTaskResult, type RunnerTestSuite, + type Benchmark as VitestBenchmark, } from "vitest"; import { getBenchOptions } from "vitest/suite"; import { isVitestTaskBenchmark } from "../common"; export async function extractBenchmarkResults( suite: RunnerTestSuite, - parentPath = "" + parentPath = "", ): Promise { const benchmarks: Benchmark[] = []; const currentPath = parentPath ? `${parentPath}::${suite.name}` : suite.name; @@ -37,7 +37,7 @@ export async function extractBenchmarkResults( async function processBenchmarkTask( task: VitestBenchmark, - suitePath: string + suitePath: string, ): Promise { const uri = `${suitePath}::${task.name}`; @@ -88,7 +88,7 @@ function convertVitestResultToBenchmarkStats( warmupTime?: number; warmupIterations?: number; iterations?: number; - } + }, ): BenchmarkStats | null { const benchmark = result.benchmark; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5408ac60..147e46a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: '@commitlint/config-conventional': specifier: ^17.4.4 version: 17.4.4 - '@moonrepo/cli': - specifier: 1.37.3 - version: 1.37.3 '@rollup/plugin-commonjs': specifier: ^25.0.7 version: 25.0.7(rollup@4.48.1) @@ -28,7 +25,7 @@ importers: version: 15.2.3(rollup@4.48.1) '@rollup/plugin-typescript': specifier: ^11.1.5 - version: 11.1.5(rollup@4.48.1)(tslib@2.5.0)(typescript@4.9.4) + version: 11.1.5(rollup@4.48.1)(tslib@2.5.0)(typescript@5.8.3) '@types/jest': specifier: ^29.5.0 version: 29.5.0 @@ -36,11 +33,11 @@ importers: specifier: ^20.5.1 version: 20.19.11 '@typescript-eslint/eslint-plugin': - specifier: ^5.58.0 - version: 5.58.0(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint@7.32.0)(typescript@4.9.4) + specifier: ^8.57.0 + version: 8.60.0(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^5.58.0 - version: 5.58.0(eslint@7.32.0)(typescript@4.9.4) + specifier: ^8.57.0 + version: 8.60.0(eslint@8.57.1)(typescript@5.8.3) esbuild: specifier: ^0.17.16 version: 0.17.16 @@ -48,50 +45,53 @@ importers: specifier: ^3.4.2 version: 3.4.2(esbuild@0.17.16) eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.57.1 + version: 8.57.1 eslint-import-resolver-typescript: - specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-plugin-import@2.27.5)(eslint@7.32.0) + specifier: ^3.6.3 + version: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) husky: specifier: ^7.0.4 version: 7.0.4 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + version: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) jest-config: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + version: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) lerna: - specifier: ^6.6.1 - version: 6.6.1(encoding@0.1.13) + specifier: ^8.2.4 + version: 8.2.4(encoding@0.1.13) prettier: - specifier: ^2.8.7 - version: 2.8.7 + specifier: ^3.8.3 + version: 3.8.3 prettier-plugin-organize-imports: - specifier: ^3.2.2 - version: 3.2.2(prettier@2.8.7)(typescript@4.9.4) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.8.3)(typescript@5.8.3) rollup: specifier: ^4.47.1 version: 4.48.1 rollup-plugin-dts: specifier: ^6.1.0 - version: 6.1.0(rollup@4.48.1)(typescript@4.9.4) + version: 6.1.0(rollup@4.48.1)(typescript@5.8.3) rollup-plugin-esbuild: specifier: ^6.1.0 version: 6.1.0(esbuild@0.17.16)(rollup@4.48.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)))(typescript@4.9.4) + version: 29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)))(typescript@5.8.3) tslib: specifier: ^2.5.0 version: 2.5.0 + turbo: + specifier: ^2.5.6 + version: 2.9.14 typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: ^5.6.3 + version: 5.8.3 examples/with-javascript-esm: devDependencies: @@ -160,7 +160,7 @@ importers: version: 5.1.3 vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@20.19.11) + version: 4.0.18(@types/node@20.19.11)(yaml@2.9.0) examples/with-typescript-simple-cjs: devDependencies: @@ -220,7 +220,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@20.19.11) + version: 3.2.4(@types/node@20.19.11)(yaml@2.9.0) packages/benchmark.js-plugin: dependencies: @@ -230,9 +230,6 @@ importers: lodash: specifier: ^4.17.10 version: 4.17.21 - stack-trace: - specifier: 1.0.0-pre2 - version: 1.0.0-pre2 devDependencies: '@babel/preset-env': specifier: ^7.22.5 @@ -243,9 +240,6 @@ importers: '@types/lodash': specifier: ^4.14.195 version: 4.14.195 - '@types/stack-trace': - specifier: ^0.0.30 - version: 0.0.30 benchmark: specifier: ^2.1.4 version: 2.1.4 @@ -267,10 +261,16 @@ importers: node-gyp-build: specifier: ^4.6.0 version: 4.6.0 + stack-trace: + specifier: 1.0.0-pre2 + version: 1.0.0-pre2 devDependencies: '@types/find-up': specifier: ^4.0.0 version: 4.0.0 + '@types/stack-trace': + specifier: ^0.0.30 + version: 0.0.30 node-addon-api: specifier: ^5.1.0 version: 5.1.0 @@ -284,18 +284,28 @@ importers: specifier: ^5.0.1 version: 5.0.1 + packages/playwright: + dependencies: + '@codspeed/core': + specifier: workspace:^5.4.0 + version: link:../core + devDependencies: + playwright: + specifier: ^1.48.0 + version: 1.60.0 + playwright-core: + specifier: ^1.48.0 + version: 1.60.0 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@20.19.11)(yaml@2.9.0) + packages/tinybench-plugin: dependencies: '@codspeed/core': specifier: workspace:^5.4.0 version: link:../core - stack-trace: - specifier: 1.0.0-pre2 - version: 1.0.0-pre2 devDependencies: - '@types/stack-trace': - specifier: ^0.0.30 - version: 0.0.30 esbuild-register: specifier: ^3.4.2 version: 3.4.2(esbuild@0.25.9) @@ -304,7 +314,7 @@ importers: version: 4.0.1 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@20.19.11) + version: 3.2.4(@types/node@20.19.11)(yaml@2.9.0) packages/vitest-plugin: dependencies: @@ -323,10 +333,10 @@ importers: version: 2.9.0 vite: specifier: ^7.0.0 - version: 7.1.3(@types/node@20.19.11) + version: 7.1.3(@types/node@20.19.11)(yaml@2.9.0) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@20.19.11) + version: 4.0.18(@types/node@20.19.11)(yaml@2.9.0) packages: @@ -341,9 +351,6 @@ packages: '@apidevtools/json-schema-ref-parser@9.0.9': resolution: {integrity: sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==} - '@babel/code-frame@7.12.11': - resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -519,10 +526,6 @@ packages: resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.18.6': - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - '@babel/parser@7.21.4': resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} engines: {node: '>=6.0.0'} @@ -1108,6 +1111,15 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@esbuild/aix-ppc64@0.25.9': resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} @@ -1402,34 +1414,49 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.5.0': - resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@0.4.3': - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@gar/promise-retry@1.0.3': resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} engines: {node: ^20.17.0 || >=22.9.0} - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - - '@humanwhocodes/config-array@0.5.0': - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead - '@humanwhocodes/object-schema@1.2.1': - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead '@hutson/parse-repository-url@3.0.2': resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -1624,57 +1651,18 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@lerna/child-process@6.6.1': - resolution: {integrity: sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ==} - engines: {node: ^14.15.0 || >=16.0.0} - - '@lerna/create@6.6.1': - resolution: {integrity: sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA==} - engines: {node: ^14.15.0 || >=16.0.0} - - '@lerna/legacy-package-management@6.6.1': - resolution: {integrity: sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q==} - engines: {node: ^14.15.0 || >=16.0.0} - deprecated: In v9 of lerna, released in September 2025, the `lerna bootstrap`, `lerna add` and `lerna link` commands were finally fully removed after over 2 years of being deprecated. If you are still using these commands, please migrate to using your package manager's long-supported `workspaces` feature. You may find https://lerna.js.org/docs/legacy-package-management useful for this transition. - - '@moonrepo/cli@1.37.3': - resolution: {integrity: sha512-VhSI5CzxWc3ppUPT0XaDyoVNPemw+rOGVOH6d115f1XFtJ0SN4P1ciPK7xJgDL4KDW7Ra3PyxT6iRocZVZu4gA==} - hasBin: true - - '@moonrepo/core-linux-arm64-gnu@1.37.3': - resolution: {integrity: sha512-CqOSW4w4rEc7ZJq/zIMYJUnvxCh4kxJoR5yGaaHJQ2X9UHX6bY4W7NKrSi0R9ckZ3KMmjN4zVg5HlqSsC+eSGg==} - cpu: [arm64] - os: [linux] - - '@moonrepo/core-linux-arm64-musl@1.37.3': - resolution: {integrity: sha512-fX/YmwDSqGHmqR8bvVbPjtBW+nxiHR4b+wx4br8l9ID23MpJ9dPPVOT0+CNZd+75VjqXS1e7LosPvvpbfLgKyg==} - cpu: [arm64] - os: [linux] - - '@moonrepo/core-linux-x64-gnu@1.37.3': - resolution: {integrity: sha512-vCMhQqeoe6UAlJJA6NuXcPFZ2fE5tybR3lowFgqRj9CM9YEwilgxRaMY43q8CQOP0KZxi1bLNnmpe953Og3YaQ==} - cpu: [x64] - os: [linux] - - '@moonrepo/core-linux-x64-musl@1.37.3': - resolution: {integrity: sha512-Ow8Z6PRDq42/lM3cpasISzaupaUGu4xbz3fqmLDTX8+s5/Fj+RCg9vTFbh/waGW9AHAX3KoA55YrALcmQweiJQ==} - cpu: [x64] - os: [linux] - - '@moonrepo/core-macos-arm64@1.37.3': - resolution: {integrity: sha512-m7deylPDULFT3P119wa0my9IcnU894myWxW9q909JUbbRpbr4bYc2KnvZPgx8mru2TDX6jYJuE766bDcs1STTQ==} - cpu: [arm64] - os: [darwin] + '@lerna/create@8.2.4': + resolution: {integrity: sha512-A8AlzetnS2WIuhijdAzKUyFpR5YbLLfV3luQ4lzBgIBgRfuoBDZeF+RSZPhra+7A6/zTUlrbhKZIOi/MNhqgvQ==} + engines: {node: '>=18.0.0'} - '@moonrepo/core-macos-x64@1.37.3': - resolution: {integrity: sha512-YtwwE7d4+A501j2xmmy3tuMk1Bwp38XpV2IXn/0d/ZkuYL/DnP0pdPlifFwAokMxfzDRe/kOn3D6jcuZ7BqNIA==} - cpu: [x64] - os: [darwin] + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@moonrepo/core-windows-x64-msvc@1.37.3': - resolution: {integrity: sha512-45drf0imufkSGRJKQtqJwoWmZJ7Gjq/ybpCilCcRMpG9Ceyd13RTNik/FJUQeAzkuNl20cFf1bFKKM4gGLZq1Q==} - cpu: [x64] - os: [win32] + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1688,42 +1676,42 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@npmcli/agent@2.2.2': + resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} + engines: {node: ^16.14.0 || >=18.0.0} + '@npmcli/agent@4.0.0': resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/arborist@6.2.3': - resolution: {integrity: sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@npmcli/arborist@7.5.4': + resolution: {integrity: sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true - '@npmcli/fs@2.1.2': - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/fs@3.1.0': - resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + '@npmcli/fs@3.1.1': + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} '@npmcli/fs@5.0.0': resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/git@3.0.2': - resolution: {integrity: sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + '@npmcli/git@5.0.8': + resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} + engines: {node: ^16.14.0 || >=18.0.0} - '@npmcli/git@4.0.4': - resolution: {integrity: sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==} + '@npmcli/installed-package-contents@2.0.2': + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/installed-package-contents@1.0.7': - resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} - engines: {node: '>= 10'} hasBin: true - '@npmcli/installed-package-contents@2.0.2': - resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + '@npmcli/installed-package-contents@2.1.0': + resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true @@ -1731,194 +1719,165 @@ packages: resolution: {integrity: sha512-HlCvFuTzw4UNoKyZdqiNrln+qMF71QJkxy2dsusV8QQdoa89e2TF4dATCzBxbl4zzRzdDoWWyP5ADVrNAH9cRQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@npmcli/metavuln-calculator@5.0.1': - resolution: {integrity: sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/move-file@2.0.1': - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs + '@npmcli/metavuln-calculator@7.1.1': + resolution: {integrity: sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==} + engines: {node: ^16.14.0 || >=18.0.0} '@npmcli/name-from-folder@2.0.0': resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@npmcli/node-gyp@2.0.0': - resolution: {integrity: sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - '@npmcli/node-gyp@3.0.0': resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@npmcli/package-json@3.0.0': - resolution: {integrity: sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@npmcli/package-json@5.2.0': + resolution: {integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==} + engines: {node: ^16.14.0 || >=18.0.0} - '@npmcli/promise-spawn@3.0.0': - resolution: {integrity: sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + '@npmcli/promise-spawn@7.0.2': + resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} + engines: {node: ^16.14.0 || >=18.0.0} - '@npmcli/promise-spawn@6.0.2': - resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + '@npmcli/query@3.1.0': + resolution: {integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@npmcli/query@3.0.0': - resolution: {integrity: sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@npmcli/redact@2.0.1': + resolution: {integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==} + engines: {node: ^16.14.0 || >=18.0.0} '@npmcli/redact@4.0.0': resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/run-script@4.1.7': - resolution: {integrity: sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/run-script@6.0.0': - resolution: {integrity: sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@nrwl/cli@15.9.2': - resolution: {integrity: sha512-QoCmyrcGakHAYTJaNBbOerRQAmqJHMYGCdqtQidV+aP9p1Dy33XxDELfhd+IYmGqngutXuEWChNpWNhPloLnoA==} + '@npmcli/run-script@8.1.0': + resolution: {integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==} + engines: {node: ^16.14.0 || >=18.0.0} - '@nrwl/devkit@15.9.2': - resolution: {integrity: sha512-2DvTstVZb91m+d4wqUJMBHQ3elxyabdmFE6/3aXmtOGeDxTyXyDzf/1O6JvBBiL8K6XC3ZYchjtxUHgxl/NJ5A==} + '@nx/devkit@20.8.4': + resolution: {integrity: sha512-3r+6QmIXXAWL6K7m8vAbW31aniAZmZAZXeMhOhWcJoOAU7ggpCQaM8JP8/kO5ov/Bmhyf0i/SSVXI6kwiR5WNQ==} peerDependencies: - nx: '>= 14.1 <= 16' + nx: '>= 19 <= 21' - '@nrwl/nx-darwin-arm64@15.9.2': - resolution: {integrity: sha512-Yv+OVsQt3C/hmWOC+YhJZQlsyph5w1BHfbp4jyCvV1ZXBbb8NdvwxgDHPWXxKPTc1EXuB7aEX3qzxM3/OWEUJg==} + '@nx/nx-darwin-arm64@20.8.4': + resolution: {integrity: sha512-8Y7+4wj1qoZsuDRpnuiHzSIsMt3VqtJ0su8dgd/MyGccvvi4pndan2R5yTiVw/wmbMxtBmZ6PO6Z8dgSIrMVog==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@nrwl/nx-darwin-x64@15.9.2': - resolution: {integrity: sha512-qHfdluHlPzV0UHOwj1ZJ+qNEhzfLGiBuy1cOth4BSzDlvMnkuqBWoprfaXoztzYcus2NSILY1/7b3Jw4DAWmMw==} + '@nx/nx-darwin-x64@20.8.4': + resolution: {integrity: sha512-2lfuxRc56QWnAysMhcD03tpCPiRzV1+foUq0MhV2sSBIybXmgV4wHLkPZNhlBCl4FNXrWiZiN1OJ2X9AGiOdug==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@nrwl/nx-linux-arm-gnueabihf@15.9.2': - resolution: {integrity: sha512-0GzwbablosnYnnJDCJvAeZv8LlelSrNwUnGhe43saeoZdAew35Ay1E34zBrg/GCGTASuz+knEEYFM+gDD9Mc6A==} + '@nx/nx-freebsd-x64@20.8.4': + resolution: {integrity: sha512-99vnUXZy+OUBHU+8Yhabre2qafepKg9GKkQkhmXvJGqOmuIsepK7wirUFo2PiVM8YhS6UV2rv6hKAZcQ7skYyg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@nx/nx-linux-arm-gnueabihf@20.8.4': + resolution: {integrity: sha512-dht73zpnpzEUEzMHFQs4mfiwZH3WcJgQNWkD5p7WkeJewHq2Yyd0eG5Jg3kB7wnFtwPUV1eNJRM5rephgylkLA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@nrwl/nx-linux-arm64-gnu@15.9.2': - resolution: {integrity: sha512-3mFIY7iUTPG45hSIRaM2DmraCy8W6hNoArAGRrTgYw40BIJHtLrW+Rt7DLyvVXaYCvrKugWOKtxC+jG7kpIZVA==} + '@nx/nx-linux-arm64-gnu@20.8.4': + resolution: {integrity: sha512-syXxbJZ0yPaqzVmB28QJgUtaarSiW/PQmv/5Z2Ps8rCi7kYylISPVNjP1NNiIOcGDRWbHqoBfM0bEGPfSp0rBQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nrwl/nx-linux-arm64-musl@15.9.2': - resolution: {integrity: sha512-FNBnXEtockwxZa4I3NqggrJp0YIbNokJvt/clrICP+ijOacdUDkv8mJedavobkFsRsNq9gzCbRbUScKymrOLrg==} + '@nx/nx-linux-arm64-musl@20.8.4': + resolution: {integrity: sha512-AlZZFolS/S0FahRKG7rJ0Z9CgmIkyzHgGaoy3qNEMDEjFhR3jt2ZZSLp90W7zjgrxojOo90ajNMrg2UmtcQRDA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nrwl/nx-linux-x64-gnu@15.9.2': - resolution: {integrity: sha512-gHWsP5lbe4FNQCa1Q/VLxIuik+BqAOcSzyPjdUa4gCDcbxPa8xiE57PgXB5E1XUzOWNnDTlXa/Ll07/TIuKuog==} + '@nx/nx-linux-x64-gnu@20.8.4': + resolution: {integrity: sha512-MSu+xVNdR95tuuO+eL/a/ZeMlhfrZ627On5xaCZXnJ+lFxNg/S4nlKZQk0Eq5hYALCd/GKgFGasRdlRdOtvGPg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nrwl/nx-linux-x64-musl@15.9.2': - resolution: {integrity: sha512-EaFUukCbmoHsYECX2AS4pxXH933yesBFVvBgD38DkoFDxDoJMVt6JqYwm+d5R7S4R2P9U3l++aurljQTRq567Q==} + '@nx/nx-linux-x64-musl@20.8.4': + resolution: {integrity: sha512-KxpQpyLCgIIHWZ4iRSUN9ohCwn1ZSDASbuFCdG3mohryzCy8WrPkuPcb+68J3wuQhmA5w//Xpp/dL0hHoit9zQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nrwl/nx-win32-arm64-msvc@15.9.2': - resolution: {integrity: sha512-PGAe7QMr51ivx1X3avvs8daNlvv1wGo3OFrobjlu5rSyjC1Y3qHwT9+wdlwzNZ93FIqWOq09s+rE5gfZRfpdAg==} + '@nx/nx-win32-arm64-msvc@20.8.4': + resolution: {integrity: sha512-ffLBrxM9ibk+eWSY995kiFFRTSRb9HkD5T1s/uZyxV6jfxYPaZDBAWAETDneyBXps7WtaOMu+kVZlXQ3X+TfIA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@nrwl/nx-win32-x64-msvc@15.9.2': - resolution: {integrity: sha512-Q8onNzhuAZ0l9DNkm8D4Z1AEIzJr8JiT4L2fVBLYrV/R75C2HS3q7lzvfo6oqMY6mXge1cFPcrTtg3YXBQaSWA==} + '@nx/nx-win32-x64-msvc@20.8.4': + resolution: {integrity: sha512-JxuuZc4h8EBqoYAiRHwskimpTJx70yn4lhIRFBoW5ICkxXW1Rw0yip/1UVsWRHXg/x9BxmH7VVazdfaQWmGu6A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@nrwl/tao@15.9.2': - resolution: {integrity: sha512-+LqNC37w9c6q6Ukdpf0z0tt1PQFNi4gwhHpJvkYQiKRETHjyrrlyqTNEPEyA7PI62RuYC6VrpVw2gzI7ufqZEA==} - hasBin: true - - '@octokit/auth-token@3.0.3': - resolution: {integrity: sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==} - engines: {node: '>= 14'} - - '@octokit/core@4.2.0': - resolution: {integrity: sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==} - engines: {node: '>= 14'} - - '@octokit/endpoint@7.0.5': - resolution: {integrity: sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==} - engines: {node: '>= 14'} + '@octokit/auth-token@4.0.0': + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} - '@octokit/graphql@5.0.5': - resolution: {integrity: sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==} - engines: {node: '>= 14'} + '@octokit/core@5.2.2': + resolution: {integrity: sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==} + engines: {node: '>= 18'} - '@octokit/openapi-types@12.11.0': - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + '@octokit/endpoint@9.0.6': + resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} + engines: {node: '>= 18'} - '@octokit/openapi-types@14.0.0': - resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==} + '@octokit/graphql@7.1.1': + resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} + engines: {node: '>= 18'} - '@octokit/openapi-types@16.0.0': - resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==} + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} '@octokit/plugin-enterprise-rest@6.0.1': resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} - '@octokit/plugin-paginate-rest@3.1.0': - resolution: {integrity: sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==} - engines: {node: '>= 14'} + '@octokit/plugin-paginate-rest@11.4.4-cjs.2': + resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=4' + '@octokit/core': '5' - '@octokit/plugin-request-log@1.0.4': - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + '@octokit/plugin-request-log@4.0.1': + resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=3' + '@octokit/core': '5' - '@octokit/plugin-rest-endpoint-methods@6.8.1': - resolution: {integrity: sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==} - engines: {node: '>= 14'} + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': + resolution: {integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==} + engines: {node: '>= 18'} peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@3.0.3': - resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} - engines: {node: '>= 14'} - - '@octokit/request@6.2.3': - resolution: {integrity: sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==} - engines: {node: '>= 14'} - - '@octokit/rest@19.0.3': - resolution: {integrity: sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==} - engines: {node: '>= 14'} + '@octokit/core': ^5 - '@octokit/types@6.41.0': - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + '@octokit/request-error@5.1.1': + resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} + engines: {node: '>= 18'} - '@octokit/types@8.2.1': - resolution: {integrity: sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==} + '@octokit/request@8.4.1': + resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} + engines: {node: '>= 18'} - '@octokit/types@9.0.0': - resolution: {integrity: sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==} + '@octokit/rest@20.1.2': + resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} + engines: {node: '>= 18'} - '@parcel/watcher@2.0.4': - resolution: {integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==} - engines: {node: '>= 10.0.0'} + '@octokit/types@13.10.0': + resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} - '@pkgr/utils@2.3.1': - resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} '@rollup/plugin-commonjs@25.0.7': resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} @@ -2078,9 +2037,32 @@ packages: cpu: [x64] os: [win32] - '@sigstore/protobuf-specs@0.1.0': - resolution: {integrity: sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@sigstore/bundle@2.3.2': + resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/core@1.1.0': + resolution: {integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/protobuf-specs@0.3.3': + resolution: {integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + '@sigstore/sign@2.3.2': + resolution: {integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/tuf@2.3.4': + resolution: {integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@sigstore/verify@1.2.1': + resolution: {integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==} + engines: {node: ^16.14.0 || >=18.0.0} '@sinclair/typebox@0.25.24': resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} @@ -2103,10 +2085,6 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - '@total-typescript/shoehorn@0.1.1': resolution: {integrity: sha512-XSPcazQsC2Cr7eCiAI+M2bTmMziBvFWYTYMgUDKLbU6i+7m3I2BF5gXF5vKDO8577fONs9CvmTvVa7+nMHMfxg==} @@ -2122,13 +2100,49 @@ packages: '@tsconfig/node16@1.0.3': resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - '@tufjs/canonical-json@1.0.0': - resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@tufjs/canonical-json@2.0.0': + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} - '@tufjs/models@1.0.2': - resolution: {integrity: sha512-uxarDtxTIK3f8hJS4yFhW/lvTa3tsiQU5iDCRut+NCnOXvNtEul0Ct58NIIcIx9Rkt7OFEK31Ndpqsd663nsew==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@tufjs/models@2.0.1': + resolution: {integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@turbo/darwin-64@2.9.14': + resolution: {integrity: sha512-t7QiPflaEyBE4oayeZtSmu4mEfjgIrcNlNNl1z1dmIVPqEdtA7+CfTf8d7KXsOGPh6aNgWjKxyvQg9uGfDQF+A==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.9.14': + resolution: {integrity: sha512-d23147mC9BsCPA9mJ0h/ubcpbRgcJBXbcG3+Vq7YLhjz3IXuvQsJ1UXH8f4MD76ZjJ4m/E4aRdJV+MW88CDfbw==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.9.14': + resolution: {integrity: sha512-P3ZKB5tuUDdDQWuAsACGUR1qv9W7BNWxdxqVJ0kZNuNNPRaVYTPPikLcp79+GiEcW3npsR+KyP38lnQiBc5aSA==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.9.14': + resolution: {integrity: sha512-ZRTlzcUMrrPv9ZuDzRF9n60Ym13bKeG9jDB8WjxyLhWNzV+AJQN+zdpIk3NJYf2zQsGUm1mNar2P0elRzLw25g==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.9.14': + resolution: {integrity: sha512-exanwN6sIduZwykYeiTQj8kCmOhazP5WOz3bvXMcYtjhL6Z3iRWLewKrXCBq0bqwSP3iBMb/AerRCnHI4lx46A==} + cpu: [x64] + os: [win32] + + '@turbo/windows-arm64@2.9.14': + resolution: {integrity: sha512-fVdCsnmYoKICsycbWuuGp6Jvi51/3G/UluFWuAUCvR8PIW5IJkAk5BM9UF8PSm0Q2IphWHFZjYEgjHsh3B9y/g==} + cpu: [arm64] + os: [win32] + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} '@types/babel__core@7.20.0': resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} @@ -2221,18 +2235,12 @@ packages: '@types/normalize-package-data@2.4.1': resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - '@types/parse-json@4.0.0': - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - '@types/prettier@2.7.2': resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/semver@7.3.13': - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - '@types/stack-trace@0.0.30': resolution: {integrity: sha512-g58ZMrK7OLAzzxqeGF/w9jYsIWMuA9I/p/d493+x5vz3LyIEhrh3swszq28poF45X0ZD8vpAznMLBTyKPYFBeA==} @@ -2254,63 +2262,177 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@5.58.0': - resolution: {integrity: sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/eslint-plugin@8.60.0': + resolution: {integrity: sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser': ^8.60.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@5.58.0': - resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@8.60.0': + resolution: {integrity: sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@5.58.0': - resolution: {integrity: sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/project-service@8.60.0': + resolution: {integrity: sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@5.58.0': - resolution: {integrity: sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@8.60.0': + resolution: {integrity: sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.60.0': + resolution: {integrity: sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@5.58.0': - resolution: {integrity: sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/type-utils@8.60.0': + resolution: {integrity: sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/typescript-estree@5.58.0': - resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@8.60.0': + resolution: {integrity: sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.60.0': + resolution: {integrity: sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@5.58.0': - resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/utils@8.60.0': + resolution: {integrity: sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@5.58.0': - resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@8.60.0': + resolution: {integrity: sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + cpu: [loong64] + os: [linux] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} + cpu: [loong64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} + cpu: [x64] + os: [win32] '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -2373,21 +2495,18 @@ packages: '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - '@yarnpkg/parsers@3.0.0-rc.42': - resolution: {integrity: sha512-eW9Mbegmb5bJjwawJM9ghjUjUqciNMhC6L7XrQPF/clXS5bbP66MstsgCT5hy9VlfUh/CfBT+0Wucf531dMjHA==} - engines: {node: '>=14.15.0'} + '@yarnpkg/parsers@3.0.2': + resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} + engines: {node: '>=18.12.0'} - '@zkochan/js-yaml@0.0.6': - resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -2396,10 +2515,6 @@ packages: resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2409,11 +2524,6 @@ packages: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} @@ -2430,10 +2540,6 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - agentkeepalive@4.3.0: - resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} - engines: {node: '>= 8.0.0'} - aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -2456,9 +2562,9 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2468,6 +2574,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2475,16 +2585,6 @@ packages: aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - are-we-there-yet@4.0.0: - resolution: {integrity: sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - deprecated: This package is no longer supported. - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -2494,8 +2594,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} @@ -2504,20 +2605,28 @@ packages: array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} - array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} arrify@1.0.1: @@ -2532,9 +2641,9 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} @@ -2542,14 +2651,13 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + axios@1.16.1: + resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==} + axios@1.4.0: resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} @@ -2630,8 +2738,8 @@ packages: benchmark@2.1.4: resolution: {integrity: sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==} - bin-links@4.0.1: - resolution: {integrity: sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==} + bin-links@4.0.4: + resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} bl@4.1.0: @@ -2643,6 +2751,9 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} @@ -2678,34 +2789,21 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - - byte-size@7.0.0: - resolution: {integrity: sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==} - engines: {node: '>=10'} + byte-size@8.1.1: + resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} + engines: {node: '>=12.17'} cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - cacache@17.0.5: - resolution: {integrity: sha512-Y/PRQevNSsjAPWykl9aeGz8Pr+OI6BYM9fYDNMvOkuUiG9IhG4LEmaYrZZZvioMUEQ+cBCxT0v8wrnCURccyKA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + cacache@18.0.4: + resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} + engines: {node: ^16.14.0 || >=18.0.0} cacache@20.0.4: resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==} @@ -2715,8 +2813,13 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -2751,10 +2854,6 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - chalk@4.1.0: resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} engines: {node: '>=10'} @@ -2785,9 +2884,6 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -2796,6 +2892,10 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} @@ -2837,12 +2937,8 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - cmd-shim@5.0.0: - resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - cmd-shim@6.0.1: - resolution: {integrity: sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==} + cmd-shim@6.0.3: + resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} co@4.6.0: @@ -2855,16 +2951,10 @@ packages: collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2900,49 +2990,51 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} - config-chain@1.1.12: - resolution: {integrity: sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==} - console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - conventional-changelog-angular@5.0.12: - resolution: {integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==} - engines: {node: '>=10'} - conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + conventional-changelog-conventionalcommits@5.0.0: resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} - conventional-changelog-core@4.2.4: - resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} - engines: {node: '>=10'} + conventional-changelog-core@5.0.1: + resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} + engines: {node: '>=14'} - conventional-changelog-preset-loader@2.3.4: - resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} - engines: {node: '>=10'} + conventional-changelog-preset-loader@3.0.0: + resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} + engines: {node: '>=14'} - conventional-changelog-writer@5.0.1: - resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==} - engines: {node: '>=10'} + conventional-changelog-writer@6.0.1: + resolution: {integrity: sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==} + engines: {node: '>=14'} hasBin: true - conventional-commits-filter@2.0.7: - resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} - engines: {node: '>=10'} + conventional-commits-filter@3.0.0: + resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} + engines: {node: '>=14'} conventional-commits-parser@3.2.4: resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} engines: {node: '>=10'} hasBin: true - conventional-recommended-bump@6.1.0: - resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==} - engines: {node: '>=10'} + conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + + conventional-recommended-bump@7.0.1: + resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} + engines: {node: '>=14'} hasBin: true convert-source-map@1.9.0: @@ -2966,14 +3058,19 @@ packages: ts-node: '>=10' typescript: '>=3' - cosmiconfig@7.0.0: - resolution: {integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==} - engines: {node: '>=10'} - cosmiconfig@8.1.3: resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} engines: {node: '>=14'} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2986,9 +3083,9 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -2999,6 +3096,18 @@ packages: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} @@ -3028,6 +3137,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -3039,6 +3157,14 @@ packages: dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dedent@1.6.0: resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} peerDependencies: @@ -3061,29 +3187,22 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} @@ -3091,10 +3210,6 @@ packages: resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} engines: {node: '>=4'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -3107,10 +3222,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -3123,20 +3234,20 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} - dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ejs@3.1.9: resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} @@ -3156,16 +3267,15 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -3174,8 +3284,8 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true @@ -3185,8 +3295,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -3211,11 +3321,12 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} esbuild-register@3.4.2: @@ -3253,18 +3364,24 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} - eslint-import-resolver-typescript@3.5.5: - resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-module-utils@2.7.4: - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3284,45 +3401,37 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.27.5: - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 peerDependenciesMeta: '@typescript-eslint/parser': optional: true - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint-visitor-keys@3.4.0: - resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@7.32.0: - resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} - engines: {node: ^10.12.0 || >=12.0.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true - espree@7.3.1: - resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} - engines: {node: ^10.12.0 || >=12.0.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -3337,10 +3446,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3355,17 +3460,9 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@5.0.0: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} @@ -3407,14 +3504,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - - fast-glob@3.2.7: - resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} - engines: {node: '>=8'} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -3452,10 +3541,6 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-url@3.0.0: - resolution: {integrity: sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==} - engines: {node: '>=8'} - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -3503,13 +3588,37 @@ packages: debug: optional: true + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + form-data@4.0.4: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + front-matter@4.0.2: + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -3521,9 +3630,9 @@ packages: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + engines: {node: '>=14.14'} fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} @@ -3536,6 +3645,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3544,25 +3658,16 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - gauge@5.0.0: - resolution: {integrity: sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - deprecated: This package is no longer supported. + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -3605,12 +3710,12 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} get-tsconfig@4.7.2: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} @@ -3620,36 +3725,44 @@ packages: engines: {node: '>=10'} hasBin: true + git-raw-commits@3.0.0: + resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} + engines: {node: '>=14'} + deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. + hasBin: true + git-remote-origin-url@2.0.0: resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} engines: {node: '>=4'} - git-semver-tags@4.1.1: - resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} - engines: {node: '>=10'} + git-semver-tags@5.0.1: + resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} + engines: {node: '>=14'} + deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. hasBin: true git-up@7.0.0: resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} - git-url-parse@13.1.0: - resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} + git-url-parse@14.0.0: + resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} gitconfiglocal@1.0.0: resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} - glob@7.1.4: - resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -3676,36 +3789,19 @@ packages: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.1.4: - resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} handlebars@4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} @@ -3719,10 +3815,6 @@ packages: has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3730,8 +3822,11 @@ packages: has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} has-symbols@1.0.3: @@ -3757,24 +3852,20 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - hosted-git-info@3.0.8: - resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} - engines: {node: '>=10'} - hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - hosted-git-info@5.2.1: - resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - hosted-git-info@6.1.1: - resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -3782,10 +3873,6 @@ packages: http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -3806,9 +3893,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - husky@7.0.4: resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} engines: {node: '>=12'} @@ -3829,22 +3913,18 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@5.0.1: - resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - ignore-walk@6.0.2: - resolution: {integrity: sha512-ezmQ1Dg2b3jVZh2Dh+ar6Eu2MqNSTkyb32HU2MAQQQX9tKM3q/UQ/9lf03lQ5hW+fOeoMnwxwkleZ0xcNp0/qg==} + ignore-walk@6.0.5: + resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3867,9 +3947,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -3880,52 +3957,58 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - init-package-json@3.0.2: - resolution: {integrity: sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} - engines: {node: '>=12.0.0'} + init-package-json@6.0.3: + resolution: {integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==} + engines: {node: ^16.14.0 || >=18.0.0} inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} - internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} ip-address@10.1.0: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} - ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true is-core-module@2.12.0: @@ -3935,10 +4018,22 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -3948,6 +4043,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -3956,6 +4055,10 @@ packages: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -3967,15 +4070,19 @@ packages: is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: @@ -3986,10 +4093,6 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} @@ -4002,19 +4105,20 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} @@ -4031,28 +4135,41 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} - is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} @@ -4061,9 +4178,16 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} + isexe@4.0.0: resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} engines: {node: '>=20'} @@ -4108,6 +4232,9 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} @@ -4406,6 +4533,10 @@ packages: resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-schema-ref-parser@9.0.9: resolution: {integrity: sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==} engines: {node: '>=10'} @@ -4459,9 +4590,9 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - lerna@6.6.1: - resolution: {integrity: sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA==} - engines: {node: ^14.15.0 || >=16.0.0} + lerna@8.2.4: + resolution: {integrity: sha512-0gaVWDIVT7fLfprfwpYcQajb7dBJv3EGavjG7zvJ+TmGx3/wovl5GklnSwM2/WeE0Z2wrIz7ndWhBcDUHVjOcQ==} + engines: {node: '>=18.0.0'} hasBin: true leven@3.1.0: @@ -4472,13 +4603,13 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libnpmaccess@6.0.3: - resolution: {integrity: sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + libnpmaccess@8.0.6: + resolution: {integrity: sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==} + engines: {node: ^16.14.0 || >=18.0.0} - libnpmpublish@6.0.4: - resolution: {integrity: sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + libnpmpublish@9.0.9: + resolution: {integrity: sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==} + engines: {node: ^16.14.0 || >=18.0.0} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4544,9 +4675,6 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -4563,6 +4691,9 @@ packages: loupe@3.2.0: resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.3.5: resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} engines: {node: 20 || >=22} @@ -4574,10 +4705,6 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - lru-cache@9.0.1: resolution: {integrity: sha512-C8QsKIN1UIXeOs3iWmiZ1lQY+EnKDojWd37fXy1aSbJvH4iSma1uy2OWuoB3m4SYRli5+CUjDv3Dij5DVoetmg==} engines: {node: 14 || >=16.14} @@ -4607,13 +4734,9 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - make-fetch-happen@11.0.3: - resolution: {integrity: sha512-oPLh5m10lRNNZDjJ2kP8UpboUx2uFXVaVweVe/lWut4iHWcQEmfqSVJt2ihZsFI8HbpwyyocaXbCAWf0g1ukIA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + make-fetch-happen@13.0.1: + resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} + engines: {node: ^16.14.0 || >=18.0.0} make-fetch-happen@15.0.5: resolution: {integrity: sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==} @@ -4641,10 +4764,6 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -4687,10 +4806,6 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@6.2.0: - resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} - engines: {node: '>=10'} - minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} @@ -4699,6 +4814,14 @@ packages: resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -4706,18 +4829,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - minipass-collect@2.0.1: resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} engines: {node: '>=16 || 14 >=14.17'} - minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - minipass-fetch@3.0.1: resolution: {integrity: sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4730,9 +4845,6 @@ packages: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} - minipass-json-stream@1.0.1: - resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} - minipass-pipeline@1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} @@ -4772,10 +4884,6 @@ packages: mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp-infer-owner@2.0.0: - resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} - engines: {node: '>=10'} - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -4798,13 +4906,19 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4824,12 +4938,13 @@ packages: resolution: {integrity: sha512-jAlSOFR1Bls963NmFwxeQkNTzqjUF0NThm8Le7eRIRGzFUVJuMOFZDLv5Y30W/Oaw+KEebEJLAigwO9gQHoEmw==} engines: {node: '>=10'} - node-addon-api@3.2.1: - resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -4843,35 +4958,38 @@ packages: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true + node-gyp@10.3.1: + resolution: {integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + node-gyp@12.2.0: resolution: {integrity: sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - node-gyp@9.3.1: - resolution: {integrity: sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - nopt@7.1.0: resolution: {integrity: sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + nopt@9.0.0: resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -4884,80 +5002,41 @@ packages: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} - normalize-package-data@4.0.1: - resolution: {integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - normalize-package-data@5.0.0: - resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-bundled@1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - npm-bundled@3.0.0: resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-install-checks@5.0.0: - resolution: {integrity: sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - npm-install-checks@6.1.1: - resolution: {integrity: sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==} + npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-normalize-package-bin@1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - - npm-normalize-package-bin@2.0.0: - resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - npm-normalize-package-bin@3.0.0: resolution: {integrity: sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-package-arg@10.1.0: - resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-package-arg@8.1.1: - resolution: {integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==} - engines: {node: '>=10'} - - npm-package-arg@9.1.2: - resolution: {integrity: sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - npm-packlist@5.1.1: - resolution: {integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - - npm-packlist@7.0.4: - resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-pick-manifest@7.0.2: - resolution: {integrity: sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + npm-package-arg@11.0.2: + resolution: {integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==} + engines: {node: ^16.14.0 || >=18.0.0} - npm-pick-manifest@8.0.1: - resolution: {integrity: sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==} + npm-packlist@8.0.2: + resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-registry-fetch@13.3.1: - resolution: {integrity: sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + npm-pick-manifest@9.1.0: + resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} + engines: {node: ^16.14.0 || >=18.0.0} - npm-registry-fetch@14.0.3: - resolution: {integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + npm-registry-fetch@17.1.0: + resolution: {integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==} + engines: {node: ^16.14.0 || >=18.0.0} npm-run-path@3.1.0: resolution: {integrity: sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==} @@ -4971,41 +5050,44 @@ packages: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - - npmlog@7.0.1: - resolution: {integrity: sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - deprecated: This package is no longer supported. - - nx@15.9.2: - resolution: {integrity: sha512-wtcs+wsuplSckvgk+bV+/XuGlo+sVWzSG0RpgWBjQYeqA3QsVFEAPVY66Z5cSoukDbTV77ddcAjEw+Rz8oOR1A==} + nx@20.8.4: + resolution: {integrity: sha512-/++x0OM3/UTmDR+wmPeV13tSxeTr+QGzj3flgtH9DiOPmQnn2CjHWAMZiOhcSh/hHoE/V3ySL4757InQUsVtjQ==} hasBin: true peerDependencies: - '@swc-node/register': ^1.4.2 - '@swc/core': ^1.2.173 + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 peerDependenciesMeta: '@swc-node/register': optional: true '@swc/core': optional: true - object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} obug@2.1.1: @@ -5030,10 +5112,14 @@ packages: resolution: {integrity: sha512-gOJXy5g3H3HlLpVNN+USrNK2i2KYBmDczk9Xk34u6JorwrGiDJZUj+al4S+i9TXdfUQ/ZaLxE59Xf3wqkxGfqA==} hasBin: true - optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.3.0: + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} + ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -5042,6 +5128,10 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} @@ -5118,14 +5208,12 @@ packages: resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} engines: {node: '>=8'} - pacote@13.6.2: - resolution: {integrity: sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pacote@15.1.1: - resolution: {integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + pacote@18.0.6: + resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true parent-module@1.0.1: @@ -5177,6 +5265,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-scurry@1.6.4: resolution: {integrity: sha512-Qp/9IHkdNiXJ3/Kon++At2nVpnhRiPq/aSvQN+H3U1WZbvNRK0RIQK/o4HMqPoXjpuGJUEWpHSs6Mnjxqh3TQg==} engines: {node: '>=16 || 14 >=14.17'} @@ -5242,6 +5334,20 @@ packages: platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss-selector-parser@6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} @@ -5258,28 +5364,21 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-organize-imports@3.2.2: - resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} + prettier-plugin-organize-imports@4.3.0: + resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==} peerDependencies: - '@volar/vue-language-plugin-pug': ^1.0.4 - '@volar/vue-typescript': ^1.0.4 prettier: '>=2.0' typescript: '>=2.9' + vue-tsc: ^2.1.0 || 3 peerDependenciesMeta: - '@volar/vue-language-plugin-pug': - optional: true - '@volar/vue-typescript': + vue-tsc: optional: true - prettier@2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} - engines: {node: '>=10.13.0'} + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} hasBin: true - pretty-format@29.4.3: - resolution: {integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5288,12 +5387,8 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - proc-log@2.0.1: - resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} proc-log@6.1.0: @@ -5303,19 +5398,15 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} + proggy@2.0.0: + resolution: {integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} promise-all-reject-late@1.0.1: resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} - promise-call-limit@1.0.2: - resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} + promise-call-limit@3.0.2: + resolution: {integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==} promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} @@ -5333,11 +5424,9 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - promzard@0.3.0: - resolution: {integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==} - - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + promzard@1.0.2: + resolution: {integrity: sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} @@ -5345,6 +5434,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -5376,32 +5469,14 @@ packages: react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - read-cmd-shim@3.0.0: - resolution: {integrity: sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - read-cmd-shim@4.0.0: resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - read-package-json-fast@2.0.3: - resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} - engines: {node: '>=10'} - read-package-json-fast@3.0.2: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - read-package-json@5.0.1: - resolution: {integrity: sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - - read-package-json@6.0.1: - resolution: {integrity: sha512-AaHqXxfAVa+fNL07x8iAghfKOds/XXsu7zoouIVsbm7PEbQ3nMWXlvjcbrNLjElnUHWQtAo4QEa0RXuvD4XlpA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -5418,9 +5493,9 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} - read@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} - engines: {node: '>=0.8'} + read@3.0.1: + resolution: {integrity: sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -5429,14 +5504,14 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.3.0: - resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -5450,14 +5525,10 @@ packages: regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} - regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -5510,6 +5581,11 @@ packages: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true + resolve@2.0.0-next.7: + resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==} + engines: {node: '>= 0.4'} + hasBin: true + restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -5561,14 +5637,23 @@ packages: rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5585,11 +5670,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.3.4: - resolution: {integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==} - engines: {node: '>=10'} - hasBin: true - semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} @@ -5605,9 +5685,26 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + engines: {node: '>=10'} + hasBin: true + set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -5620,8 +5717,21 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -5633,10 +5743,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sigstore@1.2.0: - resolution: {integrity: sha512-Fr9+W1nkBSIZCkJQR7jDn/zI0UXNsVpp+7mDQkCnZOIxG9p6yNXBx9xntHsfUyYHE55XDkkVV3+rYbrkzAeesA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true + sigstore@2.3.1: + resolution: {integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==} + engines: {node: ^16.14.0 || >=18.0.0} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5645,30 +5754,14 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - socks@2.8.7: resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} @@ -5709,17 +5802,16 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - ssri@10.0.3: - resolution: {integrity: sha512-lJtX/BFPI/VEtxZmLfeh7pzisIs6micwZ3eruD3+ds9aPsXKlYpwDS2Q7omD6WC42WO9+bnUSzlMmfv8uK8meg==} + ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} ssri@13.0.1: resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} engines: {node: ^20.17.0 || >=22.9.0} - ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} stack-trace@1.0.0-pre2: resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==} @@ -5738,6 +5830,10 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -5746,15 +5842,21 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} - string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -5766,6 +5868,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -5793,15 +5899,6 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - strong-log-transformer@2.1.0: - resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} - engines: {node: '>=4'} - hasBin: true - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5814,18 +5911,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} - engines: {node: ^14.18.0 || >=16.0.0} - - table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -5833,13 +5918,8 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar@6.1.11: - resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} - engines: {node: '>= 10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - - tar@6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -5851,14 +5931,6 @@ packages: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} engines: {node: '>=4'} - temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - - tempy@1.0.0: - resolution: {integrity: sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==} - engines: {node: '>=10'} - test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -5879,9 +5951,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -5896,6 +5965,10 @@ packages: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -5950,6 +6023,12 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-essentials@7.0.3: resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} peerDependencies: @@ -5990,28 +6069,23 @@ packages: '@swc/wasm': optional: true - tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tuf-js@2.2.1: + resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} + engines: {node: ^16.14.0 || >=18.0.0} - tuf-js@1.1.3: - resolution: {integrity: sha512-jGYi5nG/kqgfTFQSdoN6PW9eIn+XRZqdXku+fSwNk6UpWIsWaV7pzAqPgFr85edOPhoyJDyBqCS+DCnHroMvrw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + turbo@2.9.14: + resolution: {integrity: sha512-BQqXRr4UoWI3UPFrtznCLykYHxwxWh53iCB57x092jPMjIlW1wnm3N895g5irpiXmnxUhREBB0n6+y8BHhs4nw==} + hasBin: true type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -6021,10 +6095,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -6049,17 +6119,25 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript@4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} - hasBin: true - typescript@5.1.3: resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} engines: {node: '>=14.17'} @@ -6075,8 +6153,9 @@ packages: engines: {node: '>=0.8.0'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -6097,26 +6176,14 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - unique-slug@4.0.0: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - universal-user-agent@6.0.0: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} @@ -6124,6 +6191,9 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + unrs-resolver@1.12.2: + resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} + upath@2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -6149,16 +6219,14 @@ packages: util-extend@1.0.3: resolution: {integrity: sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==} - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} @@ -6170,15 +6238,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - - validate-npm-package-name@4.0.0: - resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} vite-node@3.2.4: @@ -6288,8 +6349,8 @@ packages: jsdom: optional: true - walk-up-path@1.0.0: - resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} + walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -6303,11 +6364,20 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} - which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + which-typed-array@1.1.21: + resolution: {integrity: sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw==} engines: {node: '>= 0.4'} which@2.0.2: @@ -6315,9 +6385,9 @@ packages: engines: {node: '>= 8'} hasBin: true - which@3.0.0: - resolution: {integrity: sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} hasBin: true which@6.0.1: @@ -6333,8 +6403,8 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} wordwrap@1.0.0: @@ -6344,22 +6414,22 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - write-file-atomic@4.0.1: - resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16} - write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - write-file-atomic@5.0.0: - resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} write-json-file@3.2.0: @@ -6388,9 +6458,10 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true yargs-parser@20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} @@ -6443,10 +6514,6 @@ snapshots: call-me-maybe: 1.0.2 js-yaml: 4.1.0 - '@babel/code-frame@7.12.11': - dependencies: - '@babel/highlight': 7.18.6 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -6490,7 +6557,7 @@ snapshots: '@babel/traverse': 7.28.0 '@babel/types': 7.28.1 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -6723,12 +6790,6 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.1 - '@babel/highlight@7.18.6': - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - '@babel/parser@7.21.4': dependencies: '@babel/types': 7.22.5 @@ -7435,7 +7496,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.1 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -7572,6 +7633,19 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.5.0 + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.5.0 + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.5.0 + '@esbuild/aix-ppc64@0.25.9': optional: true @@ -7716,43 +7790,59 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@7.32.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': dependencies: - eslint: 7.32.0 - eslint-visitor-keys: 3.4.0 + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.5.0': {} + '@eslint-community/regexpp@4.12.2': {} - '@eslint/eslintrc@0.4.3': + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.4.1 - espree: 7.3.1 + espree: 9.6.1 globals: 13.20.0 - ignore: 4.0.6 + ignore: 5.2.4 import-fresh: 3.3.0 - js-yaml: 3.14.1 + js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@gar/promise-retry@1.0.3': {} + '@eslint/js@8.57.1': {} - '@gar/promisify@1.1.3': {} + '@gar/promise-retry@1.0.3': {} - '@humanwhocodes/config-array@0.5.0': + '@humanwhocodes/config-array@0.13.0': dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@humanwhocodes/object-schema@1.2.1': {} + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} '@hutson/parse-repository-url@3.0.2': {} + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.3 @@ -7787,7 +7877,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.5.0(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4))': + '@jest/core@29.5.0(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3))': dependencies: '@jest/console': 29.5.0 '@jest/reporters': 29.5.0 @@ -7801,7 +7891,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + jest-config: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -8136,132 +8226,98 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@lerna/child-process@6.6.1': - dependencies: - chalk: 4.1.2 - execa: 5.1.1 - strong-log-transformer: 2.1.0 - - '@lerna/create@6.6.1': - dependencies: - '@lerna/child-process': 6.6.1 - dedent: 0.7.0 - fs-extra: 9.1.0 - init-package-json: 3.0.2 - npm-package-arg: 8.1.1 - p-reduce: 2.1.0 - pacote: 13.6.2 - pify: 5.0.0 - semver: 7.4.0 - slash: 3.0.0 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 4.0.0 - yargs-parser: 20.2.4 - transitivePeerDependencies: - - bluebird - - supports-color - - '@lerna/legacy-package-management@6.6.1(encoding@0.1.13)(nx@15.9.2)': + '@lerna/create@8.2.4(encoding@0.1.13)(typescript@5.8.3)': dependencies: - '@npmcli/arborist': 6.2.3 - '@npmcli/run-script': 4.1.7 - '@nrwl/devkit': 15.9.2(nx@15.9.2) - '@octokit/rest': 19.0.3(encoding@0.1.13) - byte-size: 7.0.0 + '@npmcli/arborist': 7.5.4 + '@npmcli/package-json': 5.2.0 + '@npmcli/run-script': 8.1.0 + '@nx/devkit': 20.8.4(nx@20.8.4) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 20.1.2 + aproba: 2.0.0 + byte-size: 8.1.1 chalk: 4.1.0 clone-deep: 4.0.1 - cmd-shim: 5.0.0 + cmd-shim: 6.0.3 + color-support: 1.1.3 columnify: 1.6.0 - config-chain: 1.1.12 - conventional-changelog-core: 4.2.4 - conventional-recommended-bump: 6.1.0 - cosmiconfig: 7.0.0 - dedent: 0.7.0 - dot-prop: 6.0.1 + console-control-strings: 1.1.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 9.0.0(typescript@5.8.3) + dedent: 1.5.3 execa: 5.0.0 - file-url: 3.0.0 - find-up: 5.0.0 - fs-extra: 9.1.0 - get-port: 5.1.1 + fs-extra: 11.3.5 get-stream: 6.0.0 - git-url-parse: 13.1.0 - glob-parent: 5.1.2 - globby: 11.1.0 - graceful-fs: 4.2.10 + git-url-parse: 14.0.0 + glob-parent: 6.0.2 + graceful-fs: 4.2.11 has-unicode: 2.0.1 - inquirer: 8.2.4 - is-ci: 2.0.0 + ini: 1.3.8 + init-package-json: 6.0.3 + inquirer: 8.2.5 + is-ci: 3.0.1 is-stream: 2.0.0 - libnpmpublish: 6.0.4 + js-yaml: 4.1.0 + libnpmpublish: 9.0.9 load-json-file: 6.2.0 - make-dir: 3.1.0 + make-dir: 4.0.0 minimatch: 3.0.5 multimatch: 5.0.0 node-fetch: 2.6.7(encoding@0.1.13) - npm-package-arg: 8.1.1 - npm-packlist: 5.1.1 - npm-registry-fetch: 14.0.3 - npmlog: 6.0.2 + npm-package-arg: 11.0.2 + npm-packlist: 8.0.2 + npm-registry-fetch: 17.1.0 + nx: 20.8.4 p-map: 4.0.0 p-map-series: 2.1.0 p-queue: 6.6.2 - p-waterfall: 2.1.1 - pacote: 13.6.2 + p-reduce: 2.1.0 + pacote: 18.0.6 pify: 5.0.0 - pretty-format: 29.4.3 - read-cmd-shim: 3.0.0 - read-package-json: 5.0.1 + read-cmd-shim: 4.0.0 resolve-from: 5.0.0 - semver: 7.3.8 + rimraf: 4.4.1 + semver: 7.8.1 + set-blocking: 2.0.0 signal-exit: 3.0.7 slash: 3.0.0 - ssri: 9.0.1 - strong-log-transformer: 2.1.0 - tar: 6.1.11 + ssri: 10.0.6 + string-width: 4.2.3 + tar: 6.2.1 temp-dir: 1.0.0 - tempy: 1.0.0 + through: 2.3.8 + tinyglobby: 0.2.12 upath: 2.0.1 - uuid: 8.3.2 - write-file-atomic: 4.0.1 + uuid: 10.0.0 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.1 + wide-align: 1.1.5 + write-file-atomic: 5.0.1 write-pkg: 4.0.0 - yargs: 16.2.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - babel-plugin-macros - bluebird + - debug - encoding - - nx - supports-color + - typescript - '@moonrepo/cli@1.37.3': + '@napi-rs/wasm-runtime@0.2.4': dependencies: - detect-libc: 2.0.4 - optionalDependencies: - '@moonrepo/core-linux-arm64-gnu': 1.37.3 - '@moonrepo/core-linux-arm64-musl': 1.37.3 - '@moonrepo/core-linux-x64-gnu': 1.37.3 - '@moonrepo/core-linux-x64-musl': 1.37.3 - '@moonrepo/core-macos-arm64': 1.37.3 - '@moonrepo/core-macos-x64': 1.37.3 - '@moonrepo/core-windows-x64-msvc': 1.37.3 - - '@moonrepo/core-linux-arm64-gnu@1.37.3': - optional: true + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.9.0 - '@moonrepo/core-linux-arm64-musl@1.37.3': - optional: true - - '@moonrepo/core-linux-x64-gnu@1.37.3': - optional: true - - '@moonrepo/core-linux-x64-musl@1.37.3': - optional: true - - '@moonrepo/core-macos-arm64@1.37.3': - optional: true - - '@moonrepo/core-macos-x64@1.37.3': - optional: true - - '@moonrepo/core-windows-x64-msvc@1.37.3': + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 optional: true '@nodelib/fs.scandir@2.1.5': @@ -8276,6 +8332,18 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + '@nolyfill/is-core-module@1.0.39': {} + + '@npmcli/agent@2.2.2': + dependencies: + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + '@npmcli/agent@4.0.0': dependencies: agent-base: 7.1.4 @@ -8286,91 +8354,75 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/arborist@6.2.3': + '@npmcli/arborist@7.5.4': dependencies: '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/fs': 3.1.0 - '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/fs': 3.1.1 + '@npmcli/installed-package-contents': 2.1.0 '@npmcli/map-workspaces': 3.0.3 - '@npmcli/metavuln-calculator': 5.0.1 + '@npmcli/metavuln-calculator': 7.1.1 '@npmcli/name-from-folder': 2.0.0 '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 3.0.0 - '@npmcli/query': 3.0.0 - '@npmcli/run-script': 6.0.0 - bin-links: 4.0.1 - cacache: 17.0.5 + '@npmcli/package-json': 5.2.0 + '@npmcli/query': 3.1.0 + '@npmcli/redact': 2.0.1 + '@npmcli/run-script': 8.1.0 + bin-links: 4.0.4 + cacache: 18.0.4 common-ancestor-path: 1.0.1 - hosted-git-info: 6.1.1 - json-parse-even-better-errors: 3.0.0 + hosted-git-info: 7.0.2 + json-parse-even-better-errors: 3.0.2 json-stringify-nice: 1.1.4 - minimatch: 6.2.0 - nopt: 7.1.0 - npm-install-checks: 6.1.1 - npm-package-arg: 10.1.0 - npm-pick-manifest: 8.0.1 - npm-registry-fetch: 14.0.3 - npmlog: 7.0.1 - pacote: 15.1.1 + lru-cache: 10.4.3 + minimatch: 9.0.9 + nopt: 7.2.1 + npm-install-checks: 6.3.0 + npm-package-arg: 11.0.2 + npm-pick-manifest: 9.1.0 + npm-registry-fetch: 17.1.0 + pacote: 18.0.6 parse-conflict-json: 3.0.1 - proc-log: 3.0.0 + proc-log: 4.2.0 + proggy: 2.0.0 promise-all-reject-late: 1.0.1 - promise-call-limit: 1.0.2 + promise-call-limit: 3.0.2 read-package-json-fast: 3.0.2 - semver: 7.4.0 - ssri: 10.0.3 + semver: 7.8.1 + ssri: 10.0.6 treeverse: 3.0.0 - walk-up-path: 1.0.0 + walk-up-path: 3.0.1 transitivePeerDependencies: - bluebird - supports-color - '@npmcli/fs@2.1.2': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.7.2 - - '@npmcli/fs@3.1.0': + '@npmcli/fs@3.1.1': dependencies: - semver: 7.4.0 + semver: 7.8.1 '@npmcli/fs@5.0.0': dependencies: semver: 7.7.2 - '@npmcli/git@3.0.2': + '@npmcli/git@5.0.8': dependencies: - '@npmcli/promise-spawn': 3.0.0 - lru-cache: 7.18.3 - mkdirp: 1.0.4 - npm-pick-manifest: 7.0.2 - proc-log: 2.0.1 + '@npmcli/promise-spawn': 7.0.2 + ini: 4.1.3 + lru-cache: 10.4.3 + npm-pick-manifest: 9.1.0 + proc-log: 4.2.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.4.0 - which: 2.0.2 + semver: 7.8.1 + which: 4.0.0 transitivePeerDependencies: - bluebird - '@npmcli/git@4.0.4': - dependencies: - '@npmcli/promise-spawn': 6.0.2 - lru-cache: 7.18.3 - npm-pick-manifest: 8.0.1 - proc-log: 3.0.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.7.2 - which: 3.0.0 - transitivePeerDependencies: - - bluebird - - '@npmcli/installed-package-contents@1.0.7': + '@npmcli/installed-package-contents@2.0.2': dependencies: - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.0 - '@npmcli/installed-package-contents@2.0.2': + '@npmcli/installed-package-contents@2.1.0': dependencies: npm-bundled: 3.0.0 npm-normalize-package-bin: 3.0.0 @@ -8382,223 +8434,166 @@ snapshots: minimatch: 7.4.6 read-package-json-fast: 3.0.2 - '@npmcli/metavuln-calculator@5.0.1': + '@npmcli/metavuln-calculator@7.1.1': dependencies: - cacache: 17.0.5 - json-parse-even-better-errors: 3.0.0 - pacote: 15.1.1 - semver: 7.4.0 + cacache: 18.0.4 + json-parse-even-better-errors: 3.0.2 + pacote: 18.0.6 + proc-log: 4.2.0 + semver: 7.8.1 transitivePeerDependencies: - bluebird - supports-color - '@npmcli/move-file@2.0.1': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - '@npmcli/name-from-folder@2.0.0': {} - '@npmcli/node-gyp@2.0.0': {} - '@npmcli/node-gyp@3.0.0': {} - '@npmcli/package-json@3.0.0': + '@npmcli/package-json@5.2.0': dependencies: + '@npmcli/git': 5.0.8 + glob: 10.5.0 + hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.0 + normalize-package-data: 6.0.2 + proc-log: 4.2.0 + semver: 7.8.1 + transitivePeerDependencies: + - bluebird - '@npmcli/promise-spawn@3.0.0': - dependencies: - infer-owner: 1.0.4 - - '@npmcli/promise-spawn@6.0.2': + '@npmcli/promise-spawn@7.0.2': dependencies: - which: 3.0.0 + which: 4.0.0 - '@npmcli/query@3.0.0': + '@npmcli/query@3.1.0': dependencies: postcss-selector-parser: 6.0.11 - '@npmcli/redact@4.0.0': {} + '@npmcli/redact@2.0.1': {} - '@npmcli/run-script@4.1.7': - dependencies: - '@npmcli/node-gyp': 2.0.0 - '@npmcli/promise-spawn': 3.0.0 - node-gyp: 9.3.1 - read-package-json-fast: 2.0.3 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color + '@npmcli/redact@4.0.0': {} - '@npmcli/run-script@6.0.0': + '@npmcli/run-script@8.1.0': dependencies: '@npmcli/node-gyp': 3.0.0 - '@npmcli/promise-spawn': 6.0.2 - node-gyp: 9.3.1 - read-package-json-fast: 3.0.2 - which: 3.0.0 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.2 + node-gyp: 10.3.1 + proc-log: 4.2.0 + which: 4.0.0 transitivePeerDependencies: - bluebird - supports-color - '@nrwl/cli@15.9.2': - dependencies: - nx: 15.9.2 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - - '@nrwl/devkit@15.9.2(nx@15.9.2)': + '@nx/devkit@20.8.4(nx@20.8.4)': dependencies: ejs: 3.1.9 + enquirer: 2.3.6 ignore: 5.2.4 - nx: 15.9.2 - semver: 7.3.4 + minimatch: 9.0.3 + nx: 20.8.4 + semver: 7.8.1 tmp: 0.2.1 tslib: 2.5.0 + yargs-parser: 21.1.1 - '@nrwl/nx-darwin-arm64@15.9.2': + '@nx/nx-darwin-arm64@20.8.4': optional: true - '@nrwl/nx-darwin-x64@15.9.2': + '@nx/nx-darwin-x64@20.8.4': optional: true - '@nrwl/nx-linux-arm-gnueabihf@15.9.2': + '@nx/nx-freebsd-x64@20.8.4': optional: true - '@nrwl/nx-linux-arm64-gnu@15.9.2': + '@nx/nx-linux-arm-gnueabihf@20.8.4': optional: true - '@nrwl/nx-linux-arm64-musl@15.9.2': + '@nx/nx-linux-arm64-gnu@20.8.4': optional: true - '@nrwl/nx-linux-x64-gnu@15.9.2': + '@nx/nx-linux-arm64-musl@20.8.4': optional: true - '@nrwl/nx-linux-x64-musl@15.9.2': + '@nx/nx-linux-x64-gnu@20.8.4': optional: true - '@nrwl/nx-win32-arm64-msvc@15.9.2': + '@nx/nx-linux-x64-musl@20.8.4': optional: true - '@nrwl/nx-win32-x64-msvc@15.9.2': + '@nx/nx-win32-arm64-msvc@20.8.4': optional: true - '@nrwl/tao@15.9.2': - dependencies: - nx: 15.9.2 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug + '@nx/nx-win32-x64-msvc@20.8.4': + optional: true - '@octokit/auth-token@3.0.3': - dependencies: - '@octokit/types': 9.0.0 + '@octokit/auth-token@4.0.0': {} - '@octokit/core@4.2.0(encoding@0.1.13)': + '@octokit/core@5.2.2': dependencies: - '@octokit/auth-token': 3.0.3 - '@octokit/graphql': 5.0.5(encoding@0.1.13) - '@octokit/request': 6.2.3(encoding@0.1.13) - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.0.0 + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.1 + '@octokit/request': 8.4.1 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - '@octokit/endpoint@7.0.5': + '@octokit/endpoint@9.0.6': dependencies: - '@octokit/types': 9.0.0 - is-plain-object: 5.0.0 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.0 - '@octokit/graphql@5.0.5(encoding@0.1.13)': + '@octokit/graphql@7.1.1': dependencies: - '@octokit/request': 6.2.3(encoding@0.1.13) - '@octokit/types': 9.0.0 + '@octokit/request': 8.4.1 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - - '@octokit/openapi-types@12.11.0': {} - '@octokit/openapi-types@14.0.0': {} - - '@octokit/openapi-types@16.0.0': {} + '@octokit/openapi-types@24.2.0': {} '@octokit/plugin-enterprise-rest@6.0.1': {} - '@octokit/plugin-paginate-rest@3.1.0(@octokit/core@4.2.0(encoding@0.1.13))': + '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)': dependencies: - '@octokit/core': 4.2.0(encoding@0.1.13) - '@octokit/types': 6.41.0 + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 - '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.0(encoding@0.1.13))': + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)': dependencies: - '@octokit/core': 4.2.0(encoding@0.1.13) + '@octokit/core': 5.2.2 - '@octokit/plugin-rest-endpoint-methods@6.8.1(@octokit/core@4.2.0(encoding@0.1.13))': + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)': dependencies: - '@octokit/core': 4.2.0(encoding@0.1.13) - '@octokit/types': 8.2.1 - deprecation: 2.3.1 + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 - '@octokit/request-error@3.0.3': + '@octokit/request-error@5.1.1': dependencies: - '@octokit/types': 9.0.0 + '@octokit/types': 13.10.0 deprecation: 2.3.1 once: 1.4.0 - '@octokit/request@6.2.3(encoding@0.1.13)': + '@octokit/request@8.4.1': dependencies: - '@octokit/endpoint': 7.0.5 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.0.0 - is-plain-object: 5.0.0 - node-fetch: 2.6.7(encoding@0.1.13) + '@octokit/endpoint': 9.0.6 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - '@octokit/rest@19.0.3(encoding@0.1.13)': + '@octokit/rest@20.1.2': dependencies: - '@octokit/core': 4.2.0(encoding@0.1.13) - '@octokit/plugin-paginate-rest': 3.1.0(@octokit/core@4.2.0(encoding@0.1.13)) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.0(encoding@0.1.13)) - '@octokit/plugin-rest-endpoint-methods': 6.8.1(@octokit/core@4.2.0(encoding@0.1.13)) - transitivePeerDependencies: - - encoding - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - - '@octokit/types@8.2.1': - dependencies: - '@octokit/openapi-types': 14.0.0 - - '@octokit/types@9.0.0': - dependencies: - '@octokit/openapi-types': 16.0.0 + '@octokit/core': 5.2.2 + '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.2) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.2) + '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.2) - '@parcel/watcher@2.0.4': + '@octokit/types@13.10.0': dependencies: - node-addon-api: 3.2.1 - node-gyp-build: 4.6.0 + '@octokit/openapi-types': 24.2.0 - '@pkgr/utils@2.3.1': - dependencies: - cross-spawn: 7.0.3 - is-glob: 4.0.3 - open: 8.4.2 - picocolors: 1.1.1 - tiny-glob: 0.2.9 - tslib: 2.5.0 + '@pkgjs/parseargs@0.11.0': + optional: true '@rollup/plugin-commonjs@25.0.7(rollup@4.48.1)': dependencies: @@ -8628,11 +8623,11 @@ snapshots: optionalDependencies: rollup: 4.48.1 - '@rollup/plugin-typescript@11.1.5(rollup@4.48.1)(tslib@2.5.0)(typescript@4.9.4)': + '@rollup/plugin-typescript@11.1.5(rollup@4.48.1)(tslib@2.5.0)(typescript@5.8.3)': dependencies: '@rollup/pluginutils': 5.0.2(rollup@4.48.1) resolve: 1.22.2 - typescript: 4.9.4 + typescript: 5.8.3 optionalDependencies: rollup: 4.48.1 tslib: 2.5.0 @@ -8713,7 +8708,39 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.48.1': optional: true - '@sigstore/protobuf-specs@0.1.0': {} + '@rtsao/scc@1.1.0': {} + + '@sigstore/bundle@2.3.2': + dependencies: + '@sigstore/protobuf-specs': 0.3.3 + + '@sigstore/core@1.1.0': {} + + '@sigstore/protobuf-specs@0.3.3': {} + + '@sigstore/sign@2.3.2': + dependencies: + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 + make-fetch-happen: 13.0.1 + proc-log: 4.2.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@2.3.4': + dependencies: + '@sigstore/protobuf-specs': 0.3.3 + tuf-js: 2.2.1 + transitivePeerDependencies: + - supports-color + + '@sigstore/verify@1.2.1': + dependencies: + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 '@sinclair/typebox@0.25.24': {} @@ -8737,8 +8764,6 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@tootallnate/once@2.0.0': {} - '@total-typescript/shoehorn@0.1.1': {} '@tsconfig/node10@1.0.9': {} @@ -8749,12 +8774,39 @@ snapshots: '@tsconfig/node16@1.0.3': {} - '@tufjs/canonical-json@1.0.0': {} + '@tufjs/canonical-json@2.0.0': {} - '@tufjs/models@1.0.2': + '@tufjs/models@2.0.1': dependencies: - '@tufjs/canonical-json': 1.0.0 - minimatch: 8.0.4 + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.9 + + '@turbo/darwin-64@2.9.14': + optional: true + + '@turbo/darwin-arm64@2.9.14': + optional: true + + '@turbo/linux-64@2.9.14': + optional: true + + '@turbo/linux-arm64@2.9.14': + optional: true + + '@turbo/windows-64@2.9.14': + optional: true + + '@turbo/windows-arm64@2.9.14': + optional: true + + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.5.0 + optional: true + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.5.0 '@types/babel__core@7.20.0': dependencies: @@ -8863,14 +8915,10 @@ snapshots: '@types/normalize-package-data@2.4.1': {} - '@types/parse-json@4.0.0': {} - '@types/prettier@2.7.2': {} '@types/resolve@1.20.2': {} - '@types/semver@7.3.13': {} - '@types/stack-trace@0.0.30': {} '@types/stack-utils@2.0.1': {} @@ -8889,89 +8937,168 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.58.0(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint@7.32.0)(typescript@4.9.4)': + '@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.58.0(eslint@7.32.0)(typescript@4.9.4) - '@typescript-eslint/scope-manager': 5.58.0 - '@typescript-eslint/type-utils': 5.58.0(eslint@7.32.0)(typescript@4.9.4) - '@typescript-eslint/utils': 5.58.0(eslint@7.32.0)(typescript@4.9.4) - debug: 4.3.4 - eslint: 7.32.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.4.0 - tsutils: 3.21.0(typescript@4.9.4) - optionalDependencies: - typescript: 4.9.4 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.60.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.60.0 + '@typescript-eslint/type-utils': 8.60.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.60.0(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.60.0 + eslint: 8.57.1 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4)': + '@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 5.58.0 - '@typescript-eslint/types': 5.58.0 - '@typescript-eslint/typescript-estree': 5.58.0(typescript@4.9.4) - debug: 4.3.4 - eslint: 7.32.0 - optionalDependencies: - typescript: 4.9.4 + '@typescript-eslint/scope-manager': 8.60.0 + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.60.0 + debug: 4.4.3 + eslint: 8.57.1 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.58.0': + '@typescript-eslint/project-service@8.60.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 5.58.0 - '@typescript-eslint/visitor-keys': 5.58.0 + '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@5.8.3) + '@typescript-eslint/types': 8.60.0 + debug: 4.4.3 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color - '@typescript-eslint/type-utils@5.58.0(eslint@7.32.0)(typescript@4.9.4)': + '@typescript-eslint/scope-manager@8.60.0': dependencies: - '@typescript-eslint/typescript-estree': 5.58.0(typescript@4.9.4) - '@typescript-eslint/utils': 5.58.0(eslint@7.32.0)(typescript@4.9.4) - debug: 4.4.1 - eslint: 7.32.0 - tsutils: 3.21.0(typescript@4.9.4) - optionalDependencies: - typescript: 4.9.4 + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/visitor-keys': 8.60.0 + + '@typescript-eslint/tsconfig-utils@8.60.0(typescript@5.8.3)': + dependencies: + typescript: 5.8.3 + + '@typescript-eslint/type-utils@8.60.0(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.60.0(eslint@8.57.1)(typescript@5.8.3) + debug: 4.4.3 + eslint: 8.57.1 + ts-api-utils: 2.5.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.58.0': {} + '@typescript-eslint/types@8.60.0': {} - '@typescript-eslint/typescript-estree@5.58.0(typescript@4.9.4)': + '@typescript-eslint/typescript-estree@8.60.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 5.58.0 - '@typescript-eslint/visitor-keys': 5.58.0 - debug: 4.4.1 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.4.0 - tsutils: 3.21.0(typescript@4.9.4) - optionalDependencies: - typescript: 4.9.4 + '@typescript-eslint/project-service': 8.60.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@5.8.3) + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/visitor-keys': 8.60.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.1 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.58.0(eslint@7.32.0)(typescript@4.9.4)': + '@typescript-eslint/utils@8.60.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.58.0 - '@typescript-eslint/types': 5.58.0 - '@typescript-eslint/typescript-estree': 5.58.0(typescript@4.9.4) - eslint: 7.32.0 - eslint-scope: 5.1.1 - semver: 7.4.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.60.0 + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.8.3) + eslint: 8.57.1 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@5.58.0': + '@typescript-eslint/visitor-keys@8.60.0': dependencies: - '@typescript-eslint/types': 5.58.0 - eslint-visitor-keys: 3.4.0 + '@typescript-eslint/types': 8.60.0 + eslint-visitor-keys: 5.0.1 + + '@ungap/structured-clone@1.3.1': {} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + optional: true + + '@unrs/resolver-binding-android-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + optional: true '@vitest/expect@3.2.4': dependencies: @@ -8990,21 +9117,21 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@20.19.11))': + '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@20.19.11)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.3(@types/node@20.19.11) + vite: 7.1.3(@types/node@20.19.11)(yaml@2.9.0) - '@vitest/mocker@4.0.18(vite@7.1.3(@types/node@20.19.11))': + '@vitest/mocker@4.0.18(vite@7.1.3(@types/node@20.19.11)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.3(@types/node@20.19.11) + vite: 7.1.3(@types/node@20.19.11)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -9056,12 +9183,12 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} - '@yarnpkg/parsers@3.0.0-rc.42': + '@yarnpkg/parsers@3.0.2': dependencies: js-yaml: 3.14.1 tslib: 2.5.0 - '@zkochan/js-yaml@0.0.6': + '@zkochan/js-yaml@0.0.7': dependencies: argparse: 2.0.1 @@ -9070,44 +9197,28 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abbrev@1.1.1: {} - abbrev@2.0.0: {} abbrev@4.0.0: {} - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - acorn-jsx@5.3.2(acorn@7.4.1): + acorn-jsx@5.3.2(acorn@8.10.0): dependencies: - acorn: 7.4.1 + acorn: 8.10.0 acorn-walk@8.3.2: {} - acorn@7.4.1: {} - acorn@8.10.0: {} add-stream@1.0.0: {} agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color agent-base@7.1.4: {} - agentkeepalive@4.3.0: - dependencies: - debug: 4.4.1 - depd: 2.0.0 - humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color - aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -9135,9 +9246,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -9145,6 +9254,8 @@ snapshots: ansi-styles@5.2.0: {} + ansi-styles@6.2.3: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -9152,16 +9263,6 @@ snapshots: aproba@2.0.0: {} - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - are-we-there-yet@4.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 4.3.0 - arg@4.1.3: {} argparse@1.0.10: @@ -9170,38 +9271,61 @@ snapshots: argparse@2.0.1: {} - array-buffer-byte-length@1.0.0: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 + call-bound: 1.0.4 + is-array-buffer: 3.0.5 array-differ@3.0.0: {} array-ify@1.0.0: {} - array-includes@3.1.6: + array-includes@3.1.9: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 - is-string: 1.0.7 + is-string: 1.1.1 + math-intrinsics: 1.1.0 array-union@2.1.0: {} - array.prototype.flat@1.3.1: + array.prototype.findlastindex@1.2.6: + 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.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 - array.prototype.flatmap@1.3.1: + array.prototype.flatmap@1.3.3: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-shim-unscopables: 1.0.0 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 arrify@1.0.1: {} @@ -9209,15 +9333,25 @@ snapshots: assertion-error@2.0.1: {} - astral-regex@2.0.0: {} + async-function@1.0.0: {} async@3.2.4: {} asynckit@0.4.0: {} - at-least-node@1.0.0: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 - available-typed-arrays@1.0.5: {} + axios@1.16.1: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.5 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + - supports-color axios@1.4.0: dependencies: @@ -9402,12 +9536,12 @@ snapshots: lodash: 4.17.21 platform: 1.3.6 - bin-links@4.0.1: + bin-links@4.0.4: dependencies: - cmd-shim: 6.0.1 + cmd-shim: 6.0.3 npm-normalize-package-bin: 3.0.0 read-cmd-shim: 4.0.0 - write-file-atomic: 5.0.0 + write-file-atomic: 5.0.1 bl@4.1.0: dependencies: @@ -9424,6 +9558,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@2.1.1: + dependencies: + balanced-match: 1.0.2 + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -9465,63 +9603,26 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - builtin-modules@3.3.0: {} - builtins@1.0.3: {} - - builtins@5.0.1: - dependencies: - semver: 7.4.0 - - byte-size@7.0.0: {} + byte-size@8.1.1: {} cac@6.7.14: {} - cacache@16.1.3: - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.1.11 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - - cacache@17.0.5: + cacache@18.0.4: dependencies: - '@npmcli/fs': 3.1.0 + '@npmcli/fs': 3.1.1 fs-minipass: 3.0.1 - glob: 9.3.5 - lru-cache: 7.18.3 - minipass: 4.2.8 - minipass-collect: 1.0.2 + glob: 10.5.0 + lru-cache: 10.4.3 + minipass: 7.1.3 + minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 p-map: 4.0.0 - promise-inflight: 1.0.1 - ssri: 10.0.3 - tar: 6.1.11 + ssri: 10.0.6 + tar: 6.2.1 unique-filename: 3.0.0 - transitivePeerDependencies: - - bluebird cacache@20.0.4: dependencies: @@ -9541,9 +9642,16 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.2: + call-bind@1.0.9: dependencies: - function-bind: 1.1.2 + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 call-me-maybe@1.0.2: {} @@ -9574,12 +9682,6 @@ snapshots: chai@6.2.2: {} - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - chalk@4.1.0: dependencies: ansi-styles: 4.3.0 @@ -9602,12 +9704,12 @@ snapshots: chownr@3.0.0: {} - ci-info@2.0.0: {} - ci-info@3.8.0: {} ci-info@3.9.0: {} + ci-info@4.4.0: {} + cjs-module-lexer@1.2.2: {} cjs-module-lexer@1.4.3: {} @@ -9644,11 +9746,7 @@ snapshots: clone@1.0.4: {} - cmd-shim@5.0.0: - dependencies: - mkdirp-infer-owner: 2.0.0 - - cmd-shim@6.0.1: {} + cmd-shim@6.0.3: {} co@4.6.0: {} @@ -9656,16 +9754,10 @@ snapshots: collect-v8-coverage@1.0.2: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} color-support@1.1.3: {} @@ -9699,22 +9791,16 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 - config-chain@1.1.12: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - console-control-strings@1.1.0: {} - conventional-changelog-angular@5.0.12: + conventional-changelog-angular@5.0.13: dependencies: compare-func: 2.0.0 q: 1.5.1 - conventional-changelog-angular@5.0.13: + conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 - q: 1.5.1 conventional-changelog-conventionalcommits@5.0.0: dependencies: @@ -9722,38 +9808,33 @@ snapshots: lodash: 4.17.21 q: 1.5.1 - conventional-changelog-core@4.2.4: + conventional-changelog-core@5.0.1: dependencies: add-stream: 1.0.0 - conventional-changelog-writer: 5.0.1 - conventional-commits-parser: 3.2.4 + conventional-changelog-writer: 6.0.1 + conventional-commits-parser: 4.0.0 dateformat: 3.0.3 get-pkg-repo: 4.2.1 - git-raw-commits: 2.0.11 + git-raw-commits: 3.0.0 git-remote-origin-url: 2.0.0 - git-semver-tags: 4.1.1 - lodash: 4.17.21 + git-semver-tags: 5.0.1 normalize-package-data: 3.0.3 - q: 1.5.1 read-pkg: 3.0.0 read-pkg-up: 3.0.0 - through2: 4.0.2 - conventional-changelog-preset-loader@2.3.4: {} + conventional-changelog-preset-loader@3.0.0: {} - conventional-changelog-writer@5.0.1: + conventional-changelog-writer@6.0.1: dependencies: - conventional-commits-filter: 2.0.7 + conventional-commits-filter: 3.0.0 dateformat: 3.0.3 handlebars: 4.7.7 json-stringify-safe: 5.0.1 - lodash: 4.17.21 meow: 8.1.2 - semver: 6.3.0 + semver: 7.8.1 split: 1.0.1 - through2: 4.0.2 - conventional-commits-filter@2.0.7: + conventional-commits-filter@3.0.0: dependencies: lodash.ismatch: 4.4.0 modify-values: 1.0.1 @@ -9767,16 +9848,22 @@ snapshots: split2: 3.2.2 through2: 4.0.2 - conventional-recommended-bump@6.1.0: + conventional-commits-parser@4.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + + conventional-recommended-bump@7.0.1: dependencies: concat-stream: 2.0.0 - conventional-changelog-preset-loader: 2.3.4 - conventional-commits-filter: 2.0.7 - conventional-commits-parser: 3.2.4 - git-raw-commits: 2.0.11 - git-semver-tags: 4.1.1 + conventional-changelog-preset-loader: 3.0.0 + conventional-commits-filter: 3.0.0 + conventional-commits-parser: 4.0.0 + git-raw-commits: 3.0.0 + git-semver-tags: 5.0.1 meow: 8.1.2 - q: 1.5.1 convert-source-map@1.9.0: {} @@ -9795,20 +9882,21 @@ snapshots: ts-node: 10.9.1(@types/node@20.19.11)(typescript@5.8.3) typescript: 5.8.3 - cosmiconfig@7.0.0: + cosmiconfig@8.1.3: dependencies: - '@types/parse-json': 4.0.0 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 - cosmiconfig@8.1.3: + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: + env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - path-type: 4.0.0 + optionalDependencies: + typescript: 5.8.3 create-jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)): dependencies: @@ -9833,12 +9921,34 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crypto-random-string@2.0.0: {} + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 cssesc@3.0.0: {} dargs@7.0.0: {} + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + dateformat@3.0.3: {} debug@3.2.7: @@ -9853,6 +9963,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 @@ -9862,6 +9976,8 @@ snapshots: dedent@0.7.0: {} + dedent@1.5.3: {} + dedent@1.6.0: {} deep-eql@5.0.2: {} @@ -9874,46 +9990,32 @@ snapshots: dependencies: clone: 1.0.4 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + define-lazy-prop@2.0.0: {} - define-properties@1.2.0: + define-properties@1.2.1: dependencies: + define-data-property: 1.1.4 has-property-descriptors: 1.0.0 object-keys: 1.1.1 - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - delayed-stream@1.0.0: {} - delegates@1.0.0: {} - - depd@2.0.0: {} - deprecation@2.3.1: {} detect-indent@5.0.0: {} - detect-libc@2.0.4: {} - detect-newline@3.1.0: {} diff-sequences@29.6.3: {} diff@4.0.2: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -9926,11 +10028,11 @@ snapshots: dependencies: is-obj: 2.0.0 - dot-prop@6.0.1: + dotenv-expand@11.0.7: dependencies: - is-obj: 2.0.0 + dotenv: 16.4.7 - dotenv@10.0.0: {} + dotenv@16.4.7: {} dunder-proto@1.0.1: dependencies: @@ -9938,7 +10040,7 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} ejs@3.1.9: dependencies: @@ -9952,6 +10054,8 @@ snapshots: emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 @@ -9961,18 +10065,13 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.12.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 env-paths@2.2.1: {} - envinfo@7.8.1: {} + envinfo@7.13.0: {} err-code@2.0.3: {} @@ -9980,42 +10079,62 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.21.2: + es-abstract@1.24.2: dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + 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.2.1 - function.prototype.name: 1.1.5 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 get-intrinsic: 1.3.0 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 gopd: 1.2.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 has-symbols: 1.1.0 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 + 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.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + 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.21 es-define-property@1.0.1: {} @@ -10036,11 +10155,11 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.0.0: + es-shim-unscopables@1.1.0: dependencies: - has: 1.0.3 + hasown: 2.0.2 - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 @@ -10124,133 +10243,126 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-import-resolver-node@0.3.7: + eslint-import-resolver-node@0.3.10: dependencies: debug: 3.2.7 - is-core-module: 2.12.0 - resolve: 1.22.2 + is-core-module: 2.16.1 + resolve: 2.0.0-next.7 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-plugin-import@2.27.5)(eslint@7.32.0): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): dependencies: - debug: 4.3.4 - enhanced-resolve: 5.12.0 - eslint: 7.32.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) - get-tsconfig: 4.5.0 - globby: 13.1.4 - is-core-module: 2.12.0 - is-glob: 4.0.3 - synckit: 0.8.5 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.1 + eslint: 8.57.1 + get-tsconfig: 4.14.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.12.2 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.58.0(eslint@7.32.0)(typescript@4.9.4) - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-plugin-import@2.27.5)(eslint@7.32.0) + '@typescript-eslint/parser': 8.60.0(eslint@8.57.1)(typescript@5.8.3) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 7.32.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0(eslint@7.32.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) - has: 1.0.3 - is-core-module: 2.12.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 - tsconfig-paths: 3.14.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.58.0(eslint@7.32.0)(typescript@4.9.4) + '@typescript-eslint/parser': 8.60.0(eslint@8.57.1)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-scope@5.1.1: + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-utils@2.1.0: - dependencies: - eslint-visitor-keys: 1.3.0 - - eslint-visitor-keys@1.3.0: {} + estraverse: 5.3.0 - eslint-visitor-keys@2.1.0: {} + eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@3.4.0: {} + eslint-visitor-keys@5.0.1: {} - eslint@7.32.0: + eslint@8.57.1: dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.1 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.4.1 doctrine: 3.0.0 - enquirer: 2.3.6 escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 + find-up: 5.0.0 + glob-parent: 6.0.2 globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 + graphemer: 1.4.0 + ignore: 5.2.4 imurmurhash: 0.1.4 is-glob: 4.0.3 - js-yaml: 3.14.1 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.4.0 + optionator: 0.9.4 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 text-table: 0.2.0 - v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color - espree@7.3.1: + espree@9.6.1: dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -10262,8 +10374,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@2.0.2: {} @@ -10274,12 +10384,8 @@ snapshots: esutils@2.0.3: {} - event-target-shim@5.0.1: {} - eventemitter3@4.0.7: {} - events@3.3.0: {} - execa@5.0.0: dependencies: cross-spawn: 7.0.3 @@ -10350,22 +10456,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.2.12: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fast-glob@3.2.7: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -10394,8 +10484,6 @@ snapshots: dependencies: flat-cache: 3.0.4 - file-url@3.0.0: {} - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -10438,10 +10526,21 @@ snapshots: follow-redirects@1.15.2: {} + follow-redirects@1.16.0: {} + for-each@0.3.3: dependencies: is-callable: 1.2.7 + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + form-data@4.0.4: dependencies: asynckit: 0.4.0 @@ -10450,6 +10549,18 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.3 + mime-types: 2.1.35 + + front-matter@4.0.2: + dependencies: + js-yaml: 3.14.1 + fs-constants@1.0.0: {} fs-extra@10.1.0: @@ -10464,9 +10575,8 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.0 - fs-extra@9.1.0: + fs-extra@11.3.5: dependencies: - at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 @@ -10481,43 +10591,26 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true function-bind@1.1.2: {} - function.prototype.name@1.1.5: + function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 functions-have-names: 1.2.3 - - functional-red-black-tree@1.0.1: {} + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} - gauge@4.0.4: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - - gauge@5.0.0: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 + generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -10558,12 +10651,15 @@ snapshots: get-stream@8.0.1: {} - get-symbol-description@1.0.0: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 + es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.5.0: {} + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 get-tsconfig@4.7.2: dependencies: @@ -10577,22 +10673,28 @@ snapshots: split2: 3.2.2 through2: 4.0.2 + git-raw-commits@3.0.0: + dependencies: + dargs: 7.0.0 + meow: 8.1.2 + split2: 3.2.2 + git-remote-origin-url@2.0.0: dependencies: gitconfiglocal: 1.0.0 pify: 2.3.0 - git-semver-tags@4.1.1: + git-semver-tags@5.0.1: dependencies: meow: 8.1.2 - semver: 6.3.0 + semver: 7.8.1 git-up@7.0.0: dependencies: is-ssh: 1.4.0 parse-url: 8.1.0 - git-url-parse@13.1.0: + git-url-parse@14.0.0: dependencies: git-up: 7.0.0 @@ -10600,25 +10702,25 @@ snapshots: dependencies: ini: 1.3.8 - glob-parent@5.1.2: + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@13.0.6: dependencies: minimatch: 10.2.5 minipass: 7.1.3 path-scurry: 2.0.2 - glob@7.1.4: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -10653,38 +10755,16 @@ snapshots: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + globalthis@1.0.4: dependencies: - define-properties: 1.2.0 - - globalyzer@0.1.0: {} - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - - globby@13.1.4: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 4.0.0 - - globrex@0.1.2: {} + define-properties: 1.2.1 + gopd: 1.2.0 gopd@1.2.0: {} - graceful-fs@4.2.10: {} - graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} + graphemer@1.4.0: {} handlebars@4.7.7: dependencies: @@ -10699,15 +10779,19 @@ snapshots: has-bigints@1.0.2: {} - has-flag@3.0.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.0: dependencies: - get-intrinsic: 1.3.0 + get-intrinsic: 1.3.0 + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 - has-proto@1.0.1: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 has-symbols@1.0.3: {} @@ -10727,36 +10811,24 @@ snapshots: dependencies: function-bind: 1.1.2 - hosted-git-info@2.8.9: {} - - hosted-git-info@3.0.8: + hasown@2.0.3: dependencies: - lru-cache: 6.0.0 + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 - hosted-git-info@5.2.1: - dependencies: - lru-cache: 7.18.3 - - hosted-git-info@6.1.1: + hosted-git-info@7.0.2: dependencies: - lru-cache: 7.18.3 + lru-cache: 10.4.3 html-escaper@2.0.2: {} http-cache-semantics@4.1.1: {} - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -10767,7 +10839,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -10782,10 +10854,6 @@ snapshots: human-signals@5.0.0: {} - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - husky@7.0.4: {} iconv-lite@0.4.24: @@ -10804,18 +10872,14 @@ snapshots: ieee754@1.2.1: {} - ignore-walk@5.0.1: - dependencies: - minimatch: 5.1.6 - - ignore-walk@6.0.2: + ignore-walk@6.0.5: dependencies: - minimatch: 7.4.6 - - ignore@4.0.6: {} + minimatch: 9.0.9 ignore@5.2.4: {} + ignore@7.0.5: {} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 @@ -10835,8 +10899,6 @@ snapshots: indent-string@4.0.0: {} - infer-owner@1.0.4: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -10846,33 +10908,19 @@ snapshots: ini@1.3.8: {} - init-package-json@3.0.2: - dependencies: - npm-package-arg: 9.1.2 - promzard: 0.3.0 - read: 1.0.7 - read-package-json: 5.0.1 - semver: 7.4.0 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 4.0.0 + ini@4.1.3: {} - inquirer@8.2.4: + init-package-json@6.0.3: dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + '@npmcli/package-json': 5.2.0 + npm-package-arg: 11.0.2 + promzard: 1.0.2 + read: 3.0.1 + semver: 7.8.1 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 5.0.1 + transitivePeerDependencies: + - bluebird inquirer@8.2.5: dependencies: @@ -10892,42 +10940,52 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - internal-slot@1.0.5: + internal-slot@1.1.0: dependencies: - get-intrinsic: 1.3.0 - has: 1.0.3 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 ip-address@10.1.0: {} - ip@2.0.0: {} - - is-array-buffer@3.0.2: + is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.2 + call-bind: 1.0.9 + call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-typed-array: 1.1.10 is-arrayish@0.2.1: {} - is-bigint@1.0.4: + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: dependencies: has-bigints: 1.0.2 - is-boolean-object@1.1.2: + is-boolean-object@1.2.2: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 + is-bun-module@2.0.0: + dependencies: + semver: 7.7.2 + is-callable@1.2.7: {} - is-ci@2.0.0: + is-ci@3.0.1: dependencies: - ci-info: 2.0.0 + ci-info: 3.9.0 is-core-module@2.12.0: dependencies: @@ -10937,18 +10995,45 @@ snapshots: dependencies: hasown: 2.0.2 + is-core-module@2.16.2: + dependencies: + hasown: 2.0.3 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-docker@2.2.1: {} is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} is-generator-fn@2.1.0: {} + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -10957,20 +11042,21 @@ snapshots: is-lambda@1.0.1: {} + is-map@2.0.3: {} + is-module@1.0.0: {} - is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} - is-number-object@1.0.7: + is-number-object@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} is-obj@2.0.0: {} - is-path-cwd@2.2.0: {} - is-path-inside@3.0.3: {} is-plain-obj@1.1.0: {} @@ -10979,20 +11065,22 @@ snapshots: dependencies: isobject: 3.0.1 - is-plain-object@5.0.0: {} - is-reference@1.2.1: dependencies: '@types/estree': 1.0.0 - is-regex@1.1.4: + is-regex@1.2.1: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 - is-shared-array-buffer@1.0.2: + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 is-ssh@1.4.0: dependencies: @@ -11004,31 +11092,41 @@ snapshots: is-stream@3.0.0: {} - is-string@1.0.7: + is-string@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-symbol@1.0.4: dependencies: has-symbols: 1.1.0 + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + is-text-path@1.0.1: dependencies: text-extensions: 1.9.0 - is-typed-array@1.1.10: + is-typed-array@1.1.15: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 + which-typed-array: 1.1.21 is-unicode-supported@0.1.0: {} - is-weakref@1.0.2: + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-wsl@2.2.0: dependencies: @@ -11036,8 +11134,12 @@ snapshots: isarray@1.0.0: {} + isarray@2.0.5: {} + isexe@2.0.0: {} + isexe@3.1.5: {} + isexe@4.0.0: {} isobject@3.0.1: {} @@ -11062,7 +11164,7 @@ snapshots: '@babel/parser': 7.28.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 + semver: 7.8.1 transitivePeerDependencies: - supports-color @@ -11096,6 +11198,12 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jake@10.8.5: dependencies: async: 3.2.4 @@ -11165,16 +11273,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)): + jest-cli@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)): dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + jest-config: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -11203,7 +11311,7 @@ snapshots: - supports-color - ts-node - jest-config@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)): + jest-config@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)): dependencies: '@babel/core': 7.21.4 '@jest/test-sequencer': 29.5.0 @@ -11627,7 +11735,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.7.2 + semver: 7.8.1 transitivePeerDependencies: - supports-color @@ -11703,12 +11811,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)): + jest@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)): dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + jest-cli: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - supports-color @@ -11751,6 +11859,8 @@ snapshots: json-parse-even-better-errors@3.0.0: {} + json-parse-even-better-errors@3.0.2: {} + json-schema-ref-parser@9.0.9: dependencies: '@apidevtools/json-schema-ref-parser': 9.0.9 @@ -11789,87 +11899,91 @@ snapshots: kleur@3.0.3: {} - lerna@6.6.1(encoding@0.1.13): + lerna@8.2.4(encoding@0.1.13): dependencies: - '@lerna/child-process': 6.6.1 - '@lerna/create': 6.6.1 - '@lerna/legacy-package-management': 6.6.1(encoding@0.1.13)(nx@15.9.2) - '@npmcli/arborist': 6.2.3 - '@npmcli/run-script': 4.1.7 - '@nrwl/devkit': 15.9.2(nx@15.9.2) + '@lerna/create': 8.2.4(encoding@0.1.13)(typescript@5.8.3) + '@npmcli/arborist': 7.5.4 + '@npmcli/package-json': 5.2.0 + '@npmcli/run-script': 8.1.0 + '@nx/devkit': 20.8.4(nx@20.8.4) '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.3(encoding@0.1.13) - byte-size: 7.0.0 + '@octokit/rest': 20.1.2 + aproba: 2.0.0 + byte-size: 8.1.1 chalk: 4.1.0 clone-deep: 4.0.1 - cmd-shim: 5.0.0 + cmd-shim: 6.0.3 + color-support: 1.1.3 columnify: 1.6.0 - config-chain: 1.1.12 - conventional-changelog-angular: 5.0.12 - conventional-changelog-core: 4.2.4 - conventional-recommended-bump: 6.1.0 - cosmiconfig: 7.0.0 - dedent: 0.7.0 - dot-prop: 6.0.1 - envinfo: 7.8.1 + console-control-strings: 1.1.0 + conventional-changelog-angular: 7.0.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 9.0.0(typescript@5.8.3) + dedent: 1.5.3 + envinfo: 7.13.0 execa: 5.0.0 - fs-extra: 9.1.0 + fs-extra: 11.3.5 get-port: 5.1.1 get-stream: 6.0.0 - git-url-parse: 13.1.0 - glob-parent: 5.1.2 - globby: 11.1.0 - graceful-fs: 4.2.10 + git-url-parse: 14.0.0 + glob-parent: 6.0.2 + graceful-fs: 4.2.11 has-unicode: 2.0.1 import-local: 3.1.0 - init-package-json: 3.0.2 + ini: 1.3.8 + init-package-json: 6.0.3 inquirer: 8.2.5 - is-ci: 2.0.0 + is-ci: 3.0.1 is-stream: 2.0.0 + jest-diff: 29.7.0 js-yaml: 4.1.0 - libnpmaccess: 6.0.3 - libnpmpublish: 6.0.4 + libnpmaccess: 8.0.6 + libnpmpublish: 9.0.9 load-json-file: 6.2.0 - make-dir: 3.1.0 + make-dir: 4.0.0 minimatch: 3.0.5 multimatch: 5.0.0 node-fetch: 2.6.7(encoding@0.1.13) - npm-package-arg: 8.1.1 - npm-packlist: 5.1.1 - npm-registry-fetch: 14.0.3 - npmlog: 6.0.2 - nx: 15.9.2 + npm-package-arg: 11.0.2 + npm-packlist: 8.0.2 + npm-registry-fetch: 17.1.0 + nx: 20.8.4 p-map: 4.0.0 p-map-series: 2.1.0 p-pipe: 3.1.0 p-queue: 6.6.2 p-reduce: 2.1.0 p-waterfall: 2.1.1 - pacote: 13.6.2 + pacote: 18.0.6 pify: 5.0.0 - read-cmd-shim: 3.0.0 - read-package-json: 5.0.1 + read-cmd-shim: 4.0.0 resolve-from: 5.0.0 rimraf: 4.4.1 - semver: 7.4.0 + semver: 7.8.1 + set-blocking: 2.0.0 signal-exit: 3.0.7 slash: 3.0.0 - ssri: 9.0.1 - strong-log-transformer: 2.1.0 - tar: 6.1.11 + ssri: 10.0.6 + string-width: 4.2.3 + tar: 6.2.1 temp-dir: 1.0.0 - typescript: 4.9.4 + through: 2.3.8 + tinyglobby: 0.2.12 + typescript: 5.8.3 upath: 2.0.1 - uuid: 8.3.2 + uuid: 10.0.0 validate-npm-package-license: 3.0.4 - validate-npm-package-name: 4.0.0 - write-file-atomic: 4.0.1 + validate-npm-package-name: 5.0.1 + wide-align: 1.1.5 + write-file-atomic: 5.0.1 write-pkg: 4.0.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 + yargs: 17.7.2 + yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' + - babel-plugin-macros - bluebird - debug - encoding @@ -11882,25 +11996,24 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libnpmaccess@6.0.3: + libnpmaccess@8.0.6: dependencies: - aproba: 2.0.0 - minipass: 3.3.6 - npm-package-arg: 9.1.2 - npm-registry-fetch: 13.3.1 + npm-package-arg: 11.0.2 + npm-registry-fetch: 17.1.0 transitivePeerDependencies: - - bluebird - supports-color - libnpmpublish@6.0.4: + libnpmpublish@9.0.9: dependencies: - normalize-package-data: 4.0.1 - npm-package-arg: 9.1.2 - npm-registry-fetch: 13.3.1 - semver: 7.4.0 - ssri: 9.0.1 + ci-info: 4.4.0 + normalize-package-data: 6.0.2 + npm-package-arg: 11.0.2 + npm-registry-fetch: 17.1.0 + proc-log: 4.2.0 + semver: 7.8.1 + sigstore: 2.3.1 + ssri: 10.0.6 transitivePeerDependencies: - - bluebird - supports-color lines-and-columns@1.2.4: {} @@ -11960,8 +12073,6 @@ snapshots: lodash.startcase@4.4.0: {} - lodash.truncate@4.4.2: {} - lodash.uniq@4.5.0: {} lodash.upperfirst@4.3.1: {} @@ -11975,6 +12086,8 @@ snapshots: loupe@3.2.0: {} + lru-cache@10.4.3: {} + lru-cache@11.3.5: {} lru-cache@5.1.1: @@ -11985,8 +12098,6 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} - lru-cache@9.0.1: {} magic-string@0.30.17: @@ -12012,51 +12123,25 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.8.1 make-error@1.3.6: {} - make-fetch-happen@10.2.1: - dependencies: - agentkeepalive: 4.3.0 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - make-fetch-happen@11.0.3: + make-fetch-happen@13.0.1: dependencies: - agentkeepalive: 4.3.0 - cacache: 17.0.5 + '@npmcli/agent': 2.2.2 + cacache: 18.0.4 http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 4.2.8 + minipass: 7.1.3 minipass-fetch: 3.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 + proc-log: 4.2.0 promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 10.0.3 + ssri: 10.0.6 transitivePeerDependencies: - - bluebird - supports-color make-fetch-happen@15.0.5: @@ -12102,8 +12187,6 @@ snapshots: merge-stream@2.0.0: {} - merge2@1.4.1: {} - micromatch@4.0.5: dependencies: braces: 3.0.2 @@ -12142,18 +12225,22 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@6.2.0: + minimatch@7.4.6: dependencies: brace-expansion: 2.0.1 - minimatch@7.4.6: + minimatch@8.0.4: dependencies: brace-expansion: 2.0.1 - minimatch@8.0.4: + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.1 + minimist-options@4.1.0: dependencies: arrify: 1.0.1 @@ -12162,22 +12249,10 @@ snapshots: minimist@1.2.8: {} - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - minipass-collect@2.0.1: dependencies: minipass: 7.1.3 - minipass-fetch@2.1.2: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - minipass-fetch@3.0.1: dependencies: minipass: 4.2.8 @@ -12198,11 +12273,6 @@ snapshots: dependencies: minipass: 3.3.6 - minipass-json-stream@1.0.1: - dependencies: - jsonparse: 1.3.1 - minipass: 3.3.6 - minipass-pipeline@1.2.4: dependencies: minipass: 3.3.6 @@ -12236,12 +12306,6 @@ snapshots: mkdirp-classic@0.5.3: {} - mkdirp-infer-owner@2.0.0: - dependencies: - chownr: 2.0.0 - infer-owner: 1.0.4 - mkdirp: 1.0.4 - mkdirp@1.0.4: {} modify-values@1.0.1: {} @@ -12256,13 +12320,15 @@ snapshots: array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 - minimatch: 3.0.5 + minimatch: 3.1.2 mute-stream@0.0.8: {} + mute-stream@1.0.0: {} + nanoid@3.3.11: {} - natural-compare-lite@1.4.0: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -12276,10 +12342,15 @@ snapshots: dependencies: semver: 7.4.0 - node-addon-api@3.2.1: {} - node-addon-api@5.1.0: {} + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + node-fetch@2.6.7(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -12288,6 +12359,21 @@ snapshots: node-gyp-build@4.6.0: {} + node-gyp@10.3.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + glob: 10.5.0 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.1 + nopt: 7.1.0 + proc-log: 4.2.0 + semver: 7.8.1 + tar: 6.2.1 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + node-gyp@12.2.0: dependencies: env-paths: 2.2.1 @@ -12303,33 +12389,19 @@ snapshots: transitivePeerDependencies: - supports-color - node-gyp@9.3.1: - dependencies: - env-paths: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.7.2 - tar: 6.1.13 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - node-int64@0.4.0: {} + node-machine-id@1.1.12: {} + node-releases@2.0.10: {} node-releases@2.0.19: {} - nopt@6.0.0: + nopt@7.1.0: dependencies: - abbrev: 1.1.1 + abbrev: 2.0.0 - nopt@7.1.0: + nopt@7.2.1: dependencies: abbrev: 2.0.0 @@ -12351,113 +12423,53 @@ snapshots: semver: 7.4.0 validate-npm-package-license: 3.0.4 - normalize-package-data@4.0.1: - dependencies: - hosted-git-info: 5.2.1 - is-core-module: 2.12.0 - semver: 7.4.0 - validate-npm-package-license: 3.0.4 - - normalize-package-data@5.0.0: + normalize-package-data@6.0.2: dependencies: - hosted-git-info: 6.1.1 - is-core-module: 2.12.0 - semver: 7.7.2 + hosted-git-info: 7.0.2 + semver: 7.8.1 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} - npm-bundled@1.1.2: - dependencies: - npm-normalize-package-bin: 1.0.1 - npm-bundled@3.0.0: dependencies: npm-normalize-package-bin: 3.0.0 - npm-install-checks@5.0.0: - dependencies: - semver: 7.7.2 - - npm-install-checks@6.1.1: + npm-install-checks@6.3.0: dependencies: - semver: 7.4.0 - - npm-normalize-package-bin@1.0.1: {} - - npm-normalize-package-bin@2.0.0: {} + semver: 7.8.1 npm-normalize-package-bin@3.0.0: {} - npm-package-arg@10.1.0: - dependencies: - hosted-git-info: 6.1.1 - proc-log: 3.0.0 - semver: 7.4.0 - validate-npm-package-name: 5.0.0 - - npm-package-arg@8.1.1: - dependencies: - hosted-git-info: 3.0.8 - semver: 7.4.0 - validate-npm-package-name: 3.0.0 - - npm-package-arg@9.1.2: - dependencies: - hosted-git-info: 5.2.1 - proc-log: 2.0.1 - semver: 7.4.0 - validate-npm-package-name: 4.0.0 - - npm-packlist@5.1.1: + npm-package-arg@11.0.2: dependencies: - glob: 8.1.0 - ignore-walk: 5.0.1 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - - npm-packlist@7.0.4: - dependencies: - ignore-walk: 6.0.2 + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.8.1 + validate-npm-package-name: 5.0.1 - npm-pick-manifest@7.0.2: + npm-packlist@8.0.2: dependencies: - npm-install-checks: 5.0.0 - npm-normalize-package-bin: 2.0.0 - npm-package-arg: 9.1.2 - semver: 7.4.0 + ignore-walk: 6.0.5 - npm-pick-manifest@8.0.1: + npm-pick-manifest@9.1.0: dependencies: - npm-install-checks: 6.1.1 + npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.0 - npm-package-arg: 10.1.0 - semver: 7.4.0 - - npm-registry-fetch@13.3.1: - dependencies: - make-fetch-happen: 10.2.1 - minipass: 3.3.6 - minipass-fetch: 2.1.2 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 9.1.2 - proc-log: 2.0.1 - transitivePeerDependencies: - - bluebird - - supports-color + npm-package-arg: 11.0.2 + semver: 7.8.1 - npm-registry-fetch@14.0.3: + npm-registry-fetch@17.1.0: dependencies: - make-fetch-happen: 11.0.3 - minipass: 4.2.8 + '@npmcli/redact': 2.0.1 + jsonparse: 1.3.1 + make-fetch-happen: 13.0.1 + minipass: 7.1.3 minipass-fetch: 3.0.1 - minipass-json-stream: 1.0.1 minizlib: 2.1.2 - npm-package-arg: 10.1.0 - proc-log: 3.0.0 + npm-package-arg: 11.0.2 + proc-log: 4.2.0 transitivePeerDependencies: - - bluebird - supports-color npm-run-path@3.1.0: @@ -12472,86 +12484,96 @@ snapshots: dependencies: path-key: 4.0.0 - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - - npmlog@7.0.1: + nx@20.8.4: dependencies: - are-we-there-yet: 4.0.0 - console-control-strings: 1.1.0 - gauge: 5.0.0 - set-blocking: 2.0.0 - - nx@15.9.2: - dependencies: - '@nrwl/cli': 15.9.2 - '@nrwl/tao': 15.9.2 - '@parcel/watcher': 2.0.4 + '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.0-rc.42 - '@zkochan/js-yaml': 0.0.6 - axios: 1.4.0 + '@yarnpkg/parsers': 3.0.2 + '@zkochan/js-yaml': 0.0.7 + axios: 1.16.1 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 - cliui: 7.0.4 - dotenv: 10.0.0 + cliui: 8.0.1 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 enquirer: 2.3.6 - fast-glob: 3.2.7 figures: 3.2.0 flat: 5.0.2 - fs-extra: 11.1.1 - glob: 7.1.4 + front-matter: 4.0.2 ignore: 5.2.4 - js-yaml: 4.1.0 + jest-diff: 29.7.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.3 - minimatch: 3.0.5 + minimatch: 9.0.3 + node-machine-id: 1.1.12 npm-run-path: 4.0.1 open: 8.4.2 - semver: 7.3.4 + ora: 5.3.0 + resolve.exports: 2.0.3 + semver: 7.8.1 string-width: 4.2.3 - strong-log-transformer: 2.1.0 tar-stream: 2.2.0 tmp: 0.2.1 tsconfig-paths: 4.2.0 tslib: 2.5.0 - v8-compile-cache: 2.3.0 - yargs: 17.7.1 + yaml: 2.9.0 + yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nrwl/nx-darwin-arm64': 15.9.2 - '@nrwl/nx-darwin-x64': 15.9.2 - '@nrwl/nx-linux-arm-gnueabihf': 15.9.2 - '@nrwl/nx-linux-arm64-gnu': 15.9.2 - '@nrwl/nx-linux-arm64-musl': 15.9.2 - '@nrwl/nx-linux-x64-gnu': 15.9.2 - '@nrwl/nx-linux-x64-musl': 15.9.2 - '@nrwl/nx-win32-arm64-msvc': 15.9.2 - '@nrwl/nx-win32-x64-msvc': 15.9.2 + '@nx/nx-darwin-arm64': 20.8.4 + '@nx/nx-darwin-x64': 20.8.4 + '@nx/nx-freebsd-x64': 20.8.4 + '@nx/nx-linux-arm-gnueabihf': 20.8.4 + '@nx/nx-linux-arm64-gnu': 20.8.4 + '@nx/nx-linux-arm64-musl': 20.8.4 + '@nx/nx-linux-x64-gnu': 20.8.4 + '@nx/nx-linux-x64-musl': 20.8.4 + '@nx/nx-win32-arm64-msvc': 20.8.4 + '@nx/nx-win32-x64-msvc': 20.8.4 transitivePeerDependencies: - debug + - supports-color - object-inspect@1.12.3: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} - object.assign@4.1.4: + object.assign@4.1.7: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 - object.values@1.1.6: + object.entries@1.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + object.values@1.2.1: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 obug@2.1.1: {} @@ -12581,14 +12603,25 @@ snapshots: handlebars: 4.7.7 json-schema-ref-parser: 9.0.9 - optionator@0.9.1: + optionator@0.9.4: dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 + word-wrap: 1.2.5 + + ora@5.3.0: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.8.0 + is-interactive: 1.0.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 ora@5.4.1: dependencies: @@ -12604,6 +12637,12 @@ snapshots: os-tmpdir@1.0.2: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-finally@1.0.0: {} p-limit@1.3.0: @@ -12667,53 +12706,27 @@ snapshots: dependencies: p-reduce: 2.1.0 - pacote@13.6.2: - dependencies: - '@npmcli/git': 3.0.2 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/promise-spawn': 3.0.0 - '@npmcli/run-script': 4.1.7 - cacache: 16.1.3 - chownr: 2.0.0 - fs-minipass: 2.1.0 - infer-owner: 1.0.4 - minipass: 3.3.6 - mkdirp: 1.0.4 - npm-package-arg: 9.1.2 - npm-packlist: 5.1.1 - npm-pick-manifest: 7.0.2 - npm-registry-fetch: 13.3.1 - proc-log: 2.0.1 - promise-retry: 2.0.1 - read-package-json: 5.0.1 - read-package-json-fast: 2.0.3 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.1.11 - transitivePeerDependencies: - - bluebird - - supports-color + package-json-from-dist@1.0.1: {} - pacote@15.1.1: + pacote@18.0.6: dependencies: - '@npmcli/git': 4.0.4 + '@npmcli/git': 5.0.8 '@npmcli/installed-package-contents': 2.0.2 - '@npmcli/promise-spawn': 6.0.2 - '@npmcli/run-script': 6.0.0 - cacache: 17.0.5 + '@npmcli/package-json': 5.2.0 + '@npmcli/promise-spawn': 7.0.2 + '@npmcli/run-script': 8.1.0 + cacache: 18.0.4 fs-minipass: 3.0.1 - minipass: 4.2.8 - npm-package-arg: 10.1.0 - npm-packlist: 7.0.4 - npm-pick-manifest: 8.0.1 - npm-registry-fetch: 14.0.3 - proc-log: 3.0.0 + minipass: 7.1.3 + npm-package-arg: 11.0.2 + npm-packlist: 8.0.2 + npm-pick-manifest: 9.1.0 + npm-registry-fetch: 17.1.0 + proc-log: 4.2.0 promise-retry: 2.0.1 - read-package-json: 6.0.1 - read-package-json-fast: 3.0.2 - sigstore: 1.2.0 - ssri: 10.0.3 - tar: 6.1.11 + sigstore: 2.3.1 + ssri: 10.0.6 + tar: 6.2.1 transitivePeerDependencies: - bluebird - supports-color @@ -12724,7 +12737,7 @@ snapshots: parse-conflict-json@3.0.1: dependencies: - json-parse-even-better-errors: 3.0.0 + json-parse-even-better-errors: 3.0.2 just-diff: 6.0.2 just-diff-apply: 5.5.0 @@ -12762,6 +12775,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + path-scurry@1.6.4: dependencies: lru-cache: 9.0.1 @@ -12806,6 +12824,16 @@ snapshots: platform@1.3.6: {} + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 + + possible-typed-array-names@1.1.0: {} + postcss-selector-parser@6.0.11: dependencies: cssesc: 3.0.0 @@ -12829,18 +12857,12 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-organize-imports@3.2.2(prettier@2.8.7)(typescript@4.9.4): + prettier-plugin-organize-imports@4.3.0(prettier@3.8.3)(typescript@5.8.3): dependencies: - prettier: 2.8.7 - typescript: 4.9.4 - - prettier@2.8.7: {} + prettier: 3.8.3 + typescript: 5.8.3 - pretty-format@29.4.3: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 + prettier@3.8.3: {} pretty-format@29.5.0: dependencies: @@ -12854,21 +12876,17 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - proc-log@2.0.1: {} - - proc-log@3.0.0: {} + proc-log@4.2.0: {} proc-log@6.1.0: {} process-nextick-args@2.0.1: {} - process@0.11.10: {} - - progress@2.0.3: {} + proggy@2.0.0: {} promise-all-reject-late@1.0.1: {} - promise-call-limit@1.0.2: {} + promise-call-limit@3.0.2: {} promise-inflight@1.0.1: {} @@ -12882,16 +12900,16 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - promzard@0.3.0: + promzard@1.0.2: dependencies: - read: 1.0.7 - - proto-list@1.2.4: {} + read: 3.0.1 protocols@2.0.1: {} proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 @@ -12911,32 +12929,11 @@ snapshots: react-is@18.2.0: {} - read-cmd-shim@3.0.0: {} - read-cmd-shim@4.0.0: {} - read-package-json-fast@2.0.3: - dependencies: - json-parse-even-better-errors: 2.3.1 - npm-normalize-package-bin: 1.0.1 - read-package-json-fast@3.0.2: dependencies: - json-parse-even-better-errors: 3.0.0 - npm-normalize-package-bin: 3.0.0 - - read-package-json@5.0.1: - dependencies: - glob: 8.1.0 - json-parse-even-better-errors: 2.3.1 - normalize-package-data: 4.0.1 - npm-normalize-package-bin: 1.0.1 - - read-package-json@6.0.1: - dependencies: - glob: 9.3.5 - json-parse-even-better-errors: 3.0.0 - normalize-package-data: 5.0.0 + json-parse-even-better-errors: 3.0.2 npm-normalize-package-bin: 3.0.0 read-pkg-up@3.0.0: @@ -12963,9 +12960,9 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 - read@1.0.7: + read@3.0.1: dependencies: - mute-stream: 0.0.8 + mute-stream: 1.0.0 readable-stream@2.3.8: dependencies: @@ -12983,18 +12980,22 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.3.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + regenerate-unicode-properties@10.1.0: dependencies: regenerate: 1.4.2 @@ -13007,13 +13008,14 @@ snapshots: dependencies: '@babel/runtime': 7.22.5 - regexp.prototype.flags@1.4.3: + regexp.prototype.flags@1.5.4: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - - regexpp@3.2.0: {} + call-bind: 1.0.9 + 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 regexpu-core@5.3.2: dependencies: @@ -13052,7 +13054,7 @@ snapshots: resolve@1.22.10: dependencies: - is-core-module: 2.16.1 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -13062,6 +13064,15 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.7: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -13079,11 +13090,11 @@ snapshots: dependencies: glob: 9.3.5 - rollup-plugin-dts@6.1.0(rollup@4.48.1)(typescript@4.9.4): + rollup-plugin-dts@6.1.0(rollup@4.48.1)(typescript@5.8.3): dependencies: magic-string: 0.30.5 rollup: 4.48.1 - typescript: 4.9.4 + typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.27.1 @@ -13134,15 +13145,28 @@ snapshots: dependencies: tslib: 2.5.0 + safe-array-concat@1.1.4: + 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 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} - safe-regex-test@1.0.0: + safe-push-apply@1.0.0: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.3.0 - is-regex: 1.1.4 + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 safer-buffer@2.1.2: {} @@ -13152,10 +13176,6 @@ snapshots: semver@6.3.1: {} - semver@7.3.4: - dependencies: - lru-cache: 6.0.0 - semver@7.3.8: dependencies: lru-cache: 6.0.0 @@ -13166,8 +13186,32 @@ snapshots: semver@7.7.2: {} + semver@7.8.1: {} + set-blocking@2.0.0: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 @@ -13178,11 +13222,33 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.4: + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 + es-errors: 1.3.0 get-intrinsic: 1.3.0 - object-inspect: 1.12.3 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + 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 siginfo@2.0.0: {} @@ -13190,37 +13256,23 @@ snapshots: signal-exit@4.1.0: {} - sigstore@1.2.0: + sigstore@2.3.1: dependencies: - '@sigstore/protobuf-specs': 0.1.0 - make-fetch-happen: 11.0.3 - tuf-js: 1.1.3 + '@sigstore/bundle': 2.3.2 + '@sigstore/core': 1.1.0 + '@sigstore/protobuf-specs': 0.3.3 + '@sigstore/sign': 2.3.2 + '@sigstore/tuf': 2.3.4 + '@sigstore/verify': 1.2.1 transitivePeerDependencies: - - bluebird - supports-color sisteransi@1.0.5: {} slash@3.0.0: {} - slash@4.0.0: {} - - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - smart-buffer@4.2.0: {} - socks-proxy-agent@7.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.4.1 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 @@ -13229,11 +13281,6 @@ snapshots: transitivePeerDependencies: - supports-color - socks@2.7.1: - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - socks@2.8.7: dependencies: ip-address: 10.1.0 @@ -13276,17 +13323,15 @@ snapshots: sprintf-js@1.0.3: {} - ssri@10.0.3: + ssri@10.0.6: dependencies: - minipass: 4.2.8 + minipass: 7.1.3 ssri@13.0.1: dependencies: minipass: 7.1.3 - ssri@9.0.1: - dependencies: - minipass: 3.3.6 + stable-hash@0.0.5: {} stack-trace@1.0.0-pre2: {} @@ -13300,6 +13345,11 @@ snapshots: std-env@3.9.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -13311,23 +13361,34 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string.prototype.trim@1.2.7: + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + 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.1 + has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.6: + string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 - string.prototype.trimstart@1.0.6: + string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 string_decoder@1.1.1: dependencies: @@ -13341,6 +13402,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + strip-bom@3.0.0: {} strip-bom@4.0.0: {} @@ -13359,16 +13424,6 @@ snapshots: dependencies: js-tokens: 9.0.1 - strong-log-transformer@2.1.0: - dependencies: - duplexer: 0.1.2 - minimist: 1.2.8 - through: 2.3.8 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -13379,21 +13434,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.8.5: - dependencies: - '@pkgr/utils': 2.3.1 - tslib: 2.5.0 - - table@6.8.1: - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - tapable@2.2.1: {} - tar-fs@2.1.1: dependencies: chownr: 1.1.4 @@ -13409,20 +13449,11 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar@6.1.11: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 3.3.6 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@6.1.13: + tar@6.2.1: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 4.2.8 + minipass: 5.0.0 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -13437,16 +13468,6 @@ snapshots: temp-dir@1.0.0: {} - temp-dir@2.0.0: {} - - tempy@1.0.0: - dependencies: - del: 6.1.1 - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -13468,11 +13489,6 @@ snapshots: through@2.3.8: {} - tiny-glob@0.2.9: - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - tinybench@2.9.0: {} tinybench@4.0.1: {} @@ -13481,6 +13497,11 @@ snapshots: tinyexec@1.0.2: {} + tinyglobby@0.2.12: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinyglobby@0.2.14: dependencies: fdir: 6.4.6(picomatch@4.0.3) @@ -13521,21 +13542,25 @@ snapshots: trim-newlines@3.0.1: {} + ts-api-utils@2.5.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-essentials@7.0.3(typescript@5.8.3): dependencies: typescript: 5.8.3 - ts-jest@29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)))(typescript@4.9.4): + ts-jest@29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@4.9.4)) + jest: 29.5.0(@types/node@20.19.11)(ts-node@10.9.1(@types/node@20.19.11)(typescript@5.8.3)) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.4.0 - typescript: 4.9.4 + typescript: 5.8.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.21.4 @@ -13561,7 +13586,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tsconfig-paths@3.14.2: + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -13574,31 +13599,31 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} - tslib@2.5.0: {} - tsutils@3.21.0(typescript@4.9.4): - dependencies: - tslib: 1.14.1 - typescript: 4.9.4 - - tuf-js@1.1.3: + tuf-js@2.2.1: dependencies: - '@tufjs/models': 1.0.2 - make-fetch-happen: 11.0.3 + '@tufjs/models': 2.0.1 + debug: 4.4.3 + make-fetch-happen: 13.0.1 transitivePeerDependencies: - - bluebird - supports-color + turbo@2.9.14: + optionalDependencies: + '@turbo/darwin-64': 2.9.14 + '@turbo/darwin-arm64': 2.9.14 + '@turbo/linux-64': 2.9.14 + '@turbo/linux-arm64': 2.9.14 + '@turbo/windows-64': 2.9.14 + '@turbo/windows-arm64': 2.9.14 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-detect@4.0.8: {} - type-fest@0.16.0: {} - type-fest@0.18.1: {} type-fest@0.20.2: {} @@ -13611,15 +13636,40 @@ snapshots: type-fest@0.8.1: {} - typed-array-length@1.0.4: + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.3 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: dependencies: - call-bind: 1.0.2 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 for-each: 0.3.3 - is-typed-array: 1.1.10 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 - typedarray@0.0.6: {} + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.3 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 - typescript@4.9.4: {} + typedarray@0.0.6: {} typescript@5.1.3: {} @@ -13628,12 +13678,12 @@ snapshots: uglify-js@3.19.3: optional: true - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.2 + call-bound: 1.0.4 has-bigints: 1.0.2 has-symbols: 1.1.0 - which-boxed-primitive: 1.0.2 + which-boxed-primitive: 1.1.1 undici-types@6.21.0: {} @@ -13648,30 +13698,45 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} - unique-filename@2.0.1: - dependencies: - unique-slug: 3.0.0 - unique-filename@3.0.0: dependencies: unique-slug: 4.0.0 - unique-slug@3.0.0: - dependencies: - imurmurhash: 0.1.4 - unique-slug@4.0.0: dependencies: imurmurhash: 0.1.4 - unique-string@2.0.0: - dependencies: - crypto-random-string: 2.0.0 - universal-user-agent@6.0.0: {} universalify@2.0.0: {} + unrs-resolver@1.12.2: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + upath@2.0.1: {} update-browserslist-db@1.0.10(browserslist@4.21.5): @@ -13694,12 +13759,10 @@ snapshots: util-extend@1.0.3: {} - uuid@8.3.2: {} + uuid@10.0.0: {} v8-compile-cache-lib@3.0.1: {} - v8-compile-cache@2.3.0: {} - v8-to-istanbul@9.1.0: dependencies: '@jridgewell/trace-mapping': 0.3.18 @@ -13717,25 +13780,15 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@3.0.0: - dependencies: - builtins: 1.0.3 - - validate-npm-package-name@4.0.0: - dependencies: - builtins: 5.0.1 - - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.0.1 + validate-npm-package-name@5.0.1: {} - vite-node@3.2.4(@types/node@20.19.11): + vite-node@3.2.4(@types/node@20.19.11)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@20.19.11) + vite: 7.1.3(@types/node@20.19.11)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13750,7 +13803,7 @@ snapshots: - tsx - yaml - vite@7.1.3(@types/node@20.19.11): + vite@7.1.3(@types/node@20.19.11)(yaml@2.9.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -13761,12 +13814,13 @@ snapshots: optionalDependencies: '@types/node': 20.19.11 fsevents: 2.3.3 + yaml: 2.9.0 - vitest@3.2.4(@types/node@20.19.11): + vitest@3.2.4(@types/node@20.19.11)(yaml@2.9.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@20.19.11)) + '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@20.19.11)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -13784,8 +13838,8 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@20.19.11) - vite-node: 3.2.4(@types/node@20.19.11) + vite: 7.1.3(@types/node@20.19.11)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@20.19.11)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.11 @@ -13803,10 +13857,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@types/node@20.19.11): + vitest@4.0.18(@types/node@20.19.11)(yaml@2.9.0): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.1.3(@types/node@20.19.11)) + '@vitest/mocker': 4.0.18(vite@7.1.3(@types/node@20.19.11)(yaml@2.9.0)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -13823,7 +13877,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.3(@types/node@20.19.11) + vite: 7.1.3(@types/node@20.19.11)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.11 @@ -13840,7 +13894,7 @@ snapshots: - tsx - yaml - walk-up-path@1.0.0: {} + walk-up-path@3.0.1: {} walker@1.0.8: dependencies: @@ -13857,30 +13911,54 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.0.2: + which-boxed-primitive@1.1.1: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 - which-typed-array@1.1.9: + which-builtin-type@1.2.1: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.21 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.21: + 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 - is-typed-array: 1.1.10 which@2.0.2: dependencies: isexe: 2.0.0 - which@3.0.0: + which@4.0.0: dependencies: - isexe: 2.0.0 + isexe: 3.1.5 which@6.0.1: dependencies: @@ -13895,7 +13973,7 @@ snapshots: dependencies: string-width: 4.2.3 - word-wrap@1.2.3: {} + word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -13905,6 +13983,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + wrappy@1.0.2: {} write-file-atomic@2.4.3: @@ -13913,20 +13997,15 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@4.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@5.0.0: + write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 + signal-exit: 4.1.0 write-json-file@3.2.0: dependencies: @@ -13953,7 +14032,7 @@ snapshots: yallist@5.0.0: {} - yaml@1.10.2: {} + yaml@2.9.0: {} yargs-parser@20.2.4: {} @@ -13962,7 +14041,7 @@ snapshots: yargs@16.2.0: dependencies: cliui: 7.0.4 - escalade: 3.1.1 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3ad89698..98d33977 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,6 @@ packages: - examples/* - packages/* - -onlyBuiltDependencies: - - '@moonrepo/cli' + # with-electron-and-walltime is a self-contained example with its own + # pnpm workspace and a different Node version; keep it out of the root one. + - "!examples/with-electron-and-walltime/**" diff --git a/turbo.jsonc b/turbo.jsonc new file mode 100644 index 00000000..62fc1201 --- /dev/null +++ b/turbo.jsonc @@ -0,0 +1,116 @@ +{ + "$schema": "https://turbo.build/schema.json", + "ui": "stream", + "tasks": { + "build": { + "dependsOn": ["^build"], + "inputs": [ + "src/**", + "rollup.config.ts", + "tsconfig.json", + "tsconfig.*.json", + "$TURBO_ROOT$/tsconfig.base.json", + "$TURBO_ROOT$/rollup.options.js", + ], + "outputs": ["dist/**"], + }, + "@codspeed/core#build": { + "dependsOn": [ + "@codspeed/core#build-tracer-client", + "@codspeed/core#build-native-addon", + ], + "inputs": [ + "src/**", + "rollup.config.ts", + "tsconfig.json", + "tsconfig.*.json", + "$TURBO_ROOT$/tsconfig.base.json", + "$TURBO_ROOT$/rollup.options.js", + ], + "outputs": ["dist/**"], + }, + "@codspeed/core#build-native-addon": { + "inputs": [ + "src/native_core/**/*.cc", + "src/native_core/**/*.c", + "src/native_core/**/*.h", + "binding.gyp", + ], + "outputs": ["prebuilds/**"], + "env": ["CC", "CXX"], + }, + "@codspeed/core#build-tracer-client": { + "inputs": ["tracer.spec.json"], + "outputs": ["src/generated/openapi/**"], + }, + "test": { + "dependsOn": ["build", "test/integ"], + "inputs": [ + "src/**", + "tests/**", + "*.config.{js,cjs,mjs,ts}", + "tsconfig.json", + "tsconfig.*.json", + "$TURBO_ROOT$/tsconfig.base.json", + ], + }, + "test/integ": { + "dependsOn": ["build"], + "inputs": [ + "src/**", + "tests/**", + "*.config.{js,cjs,mjs,ts}", + "tsconfig.json", + "tsconfig.*.json", + "$TURBO_ROOT$/tsconfig.base.json", + ], + }, + "typecheck": { + "dependsOn": ["build"], + "inputs": [ + "src/**", + "tests/**", + "tsconfig.json", + "tsconfig.*.json", + "$TURBO_ROOT$/tsconfig.base.json", + ], + }, + "lint": { + "dependsOn": ["build"], + "inputs": [ + "src/**", + "tests/**", + ".eslintignore", + ".eslintrc.js", + "tsconfig.json", + "tsconfig.*.json", + "$TURBO_ROOT$/.eslintrc.json", + ], + }, + "format": { + "inputs": [ + "src/**", + "tests/**", + "*.config.{js,cjs,mjs,ts}", + "$TURBO_ROOT$/.prettierrc.json", + "$TURBO_ROOT$/.prettierignore", + ], + }, + "fix-format": { + "cache": false, + }, + "bench": { + "dependsOn": ["build"], + "inputs": ["benches/**"], + "cache": false, + "env": [ + "CODSPEED_ENV", + "CODSPEED_RUNNER_MODE", + "CODSPEED_PROFILE_FOLDER", + ], + }, + "clean": { + "cache": false, + }, + }, +}