From f2c08c89b07f97bda5142b40d7a4d04231c72011 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Mon, 16 Mar 2026 12:55:26 +0500 Subject: [PATCH] desktop: add support for running web tests via desktop app --- apps/desktop/__tests__/auto-updates.test.ts | 272 +- .../__tests__/electron-test/base-test.ts | 64 + .../electron-test/common-fixtures.ts | 347 + .../{ => electron-test}/global-setup.ts | 3 +- apps/desktop/__tests__/electron-test/index.ts | 152 + .../__tests__/electron-test/page-test-api.ts | 58 + .../electron-test/platform-fixtures.ts | 47 + .../electron-test/playwright-utils.ts} | 30 +- .../electron-test/test-mode-fixtures.ts | 75 + .../__tests__/electron-test/test-mode.ts | 59 + .../electron-test/trace-viewer-fixtures.ts | 243 + .../__tests__/{ => electron-test}/utils.ts | 70 +- apps/desktop/__tests__/launch.test.ts | 21 +- apps/desktop/__tests__/test-override.ts | 64 - apps/desktop/package-lock.json | 9576 +++++++++++++---- apps/desktop/package.json | 7 +- .../patches/playwright-core+1.58.2.patch | 24 + apps/desktop/playwright.config.ts | 92 + apps/desktop/scripts/build.mjs | 7 +- apps/desktop/tsconfig.json | 9 +- apps/web/__e2e__/app-lock.test.ts | 3 +- apps/web/__e2e__/backups.test.ts | 3 +- apps/web/__e2e__/checkout.test.ts | 4 +- apps/web/__e2e__/colors.test.ts | 3 +- apps/web/__e2e__/drag-drop.test.ts | 2 +- apps/web/__e2e__/editor.test.ts | 3 +- .../fast-switch-and-edit-note-1-electron.txt | 1 + .../fast-switch-and-edit-note-2-electron.txt | 1 + ...-switch-and-edit-note-title-1-electron.txt | 1 + ...-switch-and-edit-note-title-2-electron.txt | 1 + .../focus-mode-electron.jpg | Bin 0 -> 48251 bytes .../normal-mode-from-focus-mode-electron.jpg | Bin 0 -> 80833 bytes .../readonly-edited-note-electron.txt | 1 + .../__e2e__/keyboard-list-navigation.test.ts | 3 +- apps/web/__e2e__/models/app.model.ts | 2 +- apps/web/__e2e__/models/auth.model.ts | 4 +- apps/web/__e2e__/models/base-item.model.ts | 2 +- apps/web/__e2e__/models/base-view.model.ts | 8 +- apps/web/__e2e__/models/checkout.model.ts | 2 +- apps/web/__e2e__/models/context-menu.model.ts | 2 +- apps/web/__e2e__/models/editor.model.ts | 26 +- apps/web/__e2e__/models/item.model.ts | 2 +- apps/web/__e2e__/models/items-view.model.ts | 2 +- .../__e2e__/models/navigation-menu.model.ts | 6 +- apps/web/__e2e__/models/note-item.model.ts | 2 +- .../__e2e__/models/note-properties.model.ts | 2 +- .../web/__e2e__/models/notebook-item.model.ts | 2 +- .../__e2e__/models/notebooks-view.model.ts | 2 +- apps/web/__e2e__/models/notes-view.model.ts | 2 +- .../web/__e2e__/models/reminder-item.model.ts | 2 +- .../__e2e__/models/reminders-view.model.ts | 2 +- apps/web/__e2e__/models/search-view-model.ts | 2 +- .../models/session-history-item-model.ts | 2 +- .../models/session-history-preview-model.ts | 2 +- .../web/__e2e__/models/settings-view.model.ts | 64 +- .../__e2e__/models/subnotebooks-view.model.ts | 2 +- apps/web/__e2e__/models/tab-item.model.ts | 2 +- apps/web/__e2e__/models/toasts.model.ts | 4 +- apps/web/__e2e__/models/toggle.model.ts | 2 +- apps/web/__e2e__/models/trash-item.model.ts | 2 +- apps/web/__e2e__/models/trash-view.model.ts | 2 +- apps/web/__e2e__/models/utils.ts | 2 +- apps/web/__e2e__/monographs.test.ts | 3 +- apps/web/__e2e__/navigation.test.ts | 2 +- apps/web/__e2e__/notebooks.issues.test.ts | 2 +- apps/web/__e2e__/notebooks.test.ts | 3 +- apps/web/__e2e__/notehistory.test.ts | 3 +- apps/web/__e2e__/notes.issues.test.ts | 4 +- apps/web/__e2e__/notes.test.ts | 3 +- .../export-html-electron.txt | 184 + .../export-md-electron.txt | 4 + .../export-txt-electron.txt | 3 + apps/web/__e2e__/reminders.test.ts | 5 +- apps/web/__e2e__/search.test.ts | 3 +- apps/web/__e2e__/settings.test.ts | 3 +- apps/web/__e2e__/sync.test.ts | 100 +- apps/web/__e2e__/tabs.test.ts | 3 +- apps/web/__e2e__/tags.test.ts | 10 +- apps/web/__e2e__/user.test.ts | 3 +- apps/web/__e2e__/utils/index.ts | 18 +- apps/web/__e2e__/utils/test.ts | 53 + apps/web/__e2e__/vault.test.ts | 3 +- apps/web/package.json | 3 +- apps/web/src/common/index.ts | 9 +- apps/web/src/hooks/use-menu.ts | 1 + apps/web/tsconfig.json | 7 +- package.json | 1 + 87 files changed, 9074 insertions(+), 2761 deletions(-) create mode 100644 apps/desktop/__tests__/electron-test/base-test.ts create mode 100644 apps/desktop/__tests__/electron-test/common-fixtures.ts rename apps/desktop/__tests__/{ => electron-test}/global-setup.ts (90%) create mode 100644 apps/desktop/__tests__/electron-test/index.ts create mode 100644 apps/desktop/__tests__/electron-test/page-test-api.ts create mode 100644 apps/desktop/__tests__/electron-test/platform-fixtures.ts rename apps/desktop/{vitest.config.ts => __tests__/electron-test/playwright-utils.ts} (55%) create mode 100644 apps/desktop/__tests__/electron-test/test-mode-fixtures.ts create mode 100644 apps/desktop/__tests__/electron-test/test-mode.ts create mode 100644 apps/desktop/__tests__/electron-test/trace-viewer-fixtures.ts rename apps/desktop/__tests__/{ => electron-test}/utils.ts (81%) delete mode 100644 apps/desktop/__tests__/test-override.ts create mode 100644 apps/desktop/patches/playwright-core+1.58.2.patch create mode 100644 apps/desktop/playwright.config.ts create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-1-electron.txt create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-2-electron.txt create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-1-electron.txt create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-2-electron.txt create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/focus-mode-electron.jpg create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/normal-mode-from-focus-mode-electron.jpg create mode 100644 apps/web/__e2e__/editor.test.ts-snapshots/readonly-edited-note-electron.txt create mode 100644 apps/web/__e2e__/notes.test.ts-snapshots/export-html-electron.txt create mode 100644 apps/web/__e2e__/notes.test.ts-snapshots/export-md-electron.txt create mode 100644 apps/web/__e2e__/notes.test.ts-snapshots/export-txt-electron.txt create mode 100644 apps/web/__e2e__/utils/test.ts diff --git a/apps/desktop/__tests__/auto-updates.test.ts b/apps/desktop/__tests__/auto-updates.test.ts index e70e0bb2a..5b57599f7 100644 --- a/apps/desktop/__tests__/auto-updates.test.ts +++ b/apps/desktop/__tests__/auto-updates.test.ts @@ -17,155 +17,92 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { testCleanup, test } from "./test-override.js"; -import { writeFile } from "fs/promises"; -import { Page } from "playwright"; +import { test } from "@nn/test"; import { gt, lt } from "semver"; -import { describe } from "vitest"; +import { AppModel } from "../../web/__e2e__/models/app.model.js"; +import { expect } from "playwright/test"; -test("update starts downloading if version is outdated", async ({ - ctx: { page }, - expect, - onTestFinished -}) => { - onTestFinished(testCleanup); +test.extend({ options: { version: "3.0.0" } })( + "update starts downloading if version is outdated", + async ({ page }) => { + await page.waitForSelector(".ProseMirror"); - await page.waitForSelector("#authForm"); - expect( - await page.getByRole("button", { name: "Create account" }).isVisible() - ).toBe(true); + await page + .locator(".theme-scope-statusBar") + .getByRole("button", { name: /updating/i }) + .waitFor({ state: "attached" }); + } +); - await page - .getByRole("button", { name: "Skip & go directly to the app" }) - .click(); - - await skipDialog(page); - - await page.waitForSelector(".ProseMirror"); - - await page - .locator(".theme-scope-statusBar") - .getByRole("button", { name: /updating/i }) - .waitFor({ state: "attached" }); -}); - -test("update is only shown if version is outdated and auto updates are disabled", async ({ - ctx, - expect, - onTestFinished -}) => { - onTestFinished(testCleanup); - - await ctx.app.close(); - await writeFile( - ctx.configPath, - JSON.stringify({ +test.extend({ + options: { + version: "3.0.0", + config: { automaticUpdates: false - }) - ); + } + } +})( + "update is only shown if version is outdated and auto updates are disabled", + async ({ page }) => { + await page.waitForSelector(".ProseMirror"); - await ctx.relaunch(); + const app = new AppModel(page); + const settings = await app.goToSettings(); - const { page } = ctx; + await settings.checkForUpdates(); + await settings.close(); - await page.waitForSelector("#authForm"); - - expect( - await page.getByRole("button", { name: "Create account" }).isVisible() - ).toBe(true); - - await page - .getByRole("button", { name: "Skip & go directly to the app" }) - .click(); - - await skipDialog(page); + await page + .locator(".theme-scope-statusBar") + .getByRole("button", { name: /available/i }) + .waitFor({ state: "attached" }); + } +); +test.extend({ + options: { + version: "3.0.0-beta.0", + config: { + automaticUpdates: false, + releaseTrack: "beta" + } + } +})("update to stable if it is newer", async ({ page }) => { await page.waitForSelector(".ProseMirror"); - await page + const app = new AppModel(page); + const settings = await app.goToSettings(); + + await settings.checkForUpdates(); + await settings.close(); + + const updateButton = page .locator(".theme-scope-statusBar") - .getByRole("button", { name: /available/i }) - .waitFor({ state: "attached" }); + .getByRole("button", { name: /available/i }); + await updateButton.waitFor({ state: "visible" }); + const content = await updateButton.textContent(); + const version = content?.split(" ")?.[0] || ""; + expect(gt(version, "3.0.0-beta.0")).toBe(true); }); -describe("update to stable if it is newer", () => { - test.scoped({ options: { version: "3.0.0-beta.0" } }); - test("test", async ({ ctx, expect, onTestFinished }) => { - onTestFinished(testCleanup); - - await ctx.app.close(); - await writeFile( - ctx.configPath, - JSON.stringify({ - automaticUpdates: false, - releaseTrack: "beta" - }) - ); - - await ctx.relaunch(); - - const { page } = ctx; - - await page.waitForSelector("#authForm"); - - expect( - await page.getByRole("button", { name: "Create account" }).isVisible() - ).toBe(true); - - await page - .getByRole("button", { name: "Skip & go directly to the app" }) - .click(); - - await skipDialog(page); - +test.extend({ + options: { + version: "99.0.0-beta.0", + config: { + automaticUpdates: false, + releaseTrack: "beta" + } + } +})( + "update is not available if it latest stable version is older", + async ({ page }) => { await page.waitForSelector(".ProseMirror"); - const updateButton = page - .locator(".theme-scope-statusBar") - .getByRole("button", { name: /available/i }); - await updateButton.waitFor({ state: "visible" }); - const content = await updateButton.textContent(); - const version = content?.split(" ")?.[0] || ""; - expect(gt(version, "3.0.0-beta.0")).toBe(true); - }); -}); + const app = new AppModel(page); + const settings = await app.goToSettings(); -describe("update is not available if it latest stable version is older", () => { - test.scoped({ options: { version: "99.0.0-beta.0" } }); - test("test", async ({ ctx, expect, onTestFinished }) => { - onTestFinished(testCleanup); - - await ctx.app.close(); - await writeFile( - ctx.configPath, - JSON.stringify({ - automaticUpdates: false, - releaseTrack: "beta" - }) - ); - - await ctx.relaunch(); - - const { page } = ctx; - - await page.waitForSelector("#authForm"); - - expect( - await page.getByRole("button", { name: "Create account" }).isVisible() - ).toBe(true); - - await page - .getByRole("button", { name: "Skip & go directly to the app" }) - .click(); - - await skipDialog(page); - - await page.waitForSelector(".ProseMirror"); - - await page - .locator(".theme-scope-statusBar") - .getByRole("button", { name: /checking for updates/i }) - .waitFor({ state: "hidden" }); + await settings.checkForUpdates(); + await settings.close(); expect( await page @@ -173,45 +110,24 @@ describe("update is not available if it latest stable version is older", () => { .getByRole("button", { name: /available/i }) .isHidden() ).toBe(true); - }); -}); - -describe("downgrade to stable on switching to stable release track", () => { - test.scoped({ options: { version: "99.0.0-beta.0" } }); - test("test", async ({ ctx, expect, onTestFinished }) => { - onTestFinished(testCleanup); - - await ctx.app.close(); - await writeFile( - ctx.configPath, - JSON.stringify({ - automaticUpdates: false, - releaseTrack: "stable" - }) - ); - - await ctx.relaunch(); - - const { page } = ctx; - - await page.waitForSelector("#authForm"); - - expect( - await page.getByRole("button", { name: "Create account" }).isVisible() - ).toBe(true); - - await page - .getByRole("button", { name: "Skip & go directly to the app" }) - .click(); - - await skipDialog(page); + } +); +test.extend({ + options: { + version: "99.0.0-beta.0", + config: { automaticUpdates: false, releaseTrack: "stable" } + } +})( + "downgrade to stable on switching to stable release track", + async ({ page }) => { await page.waitForSelector(".ProseMirror"); - await page - .locator(".theme-scope-statusBar") - .getByRole("button", { name: /checking for updates/i }) - .waitFor({ state: "hidden" }); + const app = new AppModel(page); + const settings = await app.goToSettings(); + + await settings.checkForUpdates(); + await settings.close(); const updateButton = page .locator(".theme-scope-statusBar") @@ -220,23 +136,5 @@ describe("downgrade to stable on switching to stable release track", () => { const content = await updateButton.textContent(); const version = content?.split(" ")?.[0] || ""; expect(lt(version, "99.0.0-beta.0")).toBe(true); - }); -}); - -async function skipDialog(page: Page) { - try { - const dialog = page.locator(".ReactModal__Content"); - const positiveButton = dialog.locator( - "button[data-role='positive-button']" - ); - const negativeButton = dialog.locator( - "button[data-role='negative-button']" - ); - if (await positiveButton.isVisible()) - await positiveButton.click({ timeout: 1000 }); - else if (await negativeButton.isVisible()) - await negativeButton.click({ timeout: 1000 }); - } catch (e) { - // ignore error } -} +); diff --git a/apps/desktop/__tests__/electron-test/base-test.ts b/apps/desktop/__tests__/electron-test/base-test.ts new file mode 100644 index 000000000..29e00406f --- /dev/null +++ b/apps/desktop/__tests__/electron-test/base-test.ts @@ -0,0 +1,64 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +import { mergeTests } from "@playwright/test"; +import { test } from "@playwright/test"; +import type { CommonFixtures, CommonWorkerFixtures } from "./common-fixtures"; +import { commonFixtures } from "./common-fixtures"; +import { platformTest } from "./platform-fixtures"; +import { testModeTest } from "./test-mode-fixtures"; + +export const base = test; + +export const baseTest = mergeTests(base, platformTest, testModeTest).extend< + CommonFixtures, + CommonWorkerFixtures +>(commonFixtures); + +export function step< + This extends NonNullable, + Args extends any[], + Return +>( + target: (this: This, ...args: Args) => Promise, + context: ClassMethodDecoratorContext< + This, + (this: This, ...args: Args) => Promise + > +) { + function replacementMethod(this: This, ...args: Args): Promise { + const name = + this.constructor.name + + "." + + (context.name as string) + + "(" + + args.map((a) => JSON.stringify(a)).join(",") + + ")"; + return test.step(name, async () => { + return await target.call(this, ...args); + }); + } + return replacementMethod; +} + +// declare global { +// interface Window { +// builtins: Builtins; +// } +// } diff --git a/apps/desktop/__tests__/electron-test/common-fixtures.ts b/apps/desktop/__tests__/electron-test/common-fixtures.ts new file mode 100644 index 000000000..6fa2011c8 --- /dev/null +++ b/apps/desktop/__tests__/electron-test/common-fixtures.ts @@ -0,0 +1,347 @@ +/* eslint-disable header/header */ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Fixtures } from "@playwright/test"; +import type { ChildProcess } from "child_process"; +import { execSync, spawn } from "child_process"; +import net from "net"; +import fs from "fs"; +import { stripAnsi } from "./playwright-utils"; + +type TestChildParams = { + command: string[]; + cwd?: string; + env?: NodeJS.ProcessEnv; + shell?: boolean; + onOutput?: () => void; +}; + +import childProcess from "child_process"; + +type ProcessData = { + pid: number; // process ID + pgrp: number; // process group ID + children: Set; // direct children of the process +}; + +function readAllProcessesLinux(): { + pid: number; + ppid: number; + pgrp: number; +}[] { + const result: { pid: number; ppid: number; pgrp: number }[] = []; + for (const dir of fs.readdirSync("/proc")) { + const pid = +dir; + if (isNaN(pid)) continue; + try { + const statFile = fs.readFileSync(`/proc/${pid}/stat`, "utf8"); + // Format of /proc/*/stat is described https://man7.org/linux/man-pages/man5/proc.5.html + const match = statFile.match( + /^(?\d+)\s+\((?.*)\)\s+(?R|S|D|Z|T|t|W|X|x|K|W|P)\s+(?\d+)\s+(?\d+)/ + ); + if (match && match.groups) { + result.push({ + pid: +match.groups.pid, + ppid: +match.groups.ppid, + pgrp: +match.groups.pgrp + }); + } + } catch (e) { + // We don't have access to some /proc//stat file. + } + } + return result; +} + +function readAllProcessesMacOS(): { + pid: number; + ppid: number; + pgrp: number; +}[] { + const result: { pid: number; ppid: number; pgrp: number }[] = []; + const processTree = childProcess.spawnSync("ps", ["-eo", "pid,pgid,ppid"]); + const lines = processTree.stdout.toString().trim().split("\n"); + for (const line of lines) { + const [pid, pgrp, ppid] = line + .trim() + .split(/\s+/) + .map((token) => +token); + // On linux, the very first line of `ps` is the header with "PID PGID PPID". + if (isNaN(pid) || isNaN(pgrp) || isNaN(ppid)) continue; + result.push({ pid, ppid, pgrp }); + } + return result; +} + +function buildProcessTreePosix(pid: number): ProcessData | undefined { + // Certain Linux distributions might not have `ps` installed. + const allProcesses = + process.platform === "darwin" + ? readAllProcessesMacOS() + : readAllProcessesLinux(); + const pidToProcess = new Map(); + for (const { pid, pgrp } of allProcesses) + pidToProcess.set(pid, { pid, pgrp, children: new Set() }); + for (const { pid, ppid } of allProcesses) { + const parent = pidToProcess.get(ppid); + const child = pidToProcess.get(pid); + // On POSIX, certain processes might not have parent (e.g. PID=1 and occasionally PID=2) + // or we might not have access to it proc info. + if (parent && child) parent.children.add(child); + } + return pidToProcess.get(pid); +} + +export class TestChildProcess { + params: TestChildParams; + process: ChildProcess; + output = ""; + stdout = ""; + stderr = ""; + fullOutput = ""; + onOutput?: (chunk: string | Buffer) => void; + exited: Promise<{ exitCode: number | null; signal: string | null }>; + exitCode: Promise; + + private _outputCallbacks = new Set<() => void>(); + + constructor(params: TestChildParams) { + this.params = params; + // See https://nodejs.org/api/deprecations.html#DEP0190 + const command = params.shell ? params.command.join(" ") : params.command[0]; + const args = params.shell ? [] : params.command.slice(1); + this.process = spawn(command, args, { + env: { + ...process.env, + ...params.env + }, + cwd: params.cwd, + shell: params.shell, + // On non-windows platforms, `detached: true` makes child process a leader of a new + // process group, making it possible to kill child process tree with `.kill(-pid)` command. + // @see https://nodejs.org/api/child_process.html#child_process_options_detached + detached: process.platform !== "win32" + }); + if (process.env.PWTEST_DEBUG) + process.stdout.write(`\n\nLaunching ${params.command.join(" ")}\n`); + this.onOutput = params.onOutput; + + const appendChunk = (type: "stdout" | "stderr", chunk: string | Buffer) => { + this.output += String(chunk); + if (type === "stderr") this.stderr += String(chunk); + else this.stdout += String(chunk); + if (process.env.PWTEST_DEBUG) process.stdout.write(String(chunk)); + else this.fullOutput += String(chunk); + this.onOutput?.(chunk); + for (const cb of this._outputCallbacks) cb(); + this._outputCallbacks.clear(); + }; + + this.process.stderr!.on("data", appendChunk.bind(null, "stderr")); + this.process.stdout!.on("data", appendChunk.bind(null, "stdout")); + + const killProcessGroup = this._killProcessTree.bind(this, "SIGKILL"); + process.on("exit", killProcessGroup); + this.exited = new Promise((f) => { + this.process.on("exit", (exitCode, signal) => f({ exitCode, signal })); + process.off("exit", killProcessGroup); + }); + this.exitCode = this.exited.then((r) => r.exitCode); + } + + outputLines(): string[] { + const strippedOutput = stripAnsi(this.output); + return strippedOutput + .split("\n") + .filter((line) => line.startsWith("%%")) + .map((line) => line.substring(2).trim()); + } + + async kill(signal: "SIGINT" | "SIGKILL" = "SIGKILL") { + this._killProcessTree(signal); + return this.exited; + } + + private _killProcessTree(signal: "SIGINT" | "SIGKILL") { + if (!this.process.pid || !this.process.kill(0)) return; + killProcessGroup(this.process.pid, signal); + } + + async cleanExit() { + const r = await this.exited; + if (r.exitCode) + throw new Error( + `Process failed with exit code ${r.exitCode}. Output:\n${this.output}` + ); + if (r.signal) + throw new Error( + `Process received signal: ${r.signal}. Output:\n${this.output}` + ); + } + + async waitForOutput(substring: string, count = 1) { + while (countTimes(stripAnsi(this.output), substring) < count) + await new Promise((f) => this._outputCallbacks.add(f)); + } + + clearOutput() { + this.output = ""; + } + + write(chars: string) { + this.process.stdin!.write(chars); + } +} + +export function killProcessGroup( + pid: number, + signal: "SIGINT" | "SIGKILL" = "SIGKILL" +) { + // On Windows, we always call `taskkill` no matter signal. + if (process.platform === "win32") { + try { + execSync(`taskkill /pid ${pid} /T /F /FI "MEMUSAGE gt 0"`, { + stdio: "ignore" + }); + } catch (e) { + // the process might have already stopped + } + return; + } + + // In case of POSIX and `SIGINT` signal, send it to the main process group only. + if (signal === "SIGINT") { + try { + process.kill(-pid, "SIGINT"); + } catch (e) { + // the process might have already stopped + } + return; + } + + // In case of POSIX and `SIGKILL` signal, we should send it to all descendant process groups. + const rootProcess = buildProcessTreePosix(pid); + if (!rootProcess) return; + + const descendantProcessGroups = (function flatten( + processData: ProcessData, + result: Set = new Set() + ) { + // Process can nullify its own process group with `setpgid`. Use its PID instead. + result.add(processData.pgrp || processData.pid); + processData.children.forEach((child) => flatten(child, result)); + return result; + })(rootProcess); + for (const pgrp of descendantProcessGroups) { + try { + process.kill(-pgrp, "SIGKILL"); + } catch (e) { + // the process might have already stopped + } + } +} + +export type CommonFixtures = { + childProcess: (params: TestChildParams) => TestChildProcess; + waitForPort: (port: number) => Promise; + findFreePort: () => Promise; +}; + +export type CommonWorkerFixtures = { + daemonProcess: (params: TestChildParams) => TestChildProcess; +}; + +export const commonFixtures: Fixtures = { + childProcess: async ({}, use, testInfo) => { + const processes: TestChildProcess[] = []; + await use((params) => { + const process = new TestChildProcess(params); + processes.push(process); + return process; + }); + await Promise.all(processes.map(async (child) => child.kill())); + if ( + testInfo.status !== "passed" && + testInfo.status !== "skipped" && + !process.env.PWTEST_DEBUG + ) { + for (const process of processes) { + console.log("====== " + process.params.command.join(" ")); + console.log(process.fullOutput.replace(/\x1Bc/g, "")); + console.log("========================================="); + } + } + }, + + daemonProcess: [ + async ({}, use) => { + const processes: TestChildProcess[] = []; + await use((params) => { + const process = new TestChildProcess(params); + processes.push(process); + return process; + }); + await Promise.all(processes.map((child) => child.kill("SIGINT"))); + }, + { scope: "worker" } + ], + + waitForPort: async ({}, use) => { + const token = { canceled: false }; + await use(async (port) => { + while (!token.canceled) { + const promise = new Promise((resolve) => { + const conn = net + .connect(port, "127.0.0.1") + .on("error", () => resolve(false)) + .on("connect", () => { + conn.end(); + resolve(true); + }); + }); + if (await promise) return; + await new Promise((x) => setTimeout(x, 100)); + } + }); + token.canceled = true; + }, + + findFreePort: async ({}, use) => { + await use(async () => { + return new Promise((resolve, reject) => { + const server = net.createServer(); + server.listen(0, "127.0.0.1", () => { + const { port } = server.address() as net.AddressInfo; + server.close(() => resolve(port)); + }); + server.on("error", reject); + }); + }); + } +}; + +export function countTimes(s: string, sub: string): number { + let result = 0; + for (let index = 0; index !== -1; ) { + index = s.indexOf(sub, index); + if (index !== -1) { + result++; + index += sub.length; + } + } + return result; +} diff --git a/apps/desktop/__tests__/global-setup.ts b/apps/desktop/__tests__/electron-test/global-setup.ts similarity index 90% rename from apps/desktop/__tests__/global-setup.ts rename to apps/desktop/__tests__/electron-test/global-setup.ts index 28337fce0..e82dfeca5 100644 --- a/apps/desktop/__tests__/global-setup.ts +++ b/apps/desktop/__tests__/electron-test/global-setup.ts @@ -19,6 +19,7 @@ along with this program. If not, see . import { buildApp } from "./utils"; -export default async function setup() { +export default async function globalSetup() { + console.log("Building the app..."); await buildApp(); } diff --git a/apps/desktop/__tests__/electron-test/index.ts b/apps/desktop/__tests__/electron-test/index.ts new file mode 100644 index 000000000..c080fea17 --- /dev/null +++ b/apps/desktop/__tests__/electron-test/index.ts @@ -0,0 +1,152 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +/* eslint-disable no-empty-pattern */ + +import { AppContext, buildAndLaunchApp, TestOptions } from "./utils"; +import path from "path"; +import { version } from "../../package.json"; +import type { Browser, ElectronApplication, Page } from "@playwright/test"; +import type { TraceViewerFixtures } from "./trace-viewer-fixtures"; +import { traceViewerFixtures } from "./trace-viewer-fixtures"; +import { PageTestFixtures, PageWorkerFixtures } from "./page-test-api"; +import fs from "fs"; +import { tmpdir } from "os"; +import { baseTest } from "./base-test"; + +export type ElectronTestFixtures = PageTestFixtures & { + electronApp: ElectronApplication; + launchElectronApp: (options?: TestOptions) => Promise; + createUserDataDir: () => Promise; + options: TestOptions; + newPage: () => Promise; +}; + +export type { Page, Browser } from "@playwright/test"; +export { expect } from "@playwright/test"; +export const test = baseTest + .extend(traceViewerFixtures) + .extend({ + browserVersion: [ + ({}, use) => use(process.env.ELECTRON_CHROMIUM_VERSION!), + { scope: "worker" } + ], + browserMajorVersion: [ + ({}, use) => + use(Number(process.env.ELECTRON_CHROMIUM_VERSION!.split(".")[0])), + { scope: "worker" } + ], + electronMajorVersion: [ + ({}, use) => + use( + parseInt(require("electron/package.json").version.split(".")[0], 10) + ), + { scope: "worker" } + ], + isBidi: [false, { scope: "worker" }], + isAndroid: [false, { scope: "worker" }], + isElectron: [true, { scope: "worker" }], + isHeadlessShell: [false, { scope: "worker" }], + isFrozenWebkit: [false, { scope: "worker" }], + + createUserDataDir: async ({}, run) => { + const dirs: string[] = []; + // We do not put user data dir in testOutputPath, + // because we do not want to upload them as test result artifacts. + await run(async () => { + const dir = await fs.promises.mkdtemp( + path.join(tmpdir(), "playwright-test-") + ); + dirs.push(dir); + return dir; + }); + await removeFolders(dirs); + }, + + launchElectronApp: async ({ createUserDataDir }, use) => { + // This env prevents 'Electron Security Policy' console message. + process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"; + const apps: AppContext[] = []; + await use(async (options?: TestOptions) => { + const userDataDir = await createUserDataDir(); + const ctx = await buildAndLaunchApp( + userDataDir, + options || { + version, + config: {} + } + ); + apps.push(ctx); + return ctx.app; + }); + for (const ctx of apps) { + await ctx.app.close(); + } + await removeFolders(apps.map((ctx) => ctx.outputDir)); + }, + + electronApp: async ({ launchElectronApp, options }, use) => { + await use(await launchElectronApp(options)); + }, + + page: async ({ electronApp, viewport }, run) => { + const page = await electronApp.firstWindow(); + if (viewport) { + await page.setViewportSize(viewport); + await electronApp.evaluate((p, viewport) => { + const mainWindow = p.BrowserWindow.getAllWindows()[0]; + mainWindow.setSize(viewport.width, viewport.height); + }, viewport); + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + page.context().app = electronApp; + await run(page); + }, + + context: async ({ electronApp }, run) => { + await run(electronApp.context()); + }, + + newPage: async ({ launchElectronApp, options }, use) => { + await use(async () => { + const app = await launchElectronApp(options); + return app.firstWindow(); + }); + }, + + options: async ({}, use) => { + await use({ + version, + config: {} + }); + } + }); + +async function removeFolders(folders: string[]) { + await Promise.all( + folders.map((folder) => + fs.promises.rm(folder, { + force: true, + recursive: true, + maxRetries: 3, + retryDelay: 5000 + }) + ) + ); +} diff --git a/apps/desktop/__tests__/electron-test/page-test-api.ts b/apps/desktop/__tests__/electron-test/page-test-api.ts new file mode 100644 index 000000000..b2531d54f --- /dev/null +++ b/apps/desktop/__tests__/electron-test/page-test-api.ts @@ -0,0 +1,58 @@ +/* eslint-disable header/header */ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Browser, Page, ViewportSize } from "playwright-core"; +import type { + PageScreenshotOptions, + ScreenshotMode, + VideoMode +} from "@playwright/test"; +export { expect } from "@playwright/test"; + +// Page test does not guarantee an isolated context, just a new page (because Android). +export type PageTestFixtures = { + page: Page; +}; + +export type PageWorkerFixtures = { + headless: boolean; + channel: string | undefined; + screenshot: + | ScreenshotMode + | ({ mode: ScreenshotMode } & Pick< + PageScreenshotOptions, + "fullPage" | "omitBackground" + >); + trace: + | "off" + | "on" + | "retain-on-failure" + | "on-first-retry" + | "retain-on-first-failure" + | "on-all-retries" + | /** deprecated */ "retry-with-trace"; + video: VideoMode | { mode: VideoMode; size: ViewportSize }; + browserName: "chromium" | "firefox" | "webkit"; + browserVersion: string; + browserMajorVersion: number; + electronMajorVersion: number; + isBidi: boolean; + isAndroid: boolean; + isElectron: boolean; + isHeadlessShell: boolean; + isFrozenWebkit: boolean; +}; diff --git a/apps/desktop/__tests__/electron-test/platform-fixtures.ts b/apps/desktop/__tests__/electron-test/platform-fixtures.ts new file mode 100644 index 000000000..e149a600a --- /dev/null +++ b/apps/desktop/__tests__/electron-test/platform-fixtures.ts @@ -0,0 +1,47 @@ +/* eslint-disable header/header */ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { test } from "@playwright/test"; +import os from "os"; + +export type PlatformWorkerFixtures = { + platform: "win32" | "darwin" | "linux"; + isWindows: boolean; + isMac: boolean; + isLinux: boolean; + macVersion: number; // major only, 11 or later, zero if not mac +}; + +function platform(): "win32" | "darwin" | "linux" { + if (process.env.PLAYWRIGHT_SERVICE_OS === "linux") return "linux"; + if (process.env.PLAYWRIGHT_SERVICE_OS === "windows") return "win32"; + if (process.env.PLAYWRIGHT_SERVICE_OS === "macos") return "darwin"; + return process.platform as "win32" | "darwin" | "linux"; +} + +function macVersion() { + if (process.platform !== "darwin") return 0; + return +os.release().split(".")[0] - 9; +} + +export const platformTest = test.extend<{}, PlatformWorkerFixtures>({ + platform: [platform(), { scope: "worker" }], + isWindows: [platform() === "win32", { scope: "worker" }], + isMac: [platform() === "darwin", { scope: "worker" }], + isLinux: [platform() === "linux", { scope: "worker" }], + macVersion: [macVersion(), { scope: "worker" }] +}); diff --git a/apps/desktop/vitest.config.ts b/apps/desktop/__tests__/electron-test/playwright-utils.ts similarity index 55% rename from apps/desktop/vitest.config.ts rename to apps/desktop/__tests__/electron-test/playwright-utils.ts index 539e268a9..c25d7397c 100644 --- a/apps/desktop/vitest.config.ts +++ b/apps/desktop/__tests__/electron-test/playwright-utils.ts @@ -17,26 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - testTimeout: 120 * 1000, - hookTimeout: 120 * 1000, - sequence: { - concurrent: true, - shuffle: true - }, - globalSetup: "./__tests__/global-setup.ts", - dir: "./__tests__/", - exclude: [ - "**/node_modules/**", - "**/dist/**", - "**/cypress/**", - "**/.{idea,git,cache,output,temp}/**", - "**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*", - "**/test-results/**", - "**/test-artifacts/**" - ] - } -}); +const ansiRegex = new RegExp( + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))", + "g" +); +export function stripAnsi(str: string): string { + return str.replace(ansiRegex, ""); +} diff --git a/apps/desktop/__tests__/electron-test/test-mode-fixtures.ts b/apps/desktop/__tests__/electron-test/test-mode-fixtures.ts new file mode 100644 index 000000000..1dd051133 --- /dev/null +++ b/apps/desktop/__tests__/electron-test/test-mode-fixtures.ts @@ -0,0 +1,75 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +import { test } from "@playwright/test"; +import type { TestModeName } from "./test-mode"; +import { DefaultTestMode, DriverTestMode } from "./test-mode"; + +export type TestModeWorkerOptions = { + mode: TestModeName; +}; + +export type TestModeTestFixtures = { + toImpl: (rpcObject?: any) => any; +}; + +export type TestModeWorkerFixtures = { + toImplInWorkerScope: (rpcObject?: any) => any; + playwright: typeof import("@playwright/test"); +}; + +export const testModeTest = test.extend< + TestModeTestFixtures, + TestModeWorkerOptions & TestModeWorkerFixtures +>({ + mode: ["default", { scope: "worker", option: true }], + playwright: [ + async ({ mode }, run) => { + const testMode = { + default: new DefaultTestMode(), + service: new DefaultTestMode(), + service2: new DefaultTestMode(), + "service-grid": new DefaultTestMode(), + wsl: new DefaultTestMode(), + driver: new DriverTestMode() + }[mode]; + const playwright = await testMode.setup(); + await run(playwright); + await testMode.teardown(); + }, + { scope: "worker" } + ], + + toImplInWorkerScope: [ + async ({ playwright }, use) => { + await use((playwright as any)._connection.toImpl); + }, + { scope: "worker" } + ], + + toImpl: async ( + { toImplInWorkerScope: toImplWorker, mode }, + use, + testInfo + ) => { + if (mode !== "default" || process.env.PW_TEST_REUSE_CONTEXT) + testInfo.skip(); + await use(toImplWorker); + } +}); diff --git a/apps/desktop/__tests__/electron-test/test-mode.ts b/apps/desktop/__tests__/electron-test/test-mode.ts new file mode 100644 index 000000000..e1ed86bd6 --- /dev/null +++ b/apps/desktop/__tests__/electron-test/test-mode.ts @@ -0,0 +1,59 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +/* eslint-disable @typescript-eslint/ban-ts-comment */ + +// @ts-ignore +import { start } from "playwright-core/lib/outofprocess"; +// @ts-ignore +import type { Playwright } from "playwright-core/lib/client/playwright"; + +export type TestModeName = + | "default" + | "driver" + | "service" + | "service2" + | "wsl"; + +interface TestMode { + setup(): Promise; + teardown(): Promise; +} + +export class DriverTestMode implements TestMode { + private _impl: { playwright: Playwright; stop: () => Promise }; + + async setup() { + this._impl = await start({ + NODE_OPTIONS: undefined // Hide driver process while debugging. + }); + return this._impl.playwright; + } + + async teardown() { + await this._impl.stop(); + } +} + +export class DefaultTestMode implements TestMode { + async setup() { + return require("playwright-core"); + } + + async teardown() {} +} diff --git a/apps/desktop/__tests__/electron-test/trace-viewer-fixtures.ts b/apps/desktop/__tests__/electron-test/trace-viewer-fixtures.ts new file mode 100644 index 000000000..2d3eb119c --- /dev/null +++ b/apps/desktop/__tests__/electron-test/trace-viewer-fixtures.ts @@ -0,0 +1,243 @@ +/* eslint-disable header/header */ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { + Fixtures, + FrameLocator, + Locator, + Page, + Browser, + BrowserContext +} from "@playwright/test"; +import { step } from "./base-test"; +import path from "path"; +import { CommonFixtures, TestChildProcess } from "./common-fixtures"; + +type BaseTestFixtures = CommonFixtures & { + context: BrowserContext; +}; + +type BaseWorkerFixtures = { + headless: boolean; + browser: Browser; + browserName: "chromium" | "firefox" | "webkit"; + playwright: typeof import("@playwright/test"); +}; + +export type TraceViewerFixtures = { + showTraceViewer: ( + trace: string | undefined, + options?: { host?: string; port?: number; stdin?: boolean } + ) => Promise; + runAndTrace: ( + body: () => Promise, + optsOverrides?: Parameters[0] + ) => Promise; +}; + +class TraceViewerPage { + actionTitles: Locator; + actionsTree: Locator; + callLines: Locator; + consoleLines: Locator; + logLines: Locator; + errorMessages: Locator; + consoleLineMessages: Locator; + consoleStacks: Locator; + networkRequests: Locator; + metadataTab: Locator; + snapshotContainer: Locator; + sourceCodeTab: Locator; + networkTab: Locator; + + settingsDialog: Locator; + themeSetting: Locator; + displayCanvasContentSetting: Locator; + + constructor(public page: Page, public process: TestChildProcess) { + this.actionTitles = page.locator(".action-title"); + this.actionsTree = page.getByTestId("actions-tree"); + this.callLines = page.locator(".call-tab .call-line"); + this.logLines = page + .getByRole("list", { name: "Log entries" }) + .getByRole("listitem"); + this.consoleLines = page + .getByRole("tabpanel", { name: "Console" }) + .getByRole("listitem"); + this.consoleLineMessages = page.locator(".console-line-message"); + this.errorMessages = page.locator(".error-message"); + this.consoleStacks = page.locator(".console-stack"); + this.networkRequests = page + .getByRole("list", { name: "Network requests" }) + .getByRole("listitem"); + this.snapshotContainer = page.locator( + ".snapshot-container iframe.snapshot-visible[name=snapshot]" + ); + this.metadataTab = page.getByRole("tabpanel", { name: "Metadata" }); + this.sourceCodeTab = page.getByRole("tabpanel", { name: "Source" }); + this.networkTab = page.getByRole("tabpanel", { name: "Network" }); + + this.settingsDialog = page.getByTestId("settings-toolbar-dialog"); + this.themeSetting = this.settingsDialog.getByRole("combobox", { + name: "Theme" + }); + this.displayCanvasContentSetting = page + .locator(".setting") + .getByText("Display canvas content"); + } + + @step + async showAllActions() { + await this.page.getByRole("button", { name: "Filter actions" }).click(); + await this.page.locator(".setting").getByText("Network routes").click(); + await this.page.locator(".setting").getByText("Getters").click(); + await this.page.locator(".setting").getByText("Configuration").click(); + await this.page.getByRole("button", { name: "Filter actions" }).click(); + } + + stackFrames(options: { selected?: boolean } = {}) { + const entry = this.page + .getByRole("list", { name: "Stack trace" }) + .getByRole("listitem"); + if (options.selected) return entry.locator(":scope.selected"); + return entry; + } + + actionIconsText(action: string) { + const entry = this.actionsTree.getByRole("treeitem", { name: action }); + return entry.locator(".action-icon-value").filter({ visible: true }); + } + + actionIcons(action: string) { + return this.actionsTree + .getByRole("treeitem", { name: action }) + .locator(".action-icons") + .filter({ visible: true }); + } + + @step + async expandAction(title: string) { + await this.actionsTree + .getByRole("treeitem", { name: title }) + .locator(".codicon-chevron-right") + .click(); + } + + @step + async selectAction(title: string, ordinal: number = 0) { + await this.actionsTree.getByTitle(title).nth(ordinal).click(); + } + + @step + async hoverAction(title: string, ordinal: number = 0) { + await this.actionsTree + .getByRole("treeitem", { name: title }) + .nth(ordinal) + .hover(); + } + + @step + async selectSnapshot(name: string) { + await this.page.getByRole("tab", { name }).click(); + } + + async showErrorsTab() { + await this.page.getByRole("tab", { name: "Errors" }).click(); + } + + async showConsoleTab() { + await this.page.getByRole("tab", { name: "Console" }).click(); + } + + async showSourceTab() { + await this.page.getByRole("tab", { name: "Source" }).click(); + } + + async showNetworkTab() { + await this.page.getByRole("tab", { name: "Network" }).click(); + } + + async showMetadataTab() { + await this.page.getByRole("tab", { name: "Metadata" }).click(); + } + + async showSettings() { + await this.page.getByRole("button", { name: "Settings" }).click(); + } + + @step + async snapshotFrame( + actionName: string, + ordinal: number = 0, + hasSubframe: boolean = false + ): Promise { + await this.selectAction(actionName, ordinal); + while (this.page.frames().length < (hasSubframe ? 4 : 3)) + await this.page.waitForEvent("frameattached"); + return this.page.frameLocator("iframe.snapshot-visible[name=snapshot]"); + } +} + +export const traceViewerFixtures: Fixtures< + TraceViewerFixtures, + {}, + BaseTestFixtures, + BaseWorkerFixtures +> = { + showTraceViewer: async ({ playwright, childProcess, browserName }, use) => { + const browsers: Browser[] = []; + await use(async (trace: string | undefined, { host, port, stdin } = {}) => { + const command = [ + "node", + path.join(__dirname, "../../node_modules/playwright-core/cli.js"), + "show-trace", + "--port", + "" + (port ?? "0") + ]; + if (host) command.push("--host", host); + if (stdin) command.push("--stdin"); + if (trace) command.push(trace); + const cp = childProcess({ command }); + await cp.waitForOutput("Listening on"); + const browser = await playwright.chromium.launch({ + ...(browserName === "chromium" ? {} : { channel: "chromium" }), + executablePath: process.env.CRPATH // without this, setting FFPATH makes us launch Firefox with Chromium args + }); + browsers.push(browser); + const page = await browser.newPage(); + const url = cp.output.match(/Listening on (http:\/\/[^\s]+)/)![1]; + await page.goto(url); + return new TraceViewerPage(page, cp); + }); + for (const browser of browsers) await browser.close(); + }, + + runAndTrace: async ({ context, showTraceViewer }, use, testInfo) => { + await use(async (body: () => Promise, optsOverrides = {}) => { + const traceFile = testInfo.outputPath("trace.zip"); + await context.tracing.start({ + snapshots: true, + screenshots: true, + sources: true, + ...optsOverrides + }); + await body(); + await context.tracing.stop({ path: traceFile }); + return showTraceViewer(traceFile); + }); + } +}; diff --git a/apps/desktop/__tests__/utils.ts b/apps/desktop/__tests__/electron-test/utils.ts similarity index 81% rename from apps/desktop/__tests__/utils.ts rename to apps/desktop/__tests__/electron-test/utils.ts index bdc17d38a..94f15949b 100644 --- a/apps/desktop/__tests__/utils.ts +++ b/apps/desktop/__tests__/electron-test/utils.ts @@ -19,21 +19,18 @@ along with this program. If not, see . import { execSync } from "child_process"; import { cp } from "fs/promises"; -import { fileURLToPath } from "node:url"; import path, { join, resolve } from "path"; -import { _electron as electron } from "playwright"; +import { _electron as electron, ElectronApplication, Page } from "playwright"; import { existsSync } from "fs"; +import { mkdir, writeFile } from "node:fs/promises"; -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); const IS_DEBUG = process.env.NN_DEBUG === "true" || process.env.CI === "true"; const productName = `NotesnookTestHarness`; -const SOURCE_DIR = resolve("output", productName); +const root = path.resolve(__dirname, "..", ".."); +const SOURCE_DIR = resolve(root, "output", productName); export interface AppContext { app: import("playwright").ElectronApplication; - page: import("playwright").Page; - configPath: string; userDataDir: string; outputDir: string; relaunch: () => Promise; @@ -41,6 +38,7 @@ export interface AppContext { export interface TestOptions { version: string; + config?: Record; } export interface Fixtures { @@ -49,35 +47,41 @@ export interface Fixtures { } export async function buildAndLaunchApp( + userDataDir: string, options?: TestOptions ): Promise { + await buildApp(options?.version); + const productName = `notesnooktest${makeid(10)}`; - const outputDir = path.join("test-artifacts", `${productName}-output`); + const outputDir = path.join(root, "test-artifacts", `${productName}-output`); const executablePath = await copyBuild({ ...options, outputDir }); - const { app, page, configPath, userDataDir } = await launchApp( + + const configPath = path.join(userDataDir, "UserData", "config.json"); + if (options?.config) { + await mkdir(path.dirname(configPath), { recursive: true }); + await writeFile(configPath, JSON.stringify(options.config)); + } + + const { app } = await launchApp( executablePath, - productName, + userDataDir, options?.version ); const ctx: AppContext = { app, - page, - configPath, userDataDir, outputDir, relaunch: async () => { - const { app, page, configPath, userDataDir } = await launchApp( + const { app } = await launchApp( executablePath, - productName, + userDataDir, options?.version ); ctx.app = app; - ctx.page = page; ctx.userDataDir = userDataDir; - ctx.configPath = configPath; } }; return ctx; @@ -85,19 +89,14 @@ export async function buildAndLaunchApp( async function launchApp( executablePath: string, - packageName: string, + userDataDir: string, version?: string ) { - const userDataDir = resolve( - __dirname, - "..", - "test-artifacts", - "user_data_dirs", - packageName - ); const app = await electron.launch({ executablePath, args: IS_DEBUG ? [] : ["--hidden"], + baseURL: "https://app.notesnook.com", + acceptDownloads: true, env: { ...(process.platform === "linux" ? { @@ -114,20 +113,28 @@ async function launchApp( } }); - const page = await app.firstWindow(); - - const configPath = path.join(userDataDir, "UserData", "config.json"); return { app, - page, - configPath, userDataDir }; } +export function getAppFromPage(page: Page) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + return page.context().app as ElectronApplication; +} + let MAX_RETRIES = 3; export async function buildApp(version?: string) { if (!existsSync(SOURCE_DIR)) { + execSync( + `node ${path.join(root, "scripts", "build.mjs")} --test --rebuild`, + { + stdio: IS_DEBUG ? "inherit" : "ignore" + } + ); + const args = [ "electron-builder", "--dir", @@ -151,7 +158,7 @@ export async function buildApp(version?: string) { }); } catch (e) { if (--MAX_RETRIES) { - console.log("retrying..."); + console.log("retrying...", e); return await buildApp(version); } else throw e; } @@ -189,8 +196,7 @@ async function makeBuildCopyMacOS(outputDir: string, productName: string) { const platformDir = process.arch === "arm64" ? "mac-arm64" : "mac"; const appDir = await makeBuildCopy(outputDir, platformDir); return resolve( - __dirname, - "..", + root, appDir, `${productName}.app`, "Contents", diff --git a/apps/desktop/__tests__/launch.test.ts b/apps/desktop/__tests__/launch.test.ts index fd576a86f..266f54fdf 100644 --- a/apps/desktop/__tests__/launch.test.ts +++ b/apps/desktop/__tests__/launch.test.ts @@ -17,24 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { testCleanup, test } from "./test-override.js"; - -test("make sure app loads", async ({ - ctx: { page }, - expect, - onTestFinished -}) => { - onTestFinished(testCleanup); - - await page.waitForSelector("#authForm"); - - expect( - await page.getByRole("button", { name: "Create account" }).isVisible() - ).toBe(true); - - await page - .getByRole("button", { name: "Skip & go directly to the app" }) - .click(); - +import { test } from "@nn/test"; +test("make sure app loads", async ({ page }) => { await page.waitForSelector(".ProseMirror"); }); diff --git a/apps/desktop/__tests__/test-override.ts b/apps/desktop/__tests__/test-override.ts deleted file mode 100644 index 698c65d9f..000000000 --- a/apps/desktop/__tests__/test-override.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* -This file is part of the Notesnook project (https://notesnook.com/) - -Copyright (C) 2023 Streetwriters (Private) Limited - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -import { test as vitestTest, TestContext } from "vitest"; -import { buildAndLaunchApp, Fixtures, TestOptions } from "./utils"; -import { mkdir, rm } from "fs/promises"; -import path from "path"; -import slugify from "slugify"; - -export const test = vitestTest.extend({ - options: { version: "3.0.0" } as TestOptions, - ctx: async ({ options }, use) => { - const ctx = await buildAndLaunchApp(options); - await use(ctx); - } -}); - -export async function testCleanup(context: TestContext) { - const ctx = (context.task.context as unknown as Fixtures).ctx; - if (context.task.result?.state === "fail") { - await mkdir("test-results", { recursive: true }); - await ctx.page.screenshot({ - path: path.join( - "test-results", - `${slugify(context.task.name)}-${process.platform}-${ - process.arch - }-error.png` - ) - }); - } - await ctx.app.close(); - await rm(ctx.userDataDir, { - force: true, - recursive: true, - maxRetries: 3, - retryDelay: 5000 - }).catch(() => { - /*ignore */ - }); - await rm(ctx.outputDir, { - force: true, - recursive: true, - maxRetries: 3, - retryDelay: 5000 - }).catch(() => { - /*ignore */ - }); -} diff --git a/apps/desktop/package-lock.json b/apps/desktop/package-lock.json index 532027c9b..d8f1691fd 100644 --- a/apps/desktop/package-lock.json +++ b/apps/desktop/package-lock.json @@ -26,6 +26,7 @@ "zod": "3.24.3" }, "devDependencies": { + "@playwright/test": "^1.58.2", "@streetwriters/kysely": "^0.27.4", "@types/node": "22.15.3", "@types/yargs": "^17.0.33", @@ -33,9 +34,10 @@ "electron": "^37.0.0", "electron-builder": "^26.8.1", "esbuild": "0.21.5", + "fkill": "^10.0.3", "node-abi": "^4.5.0", "node-gyp-build": "^4.8.4", - "playwright": "1.48.2", + "playwright": "1.58.2", "prebuildify": "^6.0.1", "slugify": "1.6.6", "tree-kill": "^1.2.2", @@ -70,6 +72,5465 @@ "react": ">=18" } }, + "../../packages/intl/node_modules/@ampproject/remapping": { + "version": "2.3.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/intl/node_modules/@babel/code-frame": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/compat-data": { + "version": "7.24.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/core": { + "version": "7.24.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "../../packages/intl/node_modules/@babel/generator": { + "version": "7.24.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-compilation-targets": { + "version": "7.24.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-module-transforms": { + "version": "7.24.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/helpers": { + "version": "7.24.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/highlight": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/parser": { + "version": "7.25.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/intl/node_modules/@babel/runtime": { + "version": "7.24.8", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/template": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/traverse": { + "version": "7.24.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@babel/types": { + "version": "7.25.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "../../packages/intl/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "../../packages/intl/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "../../packages/intl/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "../../packages/intl/node_modules/@jest/schemas": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "../../packages/intl/node_modules/@jest/types": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "../../packages/intl/node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/intl/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/intl/node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/intl/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-extract-messages": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.12", + "@babel/runtime": "^7.20.13", + "@babel/types": "^7.20.7", + "@lingui/conf": "^5.1.2", + "@lingui/core": "^5.1.2", + "@lingui/message-utils": "^5.1.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "babel-plugin-macros": "2 || 3" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/@lingui/conf": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "jest-validate": "^29.4.3", + "jiti": "^1.17.1", + "lodash.get": "^4.4.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/@lingui/message-utils": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@messageformat/parser": "^5.0.0", + "js-sha256": "^0.10.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@lingui/babel-plugin-lingui-macro/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@lingui/cli": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.0", + "@babel/generator": "^7.21.1", + "@babel/parser": "^7.22.0", + "@babel/runtime": "^7.21.0", + "@babel/types": "^7.21.2", + "@lingui/babel-plugin-extract-messages": "^5.1.2", + "@lingui/babel-plugin-lingui-macro": "^5.1.2", + "@lingui/conf": "^5.1.2", + "@lingui/core": "^5.1.2", + "@lingui/format-po": "^5.1.2", + "@lingui/message-utils": "^5.1.2", + "babel-plugin-macros": "^3.0.1", + "chalk": "^4.1.0", + "chokidar": "3.5.1", + "cli-table": "^0.3.11", + "commander": "^10.0.0", + "convert-source-map": "^2.0.0", + "date-fns": "^3.6.0", + "esbuild": "^0.21.5", + "glob": "^11.0.0", + "inquirer": "^7.3.3", + "micromatch": "^4.0.7", + "normalize-path": "^3.0.0", + "ora": "^5.1.0", + "pathe": "^1.1.0", + "pkg-up": "^3.1.0", + "pofile": "^1.1.4", + "pseudolocale": "^2.0.0", + "ramda": "^0.27.1", + "source-map": "^0.8.0-beta.0" + }, + "bin": { + "lingui": "dist/lingui.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/@lingui/conf": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "jest-validate": "^29.4.3", + "jiti": "^1.17.1", + "lodash.get": "^4.4.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/@lingui/message-utils": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@messageformat/parser": "^5.0.0", + "js-sha256": "^0.10.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@lingui/cli/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@lingui/core": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@lingui/message-utils": "^5.1.2", + "unraw": "^3.0.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@lingui/babel-plugin-lingui-macro": "5.1.2", + "babel-plugin-macros": "2 || 3" + }, + "peerDependenciesMeta": { + "@lingui/babel-plugin-lingui-macro": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@lingui/core/node_modules/@lingui/message-utils": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@messageformat/parser": "^5.0.0", + "js-sha256": "^0.10.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/format-po": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@lingui/conf": "^5.1.2", + "@lingui/message-utils": "^5.1.2", + "date-fns": "^3.6.0", + "pofile": "^1.1.4" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/@lingui/conf": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "jest-validate": "^29.4.3", + "jiti": "^1.17.1", + "lodash.get": "^4.4.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/@lingui/message-utils": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@messageformat/parser": "^5.0.0", + "js-sha256": "^0.10.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@lingui/format-po/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@lingui/swc-plugin": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@lingui/core": "5" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "next": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@messageformat/parser": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "moo": "^0.5.1" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor": { + "version": "7.47.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.29.6", + "@microsoft/tsdoc": "~0.15.0", + "@microsoft/tsdoc-config": "~0.17.0", + "@rushstack/node-core-library": "5.7.0", + "@rushstack/rig-package": "0.5.3", + "@rushstack/terminal": "0.14.0", + "@rushstack/ts-command-line": "4.22.6", + "lodash": "~4.17.15", + "minimatch": "~3.0.3", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.4.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor-model": { + "version": "7.29.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "~0.15.0", + "@microsoft/tsdoc-config": "~0.17.0", + "@rushstack/node-core-library": "5.7.0" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor/node_modules/minimatch": { + "version": "3.0.8", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.4.2", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "../../packages/intl/node_modules/@microsoft/api-extractor/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/@microsoft/tsdoc": { + "version": "0.15.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@microsoft/tsdoc-config": { + "version": "0.17.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/tsdoc": "0.15.0", + "ajv": "~8.12.0", + "jju": "~1.4.0", + "resolve": "~1.22.2" + } + }, + "../../packages/intl/node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/@rollup/pluginutils": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.4", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "../../packages/intl/node_modules/@rushstack/node-core-library": { + "version": "5.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "~8.13.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@rushstack/node-core-library/node_modules/ajv": { + "version": "8.13.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "../../packages/intl/node_modules/@rushstack/node-core-library/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/@rushstack/node-core-library/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/@rushstack/rig-package": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "../../packages/intl/node_modules/@rushstack/terminal": { + "version": "0.14.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/node-core-library": "5.7.0", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@rushstack/terminal/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "../../packages/intl/node_modules/@rushstack/ts-command-line": { + "version": "4.22.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@rushstack/terminal": "0.14.0", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" + } + }, + "../../packages/intl/node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "../../packages/intl/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@swc/core": { + "version": "1.7.26", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.12" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.7.26", + "@swc/core-darwin-x64": "1.7.26", + "@swc/core-linux-arm-gnueabihf": "1.7.26", + "@swc/core-linux-arm64-gnu": "1.7.26", + "@swc/core-linux-arm64-musl": "1.7.26", + "@swc/core-linux-x64-gnu": "1.7.26", + "@swc/core-linux-x64-musl": "1.7.26", + "@swc/core-win32-arm64-msvc": "1.7.26", + "@swc/core-win32-ia32-msvc": "1.7.26", + "@swc/core-win32-x64-msvc": "1.7.26" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@swc/core-darwin-arm64": { + "version": "1.7.26", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/@swc/counter": { + "version": "0.1.3", + "dev": true, + "license": "Apache-2.0" + }, + "../../packages/intl/node_modules/@swc/types": { + "version": "0.1.12", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "../../packages/intl/node_modules/@types/argparse": { + "version": "1.0.38", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@types/estree": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "../../packages/intl/node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "../../packages/intl/node_modules/@types/node": { + "version": "22.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "../../packages/intl/node_modules/@types/parse-json": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@types/prop-types": { + "version": "15.7.12", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@types/react": { + "version": "18.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "../../packages/intl/node_modules/@types/yargs": { + "version": "17.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "../../packages/intl/node_modules/@types/yargs-parser": { + "version": "21.0.3", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@volar/language-core": { + "version": "2.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.5" + } + }, + "../../packages/intl/node_modules/@volar/source-map": { + "version": "2.4.5", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/@volar/typescript": { + "version": "2.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.5", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "../../packages/intl/node_modules/@vue/compiler-core": { + "version": "3.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.10", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "../../packages/intl/node_modules/@vue/compiler-dom": { + "version": "3.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.10", + "@vue/shared": "3.5.10" + } + }, + "../../packages/intl/node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "../../packages/intl/node_modules/@vue/language-core": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~2.4.1", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../../packages/intl/node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/@vue/shared": { + "version": "3.5.10", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/acorn": { + "version": "8.12.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "../../packages/intl/node_modules/ajv": { + "version": "8.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "../../packages/intl/node_modules/ajv-draft-04": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/ajv-formats": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "../../packages/intl/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "../../packages/intl/node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "../../packages/intl/node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "../../packages/intl/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "../../packages/intl/node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/browserslist": { + "version": "4.23.2", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "../../packages/intl/node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "../../packages/intl/node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/camelcase": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/caniuse-lite": { + "version": "1.0.30001666", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "../../packages/intl/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/chokidar": { + "version": "3.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "../../packages/intl/node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/cli-spinners": { + "version": "2.9.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/cli-table": { + "version": "0.3.11", + "dev": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "../../packages/intl/node_modules/cli-width": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "../../packages/intl/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "../../packages/intl/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "../../packages/intl/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/colors": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "../../packages/intl/node_modules/commander": { + "version": "10.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "../../packages/intl/node_modules/compare-versions": { + "version": "6.1.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/computeds": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/confbox": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/cosmiconfig": { + "version": "8.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/cross-spawn": { + "version": "7.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/csstype": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/date-fns": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "../../packages/intl/node_modules/de-indent": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/debug": { + "version": "4.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/electron-to-chromium": { + "version": "1.4.830", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/entities": { + "version": "4.5.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "../../packages/intl/node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "../../packages/intl/node_modules/esbuild": { + "version": "0.21.5", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "../../packages/intl/node_modules/escalade": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "../../packages/intl/node_modules/estree-walker": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "../../packages/intl/node_modules/fastq": { + "version": "1.17.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "../../packages/intl/node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/foreground-child": { + "version": "3.3.0", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "../../packages/intl/node_modules/fsevents": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "../../packages/intl/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/intl/node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/intl/node_modules/glob": { + "version": "11.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "../../packages/intl/node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../../packages/intl/node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../../packages/intl/node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "../../packages/intl/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "../../packages/intl/node_modules/ignore-by-default": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/import-lazy": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/inquirer": { + "version": "7.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "../../packages/intl/node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/is-core-module": { + "version": "2.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/intl/node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "../../packages/intl/node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/jackspeak": { + "version": "4.0.2", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/jest-get-type": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "../../packages/intl/node_modules/jest-validate": { + "version": "29.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "../../packages/intl/node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/jiti": { + "version": "1.21.6", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "../../packages/intl/node_modules/jju": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/js-sha256": { + "version": "0.10.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "../../packages/intl/node_modules/jsesc": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "../../packages/intl/node_modules/kolorist": { + "version": "1.8.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/leven": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/local-pkg": { + "version": "0.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "../../packages/intl/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/lodash.get": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/lodash.sortby": { + "version": "4.7.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "../../packages/intl/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "../../packages/intl/node_modules/magic-string": { + "version": "0.30.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "../../packages/intl/node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "../../packages/intl/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "../../packages/intl/node_modules/minipass": { + "version": "7.1.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "../../packages/intl/node_modules/mlly": { + "version": "1.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "../../packages/intl/node_modules/moo": { + "version": "0.5.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "../../packages/intl/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/muggle-string": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/nanoid": { + "version": "3.3.7", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "../../packages/intl/node_modules/node-releases": { + "version": "2.0.17", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/nodemon": { + "version": "3.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "../../packages/intl/node_modules/nodemon/node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "../../packages/intl/node_modules/nodemon/node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "../../packages/intl/node_modules/nodemon/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../../packages/intl/node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/package-json-from-dist": { + "version": "1.0.1", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "../../packages/intl/node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/path-browserify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/path-scurry": { + "version": "2.0.0", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/intl/node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.2", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "../../packages/intl/node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/pathe": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/picocolors": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "../../packages/intl/node_modules/pkg-types": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" + } + }, + "../../packages/intl/node_modules/pkg-up": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/pofile": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/postcss": { + "version": "8.4.47", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "../../packages/intl/node_modules/pretty-format": { + "version": "29.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "../../packages/intl/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/pseudolocale": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^10.0.0" + }, + "bin": { + "pseudolocale": "dist/cli.mjs" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "../../packages/intl/node_modules/pstree.remy": { + "version": "1.1.8", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/intl/node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "../../packages/intl/node_modules/ramda": { + "version": "0.27.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/react": { + "version": "18.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/react-is": { + "version": "18.3.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "../../packages/intl/node_modules/readdirp": { + "version": "3.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "../../packages/intl/node_modules/regenerator-runtime": { + "version": "0.14.1", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/resolve": { + "version": "1.22.8", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/intl/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/rollup": { + "version": "4.24.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.4", + "@rollup/rollup-android-arm64": "4.24.4", + "@rollup/rollup-darwin-arm64": "4.24.4", + "@rollup/rollup-darwin-x64": "4.24.4", + "@rollup/rollup-freebsd-arm64": "4.24.4", + "@rollup/rollup-freebsd-x64": "4.24.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", + "@rollup/rollup-linux-arm-musleabihf": "4.24.4", + "@rollup/rollup-linux-arm64-gnu": "4.24.4", + "@rollup/rollup-linux-arm64-musl": "4.24.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", + "@rollup/rollup-linux-riscv64-gnu": "4.24.4", + "@rollup/rollup-linux-s390x-gnu": "4.24.4", + "@rollup/rollup-linux-x64-gnu": "4.24.4", + "@rollup/rollup-linux-x64-musl": "4.24.4", + "@rollup/rollup-win32-arm64-msvc": "4.24.4", + "@rollup/rollup-win32-ia32-msvc": "4.24.4", + "@rollup/rollup-win32-x64-msvc": "4.24.4", + "fsevents": "~2.3.2" + } + }, + "../../packages/intl/node_modules/run-async": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "../../packages/intl/node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "../../packages/intl/node_modules/rxjs": { + "version": "6.6.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "../../packages/intl/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "../../packages/intl/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../../packages/intl/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/simple-update-notifier": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/intl/node_modules/source-map": { + "version": "0.8.0-beta.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/source-map-js": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/intl/node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "../../packages/intl/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "../../packages/intl/node_modules/string-argv": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "../../packages/intl/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../../packages/intl/node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/intl/node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "../../packages/intl/node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/intl/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "../../packages/intl/node_modules/touch": { + "version": "3.1.1", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "../../packages/intl/node_modules/tr46": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "../../packages/intl/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "../../packages/intl/node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/ufo": { + "version": "1.5.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/undefsafe": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "../../packages/intl/node_modules/unraw": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/update-browserslist-db": { + "version": "1.1.0", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "../../packages/intl/node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "../../packages/intl/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/vite": { + "version": "5.4.11", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/vite-plugin-dts": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor": "7.47.7", + "@rollup/pluginutils": "^5.1.0", + "@volar/typescript": "^2.4.4", + "@vue/language-core": "2.1.6", + "compare-versions": "^6.1.1", + "debug": "^4.3.6", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.11" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "../../packages/intl/node_modules/vite-plugin-static-copy": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "fs-extra": "^11.1.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0" + } + }, + "../../packages/intl/node_modules/vite-plugin-static-copy/node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "../../packages/intl/node_modules/vite-plugin-static-copy/node_modules/fs-extra": { + "version": "11.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "../../packages/intl/node_modules/vite-plugin-static-copy/node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "../../packages/intl/node_modules/vite-plugin-static-copy/node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "../../packages/intl/node_modules/vite-plugin-static-copy/node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "../../packages/intl/node_modules/vite-plugin-swc-transform": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "@swc/core": "^1.6.5" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5" + } + }, + "../../packages/intl/node_modules/vscode-uri": { + "version": "3.0.8", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "../../packages/intl/node_modules/webidl-conversions": { + "version": "4.0.2", + "dev": true, + "license": "BSD-2-Clause" + }, + "../../packages/intl/node_modules/whatwg-url": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "../../packages/intl/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "../../packages/intl/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "../../packages/intl/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "../../packages/intl/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../../packages/intl/node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "../../packages/intl/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../../packages/intl/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "../../packages/intl/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/intl/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "../../packages/intl/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "../../packages/intl/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "../../packages/theme": { + "name": "@notesnook/theme", + "version": "2.1.3", + "license": "GPL-3.0-or-later", + "devDependencies": { + "@emotion/react": "11.11.1", + "@theme-ui/color": "^0.16.1", + "@theme-ui/components": "0.16.1", + "@theme-ui/core": "0.16.1", + "@trpc/server": "10.45.2", + "@types/react": "18.3.5", + "isomorphic-fetch": "^3.0.0", + "react": "18.3.1", + "ts-json-schema-generator": "^1.2.0", + "zustand": "4.5.5" + }, + "peerDependencies": { + "@emotion/react": ">=11", + "@theme-ui/color": ">=0.16.0", + "@theme-ui/components": ">=0.16.0", + "@theme-ui/core": ">=0.16.0", + "react": ">=18", + "zustand": ">=4" + } + }, + "../../packages/theme/node_modules/@babel/code-frame": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/generator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/parser": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/theme/node_modules/@babel/runtime": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/template": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/traverse": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@babel/types": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/theme/node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "../../packages/theme/node_modules/@emotion/cache": { + "version": "11.14.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "../../packages/theme/node_modules/@emotion/cache/node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/hash": { + "version": "0.9.2", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "../../packages/theme/node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize": { + "version": "0.7.4", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/memoize": { + "version": "0.9.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/react": { + "version": "11.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "../../packages/theme/node_modules/@emotion/serialize": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "../../packages/theme/node_modules/@emotion/sheet": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/unitless": { + "version": "0.10.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "../../packages/theme/node_modules/@emotion/utils": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/theme/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/theme/node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/theme/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "../../packages/theme/node_modules/@styled-system/background": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/border": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/color": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/core": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1" + } + }, + "../../packages/theme/node_modules/@styled-system/css": { + "version": "5.1.5", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@styled-system/flexbox": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/grid": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/layout": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/position": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/shadow": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/should-forward-prop": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/is-prop-valid": "^0.8.1", + "@emotion/memoize": "^0.7.1", + "styled-system": "^5.1.5" + } + }, + "../../packages/theme/node_modules/@styled-system/should-forward-prop/node_modules/@emotion/memoize": { + "version": "0.7.5", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@styled-system/space": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/typography": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/theme/node_modules/@styled-system/variant": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2", + "@styled-system/css": "^5.1.5" + } + }, + "../../packages/theme/node_modules/@theme-ui/color": { + "version": "0.16.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@theme-ui/css": "^0.16.2", + "polished": "^4.0.5" + } + }, + "../../packages/theme/node_modules/@theme-ui/components": { + "version": "0.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/color": "^5.1.2", + "@styled-system/should-forward-prop": "^5.1.2", + "@styled-system/space": "^5.1.2", + "@theme-ui/core": "^0.16.1", + "@theme-ui/css": "^0.16.1", + "@types/styled-system": "^5.1.13" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "@theme-ui/theme-provider": "^0.16.1", + "react": ">=18" + } + }, + "../../packages/theme/node_modules/@theme-ui/core": { + "version": "0.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@theme-ui/css": "^0.16.1", + "deepmerge": "^4.2.2" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "react": ">=18" + } + }, + "../../packages/theme/node_modules/@theme-ui/css": { + "version": "0.16.2", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.10" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1" + } + }, + "../../packages/theme/node_modules/@trpc/server": { + "version": "10.45.2", + "dev": true, + "funding": [ + "https://trpc.io/sponsor" + ], + "license": "MIT" + }, + "../../packages/theme/node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@types/parse-json": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@types/prop-types": { + "version": "15.7.14", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/@types/react": { + "version": "18.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "../../packages/theme/node_modules/@types/styled-system": { + "version": "5.1.23", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "../../packages/theme/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "../../packages/theme/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../../packages/theme/node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/theme/node_modules/commander": { + "version": "12.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "../../packages/theme/node_modules/convert-source-map": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/cosmiconfig": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/theme/node_modules/csstype": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/debug": { + "version": "4.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "../../packages/theme/node_modules/deepmerge": { + "version": "4.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/theme/node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "../../packages/theme/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/theme/node_modules/find-root": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "../../packages/theme/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/theme/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../../packages/theme/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/theme/node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../../packages/theme/node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "../../packages/theme/node_modules/import-fresh": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/theme/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "../../packages/theme/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "../../packages/theme/node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/is-core-module": { + "version": "2.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/theme/node_modules/isomorphic-fetch": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "../../packages/theme/node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/jsesc": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/theme/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/theme/node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "../../packages/theme/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/theme/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/node-fetch": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "../../packages/theme/node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/theme/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/theme/node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "../../packages/theme/node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/theme/node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/theme/node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/theme/node_modules/picocolors": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "../../packages/theme/node_modules/polished": { + "version": "4.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/theme/node_modules/react": { + "version": "18.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/theme/node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/resolve": { + "version": "1.22.10", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/theme/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/theme/node_modules/safe-stable-stringify": { + "version": "2.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "../../packages/theme/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/theme/node_modules/styled-system": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/background": "^5.1.2", + "@styled-system/border": "^5.1.5", + "@styled-system/color": "^5.1.2", + "@styled-system/core": "^5.1.2", + "@styled-system/flexbox": "^5.1.2", + "@styled-system/grid": "^5.1.2", + "@styled-system/layout": "^5.1.2", + "@styled-system/position": "^5.1.2", + "@styled-system/shadow": "^5.1.2", + "@styled-system/space": "^5.1.2", + "@styled-system/typography": "^5.1.2", + "@styled-system/variant": "^5.1.5", + "object-assign": "^4.1.1" + } + }, + "../../packages/theme/node_modules/stylis": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/theme/node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/ts-json-schema-generator": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "commander": "^12.0.0", + "glob": "^8.0.3", + "json5": "^2.2.3", + "normalize-path": "^3.0.0", + "safe-stable-stringify": "^2.4.3", + "typescript": "~5.4.2" + }, + "bin": { + "ts-json-schema-generator": "bin/ts-json-schema-generator" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "../../packages/theme/node_modules/typescript": { + "version": "5.4.5", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "../../packages/theme/node_modules/use-sync-external-store": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "../../packages/theme/node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "../../packages/theme/node_modules/whatwg-fetch": { + "version": "3.6.20", + "dev": true, + "license": "MIT" + }, + "../../packages/theme/node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "../../packages/theme/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "../../packages/theme/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "../../packages/theme/node_modules/zustand": { + "version": "4.5.5", + "dev": true, + "license": "MIT", + "dependencies": { + "use-sync-external-store": "1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "../../packages/ui": { "name": "@notesnook/ui", "version": "2.1.3", @@ -101,10 +5562,926 @@ "react-modal": ">=3" } }, + "../../packages/ui/node_modules/@babel/code-frame": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/generator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/parser": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/ui/node_modules/@babel/runtime": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/template": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/traverse": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@babel/types": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../../packages/ui/node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "../../packages/ui/node_modules/@emotion/cache": { + "version": "11.14.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "../../packages/ui/node_modules/@emotion/cache/node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/hash": { + "version": "0.9.2", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "../../packages/ui/node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize": { + "version": "0.7.4", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/memoize": { + "version": "0.9.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/react": { + "version": "11.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "../../packages/ui/node_modules/@emotion/serialize": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "../../packages/ui/node_modules/@emotion/sheet": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/unitless": { + "version": "0.10.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "../../packages/ui/node_modules/@emotion/utils": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/ui/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/ui/node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../../packages/ui/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "../../packages/ui/node_modules/@mdi/js": { + "version": "7.4.47", + "dev": true, + "license": "Apache-2.0" + }, + "../../packages/ui/node_modules/@notesnook/theme": { + "resolved": "../../packages/theme", + "link": true + }, + "../../packages/ui/node_modules/@styled-system/background": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/border": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/color": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/core": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1" + } + }, + "../../packages/ui/node_modules/@styled-system/css": { + "version": "5.1.5", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@styled-system/flexbox": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/grid": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/layout": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/position": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/shadow": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/should-forward-prop": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/is-prop-valid": "^0.8.1", + "@emotion/memoize": "^0.7.1", + "styled-system": "^5.1.5" + } + }, + "../../packages/ui/node_modules/@styled-system/should-forward-prop/node_modules/@emotion/memoize": { + "version": "0.7.5", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@styled-system/space": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/typography": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2" + } + }, + "../../packages/ui/node_modules/@styled-system/variant": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/core": "^5.1.2", + "@styled-system/css": "^5.1.5" + } + }, + "../../packages/ui/node_modules/@theme-ui/components": { + "version": "0.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/color": "^5.1.2", + "@styled-system/should-forward-prop": "^5.1.2", + "@styled-system/space": "^5.1.2", + "@theme-ui/core": "^0.16.1", + "@theme-ui/css": "^0.16.1", + "@types/styled-system": "^5.1.13" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "@theme-ui/theme-provider": "^0.16.1", + "react": ">=18" + } + }, + "../../packages/ui/node_modules/@theme-ui/core": { + "version": "0.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@theme-ui/css": "^0.16.1", + "deepmerge": "^4.2.2" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1", + "react": ">=18" + } + }, + "../../packages/ui/node_modules/@theme-ui/css": { + "version": "0.16.2", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.10" + }, + "peerDependencies": { + "@emotion/react": "^11.11.1" + } + }, + "../../packages/ui/node_modules/@types/parse-json": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@types/prop-types": { + "version": "15.7.14", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/@types/react": { + "version": "18.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "../../packages/ui/node_modules/@types/react-dom": { + "version": "18.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "../../packages/ui/node_modules/@types/react-modal": { + "version": "3.16.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "../../packages/ui/node_modules/@types/styled-system": { + "version": "5.1.23", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "../../packages/ui/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "../../packages/ui/node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../../packages/ui/node_modules/convert-source-map": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/cosmiconfig": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "../../packages/ui/node_modules/csstype": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/debug": { + "version": "4.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "../../packages/ui/node_modules/deepmerge": { + "version": "4.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/ui/node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "../../packages/ui/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/ui/node_modules/exenv": { + "version": "1.2.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "../../packages/ui/node_modules/find-root": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/ui/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/ui/node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../../packages/ui/node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "../../packages/ui/node_modules/import-fresh": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/ui/node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/is-core-module": { + "version": "2.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/ui/node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/jsesc": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/ui/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "../../packages/ui/node_modules/mac-scrollbar": { + "version": "0.13.6", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/ui/node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../../packages/ui/node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../../packages/ui/node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../../packages/ui/node_modules/picocolors": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "../../packages/ui/node_modules/prop-types": { + "version": "15.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "../../packages/ui/node_modules/react": { + "version": "18.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/ui/node_modules/react-dom": { + "version": "18.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "../../packages/ui/node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/react-modal": { + "version": "3.16.3", + "dev": true, + "license": "MIT", + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19" + } + }, + "../../packages/ui/node_modules/resolve": { + "version": "1.22.10", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/ui/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../../packages/ui/node_modules/scheduler": { + "version": "0.23.2", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "../../packages/ui/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "../../packages/ui/node_modules/styled-system": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@styled-system/background": "^5.1.2", + "@styled-system/border": "^5.1.5", + "@styled-system/color": "^5.1.2", + "@styled-system/core": "^5.1.2", + "@styled-system/flexbox": "^5.1.2", + "@styled-system/grid": "^5.1.2", + "@styled-system/layout": "^5.1.2", + "@styled-system/position": "^5.1.2", + "@styled-system/shadow": "^5.1.2", + "@styled-system/space": "^5.1.2", + "@styled-system/typography": "^5.1.2", + "@styled-system/variant": "^5.1.5", + "object-assign": "^4.1.1" + } + }, + "../../packages/ui/node_modules/stylis": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "../../packages/ui/node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../../packages/ui/node_modules/warning": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "../../packages/ui/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/@babel/runtime": { "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -112,8 +6489,6 @@ }, "node_modules/@borewit/text-codec": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", - "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", "license": "MIT", "funding": { "type": "github", @@ -122,14 +6497,10 @@ }, "node_modules/@canvas/image-data": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz", - "integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==", "license": "MIT" }, "node_modules/@develar/schema-utils": { "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, "license": "MIT", "dependencies": { @@ -146,8 +6517,6 @@ }, "node_modules/@electron/asar": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", - "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", "dev": true, "license": "MIT", "dependencies": { @@ -164,15 +6533,11 @@ }, "node_modules/@electron/asar/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/@electron/asar/node_modules/brace-expansion": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -182,8 +6547,6 @@ }, "node_modules/@electron/asar/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -195,8 +6558,6 @@ }, "node_modules/@electron/fuses": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", - "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", "dev": true, "license": "MIT", "dependencies": { @@ -210,8 +6571,6 @@ }, "node_modules/@electron/fuses/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -226,8 +6585,6 @@ }, "node_modules/@electron/fuses/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -239,8 +6596,6 @@ }, "node_modules/@electron/fuses/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -249,9 +6604,6 @@ }, "node_modules/@electron/get": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.1", @@ -271,8 +6623,6 @@ }, "node_modules/@electron/notarize": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", - "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", "dev": true, "license": "MIT", "dependencies": { @@ -286,8 +6636,6 @@ }, "node_modules/@electron/notarize/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -302,8 +6650,6 @@ }, "node_modules/@electron/notarize/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -315,8 +6661,6 @@ }, "node_modules/@electron/notarize/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -325,8 +6669,6 @@ }, "node_modules/@electron/osx-sign": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", - "integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -347,8 +6689,6 @@ }, "node_modules/@electron/osx-sign/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -362,8 +6702,6 @@ }, "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, "license": "MIT", "engines": { @@ -375,8 +6713,6 @@ }, "node_modules/@electron/osx-sign/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -388,8 +6724,6 @@ }, "node_modules/@electron/osx-sign/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -398,8 +6732,6 @@ }, "node_modules/@electron/rebuild": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-4.0.3.tgz", - "integrity": "sha512-u9vpTHRMkOYCs/1FLiSVAFZ7FbjsXK+bQuzviJZa+lG7BHZl1nz52/IcGvwa3sk80/fc3llutBkbCq10Vh8WQA==", "dev": true, "license": "MIT", "dependencies": { @@ -426,8 +6758,6 @@ }, "node_modules/@electron/rebuild/node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -439,8 +6769,6 @@ }, "node_modules/@electron/universal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz", - "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==", "dev": true, "license": "MIT", "dependencies": { @@ -458,15 +6786,11 @@ }, "node_modules/@electron/universal/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/@electron/universal/node_modules/brace-expansion": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -475,8 +6799,6 @@ }, "node_modules/@electron/universal/node_modules/fs-extra": { "version": "11.3.4", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", - "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "license": "MIT", "dependencies": { @@ -490,8 +6812,6 @@ }, "node_modules/@electron/universal/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -503,8 +6823,6 @@ }, "node_modules/@electron/universal/node_modules/minimatch": { "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { @@ -519,86 +6837,80 @@ }, "node_modules/@electron/universal/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@electron/windows-sign": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", + "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "optional": true, - "os": [ - "aix" - ], + "peer": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], + "node_modules/@electron/windows-sign/node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], + "node_modules/@electron/windows-sign/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], + "peer": true, "engines": { - "node": ">=12" + "node": ">= 10.0.0" } }, "node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -612,367 +6924,8 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", - "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", - "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", - "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "license": "ISC", "dependencies": { @@ -989,8 +6942,6 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -1002,8 +6953,6 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -1015,15 +6964,11 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { @@ -1040,8 +6985,6 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { @@ -1056,8 +6999,6 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1074,8 +7015,6 @@ }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, "license": "ISC", "dependencies": { @@ -1087,8 +7026,6 @@ }, "node_modules/@jimp/bmp": { "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.12.tgz", - "integrity": "sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==", "license": "MIT", "dependencies": { "@jimp/utils": "^0.22.12", @@ -1098,10 +7035,103 @@ "@jimp/custom": ">=0.3.5" } }, + "node_modules/@jimp/core": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.12.tgz", + "integrity": "sha512-l0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/VS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jimp/utils": "^0.22.12", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "isomorphic-fetch": "^3.0.0", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.6.0" + } + }, + "node_modules/@jimp/core/node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "license": "MIT", + "peer": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/@jimp/core/node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@jimp/core/node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@jimp/core/node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@jimp/custom": { + "version": "0.22.12", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.12.tgz", + "integrity": "sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jimp/core": "^0.22.12" + } + }, "node_modules/@jimp/utils": { "version": "0.22.12", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.12.tgz", - "integrity": "sha512-yJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/nMKXk8TrSwAE71zt716Q==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.13.3" @@ -1109,15 +7139,11 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@lingui/core": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@lingui/core/-/core-5.1.2.tgz", - "integrity": "sha512-biqmMCWuBBj7ERSpgGSV91hTShnSrR/RIFUcNKjWuZYgDd3HpBdEmXKCo9NTanQYbkBUpmyw/bgwsSBex6vkDA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.13", @@ -1142,8 +7168,6 @@ }, "node_modules/@lingui/message-utils": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-5.5.0.tgz", - "integrity": "sha512-LY7AclexJm5sJnbcqeYjgRg/tL1/HDceH9/tR+GiD/Ei1ZNubzqHOvoI0JRZNmxG4x0qKzz9fxLl1ympM3a0VA==", "license": "MIT", "dependencies": { "@messageformat/parser": "^5.0.0", @@ -1155,8 +7179,6 @@ }, "node_modules/@malept/cross-spawn-promise": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", "dev": true, "funding": [ { @@ -1178,8 +7200,6 @@ }, "node_modules/@malept/flatpak-bundler": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1194,8 +7214,6 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1210,8 +7228,6 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1223,8 +7239,6 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -1233,8 +7247,6 @@ }, "node_modules/@messageformat/parser": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.1.tgz", - "integrity": "sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==", "license": "MIT", "dependencies": { "moo": "^0.5.1" @@ -1250,8 +7262,6 @@ }, "node_modules/@npmcli/agent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", - "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", "dev": true, "license": "ISC", "dependencies": { @@ -1267,15 +7277,11 @@ }, "node_modules/@npmcli/agent/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/@npmcli/fs": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", - "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", "dev": true, "license": "ISC", "dependencies": { @@ -1287,8 +7293,6 @@ }, "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -1300,8 +7304,6 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", "optional": true, @@ -1309,38 +7311,50 @@ "node": ">=14" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", - "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==", - "cpu": [ - "arm" - ], + "node_modules/@playwright/test": { + "version": "1.59.1", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.59.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz", - "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==", - "cpu": [ - "arm64" - ], + "node_modules/@playwright/test/node_modules/playwright": { + "version": "1.59.1", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.59.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/@playwright/test/node_modules/playwright-core": { + "version": "1.59.1", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz", - "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==", "cpu": [ "arm64" ], @@ -1351,283 +7365,12 @@ "darwin" ] }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz", - "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz", - "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz", - "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz", - "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz", - "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz", - "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz", - "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz", - "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz", - "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz", - "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz", - "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz", - "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz", - "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz", - "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz", - "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz", - "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz", - "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz", - "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz", - "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1636,10 +7379,19 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@streetwriters/kysely": { "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@streetwriters/kysely/-/kysely-0.27.4.tgz", - "integrity": "sha512-c2p+wtX8WESSVjJAc16j4lT44w/g1DvJFEIeKj/CFy36vmi0uq9FOAzxc50VtRc7rp0UlECCfl3Sxd+BTZOHFg==", "dev": true, "license": "MIT", "engines": { @@ -1648,9 +7400,6 @@ }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" @@ -1661,14 +7410,10 @@ }, "node_modules/@tokenizer/token": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, "node_modules/@trpc/client": { "version": "10.45.2", - "resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.45.2.tgz", - "integrity": "sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg==", "funding": [ "https://trpc.io/sponsor" ], @@ -1679,8 +7424,6 @@ }, "node_modules/@trpc/server": { "version": "10.45.2", - "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.45.2.tgz", - "integrity": "sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg==", "funding": [ "https://trpc.io/sponsor" ], @@ -1688,9 +7431,6 @@ }, "node_modules/@types/cacheable-request": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", @@ -1701,8 +7441,6 @@ }, "node_modules/@types/chai": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", - "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", "dev": true, "license": "MIT", "dependencies": { @@ -1711,8 +7449,6 @@ }, "node_modules/@types/debug": { "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1721,22 +7457,16 @@ }, "node_modules/@types/deep-eql": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, "node_modules/@types/estree": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, "node_modules/@types/fs-extra": { "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, "license": "MIT", "dependencies": { @@ -1745,16 +7475,10 @@ }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, "license": "MIT" }, "node_modules/@types/keyv": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1762,16 +7486,11 @@ }, "node_modules/@types/ms": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "22.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", - "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", - "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -1779,8 +7498,6 @@ }, "node_modules/@types/plist": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", - "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", "license": "MIT", "optional": true, "dependencies": { @@ -1790,9 +7507,6 @@ }, "node_modules/@types/responselike": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1800,15 +7514,11 @@ }, "node_modules/@types/verror": { "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz", - "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==", "license": "MIT", "optional": true }, "node_modules/@types/yargs": { "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", "dependencies": { @@ -1817,16 +7527,11 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -1835,8 +7540,6 @@ }, "node_modules/@vitest/expect": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { @@ -1852,8 +7555,6 @@ }, "node_modules/@vitest/mocker": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1879,8 +7580,6 @@ }, "node_modules/@vitest/pretty-format": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -1892,8 +7591,6 @@ }, "node_modules/@vitest/runner": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1907,8 +7604,6 @@ }, "node_modules/@vitest/snapshot": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1922,8 +7617,6 @@ }, "node_modules/@vitest/spy": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { @@ -1935,8 +7628,6 @@ }, "node_modules/@vitest/utils": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { @@ -1950,8 +7641,6 @@ }, "node_modules/@xmldom/xmldom": { "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "devOptional": true, "license": "MIT", "engines": { @@ -1960,25 +7649,32 @@ }, "node_modules/7zip-bin": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true, "license": "MIT" }, "node_modules/abbrev": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", - "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", "dev": true, "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "peer": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/agent-base": { "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { @@ -1987,8 +7683,6 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2004,8 +7698,6 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2014,8 +7706,6 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" @@ -2023,8 +7713,6 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2036,17 +7724,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "license": "MIT", + "peer": true + }, "node_modules/app-builder-bin": { "version": "5.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.12.tgz", - "integrity": "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==", "dev": true, "license": "MIT" }, "node_modules/app-builder-lib": { "version": "26.8.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.8.1.tgz", - "integrity": "sha512-p0Im/Dx5C4tmz8QEE1Yn4MkuPC8PrnlRneMhWJj7BBXQfNTJUshM/bp3lusdEsDbvvfJZpXWnYesgSLvwtM2Zw==", "dev": true, "license": "MIT", "dependencies": { @@ -2097,8 +7788,6 @@ }, "node_modules/app-builder-lib/node_modules/@electron/get": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", - "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2119,8 +7808,6 @@ }, "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", "dependencies": { @@ -2134,8 +7821,6 @@ }, "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -2144,8 +7829,6 @@ }, "node_modules/app-builder-lib/node_modules/builder-util-runtime": { "version": "9.5.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz", - "integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2158,8 +7841,6 @@ }, "node_modules/app-builder-lib/node_modules/ci-info": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, "funding": [ { @@ -2174,8 +7855,6 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2189,8 +7868,6 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2202,8 +7879,6 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -2212,8 +7887,6 @@ }, "node_modules/app-builder-lib/node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -2225,14 +7898,10 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "license": "MIT", "optional": true, "engines": { @@ -2241,8 +7910,6 @@ }, "node_modules/assertion-error": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { @@ -2251,8 +7918,6 @@ }, "node_modules/astral-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "license": "MIT", "optional": true, "engines": { @@ -2261,15 +7926,11 @@ }, "node_modules/async": { "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, "license": "MIT" }, "node_modules/async-exit-hook": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", "engines": { @@ -2278,15 +7939,11 @@ }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", "engines": { @@ -2295,8 +7952,6 @@ }, "node_modules/balanced-match": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", "engines": { @@ -2305,8 +7960,6 @@ }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -2325,8 +7978,6 @@ }, "node_modules/better-sqlite3-multiple-ciphers": { "version": "12.4.1", - "resolved": "https://registry.npmjs.org/better-sqlite3-multiple-ciphers/-/better-sqlite3-multiple-ciphers-12.4.1.tgz", - "integrity": "sha512-Apy7wX4QXypZQo0Qx+jT+qflAuWjL7DeWPl+IdeBzoxG6TUB2RWoShPEiHxcwvR3PZD8uaDl9FV3SpXMWAi1uA==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -2339,8 +7990,6 @@ }, "node_modules/bindings": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "license": "MIT", "dependencies": { "file-uri-to-path": "1.0.0" @@ -2348,8 +7997,6 @@ }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -2359,23 +8006,15 @@ }, "node_modules/bmp-js": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", "license": "MIT" }, "node_modules/boolean": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, "license": "MIT", "optional": true }, "node_modules/brace-expansion": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2387,8 +8026,6 @@ }, "node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -2411,9 +8048,6 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -2421,15 +8055,11 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, "node_modules/builder-util": { "version": "26.8.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-26.8.1.tgz", - "integrity": "sha512-pm1lTYbGyc90DHgCDO7eo8Rl4EqKLciayNbZqGziqnH9jrlKe8ZANGdityLZU+pJh16dfzjAx2xQq9McuIPEtw==", "dev": true, "license": "MIT", "dependencies": { @@ -2453,8 +8083,6 @@ }, "node_modules/builder-util-runtime": { "version": "9.3.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", - "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", "license": "MIT", "dependencies": { "debug": "^4.3.4", @@ -2466,8 +8094,6 @@ }, "node_modules/builder-util/node_modules/builder-util-runtime": { "version": "9.5.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz", - "integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2480,8 +8106,6 @@ }, "node_modules/builder-util/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2495,8 +8119,6 @@ }, "node_modules/builder-util/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2508,8 +8130,6 @@ }, "node_modules/builder-util/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -2518,8 +8138,6 @@ }, "node_modules/cac": { "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, "license": "MIT", "engines": { @@ -2528,8 +8146,6 @@ }, "node_modules/cacache": { "version": "19.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", - "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2552,15 +8168,11 @@ }, "node_modules/cacache/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/cacache/node_modules/brace-expansion": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -2569,9 +8181,6 @@ }, "node_modules/cacache/node_modules/glob": { "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "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", "dev": true, "license": "ISC", "dependencies": { @@ -2591,15 +8200,11 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/cacache/node_modules/minimatch": { "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { @@ -2614,9 +8219,6 @@ }, "node_modules/cacheable-lookup": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10.6.0" @@ -2624,9 +8226,6 @@ }, "node_modules/cacheable-request": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, "license": "MIT", "dependencies": { "clone-response": "^1.0.2", @@ -2643,8 +8242,6 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2657,8 +8254,6 @@ }, "node_modules/chai": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, "license": "MIT", "dependencies": { @@ -2674,8 +8269,6 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -2691,8 +8284,6 @@ }, "node_modules/check-error": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "license": "MIT", "engines": { @@ -2701,8 +8292,6 @@ }, "node_modules/chokidar": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { @@ -2717,8 +8306,6 @@ }, "node_modules/chownr": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -2727,15 +8314,11 @@ }, "node_modules/chromium-pickle-js": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true, "license": "MIT" }, "node_modules/ci-info": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { @@ -2750,8 +8333,6 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", "dependencies": { @@ -2763,8 +8344,6 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", "engines": { @@ -2776,8 +8355,6 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "license": "MIT", "optional": true, "dependencies": { @@ -2793,8 +8370,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -2807,8 +8382,6 @@ }, "node_modules/clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", "engines": { @@ -2817,9 +8390,6 @@ }, "node_modules/clone-response": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" @@ -2830,8 +8400,6 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2842,14 +8410,10 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -2861,8 +8425,6 @@ }, "node_modules/commander": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, "license": "MIT", "engines": { @@ -2871,8 +8433,6 @@ }, "node_modules/compare-version": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, "license": "MIT", "engines": { @@ -2881,32 +8441,33 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT", "optional": true }, "node_modules/crc": { "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "license": "MIT", "optional": true, "dependencies": { "buffer": "^5.1.0" } }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -2920,15 +8481,11 @@ }, "node_modules/cross-spawn/node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -2943,8 +8500,6 @@ }, "node_modules/debug": { "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2960,8 +8515,6 @@ }, "node_modules/decode-bmp": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/decode-bmp/-/decode-bmp-0.2.1.tgz", - "integrity": "sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==", "license": "MIT", "dependencies": { "@canvas/image-data": "^1.0.0", @@ -2973,14 +8526,10 @@ }, "node_modules/decode-bmp/node_modules/to-data-view": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", - "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", "license": "MIT" }, "node_modules/decode-ico": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/decode-ico/-/decode-ico-0.4.1.tgz", - "integrity": "sha512-69NZfbKIzux1vBOd31al3XnMnH+2mqDhEgLdpygErm4d60N+UwA5Sq5WFjmEDQzumgB9fElojGwWG0vybVfFmA==", "license": "MIT", "dependencies": { "@canvas/image-data": "^1.0.0", @@ -2993,14 +8542,10 @@ }, "node_modules/decode-ico/node_modules/to-data-view": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", - "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", "license": "MIT" }, "node_modules/decompress-response": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" @@ -3014,8 +8559,6 @@ }, "node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "license": "MIT", "engines": { "node": ">=10" @@ -3026,8 +8569,6 @@ }, "node_modules/deep-eql": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, "license": "MIT", "engines": { @@ -3036,8 +8577,6 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "license": "MIT", "engines": { "node": ">=4.0.0" @@ -3045,8 +8584,6 @@ }, "node_modules/defaults": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", "dependencies": { @@ -3058,9 +8595,6 @@ }, "node_modules/defer-to-connect": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -3068,9 +8602,6 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3087,9 +8618,6 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3106,8 +8634,6 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -3116,8 +8642,6 @@ }, "node_modules/detect-libc": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", - "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -3125,16 +8649,11 @@ }, "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, "license": "MIT", "optional": true }, "node_modules/dir-compare": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", - "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3144,15 +8663,11 @@ }, "node_modules/dir-compare/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/dir-compare/node_modules/brace-expansion": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3162,8 +8677,6 @@ }, "node_modules/dir-compare/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -3175,8 +8688,6 @@ }, "node_modules/dmg-builder": { "version": "26.8.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.8.1.tgz", - "integrity": "sha512-glMJgnTreo8CFINujtAhCgN96QAqApDMZ8Vl1r8f0QT8QprvC1UCltV4CcWj20YoIyLZx6IUskaJZ0NV8fokcg==", "dev": true, "license": "MIT", "dependencies": { @@ -3192,8 +8703,6 @@ }, "node_modules/dmg-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3207,8 +8716,6 @@ }, "node_modules/dmg-builder/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3220,8 +8727,6 @@ }, "node_modules/dmg-builder/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3230,8 +8735,6 @@ }, "node_modules/dmg-license": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", - "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "license": "MIT", "optional": true, "os": [ @@ -3256,8 +8759,6 @@ }, "node_modules/dotenv": { "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -3269,8 +8770,6 @@ }, "node_modules/dotenv-expand": { "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3285,8 +8784,6 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { @@ -3300,15 +8797,11 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3323,9 +8816,6 @@ }, "node_modules/electron": { "version": "37.6.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-37.6.1.tgz", - "integrity": "sha512-aHtJVNjqf0lk7dlPoc1X+fMBpZtLn+XGvP6IYc3gooTwsD1D/Ic2SBRC9SnIk6LkWTsDaSF9jgH1d9Q7eABy/Q==", - "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -3342,8 +8832,6 @@ }, "node_modules/electron-builder": { "version": "26.8.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.8.1.tgz", - "integrity": "sha512-uWhx1r74NGpCagG0ULs/P9Nqv2nsoo+7eo4fLUOB8L8MdWltq9odW/uuLXMFCDGnPafknYLZgjNX0ZIFRzOQAw==", "dev": true, "license": "MIT", "dependencies": { @@ -3366,10 +8854,21 @@ "node": ">=14.0.0" } }, + "node_modules/electron-builder-squirrel-windows": { + "version": "26.8.1", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.8.1.tgz", + "integrity": "sha512-o288fIdgPLHA76eDrFADHPoo7VyGkDCYbLV1GzndaMSAVBoZrGvM9m2IehdcVMzdAZJ2eV9bgyissQXHv5tGzA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "app-builder-lib": "26.8.1", + "builder-util": "26.8.1", + "electron-winstaller": "5.4.0" + } + }, "node_modules/electron-builder/node_modules/builder-util-runtime": { "version": "9.5.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz", - "integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3382,8 +8881,6 @@ }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3397,8 +8894,6 @@ }, "node_modules/electron-builder/node_modules/jsonfile": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -3410,8 +8905,6 @@ }, "node_modules/electron-builder/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3420,8 +8913,6 @@ }, "node_modules/electron-publish": { "version": "26.8.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.8.1.tgz", - "integrity": "sha512-q+jrSTIh/Cv4eGZa7oVR+grEJo/FoLMYBAnSL5GCtqwUpr1T+VgKB/dn1pnzxIxqD8S/jP1yilT9VrwCqINR4w==", "dev": true, "license": "MIT", "dependencies": { @@ -3437,8 +8928,6 @@ }, "node_modules/electron-publish/node_modules/builder-util-runtime": { "version": "9.5.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz", - "integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3451,8 +8940,6 @@ }, "node_modules/electron-publish/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3466,8 +8953,6 @@ }, "node_modules/electron-publish/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3479,8 +8964,6 @@ }, "node_modules/electron-publish/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3489,8 +8972,6 @@ }, "node_modules/electron-trpc": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/electron-trpc/-/electron-trpc-0.7.1.tgz", - "integrity": "sha512-aWjZ5pLeVhrX9A9d8O8YgR8N+q4IXXzc76CJT1PwtDijIw+y5I+c75IAAtZ4JayYLeR3ll95PNGl5RTBu2qePw==", "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -3503,8 +8984,6 @@ }, "node_modules/electron-updater": { "version": "6.6.2", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz", - "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", "license": "MIT", "dependencies": { "builder-util-runtime": "9.3.1", @@ -3519,8 +8998,6 @@ }, "node_modules/electron-updater/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -3533,8 +9010,6 @@ }, "node_modules/electron-updater/node_modules/jsonfile": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -3545,8 +9020,6 @@ }, "node_modules/electron-updater/node_modules/semver": { "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3557,24 +9030,55 @@ }, "node_modules/electron-updater/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "license": "MIT", "engines": { "node": ">= 10.0.0" } }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -3583,8 +9087,6 @@ }, "node_modules/end-of-stream": { "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -3592,9 +9094,6 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -3602,16 +9101,12 @@ }, "node_modules/err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, "license": "MIT" }, "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3619,9 +9114,7 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3629,15 +9122,11 @@ }, "node_modules/es-module-lexer": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { @@ -3649,8 +9138,6 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { @@ -3665,16 +9152,11 @@ }, "node_modules/es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, "license": "MIT", "optional": true }, "node_modules/esbuild": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3712,8 +9194,6 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" @@ -3721,9 +9201,6 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -3735,18 +9212,117 @@ }, "node_modules/estree-walker": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "9.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/npm-run-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", + "peer": true + }, "node_modules/expand-template": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" @@ -3754,8 +9330,6 @@ }, "node_modules/expect-type": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3764,16 +9338,11 @@ }, "node_modules/exponential-backoff": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "dev": true, "license": "Apache-2.0" }, "node_modules/extract-zip": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", @@ -3792,8 +9361,6 @@ }, "node_modules/extsprintf": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", "engines": [ "node >=0.6.0" ], @@ -3802,23 +9369,16 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "devOptional": true, "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "devOptional": true, "license": "MIT" }, "node_modules/fd-slicer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, "license": "MIT", "dependencies": { "pend": "~1.2.0" @@ -3826,8 +9386,6 @@ }, "node_modules/fdir": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { @@ -3842,10 +9400,33 @@ } } }, + "node_modules/figures": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/is-unicode-supported": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-type": { "version": "19.6.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.6.0.tgz", - "integrity": "sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==", "license": "MIT", "dependencies": { "get-stream": "^9.0.1", @@ -3862,8 +9443,6 @@ }, "node_modules/file-type/node_modules/get-stream": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", "dependencies": { "@sec-ant/readable-stream": "^0.4.1", @@ -3878,14 +9457,10 @@ }, "node_modules/file-uri-to-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "license": "MIT" }, "node_modules/filelist": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", - "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3894,15 +9469,11 @@ }, "node_modules/filelist/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -3911,8 +9482,6 @@ }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { @@ -3922,10 +9491,26 @@ "node": ">=10" } }, + "node_modules/fkill": { + "version": "10.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^9.6.0", + "pid-port": "^2.0.0", + "process-exists": "^5.0.0", + "ps-list": "^9.0.0", + "taskkill": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/foreground-child": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { @@ -3941,8 +9526,6 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -3954,8 +9537,6 @@ }, "node_modules/form-data": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { @@ -3971,15 +9552,10 @@ }, "node_modules/fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "license": "MIT" }, "node_modules/fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -3992,8 +9568,6 @@ }, "node_modules/fs-minipass": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "license": "ISC", "dependencies": { @@ -4005,17 +9579,12 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -4027,8 +9596,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -4037,8 +9604,6 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -4046,8 +9611,6 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4071,8 +9634,6 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { @@ -4085,9 +9646,6 @@ }, "node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, "license": "MIT", "dependencies": { "pump": "^3.0.0" @@ -4101,15 +9659,10 @@ }, "node_modules/github-from-package": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "license": "MIT" }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "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", "dev": true, "license": "ISC", "dependencies": { @@ -4129,15 +9682,11 @@ }, "node_modules/glob/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -4147,8 +9696,6 @@ }, "node_modules/glob/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -4160,9 +9707,6 @@ }, "node_modules/global-agent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -4179,9 +9723,6 @@ }, "node_modules/global-agent/node_modules/semver": { "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, "license": "ISC", "optional": true, "bin": { @@ -4193,9 +9734,6 @@ }, "node_modules/globalthis": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -4211,9 +9749,7 @@ }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4224,9 +9760,6 @@ }, "node_modules/got": { "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", @@ -4250,14 +9783,10 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -4266,9 +9795,6 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -4280,8 +9806,6 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -4293,8 +9817,6 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { @@ -4309,8 +9831,6 @@ }, "node_modules/hasown": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, "license": "MIT", "dependencies": { @@ -4322,8 +9842,6 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "license": "ISC", "dependencies": { @@ -4335,15 +9853,10 @@ }, "node_modules/http-cache-semantics": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true, "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { @@ -4356,9 +9869,6 @@ }, "node_modules/http2-wrapper": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", @@ -4370,8 +9880,6 @@ }, "node_modules/https-proxy-agent": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { @@ -4382,10 +9890,16 @@ "node": ">= 14" } }, + "node_modules/human-signals": { + "version": "8.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/icojs": { "version": "0.19.5", - "resolved": "https://registry.npmjs.org/icojs/-/icojs-0.19.5.tgz", - "integrity": "sha512-4RnOvFpl7HNgUYLmmLKzhCk/DCNS81sXSC8ENp+mUonMHn3m9dsE+oQLnmoznjwr2bV9n1IapfSpdxopDzYBXA==", "license": "MIT", "dependencies": { "@jimp/bmp": "^0.22.12", @@ -4401,8 +9915,6 @@ }, "node_modules/iconv-corefoundation": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", - "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", "license": "MIT", "optional": true, "os": [ @@ -4418,9 +9930,7 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -4431,8 +9941,6 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -4451,8 +9959,6 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -4461,9 +9967,6 @@ }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", "dev": true, "license": "ISC", "dependencies": { @@ -4473,20 +9976,14 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, "node_modules/ip-address": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", "engines": { @@ -4495,8 +9992,6 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -4504,18 +9999,25 @@ }, "node_modules/is-interactive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-stream": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "license": "MIT", "engines": { "node": ">=18" @@ -4526,8 +10028,6 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -4539,8 +10039,6 @@ }, "node_modules/isbinaryfile": { "version": "5.0.7", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", - "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==", "dev": true, "license": "MIT", "engines": { @@ -4552,18 +10050,25 @@ }, "node_modules/isexe": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", - "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "license": "MIT", + "peer": true, + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, "node_modules/jackspeak": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4578,8 +10083,6 @@ }, "node_modules/jake": { "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4596,8 +10099,6 @@ }, "node_modules/jiti": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", "bin": { @@ -4606,27 +10107,19 @@ }, "node_modules/jpeg-js": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "license": "BSD-3-Clause" }, "node_modules/js-sha256": { "version": "0.10.1", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.10.1.tgz", - "integrity": "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==", "license": "MIT" }, "node_modules/js-tokens": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4637,30 +10130,20 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "devOptional": true, "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, "license": "ISC", "optional": true }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -4672,9 +10155,6 @@ }, "node_modules/jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -4682,9 +10162,6 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -4692,34 +10169,23 @@ }, "node_modules/lazy-val": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", "license": "MIT" }, "node_modules/lodash": { "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -4735,16 +10201,11 @@ }, "node_modules/loupe": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, "license": "MIT" }, "node_modules/lowercase-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4752,8 +10213,6 @@ }, "node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "license": "ISC", "dependencies": { @@ -4765,8 +10224,6 @@ }, "node_modules/magic-string": { "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "dev": true, "license": "MIT", "dependencies": { @@ -4775,8 +10232,6 @@ }, "node_modules/make-fetch-happen": { "version": "14.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", - "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", "dev": true, "license": "ISC", "dependencies": { @@ -4798,9 +10253,6 @@ }, "node_modules/matcher": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -4812,18 +10264,19 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/mime": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", "bin": { @@ -4835,8 +10288,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -4845,8 +10296,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -4858,8 +10307,6 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { @@ -4868,9 +10315,6 @@ }, "node_modules/mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -4878,8 +10322,6 @@ }, "node_modules/minimatch": { "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4894,8 +10336,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4903,8 +10343,6 @@ }, "node_modules/minipass": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -4913,8 +10351,6 @@ }, "node_modules/minipass-collect": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, "license": "ISC", "dependencies": { @@ -4926,8 +10362,6 @@ }, "node_modules/minipass-fetch": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz", - "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4944,8 +10378,6 @@ }, "node_modules/minipass-flush": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", - "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4957,8 +10389,6 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -4970,8 +10400,6 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "license": "ISC", "dependencies": { @@ -4983,8 +10411,6 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -4996,8 +10422,6 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "license": "ISC", "dependencies": { @@ -5009,8 +10433,6 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -5022,8 +10444,6 @@ }, "node_modules/minizlib": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", "dependencies": { @@ -5033,28 +10453,34 @@ "node": ">= 18" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "license": "MIT" }, "node_modules/moo": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", "license": "BSD-3-Clause" }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -5072,14 +10498,10 @@ }, "node_modules/napi-build-utils": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", "license": "MIT" }, "node_modules/negotiator": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { @@ -5088,8 +10510,6 @@ }, "node_modules/node-abi": { "version": "4.14.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-4.14.0.tgz", - "integrity": "sha512-E4n91K4Nk1Rch2KzD+edU2bfZTP4W42GypAUDXU4vu1A+4u9PvUNDkGI0dXbsy8ZeF3WGj0SD/uHxnXD/sW+3w==", "dev": true, "license": "MIT", "dependencies": { @@ -5101,8 +10521,6 @@ }, "node_modules/node-abi/node_modules/semver": { "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -5114,15 +10532,11 @@ }, "node_modules/node-addon-api": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "license": "MIT", "optional": true }, "node_modules/node-api-version": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", - "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5131,8 +10545,6 @@ }, "node_modules/node-api-version/node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -5142,10 +10554,29 @@ "node": ">=10" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-gyp": { "version": "11.5.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.5.0.tgz", - "integrity": "sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5169,8 +10600,6 @@ }, "node_modules/node-gyp-build": { "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "dev": true, "license": "MIT", "bin": { @@ -5181,8 +10610,6 @@ }, "node_modules/node-gyp/node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -5194,8 +10621,6 @@ }, "node_modules/nopt": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", - "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", "dev": true, "license": "ISC", "dependencies": { @@ -5210,9 +10635,6 @@ }, "node_modules/normalize-url": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -5223,8 +10645,6 @@ }, "node_modules/npm-run-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", - "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", "dev": true, "license": "MIT", "dependencies": { @@ -5236,9 +10656,6 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -5247,8 +10664,6 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "license": "ISC", "dependencies": { "wrappy": "1" @@ -5256,8 +10671,6 @@ }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { @@ -5272,8 +10685,6 @@ }, "node_modules/ora": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5296,9 +10707,6 @@ }, "node_modules/p-cancelable": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5306,8 +10714,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5322,8 +10728,6 @@ }, "node_modules/p-map": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", - "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { @@ -5335,15 +10739,22 @@ }, "node_modules/package-json-from-dist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/parse-ms": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -5352,8 +10763,6 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -5362,8 +10771,6 @@ }, "node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5379,22 +10786,16 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/pathe": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/pathval": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { @@ -5403,8 +10804,6 @@ }, "node_modules/pe-library": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", - "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", "dev": true, "license": "MIT", "engines": { @@ -5418,8 +10817,6 @@ }, "node_modules/peek-readable": { "version": "5.4.2", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.4.2.tgz", - "integrity": "sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==", "license": "MIT", "engines": { "node": ">=14.16" @@ -5431,22 +10828,15 @@ }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -5456,14 +10846,49 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pid-port": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^9.6.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "license": "ISC", + "peer": true, + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/playwright": { - "version": "1.48.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.48.2.tgz", - "integrity": "sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==", + "version": "1.58.2", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.48.2" + "playwright-core": "1.58.2" }, "bin": { "playwright": "cli.js" @@ -5476,9 +10901,7 @@ } }, "node_modules/playwright-core": { - "version": "1.48.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.2.tgz", - "integrity": "sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==", + "version": "1.58.2", "dev": true, "license": "Apache-2.0", "bin": { @@ -5490,8 +10913,6 @@ }, "node_modules/plist": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", - "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -5505,8 +10926,6 @@ }, "node_modules/pngjs": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", - "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", "license": "MIT", "engines": { "node": ">=14.19.0" @@ -5514,8 +10933,6 @@ }, "node_modules/postcss": { "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -5541,10 +10958,38 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -5569,8 +11014,6 @@ }, "node_modules/prebuild-install/node_modules/node-abi": { "version": "3.77.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.77.0.tgz", - "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -5581,8 +11024,6 @@ }, "node_modules/prebuild-install/node_modules/semver": { "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5593,8 +11034,6 @@ }, "node_modules/prebuildify": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/prebuildify/-/prebuildify-6.0.1.tgz", - "integrity": "sha512-8Y2oOOateom/s8dNBsGIcnm6AxPmLH4/nanQzL5lQMU+sC0CMhzARZHizwr36pUPLdvBnOkCNQzxg4djuFSgIw==", "dev": true, "license": "MIT", "dependencies": { @@ -5611,8 +11050,6 @@ }, "node_modules/prebuildify/node_modules/node-abi": { "version": "3.77.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.77.0.tgz", - "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5624,8 +11061,6 @@ }, "node_modules/prebuildify/node_modules/semver": { "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -5635,21 +11070,65 @@ "node": ">=10" } }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/proc-log": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", - "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", "dev": true, "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-exists": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ps-list": "^8.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-exists/node_modules/ps-list": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -5657,8 +11136,6 @@ }, "node_modules/promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "license": "MIT", "dependencies": { @@ -5671,8 +11148,6 @@ }, "node_modules/proper-lockfile": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", "dev": true, "license": "MIT", "dependencies": { @@ -5681,10 +11156,19 @@ "signal-exit": "^3.0.2" } }, + "node_modules/ps-list": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pump": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -5693,8 +11177,6 @@ }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "devOptional": true, "license": "MIT", "engines": { @@ -5703,9 +11185,6 @@ }, "node_modules/quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -5716,8 +11195,6 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -5731,8 +11208,6 @@ }, "node_modules/read-binary-file-arch": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", - "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", "dev": true, "license": "MIT", "dependencies": { @@ -5744,8 +11219,6 @@ }, "node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -5756,10 +11229,67 @@ "node": ">= 6" } }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", + "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "^4.7.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "peer": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/readdirp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { @@ -5772,14 +11302,10 @@ }, "node_modules/regenerator-runtime": { "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5787,8 +11313,6 @@ }, "node_modules/resedit": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", - "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", "dev": true, "license": "MIT", "dependencies": { @@ -5805,16 +11329,10 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, "license": "MIT" }, "node_modules/responselike": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" @@ -5825,8 +11343,6 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", "dependencies": { @@ -5839,19 +11355,29 @@ }, "node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/roarr": { "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, "license": "BSD-3-Clause", "optional": true, "dependencies": { @@ -5868,8 +11394,6 @@ }, "node_modules/rollup": { "version": "4.52.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", - "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5910,8 +11434,6 @@ }, "node_modules/rxjs": { "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -5920,8 +11442,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -5940,15 +11460,11 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/sanitize-filename": { "version": "1.6.4", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.4.tgz", - "integrity": "sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==", "dev": true, "license": "WTFPL OR ISC", "dependencies": { @@ -5957,15 +11473,10 @@ }, "node_modules/sax": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, "node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5973,17 +11484,11 @@ }, "node_modules/semver-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, "license": "MIT", "optional": true }, "node_modules/serialize-error": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -5998,8 +11503,6 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -6011,8 +11514,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -6021,22 +11522,16 @@ }, "node_modules/siginfo": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", "dev": true, "license": "ISC" }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/simple-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -6055,8 +11550,6 @@ }, "node_modules/simple-get": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -6080,8 +11573,6 @@ }, "node_modules/simple-update-notifier": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, "license": "MIT", "dependencies": { @@ -6093,8 +11584,6 @@ }, "node_modules/simple-update-notifier/node_modules/semver": { "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -6106,8 +11595,6 @@ }, "node_modules/slice-ansi": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "license": "MIT", "optional": true, "dependencies": { @@ -6121,8 +11608,6 @@ }, "node_modules/slugify": { "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", "dev": true, "license": "MIT", "engines": { @@ -6131,8 +11616,6 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "devOptional": true, "license": "MIT", "engines": { @@ -6142,8 +11625,6 @@ }, "node_modules/socks": { "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, "license": "MIT", "dependencies": { @@ -6157,8 +11638,6 @@ }, "node_modules/socks-proxy-agent": { "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, "license": "MIT", "dependencies": { @@ -6172,8 +11651,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -6182,8 +11659,6 @@ }, "node_modules/source-map-js": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -6192,8 +11667,6 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -6203,16 +11676,11 @@ }, "node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true, "license": "BSD-3-Clause", "optional": true }, "node_modules/sqlite-better-trigram": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram/-/sqlite-better-trigram-0.0.5.tgz", - "integrity": "sha512-LDAuMzU2u9rhJyNmSxZyJiL3lWb8FjUqX/JZ3dwmo16Cl0zmkzFvGS94yfjLhwEce1yg1UE851Mz5UplWNhhpg==", "license": "Public Domain", "optionalDependencies": { "sqlite-better-trigram-darwin-arm64": "0.0.5", @@ -6225,8 +11693,6 @@ }, "node_modules/sqlite-better-trigram-darwin-arm64": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram-darwin-arm64/-/sqlite-better-trigram-darwin-arm64-0.0.5.tgz", - "integrity": "sha512-AVSfFHLDAuttkKtlXCMHbhtV6Dv8M48e4ucTfjMOpGenJTEWmXx3Goj/ZCHe3uLEW57qaely15AAl/xFOsGSLA==", "cpu": [ "arm64" ], @@ -6236,75 +11702,8 @@ "darwin" ] }, - "node_modules/sqlite-better-trigram-darwin-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram-darwin-x64/-/sqlite-better-trigram-darwin-x64-0.0.5.tgz", - "integrity": "sha512-SxrQxI8r42+WN8DZxKuTQtSPmY7TLwtk5VoKbRN6HuNkb4rx8ZmmKeVmVA8u+hLkO4bzh2GtydOrlTdIgg5g5Q==", - "cpu": [ - "x64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/sqlite-better-trigram-linux-arm64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram-linux-arm64/-/sqlite-better-trigram-linux-arm64-0.0.5.tgz", - "integrity": "sha512-jrm5jDUfozFEU3ErN2NosQHTi53XouXBrrhzoigAYWYhfk+oeMbN7MWdzv5y5eZNH5uUSRc8/Kj6XO8rx147mw==", - "cpu": [ - "arm64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/sqlite-better-trigram-linux-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram-linux-x64/-/sqlite-better-trigram-linux-x64-0.0.5.tgz", - "integrity": "sha512-AqiEOF7fK8MPcJKxWkkrF9DWSs5Ma/AlJfuWDrdxKzlLPaV4OWucL2zm/ShdEMGZ+Uz5EgTShGxnvLRRMmZYsQ==", - "cpu": [ - "x64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/sqlite-better-trigram-windows-arm64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram-windows-arm64/-/sqlite-better-trigram-windows-arm64-0.0.5.tgz", - "integrity": "sha512-HEY3GbhtINKyM2ztcBJ7GqpgHNDA0aBUFNnKsvAkorF08+0v0sRs3oZsoDBqDQY0tm90iUZVLoTqvtN3sLhaGw==", - "cpu": [ - "arm64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/sqlite-better-trigram-windows-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sqlite-better-trigram-windows-x64/-/sqlite-better-trigram-windows-x64-0.0.5.tgz", - "integrity": "sha512-JeLPlGc5yL7KL/uqAgcRb9wwS51xN1aezP18k2dvuxpXWmfGDc8e8/bpKYVVzUbnMF63MdpSa9PBch2NhT6CPA==", - "cpu": [ - "x64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/sqlite3-fts5-html": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html/-/sqlite3-fts5-html-0.0.6.tgz", - "integrity": "sha512-+15ntK7L68G/yuM+vyKAFxzLM/TRwjNoWAkFr0q+jXcdwfTUOrU2painloOIWnqN/meT0N1kdOltaHgyGS9MaA==", "license": "Public Domain", "optionalDependencies": { "sqlite3-fts5-html-darwin-arm64": "0.0.6", @@ -6317,8 +11716,6 @@ }, "node_modules/sqlite3-fts5-html-darwin-arm64": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html-darwin-arm64/-/sqlite3-fts5-html-darwin-arm64-0.0.6.tgz", - "integrity": "sha512-qMSUJs9py8X5VK96YuiRrORCSxINoIaK/lYOQt7dGwOGnfP8qpdvj5FoQMkNnb5s2kd2xqko1o5io3iJFq2sZA==", "cpu": [ "arm64" ], @@ -6328,75 +11725,8 @@ "darwin" ] }, - "node_modules/sqlite3-fts5-html-darwin-x64": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html-darwin-x64/-/sqlite3-fts5-html-darwin-x64-0.0.6.tgz", - "integrity": "sha512-T7ouo1HZffrfuVKy0GkPR6dJvGeiaaWlqCDrQdNvpL7F6DUyaZIGd9FJSwxBjTWaOTOW7glg+sedBGntokpZqw==", - "cpu": [ - "x64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/sqlite3-fts5-html-linux-arm64": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html-linux-arm64/-/sqlite3-fts5-html-linux-arm64-0.0.6.tgz", - "integrity": "sha512-Xl4pokUU4OsyroHYAoCFh7R03s6V2ApcQZImmNsVpWlAviVhlAQ3NxSBhXtJ2HNyyVJjnkJZvQnXG0zRBLZDXw==", - "cpu": [ - "arm64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/sqlite3-fts5-html-linux-x64": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html-linux-x64/-/sqlite3-fts5-html-linux-x64-0.0.6.tgz", - "integrity": "sha512-v+h7nP4BliFcqVfbWE7aCN9MUqyqzPNOzl/8eautN5dZCHEvQErhVgIzZfCFDnJf0Xp73eXJLu5mnyJYFf3x3A==", - "cpu": [ - "x64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/sqlite3-fts5-html-windows-arm64": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html-windows-arm64/-/sqlite3-fts5-html-windows-arm64-0.0.6.tgz", - "integrity": "sha512-460bqs+vA4I0GTyviFPD53I4ivPjrhJNr3tDhWEmd2p+aNDfxvz1z0BAw4Su1sVxhCe/up1oMDCxC1z7dEyfmA==", - "cpu": [ - "arm64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/sqlite3-fts5-html-windows-x64": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/sqlite3-fts5-html-windows-x64/-/sqlite3-fts5-html-windows-x64-0.0.6.tgz", - "integrity": "sha512-rMjO3yNcqvfVeI5cDWcLYut43s9n4vHVvFL129AJIDarFz/r99VXC34kIdPupW6GIlh2v/c3Jj3TtuXlOyulrQ==", - "cpu": [ - "x64" - ], - "license": "Public Domain", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/ssri": { "version": "12.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", - "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", "dev": true, "license": "ISC", "dependencies": { @@ -6408,15 +11738,11 @@ }, "node_modules/stackback": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true, "license": "MIT" }, "node_modules/stat-mode": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", - "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true, "license": "MIT", "engines": { @@ -6425,15 +11751,11 @@ }, "node_modules/std-env": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -6441,8 +11763,6 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -6456,8 +11776,6 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6471,8 +11789,6 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -6484,8 +11800,6 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -6495,10 +11809,19 @@ "node": ">=8" } }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6506,8 +11829,6 @@ }, "node_modules/strip-literal": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", "dev": true, "license": "MIT", "dependencies": { @@ -6519,8 +11840,6 @@ }, "node_modules/strtok3": { "version": "9.1.1", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.1.1.tgz", - "integrity": "sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==", "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0", @@ -6536,9 +11855,6 @@ }, "node_modules/sumchecker": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, "license": "Apache-2.0", "dependencies": { "debug": "^4.1.0" @@ -6549,8 +11865,6 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -6562,8 +11876,6 @@ }, "node_modules/tar": { "version": "7.5.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", - "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6579,8 +11891,6 @@ }, "node_modules/tar-fs": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -6591,14 +11901,10 @@ }, "node_modules/tar-fs/node_modules/chownr": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "license": "ISC" }, "node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -6613,18 +11919,156 @@ }, "node_modules/tar/node_modules/yallist": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, + "node_modules/taskkill": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^6.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/execa": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/taskkill/node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/human-signals": { + "version": "3.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/taskkill/node_modules/is-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/mimic-fn": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/npm-run-path": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/onetime": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/path-key": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/taskkill/node_modules/strip-final-newline": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/temp-file": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", - "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "dev": true, "license": "MIT", "dependencies": { @@ -6634,8 +12078,6 @@ }, "node_modules/temp-file/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6649,8 +12091,6 @@ }, "node_modules/temp-file/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6662,8 +12102,6 @@ }, "node_modules/temp-file/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -6672,8 +12110,6 @@ }, "node_modules/tiny-async-pool": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", - "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", "dev": true, "license": "MIT", "dependencies": { @@ -6682,8 +12118,6 @@ }, "node_modules/tiny-async-pool/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { @@ -6692,28 +12126,27 @@ }, "node_modules/tiny-typed-emitter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", - "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==", "license": "MIT" }, "node_modules/tinybench": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", "dev": true, "license": "MIT" }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT", + "peer": true + }, "node_modules/tinyexec": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", "dev": true, "license": "MIT" }, "node_modules/tinyglobby": { "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6729,8 +12162,6 @@ }, "node_modules/tinypool": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -6739,8 +12170,6 @@ }, "node_modules/tinyrainbow": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, "license": "MIT", "engines": { @@ -6749,8 +12178,6 @@ }, "node_modules/tinyspy": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "dev": true, "license": "MIT", "engines": { @@ -6759,8 +12186,6 @@ }, "node_modules/tmp": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, "license": "MIT", "engines": { @@ -6769,8 +12194,6 @@ }, "node_modules/tmp-promise": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6779,8 +12202,6 @@ }, "node_modules/to-data-view": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-2.0.0.tgz", - "integrity": "sha512-RGEM5KqlPHr+WVTPmGNAXNeFEmsBnlkxXaIfEpUYV0AST2Z5W1EGq9L/MENFrMMmL2WQr1wjkmZy/M92eKhjYA==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -6788,8 +12209,6 @@ }, "node_modules/token-types": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", - "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==", "license": "MIT", "dependencies": { "@borewit/text-codec": "^0.1.0", @@ -6804,10 +12223,15 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT", + "peer": true + }, "node_modules/tree-kill": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -6816,8 +12240,6 @@ }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "license": "WTFPL", "dependencies": { @@ -6826,15 +12248,11 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD", "optional": true }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -6845,9 +12263,6 @@ }, "node_modules/type-fest": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, "engines": { @@ -6859,8 +12274,6 @@ }, "node_modules/typed-emitter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", - "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", "license": "MIT", "optionalDependencies": { "rxjs": "*" @@ -6868,8 +12281,6 @@ }, "node_modules/uint8array-extras": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", - "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", "license": "MIT", "engines": { "node": ">=18" @@ -6880,8 +12291,6 @@ }, "node_modules/undici": { "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", "dev": true, "license": "MIT", "engines": { @@ -6890,15 +12299,21 @@ }, "node_modules/undici-types": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "devOptional": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-filename": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", - "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", "dev": true, "license": "ISC", "dependencies": { @@ -6910,8 +12325,6 @@ }, "node_modules/unique-slug": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", - "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", "dev": true, "license": "ISC", "dependencies": { @@ -6923,9 +12336,6 @@ }, "node_modules/universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -6933,14 +12343,10 @@ }, "node_modules/unraw": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unraw/-/unraw-3.0.0.tgz", - "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==", "license": "MIT" }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "devOptional": true, "license": "BSD-2-Clause", "dependencies": { @@ -6949,21 +12355,15 @@ }, "node_modules/utf8-byte-length": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", "dev": true, "license": "(WTFPL OR MIT)" }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/verror": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", "license": "MIT", "optional": true, "dependencies": { @@ -6977,8 +12377,6 @@ }, "node_modules/vite": { "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "dev": true, "license": "MIT", "dependencies": { @@ -7052,8 +12450,6 @@ }, "node_modules/vite-node": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { @@ -7073,78 +12469,8 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", - "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", - "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", - "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", - "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", - "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", "cpu": [ "arm64" ], @@ -7158,316 +12484,8 @@ "node": ">=18" } }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", - "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", - "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", - "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", - "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", - "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", - "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", - "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", - "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", - "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", - "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", - "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", - "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", - "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", - "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", - "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", - "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", - "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", - "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/vite/node_modules/esbuild": { "version": "0.25.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", - "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -7508,10 +12526,7 @@ }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -7523,8 +12538,6 @@ }, "node_modules/vitest": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { @@ -7596,18 +12609,39 @@ }, "node_modules/wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT", + "peer": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "peer": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { @@ -7622,8 +12656,6 @@ }, "node_modules/why-is-node-running": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, "license": "MIT", "dependencies": { @@ -7639,8 +12671,6 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -7657,8 +12687,6 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -7675,14 +12703,10 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/xmlbuilder": { "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "devOptional": true, "license": "MIT", "engines": { @@ -7691,8 +12715,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { "node": ">=10" @@ -7700,15 +12722,11 @@ }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -7725,8 +12743,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { "node": ">=12" @@ -7734,9 +12750,6 @@ }, "node_modules/yauzl": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -7745,8 +12758,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -7756,10 +12767,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zod": { "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", - "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 186a94cb9..3425c3dc8 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -22,6 +22,7 @@ "default": "./dist/esm/index.js" } }, + "./testutils": "./__tests__/test-override.ts", "./*": { "require": { "types": "./dist/types/*", @@ -53,6 +54,7 @@ "zod": "3.24.3" }, "devDependencies": { + "@playwright/test": "^1.58.2", "@streetwriters/kysely": "^0.27.4", "@types/node": "22.15.3", "@types/yargs": "^17.0.33", @@ -60,9 +62,10 @@ "electron": "^37.0.0", "electron-builder": "^26.8.1", "esbuild": "0.21.5", + "fkill": "^10.0.3", "node-abi": "^4.5.0", "node-gyp-build": "^4.8.4", - "playwright": "1.48.2", + "playwright": "1.58.2", "prebuildify": "^6.0.1", "slugify": "1.6.6", "tree-kill": "^1.2.2", @@ -83,7 +86,7 @@ "bundle": "esbuild electron=./src/main.ts ./src/preload.ts --external:electron --external:fsevents --external:better-sqlite3-multiple-ciphers --external:sodium-native --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=false --define:RELEASE=true", "bundle:mas": "esbuild electron=./src/main.ts ./src/preload.ts --minify --external:electron --external:fsevents --bundle --outdir=./build --platform=node --tsconfig=tsconfig.json --define:MAC_APP_STORE=true --define:RELEASE=true", "postinstall": "patch-package", - "test": "vitest run" + "test": "playwright test --tsconfig tsconfig.json" }, "author": { "name": "Streetwriters (Private) Limited", diff --git a/apps/desktop/patches/playwright-core+1.58.2.patch b/apps/desktop/patches/playwright-core+1.58.2.patch new file mode 100644 index 000000000..5622d9426 --- /dev/null +++ b/apps/desktop/patches/playwright-core+1.58.2.patch @@ -0,0 +1,24 @@ +diff --git a/node_modules/playwright-core/lib/protocol/validator.js b/node_modules/playwright-core/lib/protocol/validator.js +index b36c979..9e8ca15 100644 +--- a/node_modules/playwright-core/lib/protocol/validator.js ++++ b/node_modules/playwright-core/lib/protocol/validator.js +@@ -2536,6 +2536,7 @@ import_validatorPrimitives.scheme.ElectronLaunchParams = (0, import_validatorPri + executablePath: (0, import_validatorPrimitives.tOptional)(import_validatorPrimitives.tString), + args: (0, import_validatorPrimitives.tOptional)((0, import_validatorPrimitives.tArray)(import_validatorPrimitives.tString)), + cwd: (0, import_validatorPrimitives.tOptional)(import_validatorPrimitives.tString), ++ baseURL: (0, import_validatorPrimitives.tOptional)(import_validatorPrimitives.tString), + env: (0, import_validatorPrimitives.tOptional)((0, import_validatorPrimitives.tArray)((0, import_validatorPrimitives.tType)("NameValue"))), + timeout: import_validatorPrimitives.tFloat, + acceptDownloads: (0, import_validatorPrimitives.tOptional)((0, import_validatorPrimitives.tEnum)(["accept", "deny", "internal-browser-default"])), +diff --git a/node_modules/playwright-core/types/types.d.ts b/node_modules/playwright-core/types/types.d.ts +index f6e6165..4efd4d4 100644 +--- a/node_modules/playwright-core/types/types.d.ts ++++ b/node_modules/playwright-core/types/types.d.ts +@@ -19233,6 +19233,7 @@ export interface Electron { + * Additional arguments to pass to the application when launching. You typically pass the main script name here. + */ + args?: Array; ++ baseURL?: string; + + /** + * Toggles bypassing page's Content-Security-Policy. Defaults to `false`. diff --git a/apps/desktop/playwright.config.ts b/apps/desktop/playwright.config.ts new file mode 100644 index 000000000..70b659d75 --- /dev/null +++ b/apps/desktop/playwright.config.ts @@ -0,0 +1,92 @@ +/* eslint-disable header/header */ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { + Config, + PlaywrightTestOptions, + PlaywrightWorkerOptions +} from "@playwright/test"; +import * as path from "path"; + +process.env.PWPAGE_IMPL = "electron"; +process.env.TEST_DESKTOP = "true"; +const outputDir = path.join(__dirname, "test-results"); +const testDir = path.join(__dirname, "__tests__"); +const config: Config = { + testDir, + outputDir, + expect: { + timeout: 10000 + }, + use: { + acceptDownloads: true, + trace: "retain-on-failure", + screenshot: "only-on-failure", + video: "retry-with-video", + viewport: { + width: 1920, + height: 1080 + } + }, + timeout: 60000, + globalTimeout: 5400000, + workers: process.env.CI ? 1 : undefined, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 3 : 0, + reporter: process.env.CI + ? [["dot"], ["json", { outputFile: path.join(outputDir, "report.json") }]] + : "line", + projects: [], + globalSetup: "./__tests__/electron-test/global-setup.ts" +}; + +const metadata = { + platform: process.platform, + headless: "headed", + browserName: "electron", + channel: undefined, + mode: "default", + video: false +}; + +config.projects?.push({ + name: "notesnook-desktop", + // Share screenshots with chromium. + snapshotPathTemplate: + "{testDir}/{testFileDir}/{testFileName}-snapshots/{arg}-electron{ext}", + use: { + browserName: "chromium", + headless: false + }, + testDir: "__tests__", + metadata +}); + +config.projects?.push({ + name: "notesnook-web", + // Share screenshots with chromium. + snapshotPathTemplate: + "{testDir}/{testFileDir}/{testFileName}-snapshots/{arg}-electron{ext}", + use: { + browserName: "chromium", + headless: false + }, + testDir: path.resolve(__dirname, "../web/__e2e__"), + metadata +}); + +export default config; diff --git a/apps/desktop/scripts/build.mjs b/apps/desktop/scripts/build.mjs index 870641870..665a722fd 100644 --- a/apps/desktop/scripts/build.mjs +++ b/apps/desktop/scripts/build.mjs @@ -33,6 +33,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const root = args.root || path.join(__dirname, ".."); const skipTscBuild = args.skipTscBuild || false; +const buildForTesting = args.test || false; const webAppPath = path.resolve(path.join(__dirname, "..", "..", "web")); @@ -51,7 +52,11 @@ console.log("removed build folder"); if (args.rebuild || !existsSync(path.join(webAppPath, "build"))) { console.log("rebuilding..."); await exec( - "node scripts/execute.mjs @notesnook/web:build:desktop", + `node scripts/execute.mjs ${ + buildForTesting + ? "@notesnook/web:build:test:desktop" + : "@notesnook/web:build:desktop" + }`, path.join(__dirname, "..", "..", "..") ); } diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json index c5f8b44da..5d94c8055 100644 --- a/apps/desktop/tsconfig.json +++ b/apps/desktop/tsconfig.json @@ -1,9 +1,12 @@ { - "extends": "../../tsconfig", + "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "./dist/", "lib": ["ESNext"], - "moduleResolution": "Bundler" + "moduleResolution": "Bundler", + "paths": { + "@nn/test": ["./__tests__/electron-test/index.ts"] + } }, - "include": ["src", "global.d.ts"] + "include": ["src", "global.d.ts", "__tests__"] } diff --git a/apps/web/__e2e__/app-lock.test.ts b/apps/web/__e2e__/app-lock.test.ts index 63e75945e..be7453715 100644 --- a/apps/web/__e2e__/app-lock.test.ts +++ b/apps/web/__e2e__/app-lock.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, APP_LOCK_PASSWORD, USER } from "./utils"; +import { APP_LOCK_PASSWORD, USER } from "./utils"; +import { test, expect } from "@nn/test"; test("don't show status bar lock app button to unauthenticated user", async ({ page diff --git a/apps/web/__e2e__/backups.test.ts b/apps/web/__e2e__/backups.test.ts index d444f1f2c..4a1b1989d 100644 --- a/apps/web/__e2e__/backups.test.ts +++ b/apps/web/__e2e__/backups.test.ts @@ -17,7 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, USER } from "./utils"; +import { USER } from "./utils"; +import { test, expect } from "@nn/test"; test("create an unencrypted backup", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/checkout.test.ts b/apps/web/__e2e__/checkout.test.ts index 32b204dee..f69fb99ca 100644 --- a/apps/web/__e2e__/checkout.test.ts +++ b/apps/web/__e2e__/checkout.test.ts @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Page } from "@playwright/test"; -import { test, expect, USER } from "./utils"; +import { USER } from "./utils"; import { AppModel } from "./models/app.model"; import { PriceItem } from "./models/types"; +import { test, expect, Page } from "@nn/test"; test.setTimeout(45 * 1000); test.describe.configure({ mode: "serial" }); diff --git a/apps/web/__e2e__/colors.test.ts b/apps/web/__e2e__/colors.test.ts index a047051f0..3636f4c19 100644 --- a/apps/web/__e2e__/colors.test.ts +++ b/apps/web/__e2e__/colors.test.ts @@ -17,7 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, getTestId, NOTE } from "./utils"; +import { getTestId, NOTE } from "./utils"; +import { test, expect } from "@nn/test"; test("delete the last note of a color", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/drag-drop.test.ts b/apps/web/__e2e__/drag-drop.test.ts index 1be83ba46..f07193755 100644 --- a/apps/web/__e2e__/drag-drop.test.ts +++ b/apps/web/__e2e__/drag-drop.test.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { test, expect } from "./utils"; +import { test, expect } from "@nn/test"; import { AppModel } from "./models/app.model"; import { NotesViewModel } from "./models/notes-view.model"; diff --git a/apps/web/__e2e__/editor.test.ts b/apps/web/__e2e__/editor.test.ts index dbf10bf6a..bdcc4d7e9 100644 --- a/apps/web/__e2e__/editor.test.ts +++ b/apps/web/__e2e__/editor.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, NOTE, TITLE_ONLY_NOTE } from "./utils"; +import { NOTE, TITLE_ONLY_NOTE } from "./utils"; +import { test, expect } from "@nn/test"; test("focus mode", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-1-electron.txt b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-1-electron.txt new file mode 100644 index 000000000..793ea9eb3 --- /dev/null +++ b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-1-electron.txt @@ -0,0 +1 @@ +53ad8e4e40ebebd0f400498dTest note 1 (0) Test note 1 (1) Test note 1 (2) Test note 1 (3) Test note 1 (4) Test note 1 (5) Test note 1 (6) Test note 1 (7) Test note 1 (8) Test note 1 (9) \ No newline at end of file diff --git a/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-2-electron.txt b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-2-electron.txt new file mode 100644 index 000000000..bcc66667f --- /dev/null +++ b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-2-electron.txt @@ -0,0 +1 @@ +f054d19e9a2f46eff7b9bb25Test note 2 (0)Test note 2 (1)Test note 2 (2)Test note 2 (3)Test note 2 (4)Test note 2 (5)Test note 2 (6)Test note 2 (7)Test note 2 (8)Test note 2 (9) \ No newline at end of file diff --git a/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-1-electron.txt b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-1-electron.txt new file mode 100644 index 000000000..1b6dba491 --- /dev/null +++ b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-1-electron.txt @@ -0,0 +1 @@ +Test note 1Test note 1 (0) Test note 1 (1) Test note 1 (2) Test note 1 (3) Test note 1 (4) Test note 1 (5) Test note 1 (6) Test note 1 (7) Test note 1 (8) Test note 1 (9) \ No newline at end of file diff --git a/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-2-electron.txt b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-2-electron.txt new file mode 100644 index 000000000..92705d03c --- /dev/null +++ b/apps/web/__e2e__/editor.test.ts-snapshots/fast-switch-and-edit-note-title-2-electron.txt @@ -0,0 +1 @@ +Test note 2Test note 2 (0)Test note 2 (1)Test note 2 (2)Test note 2 (3)Test note 2 (4)Test note 2 (5)Test note 2 (6)Test note 2 (7)Test note 2 (8)Test note 2 (9) \ No newline at end of file diff --git a/apps/web/__e2e__/editor.test.ts-snapshots/focus-mode-electron.jpg b/apps/web/__e2e__/editor.test.ts-snapshots/focus-mode-electron.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1557a9a5ea47f504a116df1ceca5b5077edd6f42 GIT binary patch literal 48251 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 L>5qL)-~0aq*5qhE literal 0 HcmV?d00001 diff --git a/apps/web/__e2e__/editor.test.ts-snapshots/readonly-edited-note-electron.txt b/apps/web/__e2e__/editor.test.ts-snapshots/readonly-edited-note-electron.txt new file mode 100644 index 000000000..8fdeb8f1c --- /dev/null +++ b/apps/web/__e2e__/editor.test.ts-snapshots/readonly-edited-note-electron.txt @@ -0,0 +1 @@ +An edit I madeThis is Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1 \ No newline at end of file diff --git a/apps/web/__e2e__/keyboard-list-navigation.test.ts b/apps/web/__e2e__/keyboard-list-navigation.test.ts index 40f2e0004..121abc5be 100644 --- a/apps/web/__e2e__/keyboard-list-navigation.test.ts +++ b/apps/web/__e2e__/keyboard-list-navigation.test.ts @@ -17,8 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Page } from "@playwright/test"; -import { test, expect } from "./utils"; +import { test, expect, Browser, Page } from "@nn/test"; import { AppModel } from "./models/app.model"; import { NoteItemModel } from "./models/note-item.model"; diff --git a/apps/web/__e2e__/models/app.model.ts b/apps/web/__e2e__/models/app.model.ts index af61ccf77..4510b16db 100644 --- a/apps/web/__e2e__/models/app.model.ts +++ b/apps/web/__e2e__/models/app.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { AuthModel } from "./auth.model"; import { CheckoutModel } from "./checkout.model"; diff --git a/apps/web/__e2e__/models/auth.model.ts b/apps/web/__e2e__/models/auth.model.ts index dec3c800c..a07558b6b 100644 --- a/apps/web/__e2e__/models/auth.model.ts +++ b/apps/web/__e2e__/models/auth.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { generateSync } from "otplib"; @@ -77,7 +77,7 @@ export class AuthModel { await this.page.locator(getTestId("close-plans")).click(); await this.page - .locator(getTestId("sync-status-synced")) + .locator(getTestId("sync-status-syncing")) .waitFor({ state: "visible" }); } } diff --git a/apps/web/__e2e__/models/base-item.model.ts b/apps/web/__e2e__/models/base-item.model.ts index c719df9d3..4e8e1faad 100644 --- a/apps/web/__e2e__/models/base-item.model.ts +++ b/apps/web/__e2e__/models/base-item.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; export class BaseItemModel { diff --git a/apps/web/__e2e__/models/base-view.model.ts b/apps/web/__e2e__/models/base-view.model.ts index 43be533a0..09fbeec05 100644 --- a/apps/web/__e2e__/models/base-view.model.ts +++ b/apps/web/__e2e__/models/base-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { iterateList } from "./utils"; import { ContextMenuModel } from "./context-menu.model"; @@ -73,8 +73,10 @@ export class BaseViewModel { return undefined; } - async waitForItem(title: string) { - await this.list.locator(getTestId("title"), { hasText: title }).waitFor(); + async waitForItem(title: string, timeout = 10000) { + await this.list + .locator(getTestId("title"), { hasText: title }) + .waitFor({ timeout }); } async waitForList() { diff --git a/apps/web/__e2e__/models/checkout.model.ts b/apps/web/__e2e__/models/checkout.model.ts index bec91cfcb..205906165 100644 --- a/apps/web/__e2e__/models/checkout.model.ts +++ b/apps/web/__e2e__/models/checkout.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { PriceItem } from "./types"; import { iterateList } from "./utils"; diff --git a/apps/web/__e2e__/models/context-menu.model.ts b/apps/web/__e2e__/models/context-menu.model.ts index f54600708..9068c2d0f 100644 --- a/apps/web/__e2e__/models/context-menu.model.ts +++ b/apps/web/__e2e__/models/context-menu.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Page, Locator } from "@playwright/test"; +import type { Page, Locator } from "@playwright/test"; import { getTestId } from "../utils"; export class ContextMenuModel { diff --git a/apps/web/__e2e__/models/editor.model.ts b/apps/web/__e2e__/models/editor.model.ts index f3460773c..b18b10a97 100644 --- a/apps/web/__e2e__/models/editor.model.ts +++ b/apps/web/__e2e__/models/editor.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { TabItemModel } from "./tab-item.model"; import { iterateList } from "./utils"; @@ -110,7 +110,7 @@ export class EditorModel { await this.wordCountText.waitFor(); } - async waitForContent(text: string) { + async waitForContent(text: string, timeout = 10000) { await this.page.waitForFunction( ({ expected }) => { const contentElement = document.querySelector( @@ -122,7 +122,27 @@ export class EditorModel { .includes(expected.replace(/\s+/g, "")); return false; }, - { expected: text } + { expected: text }, + { timeout } + ); + } + + async waitForTitle(title: string, timeout = 10000) { + await this.page.waitForFunction( + ({ expected }) => { + const titleInput = document.querySelector( + `.active [data-test-id="editor-title"]` + ) as HTMLInputElement | null; + if (titleInput) + return expected !== undefined + ? titleInput.value === expected + : titleInput.value.length > 0; + return false; + }, + { expected: title }, + { + timeout + } ); } diff --git a/apps/web/__e2e__/models/item.model.ts b/apps/web/__e2e__/models/item.model.ts index a9bfe2a36..2981790bf 100644 --- a/apps/web/__e2e__/models/item.model.ts +++ b/apps/web/__e2e__/models/item.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator } from "@playwright/test"; +import type { Locator } from "@playwright/test"; import { BaseItemModel } from "./base-item.model"; import { ContextMenuModel } from "./context-menu.model"; import { NotesViewModel } from "./notes-view.model"; diff --git a/apps/web/__e2e__/models/items-view.model.ts b/apps/web/__e2e__/models/items-view.model.ts index a35ed719a..04710fd4e 100644 --- a/apps/web/__e2e__/models/items-view.model.ts +++ b/apps/web/__e2e__/models/items-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseViewModel } from "./base-view.model"; import { ItemModel } from "./item.model"; diff --git a/apps/web/__e2e__/models/navigation-menu.model.ts b/apps/web/__e2e__/models/navigation-menu.model.ts index 189cd1c44..54022f7ba 100644 --- a/apps/web/__e2e__/models/navigation-menu.model.ts +++ b/apps/web/__e2e__/models/navigation-menu.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { ContextMenuModel } from "./context-menu.model"; import { confirmDialog, fillItemDialog, iterateList } from "./utils"; @@ -31,6 +31,10 @@ export class NavigationMenuModel { this.menu = page.locator(getTestId(id)); } + async waitFor() { + await this.menu.waitFor(); + } + async findItem(title: string) { for await (const item of this.iterateList()) { const menuItem = new NavigationItemModel(item); diff --git a/apps/web/__e2e__/models/note-item.model.ts b/apps/web/__e2e__/models/note-item.model.ts index 79c580852..eccf90bf5 100644 --- a/apps/web/__e2e__/models/note-item.model.ts +++ b/apps/web/__e2e__/models/note-item.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator } from "@playwright/test"; +import type { Locator } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseItemModel } from "./base-item.model"; import { EditorModel } from "./editor.model"; diff --git a/apps/web/__e2e__/models/note-properties.model.ts b/apps/web/__e2e__/models/note-properties.model.ts index ce9d1325a..028c3c24a 100644 --- a/apps/web/__e2e__/models/note-properties.model.ts +++ b/apps/web/__e2e__/models/note-properties.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { downloadAndReadFile, getTestId } from "../utils"; import { ContextMenuModel } from "./context-menu.model"; import { ToggleModel } from "./toggle.model"; diff --git a/apps/web/__e2e__/models/notebook-item.model.ts b/apps/web/__e2e__/models/notebook-item.model.ts index 06cb82e6a..d75df6a7a 100644 --- a/apps/web/__e2e__/models/notebook-item.model.ts +++ b/apps/web/__e2e__/models/notebook-item.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator } from "@playwright/test"; +import type { Locator } from "@playwright/test"; import { BaseItemModel } from "./base-item.model"; import { ContextMenuModel } from "./context-menu.model"; import { ToggleModel } from "./toggle.model"; diff --git a/apps/web/__e2e__/models/notebooks-view.model.ts b/apps/web/__e2e__/models/notebooks-view.model.ts index 5d3a4ad74..1fdecff01 100644 --- a/apps/web/__e2e__/models/notebooks-view.model.ts +++ b/apps/web/__e2e__/models/notebooks-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseViewModel } from "./base-view.model"; import { NotebookItemModel } from "./notebook-item.model"; diff --git a/apps/web/__e2e__/models/notes-view.model.ts b/apps/web/__e2e__/models/notes-view.model.ts index 0968a8b07..58c25e94c 100644 --- a/apps/web/__e2e__/models/notes-view.model.ts +++ b/apps/web/__e2e__/models/notes-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseViewModel } from "./base-view.model"; import { EditorModel } from "./editor.model"; diff --git a/apps/web/__e2e__/models/reminder-item.model.ts b/apps/web/__e2e__/models/reminder-item.model.ts index a4714e0ce..02b977352 100644 --- a/apps/web/__e2e__/models/reminder-item.model.ts +++ b/apps/web/__e2e__/models/reminder-item.model.ts @@ -18,7 +18,7 @@ along with this program. If not, see . */ import { Reminder } from "@notesnook/core"; -import { Locator } from "@playwright/test"; +import type { Locator } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseItemModel } from "./base-item.model"; import { ContextMenuModel } from "./context-menu.model"; diff --git a/apps/web/__e2e__/models/reminders-view.model.ts b/apps/web/__e2e__/models/reminders-view.model.ts index 6748cff84..c36ae7887 100644 --- a/apps/web/__e2e__/models/reminders-view.model.ts +++ b/apps/web/__e2e__/models/reminders-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseViewModel } from "./base-view.model"; import { ReminderItemModel } from "./reminder-item.model"; diff --git a/apps/web/__e2e__/models/search-view-model.ts b/apps/web/__e2e__/models/search-view-model.ts index 53f4e896a..9d96ef41d 100644 --- a/apps/web/__e2e__/models/search-view-model.ts +++ b/apps/web/__e2e__/models/search-view-model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Page } from "@playwright/test"; +import type { Page } from "@playwright/test"; import { BaseViewModel } from "./base-view.model"; import { ItemModel } from "./item.model"; import { Item } from "./types"; diff --git a/apps/web/__e2e__/models/session-history-item-model.ts b/apps/web/__e2e__/models/session-history-item-model.ts index 7b6e83d64..a6cc29754 100644 --- a/apps/web/__e2e__/models/session-history-item-model.ts +++ b/apps/web/__e2e__/models/session-history-item-model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { NotePropertiesModel } from "./note-properties.model"; import { SessionHistoryPreviewModel } from "./session-history-preview-model"; diff --git a/apps/web/__e2e__/models/session-history-preview-model.ts b/apps/web/__e2e__/models/session-history-preview-model.ts index f93f8642c..318f7745d 100644 --- a/apps/web/__e2e__/models/session-history-preview-model.ts +++ b/apps/web/__e2e__/models/session-history-preview-model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { NotePropertiesModel } from "./note-properties.model"; diff --git a/apps/web/__e2e__/models/settings-view.model.ts b/apps/web/__e2e__/models/settings-view.model.ts index 690e42be3..85960a637 100644 --- a/apps/web/__e2e__/models/settings-view.model.ts +++ b/apps/web/__e2e__/models/settings-view.model.ts @@ -17,8 +17,13 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Page } from "@playwright/test"; -import { downloadAndReadFile, getTestId, uploadFile } from "../utils"; +import type { Page } from "@playwright/test"; +import { + downloadAndReadFile, + getTestId, + IS_DESKTOP_TESTS, + uploadFile +} from "../utils"; import { confirmDialog, fillConfirmPasswordDialog, @@ -27,6 +32,9 @@ import { waitToHaveText } from "./utils"; import { NavigationMenuModel } from "./navigation-menu.model"; +import { AppModel } from "./app.model"; +import { getAppFromPage } from "../../../desktop/__tests__/electron-test/utils"; +import { readFile } from "node:fs/promises"; export class SettingsViewModel { private readonly page: Page; @@ -118,17 +126,35 @@ export class SettingsViewModel { const item = await this.navigation.findItem("Backup & export"); await item?.click(); - return await downloadAndReadFile( - this.page, - async () => { - const backupData = this.page - .locator(getTestId("setting-create-backup")) - .locator("select"); - await backupData.selectOption({ value: "partial", label: "Backup" }); - if (password) await fillPasswordDialog(this.page, password); - }, - "utf-8" - ); + const saveBackup = async () => { + const backupData = this.page + .locator(getTestId("setting-create-backup")) + .locator("select"); + await backupData.selectOption({ value: "partial", label: "Backup" }); + if (password) await fillPasswordDialog(this.page, password); + await waitForDialog(this.page, "Creating a backup"); + }; + + if (IS_DESKTOP_TESTS) { + await saveBackup(); + const toast = new AppModel(this.page).toasts.toasts.locator( + getTestId("toast-message") + ); + await toast.waitFor(); + const backupPath = (await toast.textContent()) + ?.replace("Backup saved at", "") + .trim(); + if (!backupPath) + throw new Error("Backup path not found in toast message"); + const app = getAppFromPage(this.page); + const resolvedDocumentPath = await app.evaluate(({ app }) => + app.getPath("documents") + ); + const resolvedBackupPath = backupPath.startsWith("documents") + ? backupPath.replace("documents", resolvedDocumentPath) + : backupPath; + return await readFile(resolvedBackupPath, "utf-8"); + } else return await downloadAndReadFile(this.page, saveBackup, "utf-8"); } async restoreData(filename: string, password?: string) { @@ -191,4 +217,16 @@ export class SettingsViewModel { .locator("input"); await titleFormatInput.fill(format); } + + async checkForUpdates() { + await this.navigation.waitFor(); + + const item = await this.navigation.findItem("About"); + await item?.click(); + + const button = this.page + .locator(getTestId("setting-version")) + .locator("button", { hasText: "Check for updates" }); + await button.click(); + } } diff --git a/apps/web/__e2e__/models/subnotebooks-view.model.ts b/apps/web/__e2e__/models/subnotebooks-view.model.ts index d4064107a..d02ad7e87 100644 --- a/apps/web/__e2e__/models/subnotebooks-view.model.ts +++ b/apps/web/__e2e__/models/subnotebooks-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseViewModel } from "./base-view.model"; import { NotebookItemModel } from "./notebook-item.model"; diff --git a/apps/web/__e2e__/models/tab-item.model.ts b/apps/web/__e2e__/models/tab-item.model.ts index 3e0849bb5..002f72ca6 100644 --- a/apps/web/__e2e__/models/tab-item.model.ts +++ b/apps/web/__e2e__/models/tab-item.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { ContextMenuModel } from "./context-menu.model"; diff --git a/apps/web/__e2e__/models/toasts.model.ts b/apps/web/__e2e__/models/toasts.model.ts index ac06832ac..70a77cf60 100644 --- a/apps/web/__e2e__/models/toasts.model.ts +++ b/apps/web/__e2e__/models/toasts.model.ts @@ -17,11 +17,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; export class ToastsModel { - private readonly toasts: Locator; + readonly toasts: Locator; constructor(page: Page) { this.toasts = page.locator(".toasts-container > div"); diff --git a/apps/web/__e2e__/models/toggle.model.ts b/apps/web/__e2e__/models/toggle.model.ts index c8d5ce9ee..4de30b229 100644 --- a/apps/web/__e2e__/models/toggle.model.ts +++ b/apps/web/__e2e__/models/toggle.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; export enum TOGGLE_STATES { diff --git a/apps/web/__e2e__/models/trash-item.model.ts b/apps/web/__e2e__/models/trash-item.model.ts index 10b51e59d..0c4911d5b 100644 --- a/apps/web/__e2e__/models/trash-item.model.ts +++ b/apps/web/__e2e__/models/trash-item.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Locator } from "@playwright/test"; +import type { Locator } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseItemModel } from "./base-item.model"; import { ContextMenuModel } from "./context-menu.model"; diff --git a/apps/web/__e2e__/models/trash-view.model.ts b/apps/web/__e2e__/models/trash-view.model.ts index 06388e0a8..3dd91a9cf 100644 --- a/apps/web/__e2e__/models/trash-view.model.ts +++ b/apps/web/__e2e__/models/trash-view.model.ts @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Page } from "@playwright/test"; +import type { Page } from "@playwright/test"; import { getTestId } from "../utils"; import { BaseViewModel } from "./base-view.model"; import { TrashItemModel } from "./trash-item.model"; diff --git a/apps/web/__e2e__/models/utils.ts b/apps/web/__e2e__/models/utils.ts index 1906c4afa..cab0c4e46 100644 --- a/apps/web/__e2e__/models/utils.ts +++ b/apps/web/__e2e__/models/utils.ts @@ -18,7 +18,7 @@ along with this program. If not, see . */ import { Reminder } from "@notesnook/core"; -import { Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { getTestId } from "../utils"; import { Color, Item, Notebook } from "./types"; import dayjs from "dayjs"; diff --git a/apps/web/__e2e__/monographs.test.ts b/apps/web/__e2e__/monographs.test.ts index 0122a73d3..646520f73 100644 --- a/apps/web/__e2e__/monographs.test.ts +++ b/apps/web/__e2e__/monographs.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, USER } from "./utils"; +import { USER } from "./utils"; +import { test, expect } from "@nn/test"; test("don't show monographs list to unauthenticated user", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/navigation.test.ts b/apps/web/__e2e__/navigation.test.ts index 172928fd5..d5b8c3255 100644 --- a/apps/web/__e2e__/navigation.test.ts +++ b/apps/web/__e2e__/navigation.test.ts @@ -18,7 +18,7 @@ along with this program. If not, see . */ /* eslint-disable no-undef */ -import { test, expect } from "./utils"; +import { test, expect } from "@nn/test"; import { AppModel } from "./models/app.model"; function createRoute(key: string, header: string) { diff --git a/apps/web/__e2e__/notebooks.issues.test.ts b/apps/web/__e2e__/notebooks.issues.test.ts index f9e4928c0..053bf0752 100644 --- a/apps/web/__e2e__/notebooks.issues.test.ts +++ b/apps/web/__e2e__/notebooks.issues.test.ts @@ -17,6 +17,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { test } from "./utils"; +import { test } from "@nn/test"; test.skip("TODO: pin 3 notebooks & make sure they can be unpinned", () => {}); test.skip("TODO: pin 4 notebooks & make sure 4th pin shows an error", () => {}); diff --git a/apps/web/__e2e__/notebooks.test.ts b/apps/web/__e2e__/notebooks.test.ts index 452a9edcf..a127a5a8b 100644 --- a/apps/web/__e2e__/notebooks.test.ts +++ b/apps/web/__e2e__/notebooks.test.ts @@ -20,14 +20,13 @@ along with this program. If not, see . import { AppModel } from "./models/app.model"; import { Notebook } from "./models/types"; import { - test, - expect, getTestId, NOTE, NOTEBOOK, orderByOptions, sortByOptions } from "./utils"; +import { test, expect } from "@nn/test"; test("create a notebook", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/notehistory.test.ts b/apps/web/__e2e__/notehistory.test.ts index 02ae08591..6fd2d09a2 100644 --- a/apps/web/__e2e__/notehistory.test.ts +++ b/apps/web/__e2e__/notehistory.test.ts @@ -17,7 +17,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { test, expect, createHistorySession, PASSWORD } from "./utils"; +import { createHistorySession, PASSWORD } from "./utils"; +import { test, expect } from "@nn/test"; test.setTimeout(60 * 1000); diff --git a/apps/web/__e2e__/notes.issues.test.ts b/apps/web/__e2e__/notes.issues.test.ts index 01ab1b92d..4c8c34232 100644 --- a/apps/web/__e2e__/notes.issues.test.ts +++ b/apps/web/__e2e__/notes.issues.test.ts @@ -18,7 +18,9 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { expect, test, NOTE } from "./utils"; +import { NOTE } from "./utils"; +import { test, expect } from "@nn/test"; + test.skip("TODO: make sure jump to group works", () => {}); test("#1002 Can't add a tag that's a substring of an existing tag", async ({ diff --git a/apps/web/__e2e__/notes.test.ts b/apps/web/__e2e__/notes.test.ts index 28e2df5a2..19e940125 100644 --- a/apps/web/__e2e__/notes.test.ts +++ b/apps/web/__e2e__/notes.test.ts @@ -20,14 +20,13 @@ along with this program. If not, see . import dayjs from "dayjs"; import { AppModel } from "./models/app.model"; import { - test, - expect, groupByOptions, NOTE, orderByOptions, PASSWORD, sortByOptions } from "./utils"; +import { test, expect } from "@nn/test"; test("create a note", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/notes.test.ts-snapshots/export-html-electron.txt b/apps/web/__e2e__/notes.test.ts-snapshots/export-html-electron.txt new file mode 100644 index 000000000..d8eee9000 --- /dev/null +++ b/apps/web/__e2e__/notes.test.ts-snapshots/export-html-electron.txt @@ -0,0 +1,184 @@ + + + + + + + Test 1 + + + + + + + + + + + + +

Test 1

+

This is Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1

+ + diff --git a/apps/web/__e2e__/notes.test.ts-snapshots/export-md-electron.txt b/apps/web/__e2e__/notes.test.ts-snapshots/export-md-electron.txt new file mode 100644 index 000000000..2dcd8f1ab --- /dev/null +++ b/apps/web/__e2e__/notes.test.ts-snapshots/export-md-electron.txt @@ -0,0 +1,4 @@ +# Test 1 + +This is Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1 + diff --git a/apps/web/__e2e__/notes.test.ts-snapshots/export-txt-electron.txt b/apps/web/__e2e__/notes.test.ts-snapshots/export-txt-electron.txt new file mode 100644 index 000000000..a35ec00b8 --- /dev/null +++ b/apps/web/__e2e__/notes.test.ts-snapshots/export-txt-electron.txt @@ -0,0 +1,3 @@ +Test 1 + +This is Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1Test 1 \ No newline at end of file diff --git a/apps/web/__e2e__/reminders.test.ts b/apps/web/__e2e__/reminders.test.ts index 647d24e9f..ba9e5dac8 100644 --- a/apps/web/__e2e__/reminders.test.ts +++ b/apps/web/__e2e__/reminders.test.ts @@ -19,7 +19,8 @@ along with this program. If not, see . import { Reminder } from "@notesnook/core"; import { AppModel } from "./models/app.model"; -import { test, expect, getTestId } from "./utils"; +import { getTestId } from "./utils"; +import { test, expect } from "@nn/test"; const ONE_TIME_REMINDER: Partial = { title: "Test reminder 1", @@ -41,7 +42,7 @@ test("add a one-time reminder", async ({ page }, info) => { expect(reminder).toBeDefined(); page.on("dialog", (dialog) => dialog.accept()); - await page.waitForEvent("dialog"); + await page.waitForEvent("dialog", { timeout: 0 }); }); test("adding a one-time reminder before current time should not be possible", async ({ diff --git a/apps/web/__e2e__/search.test.ts b/apps/web/__e2e__/search.test.ts index f26c7f1af..9aea17793 100644 --- a/apps/web/__e2e__/search.test.ts +++ b/apps/web/__e2e__/search.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, getTestId } from "./utils"; +import { getTestId } from "./utils"; +import { test, expect } from "@nn/test"; test("closing search via close button should clear query", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/settings.test.ts b/apps/web/__e2e__/settings.test.ts index f5c444cc4..22a6c7f69 100644 --- a/apps/web/__e2e__/settings.test.ts +++ b/apps/web/__e2e__/settings.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, NOTE } from "./utils"; +import { NOTE } from "./utils"; +import { test, expect } from "@nn/test"; test("ask for image compression during image upload when 'Image Compression' setting is 'Ask every time'", async ({ page diff --git a/apps/web/__e2e__/sync.test.ts b/apps/web/__e2e__/sync.test.ts index 54d5315cc..20973f3bb 100644 --- a/apps/web/__e2e__/sync.test.ts +++ b/apps/web/__e2e__/sync.test.ts @@ -16,18 +16,17 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -import { Browser } from "@playwright/test"; + import { AppModel } from "./models/app.model"; -import { test, expect, USER } from "./utils"; +import { USER } from "./utils"; +import { test, expect, TestArgs } from "@nn/test"; // run this test file sequentially test.describe.configure({ mode: "serial" }); -async function createDevice(browser: Browser) { - // Create two isolated browser contexts - const context = await browser.newContext(); - const page = await context.newPage(); - +async function createDevice(args: { newPage: TestArgs["newPage"] }) { + const page = await args.newPage?.(); + if (!page) throw new Error("Page not found"); const app = new AppModel(page); await app.auth.goto(); await app.auth.login(USER.CURRENT); @@ -36,56 +35,44 @@ async function createDevice(browser: Browser) { return app; } -async function actAndSync( - devices: AppModel[], - ...actions: (Promise | undefined)[] -) { - const results = await Promise.all([ - ...actions.filter((a) => !!a), - ...devices.map((d) => - d.waitForSync("syncing").then(() => d.waitForSync("synced")) - ) - ]); - - await Promise.all(devices.map((d) => d.page.waitForTimeout(2000))); - return results.slice(0, actions.length) as T[]; -} - +test.setTimeout(120 * 1000); test(`content edits in a note opened on 2 devices in multiple tabs should sync in real-time`, async ({ - browser + newPage }, info) => { const NOTE = { title: `Note ${makeid(20)}` }; - info.setTimeout(70 * 1000); + info.setTimeout(120 * 1000); const newContent = makeid(24).repeat(2); const [deviceA, deviceB] = await Promise.all([ - createDevice(browser), - createDevice(browser) + createDevice({ newPage }), + createDevice({ newPage }) ]); const [notesA, notesB] = await Promise.all( [deviceA, deviceB].map((d) => d.goToNotes()) ); - const noteB = ( - await actAndSync([deviceA, deviceB], notesB.createNote(NOTE)) - )[0]; - const noteA = await notesA.findNote(NOTE); - await Promise.all([noteA, noteB].map((note) => note?.openNote())); - await noteA?.openNote(true); - - if ((await notesB.editor.getContent("text")) !== "") - await actAndSync([deviceA, deviceB], notesB.editor.clear()); - await expect(notesA.editor.content).toBeEmpty(); - await expect(notesB.editor.content).toBeEmpty(); - await actAndSync([deviceA, deviceB], notesB.editor.setContent(newContent)); + const noteB = await notesB.createNote(NOTE); + await notesA.waitForItem(NOTE.title, 0); + const noteA = await notesA.findNote({ title: NOTE.title }); expect(noteA).toBeDefined(); expect(noteB).toBeDefined(); + + await noteA?.openNote(); + await noteA?.openNote(true); + + await expect(notesA.editor.content).toBeEmpty(); + await expect(notesB.editor.content).toBeEmpty(); + + await notesA.editor.setContent(newContent); + await notesB.editor.waitForContent(newContent, 0); + await expect(notesA.editor.content).toHaveText(newContent); await expect(notesB.editor.content).toHaveText(newContent); + const tabsA = await notesA.editor.getTabs(); await tabsA[0].click(); await expect(notesA.editor.content).toHaveText(newContent); @@ -95,40 +82,47 @@ test(`content edits in a note opened on 2 devices in multiple tabs should sync i }); test(`title edits in a note opened on 2 devices in multiple tabs should sync in real-time`, async ({ - browser + newPage }, info) => { const NOTE = { title: `Note ${makeid(20)}` }; - info.setTimeout(70 * 1000); + info.setTimeout(120 * 1000); const newContent = makeid(24).repeat(2); const [deviceA, deviceB] = await Promise.all([ - createDevice(browser), - createDevice(browser) + createDevice({ + newPage + }), + createDevice({ + newPage + }) ]); const [notesA, notesB] = await Promise.all( [deviceA, deviceB].map((d) => d.goToNotes()) ); - const noteB = ( - await actAndSync([deviceA, deviceB], notesB.createNote(NOTE)) - )[0]; - const noteA = await notesA.findNote(NOTE); - await Promise.all([noteA, noteB].map((note) => note?.openNote())); - await noteA?.openNote(true); - if ((await notesB.editor.getContent("text")) !== "") - await actAndSync([deviceA, deviceB], notesB.editor.clear()); - await expect(notesA.editor.content).toBeEmpty(); - await expect(notesB.editor.content).toBeEmpty(); - await actAndSync([deviceA, deviceB], notesB.editor.setTitle(newContent)); + const noteB = await notesB.createNote(NOTE); + await notesA.waitForItem(NOTE.title, 0); + const noteA = await notesA.findNote({ title: NOTE.title }); expect(noteA).toBeDefined(); expect(noteB).toBeDefined(); + + await noteA?.openNote(); + await noteA?.openNote(true); + + await expect(notesA.editor.content).toBeEmpty(); + await expect(notesB.editor.content).toBeEmpty(); + + await notesA.editor.setTitle(newContent); + await notesB.editor.waitForTitle(newContent, 0); + expect(await notesA.editor.getTitle()).toBe(newContent); expect(await notesB.editor.getTitle()).toBe(newContent); + const tabsA = await notesA.editor.getTabs(); await tabsA[0].click(); expect(await notesA.editor.getTitle()).toBe(newContent); diff --git a/apps/web/__e2e__/tabs.test.ts b/apps/web/__e2e__/tabs.test.ts index ab8810e50..25d2192d4 100644 --- a/apps/web/__e2e__/tabs.test.ts +++ b/apps/web/__e2e__/tabs.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, createHistorySession, NOTE } from "./utils"; +import { createHistorySession, NOTE } from "./utils"; +import { test, expect } from "@nn/test"; test("notes should open in the same tab", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/__e2e__/tags.test.ts b/apps/web/__e2e__/tags.test.ts index ddfead5ff..dbdffb7b2 100644 --- a/apps/web/__e2e__/tags.test.ts +++ b/apps/web/__e2e__/tags.test.ts @@ -19,14 +19,8 @@ along with this program. If not, see . import { AppModel } from "./models/app.model"; import { Item } from "./models/types"; -import { - test, - expect, - getTestId, - NOTE, - orderByOptions, - sortByOptions -} from "./utils"; +import { getTestId, NOTE, orderByOptions, sortByOptions } from "./utils"; +import { test, expect } from "@nn/test"; const TAG: Item = { title: "hello-world" }; const EDITED_TAG: Item = { title: "hello-world-2" }; diff --git a/apps/web/__e2e__/user.test.ts b/apps/web/__e2e__/user.test.ts index 003d2000f..f32923059 100644 --- a/apps/web/__e2e__/user.test.ts +++ b/apps/web/__e2e__/user.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, USER } from "./utils"; +import { USER } from "./utils"; +import { test, expect } from "@nn/test"; // async function forceExpireSession() { // await page.evaluate(() => { diff --git a/apps/web/__e2e__/utils/index.ts b/apps/web/__e2e__/utils/index.ts index 9f6baa34e..2ce9014b9 100644 --- a/apps/web/__e2e__/utils/index.ts +++ b/apps/web/__e2e__/utils/index.ts @@ -20,7 +20,7 @@ along with this program. If not, see . import fs from "fs"; import dotenv from "dotenv"; import path, { join } from "path"; -import { test as base, Locator, Page } from "@playwright/test"; +import type { Locator, Page } from "@playwright/test"; import { GroupByOptions, Notebook, @@ -30,18 +30,7 @@ import { import { tmpdir } from "os"; import { AppModel } from "../models/app.model"; -export type { Browser, Page } from "@playwright/test"; -export { expect } from "@playwright/test"; - -const test = base.extend>({ - page: async ({ page }, use) => { - const client = await page.context().newCDPSession(page); - await client.send("Emulation.setCPUThrottlingRate", { - rate: 1 - }); - await use(page); - } -}); +export const IS_DESKTOP_TESTS = process.env.TEST_DESKTOP === "true"; type Note = { title: string; @@ -124,7 +113,7 @@ async function downloadAndReadFile( page: Page, action: () => Promise, encoding: BufferEncoding | null | undefined = "utf-8" -) { +): Promise { const [download] = await Promise.all([ page.waitForEvent("download"), action() @@ -206,7 +195,6 @@ export async function createHistorySession(page: Page, locked = false) { } export { - test, USER, NOTE, TITLE_ONLY_NOTE, diff --git a/apps/web/__e2e__/utils/test.ts b/apps/web/__e2e__/utils/test.ts new file mode 100644 index 000000000..ab4afd46f --- /dev/null +++ b/apps/web/__e2e__/utils/test.ts @@ -0,0 +1,53 @@ +/* +This file is part of the Notesnook project (https://notesnook.com/) + +Copyright (C) 2023 Streetwriters (Private) Limited + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +import { + test as base, + PlaywrightTestArgs, + PlaywrightTestOptions, + PlaywrightWorkerArgs, + PlaywrightWorkerOptions +} from "@playwright/test"; +import { ElectronTestFixtures } from "../../../desktop/__tests__/electron-test"; + +export { expect } from "@playwright/test"; +export type { Page, Browser } from "@playwright/test"; +export type TestArgs = PlaywrightTestArgs & + PlaywrightTestOptions & + PlaywrightWorkerArgs & + PlaywrightWorkerOptions & + Partial; +export const test = base.extend< + NonNullable & Partial +>({ + page: async ({ page }, use) => { + const client = await page.context().newCDPSession(page); + await client.send("Emulation.setCPUThrottlingRate", { + rate: 1 + }); + await use(page); + }, + newPage: async ({ browser }, use) => { + await use(async () => { + const context = await browser.newContext(); + const page = await context.newPage(); + return page; + }); + } +}); diff --git a/apps/web/__e2e__/vault.test.ts b/apps/web/__e2e__/vault.test.ts index 9f234d496..54cfac639 100644 --- a/apps/web/__e2e__/vault.test.ts +++ b/apps/web/__e2e__/vault.test.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { AppModel } from "./models/app.model"; -import { test, expect, getTestId, NOTE, PASSWORD } from "./utils"; +import { getTestId, NOTE, PASSWORD } from "./utils"; +import { test, expect } from "@nn/test"; test("locking a note should show vault unlocked status", async ({ page }) => { const app = new AppModel(page); diff --git a/apps/web/package.json b/apps/web/package.json index 39d3964b0..1b6ce9a9c 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -87,7 +87,7 @@ "devDependencies": { "@babel/core": "7.22.5", "@cloudflare/workers-types": "^4.20250224.0", - "@playwright/test": "^1.58.2", + "@playwright/test": "1.58.2", "@swc/plugin-react-remove-properties": "^6.0.2", "@trpc/server": "10.45.2", "@types/babel__core": "^7.20.1", @@ -136,6 +136,7 @@ "build:test": "cross-env PLATFORM=web TEST=true vite build", "build:beta": "cross-env PLATFORM=web BETA=true vite build", "build:desktop": "cross-env PLATFORM=desktop vite build", + "build:test:desktop": "cross-env PLATFORM=desktop TEST=true vite build", "analyze": "cross-env ANALYZING=true PLATFORM=web vite build", "test": "playwright test -u", "postinstall": "patch-package" diff --git a/apps/web/src/common/index.ts b/apps/web/src/common/index.ts index 3d17d28d5..14c5c89e2 100644 --- a/apps/web/src/common/index.ts +++ b/apps/web/src/common/index.ts @@ -62,6 +62,7 @@ import { UpgradeDialog } from "../dialogs/buy-dialog/upgrade-dialog"; import { setToolbarPreset } from "./toolbar-config"; import { useKeyStore } from "../interfaces/key-store"; import { TaskScheduler } from "../utils/task-scheduler"; +import { path } from "@notesnook-importer/core/dist/src/utils/path"; export const CREATE_BUTTON_MAP = { notes: { @@ -187,7 +188,13 @@ export async function createBackup( ); console.error(error); } else { - showToast("success", `${strings.backupSavedAt(filePath)}`); + const backupDirectory = useSettingStore.getState().backupStorageLocation; + showToast( + "success", + IS_DESKTOP_APP + ? `${strings.backupSavedAt(path.join(backupDirectory, filePath))}` + : strings.backupSuccess() + ); return true; } return false; diff --git a/apps/web/src/hooks/use-menu.ts b/apps/web/src/hooks/use-menu.ts index f553b64e4..a4ff94bcb 100644 --- a/apps/web/src/hooks/use-menu.ts +++ b/apps/web/src/hooks/use-menu.ts @@ -137,5 +137,6 @@ function findAndCallAction(items: MenuItem[], ids: string[]) { } function canShowNativeMenu(items: MenuItem[]) { + if (IS_TESTING) return false; return items.every((item) => item.type !== "popup"); } diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index d04d7fd36..a9a85d366 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -1,11 +1,14 @@ { - "extends": "../../tsconfig", + "extends": "../../tsconfig.json", "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "jsx": "react-jsx", "moduleResolution": "Bundler", - "noEmit": true + "noEmit": true, + "paths": { + "@nn/test": ["./__e2e__/utils/test.ts"] + } }, "include": ["src", "global.d.ts", "__tests__", "__e2e__"] } diff --git a/package.json b/package.json index 942587903..2fc901a07 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "build", "release", "build:test", + "build:test:desktop", "build:beta", "build:desktop", "start",