diff --git a/.github/workflows/monkey-ci.yml b/.github/workflows/monkey-ci.yml index 02217993414e..7038729134ec 100644 --- a/.github/workflows/monkey-ci.yml +++ b/.github/workflows/monkey-ci.yml @@ -7,8 +7,6 @@ env: permissions: contents: read - issues: write - pull-requests: write on: pull_request: @@ -39,7 +37,7 @@ jobs: if: github.event_name != 'pull_request' - name: Detect changes - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@v4 id: filter with: filters: | @@ -55,17 +53,11 @@ jobs: - 'packages/**/*' anti-cheat: - 'backend/**/anticheat/**' - workflows: - - '.github/workflows/**/*' - name: Check Anti-cheat if: steps.filter.outputs.anti-cheat == 'true' && !contains(github.event.pull_request.labels.*.name, 'force-ci') && !contains(github.event.pull_request.labels.*.name, 'force-full-ci') run: exit 1 - - name: Check Workflow Changes - if: steps.filter.outputs.workflows == 'true' && !contains(github.event.pull_request.labels.*.name, 'force-ci') && !contains(github.event.pull_request.labels.*.name, 'force-full-ci') - run: exit 1 - - name: Export changes id: export-changes run: | @@ -232,7 +224,7 @@ jobs: frontend packages - - uses: dorny/paths-filter@v3 + - uses: dorny/paths-filter@v4 id: filter with: filters: | @@ -336,7 +328,6 @@ jobs: run: npm run test-pkg on-failure: - permissions: write-all name: on-failure runs-on: ubuntu-latest needs: [ci-be, ci-fe, ci-assets, ci-pkg] diff --git a/backend/__tests__/api/controllers/user.spec.ts b/backend/__tests__/api/controllers/user.spec.ts index 0a20e957523f..d9e0cf7610e5 100644 --- a/backend/__tests__/api/controllers/user.spec.ts +++ b/backend/__tests__/api/controllers/user.spec.ts @@ -193,7 +193,7 @@ describe("user controller test", () => { ], }); }); - it("should fail if username contains profanity", async () => { + it("should fail if username contains disallowed word", async () => { //GIVEN const newUser = { uid: uid, @@ -212,7 +212,7 @@ describe("user controller test", () => { expect(body).toEqual({ message: "Invalid request data schema", validationErrors: [ - '"name" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (miodec)', + '"name" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (miodec).', ], }); }); @@ -277,7 +277,7 @@ describe("user controller test", () => { }); expect(userIsNameAvailableMock).toHaveBeenCalledWith("bob", uid); }); - it("returns 422 if username contains profanity", async () => { + it("returns 422 if username contains disallowed word", async () => { await mockApp .get("/users/checkName/newMiodec") //no authentication required @@ -1139,7 +1139,7 @@ describe("user controller test", () => { validationErrors: ["Unrecognized key(s) in object: 'extra'"], }); }); - it("should fail if username contains profanity", async () => { + it("should fail if username contains disallowed word", async () => { //WHEN const { body } = await mockApp .patch("/users/name") @@ -1151,7 +1151,7 @@ describe("user controller test", () => { expect(body).toEqual({ message: "Invalid request data schema", validationErrors: [ - '"name" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (miodec)', + '"name" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (miodec).', ], }); }); @@ -3310,7 +3310,7 @@ describe("user controller test", () => { expect.objectContaining({}), ); }); - it("should fail with profanity", async () => { + it("should fail with disallowed word", async () => { //WHEN const { body } = await mockApp .patch("/users/profile") @@ -3330,11 +3330,11 @@ describe("user controller test", () => { expect(body).toEqual({ message: "Invalid request data schema", validationErrors: [ - '"bio" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (miodec)', - '"keyboard" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (miodec)', - '"socialProfiles.twitter" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (miodec)', - '"socialProfiles.github" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (miodec)', - '"socialProfiles.website" Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (https://i-luv-miodec.com)', + '"bio" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (miodec).', + '"keyboard" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (miodec).', + '"socialProfiles.twitter" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (miodec).', + '"socialProfiles.github" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (miodec).', + '"socialProfiles.website" Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (https://i-luv-miodec.com).', ], }); }); diff --git a/backend/package.json b/backend/package.json index e61c6aa79af4..b6e74485af04 100644 --- a/backend/package.json +++ b/backend/package.json @@ -15,8 +15,8 @@ "integration-test": "vitest run --project=integration --project=integration-isolated", "test-coverage": "vitest run --coverage", "dev": "concurrently -p none \"tsx watch --clear-screen=false --inspect ./src/server.ts\" \"tsc --preserveWatchOutput --noEmit --watch\" \"esw src/ -w --ext .ts --cache --color\"", - "docker-db-only": "docker compose -f docker/compose.db-only.yml up", - "docker": "docker compose -f docker/compose.yml up", + "docker-db-only": "docker compose --env-file .env -f docker/compose.db-only.yml up", + "docker": "docker compose --env-file .env -f docker/compose.yml up", "gen-docs": "tsx scripts/openapi.ts dist/static/api/openapi.json && redocly build-docs -o dist/static/api/internal.html internal@v2 && redocly bundle -o dist/static/api/public.json public-filter && redocly build-docs -o dist/static/api/public.html public@v2" }, "dependencies": { @@ -45,7 +45,7 @@ "mjml": "4.15.0", "mongodb": "6.3.0", "mustache": "4.2.0", - "nodemailer": "7.0.11", + "nodemailer": "8.0.4", "object-hash": "3.0.0", "prom-client": "15.1.3", "rate-limiter-flexible": "5.0.3", diff --git a/docs/CONTRIBUTING_ADVANCED.md b/docs/CONTRIBUTING_ADVANCED.md index d0cf0dd7899d..242e1940023a 100644 --- a/docs/CONTRIBUTING_ADVANCED.md +++ b/docs/CONTRIBUTING_ADVANCED.md @@ -102,6 +102,8 @@ Follow these steps if you want to work on anything involving the database/accoun 1. Inside the backend folder, copy `example.env` to `.env` in the same directory. + - The backend Docker scripts read port bindings from this file. If `27017`, `6379`, or `5005` are already in use on your machine, update `DOCKER_DB_PORT`, `DOCKER_REDIS_PORT`, and `DOCKER_SERVER_PORT` before starting Docker. + 2. Setup the database server | Manual | Docker (recommended) | @@ -139,7 +141,7 @@ npm run dev | ---------------- | ------------------------------- | | `npm run dev-fe` | `cd frontend && npm run docker` | -These commands will start a local development website on [port 3000](http://localhost:3000) and a local development server on [port 5005](http://localhost:5005). They will automatically rebuild the website/server when you make changes in the `src/` directory. Use Ctrl+C to stop them. +By default, these commands will start a local development website on [port 3000](http://localhost:3000) and a local development server on [port 5005](http://localhost:5005). They will automatically rebuild the website/server when you make changes in the `src/` directory. Use Ctrl+C to stop them. > [!NOTE] > Rebuilding doesn't happen instantaneously and depends on your machine, so be patient for changes to appear. diff --git a/frontend/__tests__/components/ui/form/InputField.spec.tsx b/frontend/__tests__/components/ui/form/InputField.spec.tsx index 4e79a6509cea..0bd301410072 100644 --- a/frontend/__tests__/components/ui/form/InputField.spec.tsx +++ b/frontend/__tests__/components/ui/form/InputField.spec.tsx @@ -23,13 +23,6 @@ function makeField(name: string, value = "") { } describe("InputField", () => { - it("uses field name as default placeholder", () => { - const field = makeField("username"); - render(() => field} />); - - expect(screen.getByPlaceholderText("username")).toBeInTheDocument(); - }); - it("uses custom placeholder when provided", () => { const field = makeField("email"); render(() => field} placeholder="Enter email" />); diff --git a/frontend/package.json b/frontend/package.json index 4a2fe35290e1..e00e56ad219d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -101,7 +101,7 @@ "eslint-plugin-solid": "0.14.5", "firebase-tools": "13.15.1", "fontawesome-subset": "4.4.0", - "happy-dom": "20.0.10", + "happy-dom": "20.8.9", "jsdom": "27.4.0", "madge": "8.0.0", "magic-string": "0.30.17", @@ -117,7 +117,7 @@ "tsx": "4.21.0", "typescript": "6.0.2", "unplugin-inject-preload": "3.0.0", - "vite": "8.0.1", + "vite": "8.0.5", "vite-bundle-visualizer": "1.2.1", "vite-plugin-html-inject": "1.1.2", "vite-plugin-inspect": "11.3.3", diff --git a/frontend/src/ts/commandline/commandline.ts b/frontend/src/ts/commandline/commandline.ts index baddf180a06d..d542fabbe132 100644 --- a/frontend/src/ts/commandline/commandline.ts +++ b/frontend/src/ts/commandline/commandline.ts @@ -172,6 +172,7 @@ export function show( await showCommands(); await updateActiveCommand(); setTimeout(() => { + lastActiveIndex = undefined; keepActiveCommandInView(); if (showInputCommand) { const escaped = @@ -488,6 +489,11 @@ async function showCommands(): Promise { for (const command of list) { if (command.found !== true) continue; + + if (command.isActive && firstActive === null && inputValue === "") { + firstActive = index; + } + let customStyle = ""; if (command.customStyle !== undefined && command.customStyle !== "") { customStyle = command.customStyle; diff --git a/frontend/src/ts/components/modals/CustomTextModal.tsx b/frontend/src/ts/components/modals/CustomTextModal.tsx index efad688d7f52..ae856a66868d 100644 --- a/frontend/src/ts/components/modals/CustomTextModal.tsx +++ b/frontend/src/ts/components/modals/CustomTextModal.tsx @@ -481,6 +481,7 @@ export function CustomTextModal(): JSXElement {
min length
- {(field) => ( - - )} + {(field) => }
max length
- {(field) => ( - - )} + {(field) => }
include
- {(field) => } + {(field) => } exclude
{(field) => ( - + )} diff --git a/frontend/src/ts/components/pages/login/Login.tsx b/frontend/src/ts/components/pages/login/Login.tsx index 32c5636c728e..c07e9b44c9e3 100644 --- a/frontend/src/ts/components/pages/login/Login.tsx +++ b/frontend/src/ts/components/pages/login/Login.tsx @@ -106,6 +106,7 @@ export function Login(): JSXElement { children={(field) => ( @@ -116,6 +117,7 @@ export function Login(): JSXElement { children={(field) => ( ( ( ( ( props.field().handleBlur()} onInput={(e) => props.field().handleChange(e.currentTarget.value)} diff --git a/frontend/src/ts/constants/languages.ts b/frontend/src/ts/constants/languages.ts index d4e645a9bc91..99ef9860be58 100644 --- a/frontend/src/ts/constants/languages.ts +++ b/frontend/src/ts/constants/languages.ts @@ -374,6 +374,7 @@ export const LanguageGroups: Record = { "code_cuda", ], viossa: ["viossa", "viossa_njutro"], + kokanu: ["kokanu", "likanu"], }; export type LanguageGroupName = keyof typeof LanguageGroups; diff --git a/frontend/src/ts/db.ts b/frontend/src/ts/db.ts index 5468b27c9b92..d07e2f126c58 100644 --- a/frontend/src/ts/db.ts +++ b/frontend/src/ts/db.ts @@ -218,7 +218,7 @@ export async function initSnapshot(): Promise { snap.tags = userData.tags?.map((tag) => ({ ...tag, - display: tag.name.replaceAll("_", " "), + display: tag.name.replace(/_/g, " "), })) ?? []; snap.tags = snap.tags?.sort((a, b) => { @@ -235,7 +235,7 @@ export async function initSnapshot(): Promise { const presetsWithDisplay = presetsData.map((preset) => { return { ...preset, - display: preset.name.replace(/_/gi, " "), + display: preset.name.replace(/_/g, " "), }; }) as SnapshotPreset[]; snap.presets = presetsWithDisplay; diff --git a/frontend/src/ts/elements/account/result-filters.ts b/frontend/src/ts/elements/account/result-filters.ts index cc1a78ea7065..e2ccf7ecc702 100644 --- a/frontend/src/ts/elements/account/result-filters.ts +++ b/frontend/src/ts/elements/account/result-filters.ts @@ -187,7 +187,6 @@ function addFilterPresetToSnapshot(filter: ResultFilters): void { export async function createFilterPreset( name: string, ): Promise { - name = name.replace(/ /g, "_"); showLoaderBar(); const result = await Ape.users.addResultFilterPreset({ body: { ...filters, name }, diff --git a/frontend/src/ts/input/handlers/insert-text.ts b/frontend/src/ts/input/handlers/insert-text.ts index 4b577eece08c..6c0eef3c833b 100644 --- a/frontend/src/ts/input/handlers/insert-text.ts +++ b/frontend/src/ts/input/handlers/insert-text.ts @@ -174,7 +174,7 @@ export async function onInsertText(options: OnInsertTextParams): Promise { if (Config.keymapMode === "react") { flash(data, correct); } - if (testInput.length === 0) { + if (testInput.length === 0 && !isCompositionEnding) { TestInput.setBurstStart(now); } if (!shouldGoToNextWord) { diff --git a/frontend/src/ts/input/listeners/composition.ts b/frontend/src/ts/input/listeners/composition.ts index f8ed5ebda1e0..c43568e1b6a7 100644 --- a/frontend/src/ts/input/listeners/composition.ts +++ b/frontend/src/ts/input/listeners/composition.ts @@ -2,6 +2,7 @@ import { getInputElement } from "../input-element"; import * as CompositionState from "../../legacy-states/composition"; import * as TestState from "../../test/test-state"; import * as TestLogic from "../../test/test-logic"; +import * as TestInput from "../../test/test-input"; import { setLastInsertCompositionTextData } from "../state"; import * as CompositionDisplay from "../../elements/composition-display"; import { onInsertText } from "../handlers/insert-text"; @@ -22,6 +23,9 @@ inputEl.addEventListener("compositionstart", (event) => { if (!TestState.isActive) { TestLogic.startTest(performance.now()); } + if (TestInput.input.current.length === 0) { + TestInput.setBurstStart(performance.now()); + } }); inputEl.addEventListener("compositionupdate", (event) => { diff --git a/frontend/src/ts/modals/edit-preset.ts b/frontend/src/ts/modals/edit-preset.ts index de8d82d4b574..6b4d3f6e54d7 100644 --- a/frontend/src/ts/modals/edit-preset.ts +++ b/frontend/src/ts/modals/edit-preset.ts @@ -26,6 +26,7 @@ import { ValidatedHtmlInputElement } from "../elements/input-validation"; import { ElementWithUtils } from "../utils/dom"; import { configMetadata } from "../config/metadata"; import { getConfigChanges as getConfigChangesFromConfig } from "../config/utils"; +import { normalizeName } from "../utils/strings"; const state = { presetType: "full" as PresetType, @@ -46,7 +47,12 @@ export function show(action: string, id?: string, name?: string): void { presetNameEl ??= new ValidatedHtmlInputElement( modalEl.qsr("input[type=text]"), { - schema: PresetNameSchema, + isValid: async (name) => { + const parsed = PresetNameSchema.safeParse(normalizeName(name)); + if (parsed.success) return true; + return parsed.error.errors.map((err) => err.message).join(", "); + }, + debounceDelay: 0, }, ); if (action === "add") { @@ -66,7 +72,7 @@ export function show(action: string, id?: string, name?: string): void { modalEl.setAttribute("data-preset-id", id); modalEl.qsr(".popupTitle").setHtml("Edit preset"); modalEl.qsr(".submit").setHtml(`save`); - presetNameEl?.setValue(name.replaceAll(" ", "_")); + presetNameEl?.setValue(name); presetNameEl?.getParent()?.show(); modalEl.qsa("input").show(); @@ -221,7 +227,7 @@ function hide(): void { async function apply(): Promise { const modalEl = modal.getModal(); const action = modalEl.getAttribute("data-action"); - const presetName = modalEl + const propPresetName = modalEl .qsr(".group input[title='presets']") .getValue() as string; const presetId = modalEl.getAttribute("data-preset-id") as string; @@ -248,22 +254,24 @@ async function apply(): Promise { } const addOrEditAction = action === "add" || action === "edit"; - if (addOrEditAction) { - //validate the preset name only in add or edit mode - const noPresetName: boolean = - presetName.replace(/^_+|_+$/g, "").length === 0; //all whitespace names are rejected - if (noPresetName) { - showNoticeNotification("Preset name cannot be empty"); - return; - } + if (addOrEditAction && propPresetName.trim().length === 0) { + showNoticeNotification("Preset name cannot be empty"); + return; + } - if (presetNameEl?.getValidationResult().status === "failed") { - showNoticeNotification("Preset name is not valid"); - return; - } + const cleanedPresetName = normalizeName(propPresetName); + const parsedPresetName = addOrEditAction + ? PresetNameSchema.safeParse(cleanedPresetName) + : null; + + if (parsedPresetName && !parsedPresetName.success) { + showNoticeNotification("Preset name is not valid"); + return; } + const presetName = parsedPresetName?.data ?? ""; + hide(); showLoaderBar(); @@ -291,7 +299,7 @@ async function apply(): Promise { ...(state.presetType === "partial" && { settingGroups: activeSettingGroups, }), - display: presetName.replaceAll("_", " "), + display: presetName.replace(/_/g, " "), _id: response.body.data.presetId, } as SnapshotPreset); } @@ -323,7 +331,7 @@ async function apply(): Promise { showSuccessNotification("Preset updated"); preset.name = presetName; - preset.display = presetName.replaceAll("_", " "); + preset.display = presetName.replace(/_/g, " "); if (updateConfig) { preset.config = configChanges; if (state.presetType === "partial") { diff --git a/frontend/src/ts/modals/edit-tag.ts b/frontend/src/ts/modals/edit-tag.ts index 41bda4879a13..d42507fd7d76 100644 --- a/frontend/src/ts/modals/edit-tag.ts +++ b/frontend/src/ts/modals/edit-tag.ts @@ -6,14 +6,14 @@ import { SimpleModal, TextInput } from "../elements/simple-modal"; import { TagNameSchema } from "@monkeytype/schemas/users"; import { SnapshotUserTag } from "../constants/default-snapshot"; import { IsValidResponse } from "../types/validation"; +import { normalizeName } from "../utils/strings"; function getTagFromSnapshot(tagId: string): SnapshotUserTag | undefined { return DB.getSnapshot()?.tags.find((tag) => tag._id === tagId); } -const cleanTagName = (tagName: string): string => tagName.replaceAll(" ", "_"); const tagNameValidation = async (tagName: string): Promise => { - const validationResult = TagNameSchema.safeParse(cleanTagName(tagName)); + const validationResult = TagNameSchema.safeParse(normalizeName(tagName)); if (validationResult.success) return true; return validationResult.error.errors.map((err) => err.message).join(", "); }; @@ -32,7 +32,7 @@ const actionModals: Record = { ], buttonText: "add", execFn: async (_thisPopup, propTagName) => { - const tagName = cleanTagName(propTagName); + const tagName = TagNameSchema.parse(normalizeName(propTagName)); const response = await Ape.users.createTag({ body: { tagName } }); if (response.status !== 200) { @@ -46,8 +46,8 @@ const actionModals: Record = { } DB.getSnapshot()?.tags?.push({ - display: propTagName, - name: response.body.data.name, + display: tagName.replace(/_/g, " "), + name: tagName, _id: response.body.data._id, personalBests: { time: {}, @@ -77,7 +77,7 @@ const actionModals: Record = { (_thisPopup.inputs[0] as TextInput).initVal = _thisPopup.parameters[0]; }, execFn: async (_thisPopup, propTagName) => { - const tagName = cleanTagName(propTagName); + const tagName = TagNameSchema.parse(normalizeName(propTagName)); const tagId = _thisPopup.parameters[1] as string; const response = await Ape.users.editTag({ @@ -96,7 +96,7 @@ const actionModals: Record = { if (matchingTag !== undefined) { matchingTag.name = tagName; - matchingTag.display = propTagName; + matchingTag.display = tagName.replace(/_/g, " "); } void Settings.update(); diff --git a/frontend/src/ts/modals/new-filter-preset.ts b/frontend/src/ts/modals/new-filter-preset.ts index 3cd94d5b6e23..7a6b6c0efab8 100644 --- a/frontend/src/ts/modals/new-filter-preset.ts +++ b/frontend/src/ts/modals/new-filter-preset.ts @@ -1,6 +1,7 @@ import { ResultFiltersSchema } from "@monkeytype/schemas/users"; import { createFilterPreset } from "../elements/account/result-filters"; import { SimpleModal } from "../elements/simple-modal"; +import { normalizeName } from "../utils/strings"; export function show(): void { newFilterPresetModal.show(undefined, {}); @@ -15,13 +16,23 @@ const newFilterPresetModal = new SimpleModal({ type: "text", initVal: "", validation: { - schema: ResultFiltersSchema.shape.name, + isValid: async (name) => { + const parsed = ResultFiltersSchema.shape.name.safeParse( + normalizeName(name), + ); + if (parsed.success) return true; + return parsed.error.errors.map((err) => err.message).join(", "); + }, + debounceDelay: 0, }, }, ], buttonText: "add", execFn: async (_thisPopup, name) => { - const status = await createFilterPreset(name); + const cleanedName = ResultFiltersSchema.shape.name.parse( + normalizeName(name), + ); + const status = await createFilterPreset(cleanedName); if (status === 1) { return { status: "success", message: "Filter preset created" }; diff --git a/frontend/src/ts/test/test-stats.ts b/frontend/src/ts/test/test-stats.ts index 09b1822c59b5..392683b16781 100644 --- a/frontend/src/ts/test/test-stats.ts +++ b/frontend/src/ts/test/test-stats.ts @@ -215,6 +215,7 @@ export function setLastSecondNotRound(): void { export function calculateBurst(endTime: number = performance.now()): number { const containsKorean = TestInput.input.getKoreanStatus(); const timeToWrite = (endTime - TestInput.currentBurstStart) / 1000; + if (timeToWrite <= 0) return 0; let wordLength: number; wordLength = !containsKorean ? TestInput.input.current.length diff --git a/frontend/src/ts/utils/misc.ts b/frontend/src/ts/utils/misc.ts index 7428c0d6fca9..0bc03a48e08e 100644 --- a/frontend/src/ts/utils/misc.ts +++ b/frontend/src/ts/utils/misc.ts @@ -2,7 +2,7 @@ import { lastElementFromArray } from "./arrays"; import { Config } from "@monkeytype/schemas/configs"; import { Mode, Mode2, PersonalBests } from "@monkeytype/schemas/shared"; import { Result } from "@monkeytype/schemas/results"; -import { RankAndCount } from "@monkeytype/schemas/users"; +import { RankAndCount, UserNameSchema } from "@monkeytype/schemas/users"; import { roundTo2 } from "@monkeytype/util/numbers"; import { animate, AnimationParams } from "animejs"; import { ElementWithUtils } from "./dom"; @@ -147,11 +147,7 @@ export function escapeHTML(str: T): T { export function isUsernameValid(name: string): boolean { if (name === null || name === undefined || name === "") return false; - if (name.toLowerCase().includes("miodec")) return false; - if (name.toLowerCase().includes("bitly")) return false; - if (name.length > 14) return false; - if (/^\..*/.test(name.toLowerCase())) return false; - return /^[0-9a-zA-Z_.-]+$/.test(name); + return UserNameSchema.safeParse(name).success; } export function clearTimeouts(timeouts: (number | NodeJS.Timeout)[]): void { diff --git a/frontend/src/ts/utils/strings.ts b/frontend/src/ts/utils/strings.ts index 6d134f881407..a79458f176ea 100644 --- a/frontend/src/ts/utils/strings.ts +++ b/frontend/src/ts/utils/strings.ts @@ -68,6 +68,14 @@ export function capitalizeFirstLetter(str: string): string { return str.charAt(0).toUpperCase() + str.slice(1); } +/** + * Normalizes free-form names to canonical storage format. + * Trims edge whitespace and collapses all inner whitespace runs to underscores. + */ +export function normalizeName(name: string): string { + return name.trim().replace(/\s+/g, "_"); +} + /** * @param text String to split * @param delimiters Single character delimiters. @@ -320,10 +328,17 @@ export function areCharactersVisuallyEqual( } export function toHex(buffer: ArrayBuffer): string { - if (Uint8Array.prototype.toHex !== undefined) { - return new Uint8Array(buffer).toHex(); + const u8 = new Uint8Array(buffer); + + // Use native toHex if available (modern browsers / future runtimes) + if ( + "toHex" in u8 && + typeof (u8 as { toHex?: unknown }).toHex === "function" + ) { + return (u8 as unknown as { toHex(): string }).toHex(); } - const hashArray = Array.from(new Uint8Array(buffer)); + + const hashArray = Array.from(u8); const hashHex = hashArray .map((b) => b.toString(16).padStart(2, "0")) .join(""); diff --git a/frontend/static/languages/kokanu.json b/frontend/static/languages/kokanu.json new file mode 100644 index 000000000000..2c09ab582522 --- /dev/null +++ b/frontend/static/languages/kokanu.json @@ -0,0 +1,390 @@ +{ + "name": "kokanu", + "rightToLeft": false, + "ligatures": false, + "orderedByFrequency": false, + "bcp47": "xxs-Lat", + "words": [ + "akala", + "akasa", + "alu", + "amo", + "anan", + "ani", + "ankolo", + "anpipi", + "antomi", + "anwije", + "apaki", + "asa", + "asete", + "cakuwa", + "canu", + "canwa", + "cawapu", + "ceke", + "cele", + "cenci", + "cenpo", + "ci", + "cimi", + "cina", + "cohi", + "con", + "conca", + "conpu", + "conto", + "cuma", + "cune", + "cuwi", + "eme", + "enteken", + "etu", + "ewin", + "ha", + "haja", + "hakiki", + "hakoli", + "haluko", + "han", + "hapijo", + "haso", + "he", + "hela", + "hen", + "henelo", + "hinpan", + "hon", + "honja", + "hoton", + "hu", + "hukun", + "hunsi", + "husu", + "huwa", + "huwonho", + "ihamo", + "ikama", + "ikasi", + "ili", + "iman", + "in", + "inalo", + "inatan", + "inpali", + "insu", + "ipinto", + "ipuwe", + "iwe", + "ja", + "jamin", + "jan", + "janlu", + "jatan", + "jati", + "je", + "joli", + "jon", + "jone", + "ju", + "juka", + "jutu", + "ka", + "kaki", + "kalan", + "kalawa", + "kali", + "kan", + "kanisa", + "kanta", + "kapan", + "kapu", + "kate", + "katin", + "kawa", + "kela", + "kemika", + "kenca", + "ki", + "kijeta", + "kiju", + "kike", + "kikolo", + "kikuwa", + "kilima", + "kin", + "kisa", + "kisowa", + "ko", + "koman", + "konco", + "konen", + "konje", + "konkulen", + "konpa", + "konpute", + "kontatu", + "kosan", + "kosomo", + "kota", + "kujo", + "kuku", + "kula", + "kumi", + "kumon", + "kun", + "kusa", + "kuto", + "kuwan", + "kuwekan", + "kuwosi", + "la", + "lacito", + "laha", + "laki", + "lamo", + "lan", + "lanki", + "lansa", + "lantan", + "le", + "lekin", + "len", + "lenka", + "leseka", + "lije", + "lijule", + "lika", + "lili", + "lima", + "limijen", + "lipan", + "lipu", + "lisi", + "lito", + "lo", + "loku", + "loso", + "luka", + "lun", + "lunti", + "luwa", + "maciko", + "macun", + "makan", + "maku", + "malo", + "mamaki", + "mani", + "matija", + "matin", + "matuwa", + "meja", + "melon", + "men", + "menu", + "menwo", + "mepu", + "mese", + "mi", + "micin", + "mijalo", + "mita", + "momu", + "mona", + "moto", + "mu", + "muku", + "mulu", + "muncu", + "musi", + "mutakin", + "muwesi", + "na", + "naki", + "nalan", + "nalinca", + "namu", + "namuna", + "nan", + "nankin", + "nanku", + "napa", + "nase", + "ne", + "neje", + "nelo", + "nenka", + "nepa", + "neso", + "niju", + "niku", + "nile", + "nin", + "niwa", + "no", + "non", + "nula", + "o", + "ocota", + "oke", + "okutu", + "onin", + "onko", + "onton", + "opoki", + "opotu", + "osa", + "osole", + "otawe", + "oti", + "pa", + "pajan", + "pan", + "pani", + "pankosi", + "panli", + "pansin", + "panta", + "papon", + "pasan", + "pasu", + "pata", + "patun", + "pawo", + "peko", + "pela", + "pelete", + "peman", + "pen", + "penpe", + "pese", + "pesuwan", + "pi", + "pice", + "picijo", + "pijen", + "pikante", + "pilu", + "pinko", + "pintu", + "po", + "polan", + "poloko", + "polota", + "pon", + "posa", + "powele", + "pucon", + "puka", + "pula", + "pulusi", + "pumi", + "sa", + "saka", + "sala", + "salila", + "saman", + "saminta", + "samo", + "san", + "sankan", + "santi", + "sapi", + "sapole", + "satalan", + "satilu", + "satu", + "se", + "sekano", + "sema", + "sepo", + "setan", + "sijen", + "sikin", + "sila", + "sin", + "sincuwan", + "sinsasu", + "sinsi", + "sipa", + "sitija", + "sito", + "so", + "solu", + "sone", + "sopa", + "soto", + "suki", + "sula", + "sun", + "sunaja", + "sunkan", + "suwina", + "ta", + "tajali", + "tajen", + "takaha", + "takilo", + "talika", + "talili", + "talun", + "tamaka", + "tamin", + "tan", + "tapala", + "tason", + "tasuwi", + "tati", + "tawawa", + "tawe", + "te", + "teka", + "ten", + "tene", + "teneme", + "tenja", + "tepu", + "tijante", + "tiju", + "tiku", + "tile", + "tinki", + "tipa", + "titan", + "titi", + "tolu", + "tomiwa", + "tonko", + "tope", + "tu", + "tuko", + "tula", + "tun", + "tuntan", + "tusa", + "ujanu", + "ukama", + "ukiki", + "uli", + "ulokan", + "umami", + "umo", + "un", + "unitu", + "usen", + "uta", + "wa", + "waju", + "wala", + "wan", + "wanku", + "watan", + "wen", + "wi", + "wija", + "wiki", + "wisan", + "wonpa" + ] +} diff --git a/frontend/static/languages/likanu.json b/frontend/static/languages/likanu.json new file mode 100644 index 000000000000..81c5f24189ef --- /dev/null +++ b/frontend/static/languages/likanu.json @@ -0,0 +1,390 @@ +{ + "name": "likanu", + "rightToLeft": false, + "ligatures": true, + "orderedByFrequency": false, + "bcp47": "xxs-Uixs", + "words": [ + "oxʋ", + "oxɤ", + "oʋſ", + "oɞʃ", + "oƨ̄", + "oƨı", + "ōxʃʋʃ", + "ōʜıʜı", + "ōʌʃɞı", + "ōɕıɂȷ", + "oʜxı", + "oɤ", + "oɤȷʌȷ", + "ɛxſɕ", + "ɛƨſ", + "ɛ̄ɕ", + "ɛɕʜſ", + "ɛȷxȷ", + "ɛȷʋȷ", + "ɛ̄ȷɛı", + "ɛ̄ȷʜʃ", + "ɛı", + "ɛıɞı", + "ɛıƨ", + "ɛʃɵı", + "ɛ̄ʃ", + "ɛ̄ʃɛ", + "ɛ̄ʃʜſ", + "ɛ̄ʃʌʃ", + "ɛſɞ", + "ɛſƨȷ", + "ɛſɕı", + "oȷɞȷ", + "ōȷʌȷx̄ȷ", + "oȷʌſ", + "oȷɕ̄ı", + "ɵ", + "ɵɂ", + "ɵxıxı", + "ɵxʃʋı", + "ɵʋſxʃ", + "ɵ̄", + "ɵʜıɂʃ", + "ɵɤʃ", + "ɵȷ", + "ɵȷʋ", + "ɵ̄ȷ", + "ɵȷƨȷʋʃ", + "ɵ̄ıʜ̄", + "ɵ̄ʃ", + "ɵ̄ʃɂ", + "ɵʃʌ̄ʃ", + "ɵſ", + "ɵſx̄ſ", + "ɵ̄ſɤı", + "ɵſɤſ", + "ɵſɕ", + "ɵſɕ̄ʃɵʃ", + "oıɵɞʃ", + "oıxɞ", + "oıxɤı", + "oıʋı", + "oıɞ̄", + "ōı", + "oıƨʋʃ", + "oıƨʌ̄", + "ōıʜʋı", + "ōıɤſ", + "oıʜ̄ıʌʃ", + "oıʜſɕȷ", + "oıɕȷ", + "ɂ", + "ɂɞ̄ı", + "ɂ̄", + "ɂ̄ʋſ", + "ɂʌ̄", + "ɂʌı", + "ɂȷ", + "ɂʃʋı", + "ɂ̄ʃ", + "ɂʃƨȷ", + "ɂſ", + "ɂſx", + "ɂſʌſ", + "x", + "xxı", + "xʋ̄", + "xʋɕ", + "xʋı", + "x̄", + "xƨıɤ", + "x̄ʌ", + "xʜ̄", + "xʜſ", + "xʌȷ", + "xʌ̄ı", + "xɕ", + "xȷʋ", + "xȷɞıx", + "x̄ȷɛ", + "xı", + "xıɂȷʌ", + "xıɂſ", + "xıxȷ", + "xıxʃʋʃ", + "xıxſɕ", + "xıʋıɞ", + "x̄ı", + "xıɤ", + "xıɤʃɕ", + "xʃ", + "xʃɞ̄", + "x̄ʃɛʃ", + "xʃƨ̄ȷ", + "x̄ʃɂȷ", + "x̄ʃxſʋ̄ȷ", + "x̄ʃʜ", + "x̄ʃʜſʌȷ", + "x̄ʃʌʌſ", + "xʃɤ̄", + "xʃɤʃɞʃ", + "xʃʌ", + "xſɂʃ", + "xſxſ", + "xſʋ", + "xſɞı", + "xſɞ̄ʃ", + "x̄ſ", + "xſɤ", + "xſʌʃ", + "xſɕ̄", + "xſɕȷx̄", + "xſɕʃɤı", + "ʋ", + "ʋɛıʌʃ", + "ʋɵ", + "ʋxı", + "ʋɞʃ", + "ʋ̄", + "ʋ̄xı", + "ʋ̄ɤ", + "ʋ̄ʌ̄", + "ʋȷ", + "ʋȷx̄ı", + "ʋ̄ȷ", + "ʋ̄ȷx", + "ʋȷɤȷx", + "ʋıɂȷ", + "ʋıɂſʋȷ", + "ʋıx", + "ʋıʋı", + "ʋıɞ", + "ʋıɞıɂ̄ȷ", + "ʋıʜ̄", + "ʋıʜſ", + "ʋıɤı", + "ʋıʌʃ", + "ʋʃ", + "ʋʃxſ", + "ʋʃɤʃ", + "ʋſx", + "ʋ̄ſ", + "ʋ̄ſʌı", + "ʋſɕ", + "ɞɛıxʃ", + "ɞɛ̄ſ", + "ɞx̄", + "ɞxſ", + "ɞʋʃ", + "ɞɞxı", + "ɞƨı", + "ɞʌıɂ", + "ɞʌ̄ı", + "ɞʌſɕ", + "ɞȷɂ", + "ɞȷʋ̄ʃ", + "ɞ̄ȷ", + "ɞȷƨſ", + "ɞ̄ȷɕʃ", + "ɞȷʜſ", + "ɞȷɤȷ", + "ɞı", + "ɞıɛ̄ı", + "ɞıɂʋʃ", + "ɞıʌ", + "ɞʃɞſ", + "ɞʃƨ", + "ɞʃʌʃ", + "ɞſ", + "ɞſxſ", + "ɞſʋſ", + "ɞ̄ſɛſ", + "ɞſɤı", + "ɞſʌx̄ı", + "ɞſɕȷɤı", + "ƨ", + "ƨxı", + "ƨʋ̄", + "ƨʋ̄ıɛ", + "ƨɞſ", + "ƨɞſƨ", + "ƨ̄", + "ƨ̄x̄ı", + "ƨ̄xſ", + "ƨʜ", + "ƨɤȷ", + "ƨȷ", + "ƨȷɂȷ", + "ƨȷʋʃ", + "ƨ̄ȷx", + "ƨȷʜ", + "ƨȷɤʃ", + "ƨıɂſ", + "ƨıxſ", + "ƨıʋȷ", + "ƨ̄ı", + "ƨıɕ", + "ƨʃ", + "ƨ̄ʃ", + "ƨſʋ", + "oʃ", + "oʃɛʃʌ", + "oʃxȷ", + "oʃxſʌſ", + "oʃƨ̄ı", + "ōʃxʃ", + "ōʃʌ̄ʃ", + "oʃʜʃxı", + "oʃʜʃʌſ", + "oʃɤ", + "oʃɤʃʋȷ", + "oʃʌɕȷ", + "oʃʌı", + "ʜ", + "ʜɂ̄", + "ʜ̄", + "ʜƨı", + "ʜ̄xʃɤı", + "ʜ̄ʋı", + "ʜ̄ɤ̄ı", + "ʜ̄ʌ", + "ʜʜ̄ʃ", + "ʜɤ̄", + "ʜɤſ", + "ʜʌ", + "ʜʌ̄ſ", + "ʜɕʃ", + "ʜȷxʃ", + "ʜȷʋ", + "ʜȷʋȷʌȷ", + "ʜȷɞ̄", + "ʜ̄ȷ", + "ʜ̄ȷʜȷ", + "ʜȷɤȷ", + "ʜȷɤſɕ̄", + "ʜı", + "ʜıɛȷ", + "ʜıɛıɂʃ", + "ʜıɂ̄ȷ", + "ʜıx̄ʌȷ", + "ʜıʋſ", + "ʜ̄ıxʃ", + "ʜ̄ıʌſ", + "ʜʃ", + "ʜʃʋ̄", + "ʜʃʋʃxʃ", + "ʜʃʋʃʌ", + "ʜ̄ʃ", + "ʜʃɤ", + "ʜʃɕȷʋȷ", + "ʜſɛ̄ʃ", + "ʜſx", + "ʜſʋ", + "ʜſʋſɤı", + "ʜſɞı", + "ɤ", + "ɤx", + "ɤʋ", + "ɤʋıʋ", + "ɤɞ̄", + "ɤɞ̄ıʌ", + "ɤɞʃ", + "ɤ̄", + "ɤ̄x̄", + "ɤ̄ʌı", + "ɤʜı", + "ɤʜʃʋȷ", + "ɤʌʋ̄", + "ɤʌıʋſ", + "ɤʌſ", + "ɤȷ", + "ɤȷxƨʃ", + "ɤȷɞ", + "ɤȷʜʃ", + "ɤȷʌ̄", + "ɤıɂ̄ȷ", + "ɤıx̄ı", + "ɤıʋ", + "ɤ̄ı", + "ɤ̄ıɛſɕ̄", + "ɤ̄ıɤɤſ", + "ɤ̄ıɤı", + "ɤıʜ", + "ɤıʌıɂ", + "ɤıʌʃ", + "ɤʃ", + "ɤʃʋſ", + "ɤʃƨȷ", + "ɤʃʜ", + "ɤʃʌʃ", + "ɤſxı", + "ɤſʋ", + "ɤ̄ſ", + "ɤſƨɂ", + "ɤ̄ſx̄", + "ɤſɕıƨ", + "ʌ", + "ʌɂʋı", + "ʌɂ̄ȷ", + "ʌxɵ", + "ʌxıʋʃ", + "ʌʋıx", + "ʌʋıʋı", + "ʌʋ̄ſ", + "ʌɞx", + "ʌɞ̄ı", + "ʌ̄", + "ʌʜʋ", + "ʌɤ̄ʃ", + "ʌɤſɕı", + "ʌʌı", + "ʌɕɕ", + "ʌɕȷ", + "ʌȷ", + "ʌȷx", + "ʌ̄ȷ", + "ʌȷƨȷ", + "ʌȷƨȷɞȷ", + "ʌ̄ȷɂ", + "ʌȷʜſ", + "ʌıɂ̄ʌȷ", + "ʌıɂſ", + "ʌıxſ", + "ʌıʋȷ", + "ʌ̄ıxı", + "ʌıʜ", + "ʌıʌ̄", + "ʌıʌı", + "ʌʃʋſ", + "ʌʃɞıɕ", + "ʌ̄ʃxʃ", + "ʌʃʜȷ", + "ʌſ", + "ʌſxʃ", + "ʌſʋ", + "ʌ̄ſ", + "ʌ̄ſʌ̄", + "ʌſɤ", + "oſɂƨſ", + "oſxɞ", + "oſxıxı", + "oſʋı", + "oſʋʃx̄", + "oſɞɞı", + "oſɞʃ", + "ōſ", + "oſƨıʌſ", + "oſɤ̄ȷ", + "oſʌ", + "ɕ", + "ɕɂſ", + "ɕʋ", + "ɕ̄", + "ɕ̄xſ", + "ɕʌ̄", + "ɕ̄ȷ", + "ɕı", + "ɕıɂ", + "ɕıxı", + "ɕıɤ̄", + "ɕ̄ʃʜ" + ] +} diff --git a/frontend/static/quotes/oromo.json b/frontend/static/quotes/oromo.json new file mode 100644 index 000000000000..4fa0ccf9eb59 --- /dev/null +++ b/frontend/static/quotes/oromo.json @@ -0,0 +1,1037 @@ +{ + "language": "oromo", + "groups": [ + [0, 100], + [101, 300], + [301, 600], + [601, 9999] + ], + "quotes": [ + { + "text": "Kaan obsaa, kaan immoo gorsaa, mul'ata keetti adeemuu qabda.", + "source": "Mammaaksa Oromoo", + "id": 1, + "length": 60 + }, + { + "text": "Obsaan mi'eessa, obsaan hojii baasa, obsaan rakkoos of irraa fageessa, obsi namaa qabeenya inni dhoksaa qabuu ti.", + "source": "Mammaaksa Oromoo", + "id": 2, + "length": 113 + }, + { + "text": "Murtoo murteessuuf dudduuba hin deebi'an. Murtoon jireenya keessatti barbaachisaadha, namoonni mo'atoon ni murteessu.", + "source": "Mammaaksa Oromoo", + "id": 3, + "length": 117 + }, + { + "text": "Bubbeen cimaan muka jabaataa hin buqqaatu, namni rakkoo keessa guddatee jabaate dhumarratti moo'ichaan ba'a yeroo hunda.", + "source": "Mammaaksa Oromoo", + "id": 4, + "length": 120 + }, + { + "text": "Muka biyya jiruun mana ijaaran, nama biyya jiruun biyya ijaaran jedha oromoon yommuu mammaaku.", + "source": "Mammaaksa Oromoo", + "id": 5, + "length": 94 + }, + { + "text": "Namarra yaaduuf yaali garuu nama hundumarra beekaadha, ofiin hin jedhin.", + "source": "Mammaaksa Oromoo", + "id": 6, + "length": 72 + }, + { + "text": "Daakaniif hin marqan, dharra'aniif hin argatan, Waaqni yoo kenne malee bu'aa hin qabu.", + "source": "Mammaaksa Oromoo", + "id": 7, + "length": 86 + }, + { + "text": "Galaanni Gibee guutus daaktuuf bidiruun nama ceesisaa garaan jaallate hin rafu.", + "source": "Haacaaluu Hundeessaa — Sanyii Mootii", + "length": 79, + "id": 8 + }, + { + "text": "Gara galgala, murtoo hin qabu, murtoon ariitidhaan ykn yeroo sirrii hin taane keessatti fudhatamu sirrii miti.", + "source": "Mammaaksa Oromoo", + "id": 9, + "length": 110 + }, + { + "text": "Nama Waaqni uffise hattuun hin saamu, nama Waaqayyo eegu eegumsi addunyaa kanaa isa hin barbaachisu gonkumaa.", + "source": "Mammaaksa Oromoo", + "id": 10, + "length": 109 + }, + { + "text": "Biyya hin beektu, nyaata hin argattu, kanaaf bakka deemtu hunda haala isaa qorachuun barbaachisaa dha.", + "source": "Mammaaksa Oromoo", + "id": 11, + "length": 102 + }, + { + "text": "Harkaan dhaabanii miilaan dhiituun amaluma dhala namaati, gaarummaa oolanii hammeenyaan deebisuun gocha badaadha.", + "source": "Mammaaksa Oromoo", + "id": 12, + "length": 113 + }, + { + "text": "Meeshaa nama kamuu irraa ergifatte namichi osoo sin gaafatin dursii deebisiif. Maallaqa dabalatee.", + "source": "Mammaaksa Oromoo", + "id": 13, + "length": 98 + }, + { + "text": "Ejersa halaalaarra qobboo qe'ee wayya, fira fagoorra ollaa dhihootti dhimma ba'uun baay'ee wayya jedhan.", + "source": "Mammaaksa Oromoo", + "id": 14, + "length": 104 + }, + { + "text": "Hirriibni baay'een duumessa hiyyummaati, namni rafuu jaallatu qabeenya hin horatu jedhan.", + "source": "Oromo Work Ethic Proverb", + "id": 15, + "length": 89 + }, + { + "text": "Maqaan baduu mannaa mataa baduu wayya, jette goondaan ciniintee haftee mataan cite.", + "source": "Traditional Oromo Proverb", + "id": 16, + "length": 83 + }, + { + "text": "Dharaan nutti duulanii kaleessa hoganamu awwaala cabse ka'ee dhugaan hin haguugamu.", + "source": "Kemer Yousuf — Irreecha", + "length": 83, + "id": 17 + }, + { + "text": "Dhugaan ilmoo waaqaati, dhugaa dubbachuun aadaa Oromoo keessatti bakka guddaa qaba, Waaqayyo dhugaa jaalata.", + "source": "Mammaaksa Oromoo", + "id": 18, + "length": 108 + }, + { + "text": "Jiruun dachee kuni furiidha gaafa sana gaaffii hin hanqattu.", + "source": "Haacaaluu Hundeessaa — Ajaa'iba", + "length": 60, + "id": 19 + }, + { + "text": "Dubbiin baay'atetti harreetti hin fe'ani, dhugaan haasaa gabaabaa keessatti ifa baati jedhan.", + "source": "Mammaaksa Oromoo", + "id": 20, + "length": 93 + }, + { + "text": "Jimma jirtattin quban si qabaa biyyaa hin fagaannee yaada keetaniin kophaa gungumaa malee hin maraannee.", + "source": "Haacaaluu Hundeessaa — Sanyii Mootii", + "length": 104, + "id": 21 + }, + { + "text": "Bofa mataa dhahan eegeen isaa lafa hin lolu, diina cimaa yommuu of irraa ittisan madda isaa dhaabuu qabu dhugaa.", + "source": "Mammaaksa Oromoo", + "id": 22, + "length": 112 + }, + { + "text": "Afaan hamii bare utubaatti hasaasa, namni hamii bare yeroo hunda hamachuu hin dhiisu kanaaf irraa eeggadhu.", + "source": "Mammaaksa Oromoo", + "id": 23, + "length": 107 + }, + { + "text": "Eeboo darbatani jinfuu hin qabatani, waan harka keetii ba'e deebisuun waan hin danda'amneef dura yaadi.", + "source": "Mammaaksa Oromoo", + "id": 24, + "length": 103 + }, + { + "text": "Namni abdataan wuulii nyaatee, lafati abdaatani sanyii nyaatee.", + "source": "Obsa", + "id": 25, + "length": 63 + }, + { + "text": "Waan nama duuba jiru hin jedhu, kanaafuu waan hojjennu yeroo hunda of eeggannoodhaan yaaduu qabna dhugumatti.", + "source": "Mammaaksa Oromoo", + "id": 26, + "length": 109 + }, + { + "text": "Teessoo na gaafannaan je'een Oromiyaa dhiiga lafee tiyyaa biyya abbaa kiyyaa.", + "source": "Kemer Yousuf — Oromia", + "length": 77, + "id": 27 + }, + { + "text": "Namni Waaqa waliin deemu gufuun isa hin rukutu, daandii jireenyaa keessatti eegumsa argachuuf dhugaan deemi.", + "source": "Mammaaksa Oromoo", + "id": 28, + "length": 108 + }, + { + "text": "Firaan boonu malee firatti hin boonan, namni fira isaatti boone qofaa dhabatee hafa.", + "source": "Mammaaksa Oromoo", + "id": 29, + "length": 84 + }, + { + "text": "Ijibbaata beelaa eelee sagal dhaabu, yoo tokko bade kaanitti fayyadamuuf yaaduudhaan.", + "source": "Oromo Oral Tradition", + "id": 30, + "length": 85 + }, + { + "text": "Haadha laalii intala fuudhi, waan garaan kee barbaadu obsaan itti yaaddee raawwadhu.", + "source": "Oromo Wisdom Literature", + "id": 31, + "length": 84 + }, + { + "text": "Namni ija tokkoo biyyoo itti hin taphatu, wanta xiqqoo qabnu of eeggannoodhaan eeggachuu fi kunuunsuu qabna.", + "source": "Mammaaksa Oromoo", + "id": 32, + "length": 108 + }, + { + "text": "Kan koo lapheen sumaaf nuugii tumaa, natti taate kaa akka suusii bunaa.", + "source": "Haacaaluu Hundeessaa — Sanyii Mootii", + "length": 71, + "id": 33 + }, + { + "text": "Kan kaffalu nama biroodha jettee nyaata guddaas ta'e dhugaatii guddaa hin ajajatin.", + "source": "Mammaaksa Oromoo", + "id": 34, + "length": 83 + }, + { + "text": "Jette jettee dhuugoomsanii karra shanan balleessanii dallaa nu gidduutt ijaranii.", + "source": "Andualem Gosa — Ayyaantuu", + "length": 81, + "id": 35 + }, + { + "text": "Dhiiga ofii, fooni hin dhokatu, eenyummaan dhugaa fi sanyiin namaa yeroo hunda ifatti kan mul'atu dha.", + "source": "Mammaaksa Oromoo", + "id": 36, + "length": 102 + }, + { + "text": "Onnee koo irraa ture kanan si jaallee ayyaana laallattummaan kee yoom naaf galee.", + "source": "Abdi Nuressa — Ayyaana Laallattuu", + "length": 81, + "id": 37 + }, + { + "text": "Nama beekumsaan guutame hattuun hin saamuuf dandahamuu danda'u, kanaafuu beekumsa horachuuf tattaaffadhu yeroo hunda.", + "source": "Mammaaksa Oromoo", + "id": 38, + "length": 117 + }, + { + "text": "Soogidda, ofii jettu mi'aayi anaa jettu dhagaa tahi, ofii keetif of kabaji jalqaba kabaja argachuuf.", + "source": "Mammaaksa Oromoo", + "id": 39, + "length": 100 + }, + { + "text": "Waraabessi biyya ofii nama haa nyaatuu, alagaa biyya ormaa irra fira yaraatu wayya jedhan.", + "source": "Oromo Wisdom Literature", + "id": 40, + "length": 90 + }, + { + "text": "Kan garaa koo Rabbii na hin dhowwatu namummaa kootti ishee na jaalattuu.", + "source": "Abdi Nuressa — Ayyaana Laallattuu", + "length": 72, + "id": 41 + }, + { + "text": "Mana ormaa bareedaarra, godoo ofii keessa jiraatan tu caala jedha mammaaksi Oromoo.", + "source": "Mammaaksa Oromoo", + "id": 42, + "length": 83 + }, + { + "text": "Najjoo gidduu lafaa yaa tessoo jajjabe nagaan sitti dhaamam yoon dhufuu dadhabe.", + "source": "Gamme Borena", + "id": 43, + "length": 80 + }, + { + "text": "Biyyi abbaa qabdu alagaadhaan hin bitamtu, ummanni tokkummaa qabu humna alaarra dhufe kamiyyuu ni injifata dhugaa.", + "source": "Mammaaksa Oromoo", + "id": 44, + "length": 114 + }, + { + "text": "Waan warri waarii jedhu ijoolleen waaree jetti, ijoolleen daawwitii maatii isheeti jedhan.", + "source": "Oromo Wisdom Literature", + "id": 45, + "length": 90 + }, + { + "text": "Kan abdatan irra kan argatantu caala, waan harka kee keessa jiru sirriitti eeggadhu.", + "source": "Traditional Oromo Proverb", + "id": 46, + "length": 84 + }, + { + "text": "Fardi ija qabu boolla hin seenu, namni sammuu qabuu fi fagootti yaadu rakkoo keessa of hin galchu jedhan oromoon.", + "source": "Mammaaksa Oromoo", + "id": 47, + "length": 113 + }, + { + "text": "Namni kufe ka'uu hin dhiisu, gara fuula durattis itti fufee deema, kukkufuun dhumaa miti injifannoon isaa fuuldura jira.", + "source": "Mammaaksa Oromoo", + "id": 48, + "length": 120 + }, + { + "text": "Kan citaa hin qabneef kan citu baasti, rakkoon nama hiyyeessaa yeroo hunda walitti fufa.", + "source": "Mammaaksa Oromoo", + "id": 49, + "length": 88 + }, + { + "text": "Maraatanii biyya hin bulchan, mari'atanii bulchan malee namni tokko ofiin hin danda'u.", + "source": "Traditional Oromo Proverb", + "id": 50, + "length": 86 + }, + { + "text": "Wacitii abbaan cabsee kaa'e, kan dhiqee kaa'e itti kakata, balleessaan kan abbaati jedhan.", + "source": "Mammaaksa Oromoo", + "id": 51, + "length": 90 + }, + { + "text": "Sirni Gadaa walqixxummaa fi bilisummaa irratti ijaarameera, kanaafuu sirna kana eeguun dirqama dhaloota hunda ti.", + "source": "Gadaa Principle", + "id": 52, + "length": 113 + }, + { + "text": "Namni mana isaa keessatti guddaan, alatti yoo ba'u salphachuu in danda'a jedhan oromoon.", + "source": "Traditional Oromo Proverb", + "id": 53, + "length": 88 + }, + { + "text": "Yaadaa fi yaaddoo keetiin halkan ciisa dhabe waanuma kee yaadutti maaf hirriba dhaba.", + "source": "Haacaaluu Hundeessaa — Kuullee koo", + "length": 85, + "id": 54 + }, + { + "text": "Beekumsi qabeenyota addunyaa hundarraa ol ti, qabeenya biraa saamuu ni danda'ama, garuu beekumsa keessa jiru hin saamamu.", + "source": "Mammaaksa Oromoo", + "id": 55, + "length": 121 + }, + { + "text": "Abbaan Gadaa ummata isaa Waaqa jalatti eeguf kakate, kanaafuu abbootiin Gadaa yeroo hunda dhugaa fi naamusaaf dhaabbatu.", + "source": "Gadaa System Wisdom", + "id": 56, + "length": 120 + }, + { + "text": "An jaldeessa hin jaallu yaa goota koo enyumat doorsisaa yaa goota koo.", + "source": "Haacaaluu Hundeessaa — Goota koo", + "length": 70, + "id": 57 + }, + { + "text": "Haa baddu humni onneen bira hin jirre, jedhe leenci waraabessan.", + "source": "Mammaaksa Oromoo", + "id": 58, + "length": 64 + }, + { + "text": "Yoo namni tokko boolla qotu, ofii isaa keessa bu'a, namni daba hojjetu deebi'ee daba ofiitiin rukutama yeroo hunda.", + "source": "Mammaaksa Oromoo", + "id": 59, + "length": 115 + }, + { + "text": "Humni qofti hogganummaaf gahaa miti, beekumsa fi dhugummaan hogganummaa dhugaa keessatti murteessoo dha.", + "source": "Mammaaksa Oromoo", + "id": 60, + "length": 104 + }, + { + "text": "Hiika jaalala koo wallaaltee malee badhaadhumnoo in dhufaa olee bubbulee.", + "source": "Abdi Nuressa — Ayyaana Laallattuu", + "length": 73, + "id": 61 + }, + { + "text": "Oromoon duruu faayaa faayaan babareedani ijoolleen abbaa gadaa wal keessa areedani.", + "source": "Kemer Yousuf — Irreecha", + "length": 83, + "id": 62 + }, + { + "text": "Rabbi wajjin sooromaafii eenyummaakee nu ilmaan kee si tikfanna.", + "source": "Kemer Yousuf — Oromia", + "length": 64, + "id": 63 + }, + { + "text": "An sosodaadhe baranna qalbii kootii Gibee gamaan jaalladhee sanyii mootii.", + "source": "Haacaaluu Hundeessaa — Sanyii Mootii", + "length": 74, + "id": 64 + }, + { + "text": "Barnootni bilisummaa ti, barnootni humna ti, barnootni malee egereen ifa hin qabu jiruu dhala Oromoo keessatti.", + "source": "Oromo Cultural Wisdom", + "id": 65, + "length": 111 + }, + { + "text": "Abbaan biyyaa yoo dammaqe biyyi hin badu, ummanni of beeku fi mirga isaa eeggedu tasuma garbummaa hin fudhatu.", + "source": "Mammaaksa Oromoo", + "id": 66, + "length": 110 + }, + { + "text": "Dubbii fi ulee gabaabsuun gaariidha, wanta baay'ee dubbachuurra xiqqoo dubbatanii hojitti agarsiisuu wayya.", + "source": "Mammaaksa Oromoo", + "id": 67, + "length": 107 + }, + { + "text": "Saba koo saba gamtaan hunda caaluu qe'ee abbaa keenyaa ormi hin dhaaluu.", + "source": "Tadele Gemechu — Sanyii Leencaa", + "length": 72, + "id": 68 + }, + { + "text": "Tafkiin lafatti walnyaatti, namarratti wal baatti, hiyyeessi yoo wal lolu alagaatti tokko.", + "source": "Oromo Wisdom Literature", + "id": 69, + "length": 90 + }, + { + "text": "Ilmi abbaa malee hin dhalatuu biyyan qabaa kan na boonsiftu.", + "source": "Kemer Yousuf — Oromia", + "length": 60, + "id": 70 + }, + { + "text": "Ollaan bultee beeka akka itti bule abbaatu beeka, rakkoo garaa keessaa ofiitu beeka jedhe.", + "source": "Traditional Oromo Proverb", + "id": 71, + "length": 90 + }, + { + "text": "Salphaa hin seyinii barbada daaraa keessaa lammii tuqanii maaltu walirraa dheessaa.", + "source": "Tadele Gemechu — Sanyii Leencaa", + "length": 83, + "id": 72 + }, + { + "text": "Barcuma ulfinaa abbaatu of jala baata, nama biraa irraa ulfina eeguun walluuma guddaadha.", + "source": "Traditional Oromo Proverb", + "id": 73, + "length": 89 + }, + { + "text": "Namichi guyyaa bofa arge halkan gaaddidduu isaa dheessa, namni waan hamaan irra ga'e yeroo hunda ni sodaata.", + "source": "Mammaaksa Oromoo", + "id": 74, + "length": 108 + }, + { + "text": "Kormi biyya ofiitti baroodu biyya ormaatti ni mar'ata, kanaaf biyya ofii jaalachuun baay'ee murteessaa dha.", + "source": "Mammaaksa Oromoo", + "id": 75, + "length": 107 + }, + { + "text": "Humna qarqa baasuufi soora ganna baasu abbaatu beeka, nama biraatu ofitti firoomsa.", + "source": "Mammaaksa Oromoo", + "id": 76, + "length": 83 + }, + { + "text": "Nama hogganu sodaa malee dhugaa dubbachuu danda'u barbaadi, hogganaan sodaattu biyya isaa dhumarra balleessa.", + "source": "Mammaaksa Oromoo", + "id": 77, + "length": 109 + }, + { + "text": "Hiriyyaan wal hinamanne, malkaa ceetutti wal kakti, shakkii jidduu firootaatti uumamu balleessuun ulfaataa dha.", + "source": "Mammaaksa Oromoo", + "id": 78, + "length": 111 + }, + { + "text": "Kan gabaan suuqii hin qabne, gabaa dhaqee maal godha yoo gatii gabaa hin beekne.", + "source": "Mammaaksa Oromoo", + "id": 79, + "length": 80 + }, + { + "text": "Hoggantichi ummata isaa dursee of dursa malee, kanaafuu hogganaa gaarii barbaadda taanaan gara namaatti ilaali.", + "source": "Mammaaksa Oromoo", + "id": 80, + "length": 111 + }, + { + "text": "Kan ilkaan hin qabne akaawwii hawwatti, wanta humni ishee hin dandeenye yaaddi gowwaan.", + "source": "Mammaaksa Oromoo", + "id": 81, + "length": 87 + }, + { + "text": "Mukni tokkichi ni aara malee hin buba'u, namni kophaa isaa rakkoo baachuu hin danda'u kanaaf tokkummaan wayya.", + "source": "Mammaaksa Oromoo", + "id": 82, + "length": 110 + }, + { + "text": "Diiganii gaara sanaa gaara diigamuu hin mallee nu baasan addaan baanee nu addaan bahuu hin mallee.", + "source": "Haacaaluu Hundeessaa — Maalaan Jira", + "length": 98, + "id": 83 + }, + { + "text": "Gadaatu qaroomina qarooma jabeeffanna irreechi irree keenyaa waaqa galatoomffanna.", + "source": "Kemer Yousuf — Irreecha", + "length": 82, + "id": 84 + }, + { + "text": "Waaqa fi lafa gargar baasuun hin danda'amu, akkasuma Oromoo fi aadaa isaa gargar baasuun waan hin danda'amne.", + "source": "Oromo Cultural Wisdom", + "id": 85, + "length": 109 + }, + { + "text": "Jireenya mataa kee oofuu yoo hin dandeenye jireenya namaa irratti imalaa taata. Kanaaf kan ormaa dhiisi kan kee gaggeeffadhu!", + "source": "Jechoota Afaan Oromoo", + "id": 86, + "length": 125 + }, + { + "text": "Yaa soogidda, ofii jettu mi'aa'i, ta'uu baannaan dhagaadha jedhanii si darbu.", + "source": "Oromo Community", + "id": 87, + "length": 77 + }, + { + "text": "Daa'imni barnoota barate guddatee biyya isaa ni ijaara, kanaafuu ijoollee barsiisuu dirqama maatii fi biyyaa ti.", + "source": "Mammaaksa Oromoo", + "id": 88, + "length": 112 + }, + { + "text": "Laga tokko qarqara dhaabatanii ce'uun hin danda'amu, kanaafuu tarkaanfii fudhachuun barbaachisaa dha yeroo hunda.", + "source": "Mammaaksa Oromoo", + "id": 89, + "length": 113 + }, + { + "text": "Shiran shiranii garaaf qalbii kiyya hatanii akkan sirraa cituuf yaadanii.", + "source": "Haacaaluu Hundeessaa — Jirra", + "length": 73, + "id": 90 + }, + { + "text": "Namoota hojii isaaniif dinqisiifadhu. Hamaa yoo dalagan immoo qophaatti haasofsiisi.", + "source": "Mammaaksa Oromoo", + "id": 91, + "length": 84 + }, + { + "text": "Galaanni bakka bultii hin qabne, gudeelcha guuree deema, iddoo qubatu dhabuudhaan.", + "source": "Mammaaksa Oromoo", + "id": 92, + "length": 82 + }, + { + "text": "Osoo horiin hin galin, hattuun mooraa guutte jette haati ijoolleen ishee jalaa dhumte.", + "source": "Traditional Oromo Proverb", + "id": 93, + "length": 86 + }, + { + "text": "Yoollee si lixxee qoraatii dhoqee keessaa hin yaadda'inii lammitu gumaa baasaa.", + "source": "Tadele Gemechu — Sanyii Leencaa", + "length": 79, + "id": 94 + }, + { + "text": "Kan mana qabu mala hin dhabu, iddoo itti dhokatu fi itti boqotu waan qabuuf dhiibbaa danda'a.", + "source": "Traditional Oromo Proverb", + "id": 95, + "length": 93 + }, + { + "text": "Adala gowwoomsuun suuta suutan, ariifannaan waan yaadame hunda hin milkeessu matumaa.", + "source": "Traditional Oromo Proverb", + "id": 96, + "length": 85 + }, + { + "text": "Beekumsa tuffachuun dhumarratti nama gadaanessaatti geessa, kanaafuu barnootaaf kabajaa fi jaalala qabaachuu qabna.", + "source": "Mammaaksa Oromoo", + "id": 97, + "length": 115 + }, + { + "text": "Wallaggaa yaa lixa biiftuu, dhagaan Gibee konkolaatee, waldhabne kaa shurrubbee koo, garaan didee tokko yaadee.", + "source": "Abbitaw Kabbada", + "id": 98, + "length": 111 + }, + { + "text": "Onneen koo cimee sitti obsa karoorsaa, anatti anaan araarsita kottuu jiruu kiyya situ haaromsaa.", + "source": "Andualem Gosa — Ayyaantuu", + "length": 96, + "id": 99 + }, + { + "text": "Afaan koo afaan Oromoo, eenyummaa koo ibsa, aadaa koo mul'isa, utuu afaan koo hin jiraatin anillee hin jiru.", + "source": "Ali Birra", + "id": 100, + "length": 108 + }, + { + "text": "Aak jedhan waa tufan, mammaakan waa himan, dubbiin mammaaksa hin qabne soogidda dhabe.", + "source": "Oromo Wisdom Literature", + "id": 101, + "length": 86 + }, + { + "text": "Dhiiga dhangala'aa, harka harka, namni gocha ofiitiif itti gaafatamummaa fudhachuun dirqama dhala namaati.", + "source": "Mammaaksa Oromoo", + "id": 102, + "length": 106 + }, + { + "text": "Maal taanaa, maal taanaa, yoo isin hin jirre nuti maal taanaa? Eenyummaan keenya saba keenya waliin jiraata.", + "source": "Hachalu Hundessa", + "id": 103, + "length": 108 + }, + { + "text": "Ilmoo bineensaa foontu gara bosonaa heda, uumamni uumama isaa hin dhiisu matumaa jedhan.", + "source": "Oromo Wisdom Literature", + "id": 104, + "length": 88 + }, + { + "text": "Yayyaba walaabuu maddite yaa Taliila bishaan ganamaa lixee daakee ba'uu dadhabe danbalii yaada keen raafama.", + "source": "Haacaaluu Hundeessaa — Kuullee koo", + "length": 108, + "id": 105 + }, + { + "text": "Hamma namaa hin geessuu cabsa namaa hin teessu, dubbii namaa fiduun hamaa dha waan ta'eef irraa fagaadhu.", + "source": "Mammaaksa Oromoo", + "id": 106, + "length": 105 + }, + { + "text": "Hojiin jabina barbaada, obboleettiin jabinaa immoo obsa ti, obsa malee jabinni dhugaan argamuu hin danda'u gonkumaa.", + "source": "Mammaaksa Oromoo", + "id": 107, + "length": 116 + }, + { + "text": "Ulfeessaniit ulfaatu, jettet haati ilmaaf farda qabdee lafa irra teessee of salphiste.", + "source": "Oromo Wisdom Literature", + "id": 108, + "length": 86 + }, + { + "text": "Hayyummaa Gadaa haa beeku hundii kan quba hin qabneetu hoo hoqa gadii.", + "source": "Galaanaa Gaaromsaa — Kush", + "length": 70, + "id": 109 + }, + { + "text": "Ofii jettu mi'aa'i, yoo kaan dhagaa jedhanii si gatu jedhe namichi dammaan dubbatee.", + "source": "Oromo Wisdom Literature", + "id": 110, + "length": 84 + }, + { + "text": "Abbaa gabaabaa ijoolleen hiriyyaa seeti, nama guddaas yoo salphatu xiqqaatti ilaalti.", + "source": "Mammaaksa Oromoo", + "id": 111, + "length": 85 + }, + { + "text": "Ilmi baratu abbaa isaa kabajsiisa, beekumsi ijoollee yeroo hunda maatii fi saba isaaf eebbaa guddaa fi ulfinaa ti.", + "source": "Mammaaksa Oromoo", + "id": 112, + "length": 114 + }, + { + "text": "Ilkaan walitti aaree lafee caccabsa, namoonni yommuu tokko ta'an rakkoo cimaa kamiyyuu mo'achuu ni danda'u.", + "source": "Mammaaksa Oromoo", + "id": 113, + "length": 107 + }, + { + "text": "Kan akka fardaa nyaatu gaafa waan nyaatu dhabe du'a, kanaafuu yeroo qabnu qusachuun ogummaa guddaa dha.", + "source": "Mammaaksa Oromoo", + "id": 114, + "length": 103 + }, + { + "text": "Osoo namni sitti haasa'uu haasaa isaa addaan hin kutin, ha xumuruu. Namni kamuu waan keessasaa jiru haasa'uuf mirga qaba.", + "source": "Jechoota Afaan Oromoo", + "id": 115, + "length": 121 + }, + { + "text": "Waan dabruuf maqaa hin dabarre hin fuudhan, rakkoo yeroof jedhanii kabaja ofii dhabuun sirrii miti gonkumaa.", + "source": "Mammaaksa Oromoo", + "id": 116, + "length": 108 + }, + { + "text": "Of bira si dhabee naa onneen cabee yaa furtuukoo karra jaalalaa si qabaachuun hunda caalaa.", + "source": "Andualem Gosa — Ayyaantuu", + "length": 91, + "id": 117 + }, + { + "text": "Moluu tiyya boruufuu si'abdadhe jedhe jaarsi aduun mataa dhoofte.", + "source": "Oromo Community", + "id": 118, + "length": 65 + }, + { + "text": "Hogganni gaarii akka bishaan madda qabaatu ti, hundaaf dansaa fi qulqulluu, qixxummaan raabsuun waanjoo isaa.", + "source": "Mammaaksa Oromoo", + "id": 119, + "length": 109 + }, + { + "text": "Hiriyyaan garaa walii hin beekne malkaa ceetu maratti walkaksiifti.", + "source": "Oromo Community", + "id": 120, + "length": 67 + }, + { + "text": "Bariin durii fi dubbiin durii deebitee hin argamtu, waan darbe yaaduun hin barbaachisu.", + "source": "Oromo Wisdom Literature (Sumner, 1995)", + "id": 121, + "length": 87 + }, + { + "text": "Of hin agarre raafuu lagatti, namni of hin beekne waan xixiqqoo tuffata ta'ullee ofii isaa gatii hin qabu.", + "source": "Mammaaksa Oromoo", + "id": 122, + "length": 106 + }, + { + "text": "Jaalalti anaaf haaraa dha kanaaf keessi koo miidhame natti hin murteessin.", + "source": "Haacaaluu Hundeessaa — Ajaa'iba", + "length": 74, + "id": 123 + }, + { + "text": "Hin bari'u seetee manatti hagde, bariinaan salphina isheetiif daaraa itti naqatte jette.", + "source": "Oromo Oral Tradition", + "id": 124, + "length": 88 + }, + { + "text": "Lakkii mee lakkii gocha kee kanas hubadhu an sirraa citee hafuu dhaaf.", + "source": "Haacaaluu Hundeessaa — Ajaa'iba", + "length": 70, + "id": 125 + }, + { + "text": "Bishaan darbe hin waraaban, dubbii darbe hin kaasani, yoo dammaqan malee jedhan warri.", + "source": "Oromo Oral Tradition", + "id": 126, + "length": 86 + }, + { + "text": "Kan qaban qaba hin guunne, gadhiisan bakkee guutti, jedhan warri dhugaa kana hubatan.", + "source": "Oromo Oral Tradition", + "id": 127, + "length": 85 + }, + { + "text": "Guyyaan ija qaba, halkan gurra qaba, yeroo hunda of eeggannoodhaan dubbachuun amala nama bilchaataa ti yeroo hunda.", + "source": "Mammaaksa Oromoo", + "id": 128, + "length": 115 + }, + { + "text": "Lolli kee inni hamaan waan beektuu fi miira sitti dhaga'amu gidduudha.", + "source": "Mammaaksa Oromoo", + "id": 129, + "length": 70 + }, + { + "text": "Soddaa jiruu sanuu, balbala jiruu wal hin lolan, wal kabajuun aadaa saba Oromoo bal'aati.", + "source": "Oromo Societal Norms", + "id": 130, + "length": 89 + }, + { + "text": "Iyyaniif dhalcha hin ta'u, jedhe korbeessi hoolaa korbeessa re'eetiin lafa dhiitee.", + "source": "Mammaaksa Oromoo", + "id": 131, + "length": 83 + }, + { + "text": "Bishaan lagaa dhume jennaan boosettiin ilil jette, sababni ishees qulqullina jibbuudha.", + "source": "Oromo Oral Tradition", + "id": 132, + "length": 87 + }, + { + "text": "Bara quufaa waraabessi adurree ciniina, yommuu nagaa fi quufni jiru namni waan hin taane hojjeta jedhan warri.", + "source": "Mammaaksa Oromoo", + "id": 133, + "length": 110 + }, + { + "text": "Cinqiin yeroo baayyee kan maddu sababa humnaa ol yaaduutiin, yeroo humnaa ol yaadnu sammuun teenya rakkinoota hin jirre hedduu waan uumuuf.", + "source": "Mammaaksa Oromoo", + "id": 134, + "length": 139 + }, + { + "text": "Namni akka ofii isaa beeku eenyuyyuu isa hin beeku, of-baruu fi dhugaa ofii beekuun mallattoo qaroominaati.", + "source": "Mammaaksa Oromoo", + "id": 135, + "length": 107 + }, + { + "text": "Sirni Gadaa sirna dimokiraasii fi walqixxummaa irratti hundaa'e dha, namni hunduu mirga guutuu qaba Oromoo keessatti.", + "source": "Gadaa System Principle", + "id": 136, + "length": 117 + }, + { + "text": "Harki tokko ni dhiqa malee, hin qulqulleessu, harka lamaan waliin dhiquutu xurii baasa.", + "source": "Oromo Wisdom Literature", + "id": 137, + "length": 87 + }, + { + "text": "Yeroo dheeraaf bishaaniin tuqamu dhagaan caccabuun hin ooluu, kanaafuu tattaaffiin xiqqoo yeroo dheeraan gurguddaa galma gaha.", + "source": "Mammaaksa Oromoo", + "id": 138, + "length": 126 + }, + { + "text": "Utuu horiin hin galin, hattuun mooraa guutte, utuu qabeenyi hin argamin eegdonni baay'achuun rakkoo fida.", + "source": "Mammaaksa Oromoo", + "id": 139, + "length": 105 + }, + { + "text": "Nyaadhe fixuu yoon dadhabe hadhee fixuun hin dadhabu jette lukkuun.", + "source": "Mammaaksa Oromoo", + "id": 140, + "length": 67 + }, + { + "text": "Firri wallola malee gaafa rakkoo wal irratti hin ilaalu, dhiigni dhiiguma ta'a yoomiyyuu.", + "source": "Oromo Societal Norms", + "id": 141, + "length": 89 + }, + { + "text": "Hiyyeessaa fi ibiddi tuttuqaa hin jaalatu, kanaafuu nama harka dhalleeyyii akka malee dhiibuu fi tuquun hamaa dha.", + "source": "Mammaaksa Oromoo", + "id": 142, + "length": 114 + }, + { + "text": "Mallaqnii wanta hundaaf debbi ta'uu hin danda'uu garu jijiirama fida.", + "source": "Mammaaksa Oromoo", + "id": 143, + "length": 69 + }, + { + "text": "Haatee durbaa jennaan dur kaa jedhe mucaan, namni waan beeku dubbata waan ta'eef dhugaa dubbachuu qabna.", + "source": "Mammaaksa Oromoo", + "id": 144, + "length": 104 + }, + { + "text": "Fuulli fi nyaanni dhoksaa hin qabu, garaa keessa wanti jiru fuula irraa sirriitti mul'ata.", + "source": "Traditional Oromo Proverb", + "id": 145, + "length": 90 + }, + { + "text": "Ijoolleen haadha jalatti baratte iddoo biraatti hin boonu, aadaa fi safuu warra irraa barachuun baay'ee faayidaa.", + "source": "Mammaaksa Oromoo", + "id": 146, + "length": 113 + }, + { + "text": "Harreen ofiifuu hin galtuu, loon galchitiiree yoo ofii ishee karaa mana ishee wallaalte?", + "source": "Oromo Oral Tradition", + "id": 147, + "length": 88 + }, + { + "text": "Haati hattuun intala hin amantu, yeroo hunda waan hannaatiin shakkiti malee.", + "source": "Oromo Wisdom Literature", + "id": 148, + "length": 76 + }, + { + "text": "Namni rakkoo fuuldura dhaabachuu danda'u duwwaa dha milkaa'inni isaa itti argamu, salphaatti hin argamu yeroo hunda.", + "source": "Mammaaksa Oromoo", + "id": 149, + "length": 116 + }, + { + "text": "Dorgomaa cimaa waliin dorgomuu nama jajjabeessa fi guddisa, kanaafuu nama cimaa waliin dorgomuu irraa gonkumaa hin baqatin.", + "source": "Mammaaksa Oromoo", + "id": 150, + "length": 123 + }, + { + "text": "Kan argatanirra kan abdatantu caala, abdii qabaachuun jireenya keessatti furtuu milkaa'inaa ti jedha oromoon.", + "source": "Mammaaksa Oromoo", + "id": 151, + "length": 109 + }, + { + "text": "Kan darbe yaadatani, isa gara fuula duraa itti yaadan, seenaa ofii beekuun egeree ofii ijaaruuf murteessaa dha.", + "source": "Mammaaksa Oromoo", + "id": 152, + "length": 111 + }, + { + "text": "Bulchaa gaarii argachuuf ummanni yeroo hunda dammaqee jiraachuu qaba, bulchaan badaan ummata rafaa jiru balleessa.", + "source": "Mammaaksa Oromoo", + "id": 153, + "length": 114 + }, + { + "text": "Kan lafatti walii hin galle muka irratti wal hin gargaaru, yommuu nagaa qabnu waliigaluu baannaan rakkoo ta'a.", + "source": "Mammaaksa Oromoo", + "id": 154, + "length": 110 + }, + { + "text": "Garaan dhiibee yoo quufu, sammuun dammaqee waa yaada, nyaatanii quufuun qofti gahaa miti hojjechuu qabna.", + "source": "Mammaaksa Oromoo", + "id": 155, + "length": 105 + }, + { + "text": "Adaamiin olla agamsaa, imimmaan hin qoorfattu, waraansa ollaa isheerraa kan ka'e boo'icha.", + "source": "Oromo Wisdom Literature", + "id": 156, + "length": 90 + }, + { + "text": "Firri dhufe jedhanii dhabaa hin dhalanii, waan qaban dhiheessuun dirqama namummootaati.", + "source": "Traditional Oromo Proverb", + "id": 157, + "length": 87 + }, + { + "text": "Harkaan hojjetanii afaanitti dhiheeffachuun aadaa oromooti, hiyyummaa balleessuuf hojii jaalachuun murteessa.", + "source": "Mammaaksa Oromoo", + "id": 158, + "length": 109 + }, + { + "text": "Midhaan dura facaasan simbirri nyaatti, nama dura dubbate namni komata jedhan maanguddoon.", + "source": "Traditional Oromo Proverb", + "id": 159, + "length": 90 + }, + { + "text": "Rabbi moo namumaa kan seera jallisee? Haati keenya takka maaltu addaan nu baase?", + "source": "Ali Birra", + "id": 160, + "length": 80 + }, + { + "text": "Kaayyoon keenya saba keenya bilisa baasuu dha, kanaaf immoo wareegama barbaachisu hunda ni kaffalla dhugumatti.", + "source": "Elemo Qilxu", + "id": 161, + "length": 111 + }, + { + "text": "Nama cimaa ta'i jechuun hin kufiin jechuu miti, kuftee ka'uu danda'uu qabda jechuudha malee.", + "source": "Mammaaksa Oromoo", + "id": 162, + "length": 92 + }, + { + "text": "Tuulamanii taa'anii Waaqa ofii hin komatan, ofiin hojjetanii of qabuu wayya jedhan.", + "source": "Gadaa Work Ethic Saying", + "id": 163, + "length": 83 + }, + { + "text": "Biyya lafaarratti yommuu jiraannu, nagaa fi jaalalaan waliin jiraachuun furtuu jireenyaa isa guddaa dha jedha oromoon.", + "source": "Oromo Cultural Wisdom", + "id": 164, + "length": 118 + }, + { + "text": "Salphinni abbaa lafaa bara midhaan bade, yeroo hiyyummaa nama hundaatu salphata jedhan.", + "source": "Gadaa Proverb", + "id": 165, + "length": 87 + }, + { + "text": "Sangaan harree wajjin oole, innyaata dhiisee dhuufuu barata jedhan warri durii mammaakani.", + "source": "Oromo Wisdom Literature", + "id": 166, + "length": 90 + }, + { + "text": "Ol kaayan malee, ol ka'aniif waan barbaadan sana hin fuudhan, lafa kaa'an yaadachuu qabani.", + "source": "Traditional Oromo Proverb", + "id": 167, + "length": 91 + }, + { + "text": "Abbaan iyyatu malee ollaan hin birmatu, rakkoo ofii hawaasatti himachuun furmaata fida.", + "source": "Traditional Oromo Proverb", + "id": 168, + "length": 87 + }, + { + "text": "Galle jette lafoon farda jala galtee, of gowwoomsuun gatii dhabsiisa namaa fida waan ta'eef eeggadhu.", + "source": "Mammaaksa Oromoo", + "id": 169, + "length": 101 + }, + { + "text": "Obsan malee damma hin nyaatan, wanta gaarii argachuuf obsa qabaachuun ulaagaa isa duraa fi murteessaa dha.", + "source": "Mammaaksa Oromoo", + "id": 170, + "length": 106 + }, + { + "text": "Oromiyaa, Oromiyaa, biyya abbaa kootii, gammachuun koo hin guutu amma si arguuttii, situ anaaf jira jedhe sirbaan.", + "source": "Ali Birra", + "id": 171, + "length": 114 + } + ] +} diff --git a/frontend/static/quotes/tamil_old.json b/frontend/static/quotes/tamil_old.json new file mode 100644 index 000000000000..76377201fe41 --- /dev/null +++ b/frontend/static/quotes/tamil_old.json @@ -0,0 +1,281 @@ +{ + "language": "tamil_old", + "groups": [ + [0, 100], + [101, 300], + [301, 600], + [601, 9999] + ], + "quotes": [ + { + "text": "கற்றதனால் ஆய பயன் என்கொல் வால் அறிவன் நல் தாள் தொழாஅர் எனின்", + "source": "திருக்குறள்", + "id": 1, + "length": 60 + }, + { + "text": "வேண்டுதல் வேண்டாமை இலான் அடி சேர்ந்தார்க்கு யாண்டும் இடும்பை இல", + "source": "திருக்குறள்", + "id": 2, + "length": 63 + }, + { + "text": "இருள் சேர் இரு வினையும் சேரா இறைவன் பொருள் சேர் புகழ் புரிந்தார்மாட்டு", + "source": "திருக்குறள்", + "id": 3, + "length": 70 + }, + { + "text": "பொறி வாயில் ஐந்து அவித்தான் பொய் தீர் ஒழுக்க நெறி நின்றார் நீடு வாழ்வார்", + "source": "திருக்குறள்", + "id": 4, + "length": 72 + }, + { + "text": "தனக்கு உவமை இல்லாதான் தாள் சேர்ந்தார்க்கு அல்லால் மனக் கவலை மாற்றல் அரிது", + "source": "திருக்குறள்", + "id": 5, + "length": 73 + }, + { + "text": "அற ஆழி அந்தணன் தாள் சேர்ந்தார்க்கு அல்லால் பிற ஆழி நீந்தல் அரிது", + "source": "திருக்குறள்", + "id": 6, + "length": 64 + }, + { + "text": "வான் நின்று உலகம் வழங்கி வருதலான் தான் அமிழ்தம் என்று உணரல் பாற்று", + "source": "திருக்குறள்", + "id": 7, + "length": 66 + }, + { + "text": "துப்பார்க்குத் துப்பு ஆய துப்பு ஆக்கி துப்பார்க்குத் துப்பு ஆயதூஉம் மழை", + "source": "திருக்குறள்", + "id": 8, + "length": 71 + }, + { + "text": "விண் இன்று பொய்ப்பின் விரிநீர் வியன் உலகத்து உள் நின்று உடற்றும் பசி", + "source": "திருக்குறள்", + "id": 9, + "length": 68 + }, + { + "text": "கெடுப்பதூஉம் கெட்டார்க்குச் சார்வாய் மற்று ஆங்கே எடுப்பதூஉம் எல்லாம் மழை", + "source": "திருக்குறள்", + "id": 10, + "length": 72 + }, + { + "text": "விசும்பின் துளி வீழின் அல்லால் மற்று ஆங்கே பசும் புல் தலை காண்பு அரிது", + "source": "திருக்குறள்", + "id": 11, + "length": 70 + }, + { + "text": "நெடுங் கடலும் தன் நீர்மை குன்றும் தடிந்து எழிலி தான் நல்காது ஆகிவிடின்", + "source": "திருக்குறள்", + "id": 12, + "length": 70 + }, + { + "text": "சிறப்பொடு பூசனை செல்லாது வானம் வறக்குமேல் வானோர்க்கும் ஈண்டு", + "source": "திருக்குறள்", + "id": 13, + "length": 60 + }, + { + "text": "நீர் இன்று அமையாது உலகு எனின் யார்யார்க்கும் வான் இன்று அமையாது ஒழுக்கு", + "source": "திருக்குறள்", + "id": 14, + "length": 71 + }, + { + "text": "ஒழுக்கத்து நீத்தார் பெருமை விழுப்பத்து வேண்டும் பனுவல் துணிவு", + "source": "திருக்குறள்", + "id": 15, + "length": 61 + }, + { + "text": "துறந்தார் பெருமை துணைக்கூறின் வையத்து இறந்தாரை எண்ணிக்கொண்டு அற்று", + "source": "திருக்குறள்", + "id": 16, + "length": 66 + }, + { + "text": "இருமை வகை தெரிந்து ஈண்டு அறம் பூண்டார் பெருமை பிறங்கிற்று உலகு", + "source": "திருக்குறள்", + "id": 17, + "length": 62 + }, + { + "text": "உரன் என்னும் தோட்டியான் ஓர் ஐந்தும் காப்பான் வரன் என்னும் வைப்பிற்கு ஓர் வித்து", + "source": "திருக்குறள்", + "id": 18, + "length": 79 + }, + { + "text": "ஐந்து அவித்தான் ஆற்றல் அகல்விசும்புளார் கோமான் இந்திரனே சாலும் கரி", + "source": "திருக்குறள்", + "id": 19, + "length": 66 + }, + { + "text": "செயற்கு அரிய செய்வார் பெரியர் சிறியர் செயற்கு அரிய செய்கலாதார்", + "source": "திருக்குறள்", + "id": 20, + "length": 62 + }, + { + "text": "சுவை ஒளி ஊறு ஓசை நாற்றம் என்று ஐந்தின் வகை தெரிவான்கட்டே உலகு", + "source": "திருக்குறள்", + "id": 21, + "length": 61 + }, + { + "text": "குணம் என்னும் குன்று ஏறி நின்றார் வெகுளி கணமேயும் காத்தல் அரிது", + "source": "திருக்குறள்", + "id": 22, + "length": 63 + }, + { + "text": "அந்தணர் என்போர் அறவோர் மற்று எவ்வுயிர்க்கும் செந்தண்மை பூண்டு ஒழுகலான்", + "source": "திருக்குறள்", + "id": 23, + "length": 70 + }, + { + "text": "சிறப்பு ஈனும் செல்வமும் ஈனும் அறத்தின் ஊஉங்கு ஆக்கம் எவனோ உயிர்க்கு", + "source": "திருக்குறள்", + "id": 24, + "length": 67 + }, + { + "text": "அறத்தின் ஊஉங்கு ஆக்கமும் இல்லை அதனை மறத்தலின் ஊங்கில்லை கேடு", + "source": "திருக்குறள்", + "id": 25, + "length": 60 + }, + { + "text": "அழுக்காறு அவாவெகுளி இன்னாச்சொல் நான்கும் இழுக்கா இயன்றது அறம்", + "source": "திருக்குறள்", + "id": 26, + "length": 61 + }, + { + "text": "அன்றறிவாம் என்னாது அறஞ்செய்க மற்றது பொன்றுங்கால் பொன்றாத் துணை", + "source": "திருக்குறள்", + "id": 27, + "length": 62 + }, + { + "text": "வீழ்நாள் படாஅமை நன்றாற்றின் அஃதொருவன் வாழ்நாள் வழியடைக்கும் கல்", + "source": "திருக்குறள்", + "id": 28, + "length": 63 + }, + { + "text": "இல்வாழ்வான் என்பான் இயல்புடைய மூவர்க்கும் நல்லாற்றின் நின்ற துணை", + "source": "திருக்குறள்", + "id": 29, + "length": 64 + }, + { + "text": "துறந்தார்க்கும் துவ்வாதவர்க்கும் இறந்தார்க்கும் இல்வாழ்வான் என்பான் துணை", + "source": "திருக்குறள்", + "id": 30, + "length": 72 + }, + { + "text": "தென்புலத்தார் தெய்வம் விருந்து ஒக்கல் தான் என்று ஆங்கு ஐம்புலத்தாறு ஓம்பல் தலை", + "source": "திருக்குறள்", + "id": 31, + "length": 78 + }, + { + "text": "பழியஞ்சிப் பாத்தூண் உடைத்தாயின் வாழ்க்கை வழிஎஞ்சல் எஞ்ஞான்றும் இல்", + "source": "திருக்குறள்", + "id": 32, + "length": 66 + }, + { + "text": "அறத்தாற்றின் இல்வாழ்க்கை ஆற்றின் புறத்தாற்றில் போஒய்ப் பெறுவது எவன்", + "source": "திருக்குறள்", + "id": 33, + "length": 67 + }, + { + "text": "இயல்பினான் இல்வாழ்க்கை வாழ்பவன் என்பான் முயல்வாருள் எல்லாம் தலை", + "source": "திருக்குறள்", + "id": 34, + "length": 63 + }, + { + "text": "ஆற்றின் ஒழுக்கி அறனிழுக்கா இல்வாழ்க்கை நோற்பாரின் நோன்மை உடைத்து", + "source": "திருக்குறள்", + "id": 35, + "length": 64 + }, + { + "text": "அறனெனப் பட்டதே இல்வாழ்க்கை அஃதும் பிறன்பழிப்பது இல்லாயின் நன்று", + "source": "திருக்குறள்", + "id": 36, + "length": 63 + }, + { + "text": "வையத்துள் வாழ்வாங்கு வாழ்பவன் வானுறையும் தெய்வத்துள் வைக்கப்படும்", + "source": "திருக்குறள்", + "id": 37, + "length": 65 + }, + { + "text": "மனைத்தக்க மாண்புடையள் ஆகித் தற்கொண்டான் வளத்தக்காள் வாழ்க்கைத் துணை", + "source": "திருக்குறள்", + "id": 38, + "length": 67 + }, + { + "text": "மனைமாட்சி இல்லாள்கண் இல்லாயின் வாழ்க்கை எனைமாட்சித் தாயினும் இல்", + "source": "திருக்குறள்", + "id": 39, + "length": 64 + }, + { + "text": "பெற்றாற் பெறின் பெறுவர் பெண்டிர் பெருஞ் சிறப்புப் புத்தேளிர் வாழும் உலகு", + "source": "திருக்குறள்", + "id": 40, + "length": 72 + }, + { + "text": "கல்லாரேயாயினும் கற்றாரைச் சேர்ந்தொழுகின் நல்லறிவு நாளும் தலைப்படுவர் தொல்சிறப்பின் ஒண்ணிறப் பாதிரிப்பூச் சேர்தலாற் புத்தோடு தண்ணீர்க்குத் தான்பயந்தாங்கு", + "source": "நாலடியார்", + "id": 41, + "length": 152 + }, + { + "text": "கல்வி கரையில கற்பவர் நாள்சில மெல்ல நினைக்கின் பிணிபல தெள்ளிதின் ஆராய்ந்து அமைவுடைய கற்பவே நீரொழியப் பாலுண் குருகின் தெரிந்து", + "source": "நாலடியார்", + "id": 42, + "length": 124 + }, + { + "text": "கல்லாது நீண்ட ஒருவன் உலகத்து நல்லறிவாளர் இடைப்புக்கு மெல்ல இருப்பினும் நாயிருந்தற்றே இராஅது உரைப்பினும் நாய்குரைத்தற்று", + "source": "நாலடியார்", + "id": 43, + "length": 119 + }, + { + "text": "உணர உணரும் உணர்வுடையாரைப் புணரிற் புணருமாம் இன்பம் புணரின் தெரியத் தெரியும் தெரிவிலாதாரைப் பிரியப் பிரியுமாம் நோய்", + "source": "நாலடியார்", + "id": 44, + "length": 114 + }, + { + "text": "கல்லென்று தந்தை கழற அதனையோர் சொல்லென்று கொள்ளாது இகழ்ந்தவன் மெல்ல எழுத்தோலை பல்லார்முன் நீட்ட விளியா வழுக்கோலைக் கொண்டு விடும்", + "source": "நாலடியார்", + "id": 45, + "length": 126 + } + ] +} diff --git a/frontend/storybook/package.json b/frontend/storybook/package.json index 00666bef0dbd..e4c018fb053a 100644 --- a/frontend/storybook/package.json +++ b/frontend/storybook/package.json @@ -32,7 +32,7 @@ "solid-js": "^1.9.11", "storybook": "^10.2.14", "storybook-solidjs-vite": "^10.0.9", - "vite": "^7.3.1", + "vite": "^7.3.2", "vitest": "^4.1.0" } } diff --git a/package.json b/package.json index 8bf9fd701e83..eb4fc0995bbe 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "prettier": "3.7.1", "turbo": "2.7.5", "vitest": "4.1.0", - "yaml": "2.8.2" + "yaml": "2.8.3" }, "lint-staged": { "*": [ diff --git a/packages/contracts/__test__/validation/validation.spec.ts b/packages/contracts/__test__/validation/validation.spec.ts index 4af8689fc913..b1542883dc13 100644 --- a/packages/contracts/__test__/validation/validation.spec.ts +++ b/packages/contracts/__test__/validation/validation.spec.ts @@ -1,8 +1,10 @@ import { describe, it, expect } from "vitest"; import * as Validation from "@monkeytype/schemas/validation/validation"; +const containsDisallowedWords = Validation.__testing.containsDisallowedWords; + describe("validation", () => { - it("containsProfanity", () => { + it("containsDisallowedWords", () => { const testCases = [ { text: "https://www.fuckyou.com", @@ -35,7 +37,7 @@ describe("validation", () => { ]; testCases.forEach((testCase) => { - expect(Validation.containsProfanity(testCase.text, "substring")).toBe( + expect(containsDisallowedWords(testCase.text, "substring")).toBe( testCase.expected, ); }); diff --git a/packages/release/package.json b/packages/release/package.json index 179398dfaec0..b9f5baa0e353 100644 --- a/packages/release/package.json +++ b/packages/release/package.json @@ -14,7 +14,7 @@ "purge-cf-cache": "./bin/purgeCfCache.sh" }, "dependencies": { - "@octokit/rest": "21.1.1", + "@octokit/rest": "22.0.1", "dotenv": "16.4.5", "readline-sync": "1.4.10" }, diff --git a/packages/schemas/__tests__/util.spec.ts b/packages/schemas/__tests__/util.spec.ts new file mode 100644 index 000000000000..8f29eb0496b9 --- /dev/null +++ b/packages/schemas/__tests__/util.spec.ts @@ -0,0 +1,56 @@ +import { describe, it, expect } from "vitest"; +import { nameWithSeparators, slug } from "../src/util"; + +describe("Schema Validation Tests", () => { + describe("nameWithSeparators", () => { + const schema = nameWithSeparators(); + + it("accepts valid names", () => { + expect(schema.safeParse("valid_name").success).toBe(true); + expect(schema.safeParse("valid-name").success).toBe(true); + expect(schema.safeParse("valid123").success).toBe(true); + expect(schema.safeParse("Valid_Name-Check").success).toBe(true); + }); + + it("rejects leading/trailing separators", () => { + expect(schema.safeParse("_invalid").success).toBe(false); + expect(schema.safeParse("invalid-").success).toBe(false); + }); + + it("rejects consecutive separators", () => { + expect(schema.safeParse("inv__alid").success).toBe(false); + expect(schema.safeParse("inv--alid").success).toBe(false); + expect(schema.safeParse("inv-_alid").success).toBe(false); + }); + + it("rejects dots", () => { + expect(schema.safeParse("invalid.dot").success).toBe(false); + expect(schema.safeParse(".invalid").success).toBe(false); + }); + }); + + describe("slug", () => { + const schema = slug(); + + it("accepts valid slugs", () => { + expect(schema.safeParse("valid-slug.123_test").success).toBe(true); + expect(schema.safeParse("valid.dots").success).toBe(true); + expect(schema.safeParse("_leading_underscore_is_fine").success).toBe( + true, + ); + expect(schema.safeParse("-leading_hyphen_is_fine").success).toBe(true); + expect(schema.safeParse("trailing_is_fine_in_slug_").success).toBe(true); + }); + + it("rejects leading dots", () => { + expect(schema.safeParse(".invalid").success).toBe(false); + }); + + it("rejects invalid characters", () => { + expect(schema.safeParse("invalid,comma").success).toBe(false); + expect(schema.safeParse(",invalid").success).toBe(false); + expect(schema.safeParse("invalid space").success).toBe(false); + expect(schema.safeParse("invalid#hash").success).toBe(false); + }); + }); +}); diff --git a/packages/schemas/src/ape-keys.ts b/packages/schemas/src/ape-keys.ts index 146c4cc658a1..1022ea028c73 100644 --- a/packages/schemas/src/ape-keys.ts +++ b/packages/schemas/src/ape-keys.ts @@ -1,10 +1,7 @@ import { z } from "zod"; -import { IdSchema } from "./util"; +import { IdSchema, slug } from "./util"; -export const ApeKeyNameSchema = z - .string() - .regex(/^[0-9a-zA-Z_.-]+$/) - .max(20); +export const ApeKeyNameSchema = slug().max(20); export const ApeKeyUserDefinedSchema = z.object({ name: ApeKeyNameSchema, diff --git a/packages/schemas/src/languages.ts b/packages/schemas/src/languages.ts index 006aea124906..0cd95490e981 100644 --- a/packages/schemas/src/languages.ts +++ b/packages/schemas/src/languages.ts @@ -438,6 +438,8 @@ export const LanguageSchema = z.enum( "code_cuda", "kinyarwanda", "pokemon_1k", + "kokanu", + "likanu", ], { errorMap: customEnumErrorHandler("Must be a supported language"), diff --git a/packages/schemas/src/presets.ts b/packages/schemas/src/presets.ts index 5faeb2a68224..91de2dad4b14 100644 --- a/packages/schemas/src/presets.ts +++ b/packages/schemas/src/presets.ts @@ -1,15 +1,12 @@ import { z } from "zod"; -import { IdSchema, TagSchema } from "./util"; +import { IdSchema, nameWithSeparators, TagSchema } from "./util"; import { ConfigGroupName, ConfigGroupNameSchema, PartialConfigSchema, } from "./configs"; -export const PresetNameSchema = z - .string() - .regex(/^[0-9a-zA-Z_-]+$/) - .max(16); +export const PresetNameSchema = nameWithSeparators().max(16); export type PresetName = z.infer; export const PresetTypeSchema = z.enum(["full", "partial"]); diff --git a/packages/schemas/src/users.ts b/packages/schemas/src/users.ts index e592c1bea026..80286ce739c5 100644 --- a/packages/schemas/src/users.ts +++ b/packages/schemas/src/users.ts @@ -1,5 +1,5 @@ import { z, ZodEffects, ZodOptional, ZodString } from "zod"; -import { IdSchema, StringNumberSchema } from "./util"; +import { IdSchema, nameWithSeparators, slug, StringNumberSchema } from "./util"; import { LanguageSchema } from "./languages"; import { ModeSchema, @@ -12,16 +12,13 @@ import { PersonalBestSchema, } from "./shared"; import { CustomThemeColorsSchema, FunboxNameSchema } from "./configs"; -import { doesNotContainProfanity } from "./validation/validation"; +import { doesNotContainDisallowedWords } from "./validation/validation"; import { ConnectionSchema } from "./connections"; const NoneFilterSchema = z.literal("none"); export const ResultFiltersSchema = z.object({ _id: IdSchema, - name: z - .string() - .regex(/^[0-9a-zA-Z_.-]+$/) - .max(16), + name: slug().max(16), pb: z .object({ no: z.boolean(), @@ -72,11 +69,13 @@ export const UserStreakSchema = z }) .strict(); export type UserStreak = z.infer; +export const TagNameSchema = nameWithSeparators().max(16); +export type TagName = z.infer; export const UserTagSchema = z .object({ _id: IdSchema, - name: z.string(), + name: TagNameSchema, personalBests: PersonalBestsSchema, }) .strict(); @@ -85,24 +84,18 @@ export type UserTag = z.infer; function profileDetailsBase( schema: ZodString, ): ZodEffects>> { - return doesNotContainProfanity("word", schema) + return doesNotContainDisallowedWords("word", schema) .optional() .transform((value) => (value === null ? undefined : value)); } -export const TwitterProfileSchema = profileDetailsBase( - z - .string() - .max(20) - .regex(/^[0-9a-zA-Z_.-]+$/), -).or(z.literal("")); +export const TwitterProfileSchema = profileDetailsBase(slug().max(20)).or( + z.literal(""), +); -export const GithubProfileSchema = profileDetailsBase( - z - .string() - .max(39) - .regex(/^[0-9a-zA-Z_.-]+$/), -).or(z.literal("")); +export const GithubProfileSchema = profileDetailsBase(slug().max(39)).or( + z.literal(""), +); export const WebsiteSchema = profileDetailsBase( z.string().url().max(200).startsWith("https://"), @@ -125,10 +118,7 @@ export const UserProfileDetailsSchema = z .strict(); export type UserProfileDetails = z.infer; -export const CustomThemeNameSchema = z - .string() - .regex(/^[0-9a-zA-Z_-]+$/) - .max(16); +export const CustomThemeNameSchema = nameWithSeparators().max(16); export type CustomThemeName = z.infer; export const CustomThemeSchema = z @@ -242,16 +232,9 @@ export const FavoriteQuotesSchema = z.record( export type FavoriteQuotes = z.infer; export const UserEmailSchema = z.string().email(); -export const UserNameSchema = doesNotContainProfanity( +export const UserNameSchema = doesNotContainDisallowedWords( "substring", - z - .string() - .min(1) - .max(16) - .regex( - /^[\da-zA-Z_-]+$/, - "Can only contain lower/uppercase letters, underscore and minus.", - ), + slug().min(1).max(16), ); export const UserSchema = z.object({ @@ -297,12 +280,6 @@ export type ResultFiltersGroup = keyof ResultFilters; export type ResultFiltersGroupItem = keyof ResultFilters[T]; -export const TagNameSchema = z - .string() - .regex(/^[0-9a-zA-Z_.-]+$/) - .max(16); -export type TagName = z.infer; - export const TypingStatsSchema = z.object({ completedTests: z.number().int().nonnegative().optional(), startedTests: z.number().int().nonnegative().optional(), diff --git a/packages/schemas/src/util.ts b/packages/schemas/src/util.ts index 6098b9ab3a7b..4abbf2c39c47 100644 --- a/packages/schemas/src/util.ts +++ b/packages/schemas/src/util.ts @@ -8,9 +8,29 @@ export const StringNumberSchema = z ) .or(z.number().transform(String)); export type StringNumber = z.infer; - export const token = (): ZodString => z.string().regex(/^[a-zA-Z0-9_]+$/); +export const slug = (): ZodString => + z + .string() + .regex( + /^[0-9a-zA-Z_.-]+$/, + "Only letters, numbers, underscores, dots and hyphens allowed", + ) + .regex(/^[^.].*$/, "Cannot start with a dot"); + +export const nameWithSeparators = (): ZodString => + z + .string() + .regex( + /^[0-9a-zA-Z_-]+$/, + "Only letters, numbers, underscores and hyphens allowed", + ) + .regex( + /^[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9]+)*$/, + "Separators cannot be at the start or end, or appear multiple times in a row", + ); + export const IdSchema = token(); export type Id = z.infer; diff --git a/packages/schemas/src/validation/validation.ts b/packages/schemas/src/validation/validation.ts index 9ceb06fb1b4c..d573c06cdcea 100644 --- a/packages/schemas/src/validation/validation.ts +++ b/packages/schemas/src/validation/validation.ts @@ -2,7 +2,7 @@ import { replaceHomoglyphs } from "./homoglyphs"; import { ZodEffects, ZodString } from "zod"; // Sorry for the bad words -const profanities = [ +const disallowedWords = [ "miodec", "bitly", "niqqa", @@ -403,7 +403,7 @@ function sanitizeString(str: string | undefined): string | undefined { .replace(/\s{3,}/g, " "); } -export function containsProfanity( +function containsDisallowedWords( text: string, mode: "word" | "substring", ): boolean { @@ -414,27 +414,29 @@ export function containsProfanity( return replaceHomoglyphs(sanitizeString(str) ?? ""); }); - const hasProfanity = profanities.some((profanity) => { + const hasDisallowedWords = disallowedWords.some((disallowedWord) => { return normalizedText.some((word) => { return mode === "word" - ? word.startsWith(profanity) - : word.includes(profanity); + ? word.startsWith(disallowedWord) + : word.includes(disallowedWord); }); }); - return hasProfanity; + return hasDisallowedWords; } -export function doesNotContainProfanity( +export function doesNotContainDisallowedWords( mode: "word" | "substring", schema: ZodString, ): ZodEffects { return schema.refine( (val) => { - return !containsProfanity(val, mode); + return !containsDisallowedWords(val, mode); }, (val) => ({ - message: `Profanity detected. Please remove it. If you believe this is a mistake, please contact us. (${val})`, + message: `Disallowed word detected. Please remove it. If you believe this is a mistake, please contact us (${val}).`, }), ); } + +export const __testing = { containsDisallowedWords }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bf1f32fd42d7..78eb956b3682 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: link:packages/release '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.1.0(@types/node@20.5.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 4.0.15(vitest@4.1.0(@types/node@20.5.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) caniuse-lite: specifier: 1.0.30001778 version: 1.0.30001778 @@ -58,10 +58,10 @@ importers: version: 2.7.5 vitest: specifier: 4.1.0 - version: 4.1.0(@types/node@20.5.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@20.5.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) yaml: - specifier: 2.8.2 - version: 2.8.2 + specifier: 2.8.3 + version: 2.8.3 backend: dependencies: @@ -141,8 +141,8 @@ importers: specifier: 4.2.0 version: 4.2.0 nodemailer: - specifier: 7.0.11 - version: 7.0.11 + specifier: 8.0.4 + version: 8.0.4 object-hash: specifier: 3.0.0 version: 3.0.0 @@ -233,7 +233,7 @@ importers: version: 10.0.0 '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 4.0.15(vitest@4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))) concurrently: specifier: 8.2.2 version: 8.2.2 @@ -263,7 +263,7 @@ importers: version: 6.0.2 vitest: specifier: 4.1.0 - version: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) yaml: specifier: 2.8.2 version: 2.8.2 @@ -432,7 +432,7 @@ importers: version: 0.8.10(solid-js@1.9.10) '@tailwindcss/vite': specifier: 4.2.1 - version: 4.2.1(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.1(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@tanstack/eslint-plugin-query': specifier: 5.91.4 version: 5.91.4(eslint@9.39.1(jiti@2.6.1))(typescript@6.0.2) @@ -471,7 +471,7 @@ importers: version: 5.0.2 '@vitest/coverage-v8': specifier: 4.0.15 - version: 4.0.15(vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 4.0.15(vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) autoprefixer: specifier: 10.4.27 version: 10.4.27(postcss@8.5.8) @@ -497,8 +497,8 @@ importers: specifier: 4.4.0 version: 4.4.0(@fortawesome/fontawesome-free@5.15.4) happy-dom: - specifier: 20.0.10 - version: 20.0.10 + specifier: 20.8.9 + version: 20.8.9 jsdom: specifier: 27.4.0 version: 27.4.0 @@ -525,7 +525,7 @@ importers: version: 1.70.0 solid-devtools: specifier: 0.34.5 - version: 0.34.5(solid-js@1.9.10)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 0.34.5(solid-js@1.9.10)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) solid-js: specifier: 1.9.10 version: 1.9.10 @@ -545,8 +545,8 @@ importers: specifier: 3.0.0 version: 3.0.0 vite: - specifier: 8.0.1 - version: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 8.0.5 + version: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-bundle-visualizer: specifier: 1.2.1 version: 1.2.1(rollup@2.80.0) @@ -555,19 +555,19 @@ importers: version: 1.1.2 vite-plugin-inspect: specifier: 11.3.3 - version: 11.3.3(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 11.3.3(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-minify: specifier: 2.1.0 - version: 2.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-pwa: specifier: 1.1.0 - version: 1.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0) + version: 1.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0) vite-plugin-solid: specifier: 2.11.11 - version: 2.11.11(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.11.11(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.0 - version: 4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) frontend/storybook: dependencies: @@ -583,7 +583,7 @@ importers: version: 10.2.16(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-docs': specifier: ^10.2.14 - version: 10.2.16(@types/react@19.2.14)(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 10.2.16(@types/react@19.2.14)(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@storybook/addon-links': specifier: ^10.2.14 version: 10.2.16(react@18.3.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) @@ -592,22 +592,22 @@ importers: version: 10.2.16(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/addon-vitest': specifier: ^10.2.14 - version: 10.2.16(@vitest/browser-playwright@4.0.18)(@vitest/browser@4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0))(@vitest/runner@4.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vitest@4.1.0) + version: 10.2.16(@vitest/browser-playwright@4.0.18)(@vitest/browser@4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0))(@vitest/runner@4.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vitest@4.1.0) '@storybook/builder-vite': specifier: ^10.2.14 - version: 10.2.16(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 10.2.16(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@tailwindcss/vite': specifier: ^4.2.1 - version: 4.2.1(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.2.1(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/browser': specifier: ^4.0.18 - version: 4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) + version: 4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) '@vitest/browser-playwright': specifier: ^4.0.18 - version: 4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) + version: 4.0.18(playwright@1.58.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) '@vitest/coverage-v8': specifier: ^4.0.18 - version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0))(vitest@4.1.0) + version: 4.0.18(@vitest/browser@4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0))(vitest@4.1.0) playwright: specifier: ^1.58.2 version: 1.58.2 @@ -619,13 +619,13 @@ importers: version: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) storybook-solidjs-vite: specifier: ^10.0.9 - version: 10.0.9(@testing-library/jest-dom@6.9.1)(esbuild@0.27.3)(rollup@4.52.5)(solid-js@1.9.11)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 10.0.9(@testing-library/jest-dom@6.9.1)(esbuild@0.27.7)(rollup@4.60.1)(solid-js@1.9.11)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: ^7.3.2 + version: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vitest: specifier: ^4.1.0 - version: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/contracts: dependencies: @@ -656,13 +656,13 @@ importers: version: 0.20.0 tsup: specifier: 8.4.0 - version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3) typescript: specifier: 6.0.2 version: 6.0.2 vitest: specifier: 4.1.0 - version: 4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/funbox: dependencies: @@ -690,13 +690,13 @@ importers: version: 0.20.0 tsup: specifier: 8.4.0 - version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3) typescript: specifier: 6.0.2 version: 6.0.2 vitest: specifier: 4.1.0 - version: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/oxlint-config: devDependencies: @@ -707,8 +707,8 @@ importers: packages/release: dependencies: '@octokit/rest': - specifier: 21.1.1 - version: 21.1.1 + specifier: 22.0.1 + version: 22.0.1 dotenv: specifier: 16.4.5 version: 16.4.5 @@ -749,19 +749,19 @@ importers: version: 0.20.0 tsup: specifier: 8.4.0 - version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3) typescript: specifier: 6.0.2 version: 6.0.2 vitest: specifier: 4.1.0 - version: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/tsup-config: dependencies: tsup: specifier: 8.4.0 - version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3) devDependencies: '@monkeytype/typescript-config': specifier: workspace:* @@ -797,13 +797,13 @@ importers: version: 0.20.0 tsup: specifier: 8.4.0 - version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2) + version: 8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3) typescript: specifier: 6.0.2 version: 6.0.2 vitest: specifier: 4.1.0 - version: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) zod: specifier: 3.23.8 version: 3.23.8 @@ -1567,6 +1567,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.11': resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} engines: {node: '>=18'} @@ -1579,6 +1585,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.11': resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} engines: {node: '>=18'} @@ -1591,6 +1603,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.11': resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} engines: {node: '>=18'} @@ -1603,6 +1621,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.11': resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} engines: {node: '>=18'} @@ -1615,6 +1639,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.11': resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} engines: {node: '>=18'} @@ -1627,6 +1657,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.11': resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} engines: {node: '>=18'} @@ -1639,6 +1675,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.11': resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} engines: {node: '>=18'} @@ -1651,6 +1693,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.11': resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} engines: {node: '>=18'} @@ -1663,6 +1711,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.11': resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} engines: {node: '>=18'} @@ -1675,6 +1729,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.11': resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} engines: {node: '>=18'} @@ -1687,6 +1747,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.11': resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} engines: {node: '>=18'} @@ -1699,6 +1765,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.11': resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} engines: {node: '>=18'} @@ -1711,6 +1783,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.11': resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} engines: {node: '>=18'} @@ -1723,6 +1801,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.11': resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} engines: {node: '>=18'} @@ -1735,6 +1819,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.11': resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} engines: {node: '>=18'} @@ -1747,6 +1837,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.11': resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} engines: {node: '>=18'} @@ -1759,6 +1855,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.11': resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} engines: {node: '>=18'} @@ -1771,6 +1873,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.11': resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} engines: {node: '>=18'} @@ -1783,6 +1891,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.11': resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} engines: {node: '>=18'} @@ -1795,6 +1909,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.11': resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} engines: {node: '>=18'} @@ -1807,6 +1927,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.11': resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} engines: {node: '>=18'} @@ -1819,6 +1945,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.11': resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} engines: {node: '>=18'} @@ -1831,6 +1963,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.11': resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} engines: {node: '>=18'} @@ -1843,6 +1981,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.11': resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} engines: {node: '>=18'} @@ -1855,6 +1999,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.11': resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} engines: {node: '>=18'} @@ -1867,6 +2017,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2463,8 +2619,11 @@ packages: cpu: [x64] os: [win32] - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@napi-rs/wasm-runtime@1.1.2': + resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@neoconfetti/react@1.0.0': resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==} @@ -2504,63 +2663,57 @@ packages: resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@octokit/auth-token@5.1.2': - resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} - engines: {node: '>= 18'} - - '@octokit/core@6.1.5': - resolution: {integrity: sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==} - engines: {node: '>= 18'} + '@octokit/auth-token@6.0.0': + resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} + engines: {node: '>= 20'} - '@octokit/endpoint@10.1.4': - resolution: {integrity: sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==} - engines: {node: '>= 18'} + '@octokit/core@7.0.6': + resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} + engines: {node: '>= 20'} - '@octokit/graphql@8.2.2': - resolution: {integrity: sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==} - engines: {node: '>= 18'} + '@octokit/endpoint@11.0.3': + resolution: {integrity: sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==} + engines: {node: '>= 20'} - '@octokit/openapi-types@24.2.0': - resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} + '@octokit/graphql@9.0.3': + resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} + engines: {node: '>= 20'} - '@octokit/openapi-types@25.0.0': - resolution: {integrity: sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==} + '@octokit/openapi-types@27.0.0': + resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} - '@octokit/plugin-paginate-rest@11.6.0': - resolution: {integrity: sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==} - engines: {node: '>= 18'} + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} + engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-request-log@5.3.1': - resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} - engines: {node: '>= 18'} + '@octokit/plugin-request-log@6.0.0': + resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} + engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@13.5.0': - resolution: {integrity: sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==} - engines: {node: '>= 18'} + '@octokit/plugin-rest-endpoint-methods@17.0.0': + resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} + engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' - '@octokit/request-error@6.1.8': - resolution: {integrity: sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==} - engines: {node: '>= 18'} - - '@octokit/request@9.2.3': - resolution: {integrity: sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==} - engines: {node: '>= 18'} + '@octokit/request-error@7.1.0': + resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} + engines: {node: '>= 20'} - '@octokit/rest@21.1.1': - resolution: {integrity: sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==} - engines: {node: '>= 18'} + '@octokit/request@10.0.8': + resolution: {integrity: sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==} + engines: {node: '>= 20'} - '@octokit/types@13.10.0': - resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} + '@octokit/rest@22.0.1': + resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==} + engines: {node: '>= 20'} - '@octokit/types@14.0.0': - resolution: {integrity: sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==} + '@octokit/types@16.0.0': + resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} @@ -2641,8 +2794,8 @@ packages: resolution: {integrity: sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==} engines: {node: '>=14'} - '@oxc-project/types@0.120.0': - resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} '@oxfmt/binding-android-arm-eabi@0.44.0': resolution: {integrity: sha512-5UvghMd9SA/yvKTWCAxMAPXS1d2i054UeOf4iFjZjfayTwCINcC3oaSXjtbZfCaEpxgJod7XiOjTtby5yEv/BQ==} @@ -3066,97 +3219,97 @@ packages: resolution: {integrity: sha512-WMeg9TmAc0ZINp6Tza+ZWhMuIBM28us6ZyLj5DKWZhkBZhKaTNhXlmTYES11uM35eie+mYZStTov4vXYL//wqg==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@rolldown/binding-android-arm64@1.0.0-rc.10': - resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.10': - resolution: {integrity: sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.10': - resolution: {integrity: sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==} + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.10': - resolution: {integrity: sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': - resolution: {integrity: sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': - resolution: {integrity: sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': - resolution: {integrity: sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': - resolution: {integrity: sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': - resolution: {integrity: sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': - resolution: {integrity: sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': - resolution: {integrity: sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-rc.10': - resolution: {integrity: sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==} + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} @@ -3212,111 +3365,236 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.60.1': + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.52.5': resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.60.1': + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.52.5': resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.60.1': + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.52.5': resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.60.1': + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.52.5': resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.60.1': + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.52.5': resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.60.1': + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.52.5': resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.52.5': resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.60.1': + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.52.5': resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.60.1': + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-loong64-gnu@4.52.5': resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] + '@rollup/rollup-linux-loong64-gnu@4.60.1': + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.1': + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-ppc64-gnu@4.52.5': resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.52.5': resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-riscv64-musl@4.52.5': resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-musl@4.60.1': + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.52.5': resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.60.1': + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.52.5': resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.60.1': + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.52.5': resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.60.1': + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.60.1': + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} + cpu: [x64] + os: [openbsd] + '@rollup/rollup-openharmony-arm64@4.52.5': resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] + '@rollup/rollup-openharmony-arm64@4.60.1': + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.52.5': resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.60.1': + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.52.5': resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.60.1': + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-gnu@4.52.5': resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-gnu@4.60.1': + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.52.5': resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.60.1': + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + cpu: [x64] + os: [win32] + '@sentry-internal/browser-utils@10.44.0': resolution: {integrity: sha512-z9xz3T/v+MnfHY6kdUCmOZI8CiAl3LlKYtGH2p3rAsrxhwX+BTnUp01VhMVnEZIDgUXNt3AhJac+4kcDIPu1Hg==} engines: {node: '>=18'} @@ -4212,6 +4490,9 @@ packages: '@types/whatwg-url@11.0.5': resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@typescript-eslint/project-service@8.52.0': resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4763,8 +5044,8 @@ packages: resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} engines: {node: '>= 10.0.0'} - before-after-hook@3.0.2: - resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + before-after-hook@4.0.0: + resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} better-ajv-errors@1.2.0: resolution: {integrity: sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==} @@ -5808,6 +6089,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -5865,6 +6150,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -6027,8 +6317,8 @@ packages: fast-content-type-parse@1.1.0: resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} - fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + fast-content-type-parse@3.0.0: + resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -6496,8 +6786,8 @@ packages: hangul-js@0.2.6: resolution: {integrity: sha512-48axU8LgjCD30FEs66Xc04/8knxMwCMQw0f67l67rlttW7VXT3qRJgQeHmhiuGwWXGvSbk6YM0fhQlcjE1JFQA==} - happy-dom@20.0.10: - resolution: {integrity: sha512-6umCCHcjQrhP5oXhrHQQvLB0bwb1UzHAHdsXy+FjtKoYjUhmNZsQL8NivwM1vDvNEChJabVrUYxUnp/ZdYmy2g==} + happy-dom@20.8.9: + resolution: {integrity: sha512-Tz23LR9T9jOGVZm2x1EPdXqwA37G/owYMxRwU0E4miurAtFsPMQ1d2Jc2okUaSjZqAFz2oEn3FLXC5a0a+siyA==} engines: {node: '>=20.0.0'} hard-rejection@2.1.0: @@ -7166,6 +7456,9 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-with-bigint@3.5.8: + resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -8158,8 +8451,8 @@ packages: resolution: {integrity: sha512-1uiY543L+N7Og4yswvlm5NCKgPKDEXd9AUR9Jh3gen6oOeBsesr6LqhXom1er3eRzSUcVRWXzhv8tSNrIfGHKw==} engines: {node: '>=18'} - nodemailer@7.0.11: - resolution: {integrity: sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==} + nodemailer@8.0.4: + resolution: {integrity: sha512-k+jf6N8PfQJ0Fe8ZhJlgqU5qJU44Lpvp2yvidH3vp1lPnVQMgi4yEEMPXg5eJS1gFIJTVq1NHBk7Ia9ARdSBdQ==} engines: {node: '>=6.0.0'} nodemon@3.1.14: @@ -8563,10 +8856,6 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - picomatch@2.3.2: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} @@ -9071,8 +9360,8 @@ packages: engines: {node: 14 >=14.20 || 16 >=16.20 || >=18} hasBin: true - rolldown@1.0.0-rc.10: - resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==} + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -9099,6 +9388,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + router@1.3.8: resolution: {integrity: sha512-461UFH44NtSfIlS83PUg2N7OZo86BC/kB3dY77gJdsODsBhhw7+2uE0tzTINxrY9CahCUVk1VhpWCA5i1yoIEg==} engines: {node: '>= 0.8'} @@ -10213,8 +10507,8 @@ packages: resolution: {integrity: sha512-HXSMyIcf2XTvwZ6ZZQLfxfViRm/yTGoRgDeTbojtq6rezeyKB0sTBcKH2fhddnteAHRcHiKgr/ACpbgjGOC6RQ==} engines: {node: '>=12.18.2'} - universal-user-agent@7.0.2: - resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + universal-user-agent@7.0.3: + resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -10380,8 +10674,8 @@ packages: '@testing-library/jest-dom': optional: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@7.3.2: + resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -10420,14 +10714,14 @@ packages: yaml: optional: true - vite@8.0.1: - resolution: {integrity: sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==} + vite@8.0.5: + resolution: {integrity: sha512-nmu43Qvq9UopTRfMx2jOYW5l16pb3iDC1JH6yMuPkpVbzK0k+L7dfsEDH4jRgYFmsg0sTAqkojoZgzLMlwHsCQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 '@vitejs/devtools': ^0.1.0 - esbuild: ^0.27.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 sass: ^1.70.0 @@ -10784,6 +11078,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -11820,156 +12119,234 @@ snapshots: '@esbuild/aix-ppc64@0.27.3': optional: true + '@esbuild/aix-ppc64@0.27.7': + optional: true + '@esbuild/android-arm64@0.25.11': optional: true '@esbuild/android-arm64@0.27.3': optional: true + '@esbuild/android-arm64@0.27.7': + optional: true + '@esbuild/android-arm@0.25.11': optional: true '@esbuild/android-arm@0.27.3': optional: true + '@esbuild/android-arm@0.27.7': + optional: true + '@esbuild/android-x64@0.25.11': optional: true '@esbuild/android-x64@0.27.3': optional: true + '@esbuild/android-x64@0.27.7': + optional: true + '@esbuild/darwin-arm64@0.25.11': optional: true '@esbuild/darwin-arm64@0.27.3': optional: true + '@esbuild/darwin-arm64@0.27.7': + optional: true + '@esbuild/darwin-x64@0.25.11': optional: true '@esbuild/darwin-x64@0.27.3': optional: true + '@esbuild/darwin-x64@0.27.7': + optional: true + '@esbuild/freebsd-arm64@0.25.11': optional: true '@esbuild/freebsd-arm64@0.27.3': optional: true + '@esbuild/freebsd-arm64@0.27.7': + optional: true + '@esbuild/freebsd-x64@0.25.11': optional: true '@esbuild/freebsd-x64@0.27.3': optional: true + '@esbuild/freebsd-x64@0.27.7': + optional: true + '@esbuild/linux-arm64@0.25.11': optional: true '@esbuild/linux-arm64@0.27.3': optional: true + '@esbuild/linux-arm64@0.27.7': + optional: true + '@esbuild/linux-arm@0.25.11': optional: true '@esbuild/linux-arm@0.27.3': optional: true + '@esbuild/linux-arm@0.27.7': + optional: true + '@esbuild/linux-ia32@0.25.11': optional: true '@esbuild/linux-ia32@0.27.3': optional: true + '@esbuild/linux-ia32@0.27.7': + optional: true + '@esbuild/linux-loong64@0.25.11': optional: true '@esbuild/linux-loong64@0.27.3': optional: true + '@esbuild/linux-loong64@0.27.7': + optional: true + '@esbuild/linux-mips64el@0.25.11': optional: true '@esbuild/linux-mips64el@0.27.3': optional: true + '@esbuild/linux-mips64el@0.27.7': + optional: true + '@esbuild/linux-ppc64@0.25.11': optional: true '@esbuild/linux-ppc64@0.27.3': optional: true + '@esbuild/linux-ppc64@0.27.7': + optional: true + '@esbuild/linux-riscv64@0.25.11': optional: true '@esbuild/linux-riscv64@0.27.3': optional: true + '@esbuild/linux-riscv64@0.27.7': + optional: true + '@esbuild/linux-s390x@0.25.11': optional: true '@esbuild/linux-s390x@0.27.3': optional: true + '@esbuild/linux-s390x@0.27.7': + optional: true + '@esbuild/linux-x64@0.25.11': optional: true '@esbuild/linux-x64@0.27.3': optional: true + '@esbuild/linux-x64@0.27.7': + optional: true + '@esbuild/netbsd-arm64@0.25.11': optional: true '@esbuild/netbsd-arm64@0.27.3': optional: true + '@esbuild/netbsd-arm64@0.27.7': + optional: true + '@esbuild/netbsd-x64@0.25.11': optional: true '@esbuild/netbsd-x64@0.27.3': optional: true + '@esbuild/netbsd-x64@0.27.7': + optional: true + '@esbuild/openbsd-arm64@0.25.11': optional: true '@esbuild/openbsd-arm64@0.27.3': optional: true + '@esbuild/openbsd-arm64@0.27.7': + optional: true + '@esbuild/openbsd-x64@0.25.11': optional: true '@esbuild/openbsd-x64@0.27.3': optional: true + '@esbuild/openbsd-x64@0.27.7': + optional: true + '@esbuild/openharmony-arm64@0.25.11': optional: true '@esbuild/openharmony-arm64@0.27.3': optional: true + '@esbuild/openharmony-arm64@0.27.7': + optional: true + '@esbuild/sunos-x64@0.25.11': optional: true '@esbuild/sunos-x64@0.27.3': optional: true + '@esbuild/sunos-x64@0.27.7': + optional: true + '@esbuild/win32-arm64@0.25.11': optional: true '@esbuild/win32-arm64@0.27.3': optional: true + '@esbuild/win32-arm64@0.27.7': + optional: true + '@esbuild/win32-ia32@0.25.11': optional: true '@esbuild/win32-ia32@0.27.3': optional: true + '@esbuild/win32-ia32@0.27.7': + optional: true + '@esbuild/win32-x64@0.25.11': optional: true '@esbuild/win32-x64@0.27.3': optional: true + '@esbuild/win32-x64@0.27.7': + optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -11999,7 +12376,7 @@ snapshots: '@eslint/eslintrc@3.3.3': dependencies: - ajv: 6.12.6 + ajv: 6.14.0 debug: 4.4.3(supports-color@5.5.0) espree: 10.4.0 globals: 14.0.0 @@ -12708,11 +13085,11 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@6.0.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@6.0.2) - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: typescript: 6.0.2 @@ -12806,7 +13183,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@napi-rs/wasm-runtime@1.1.1': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)': dependencies: '@emnapi/core': 1.9.0 '@emnapi/runtime': 1.9.0 @@ -12856,73 +13233,68 @@ snapshots: '@npmcli/name-from-folder@2.0.0': {} - '@octokit/auth-token@5.1.2': {} + '@octokit/auth-token@6.0.0': {} - '@octokit/core@6.1.5': + '@octokit/core@7.0.6': dependencies: - '@octokit/auth-token': 5.1.2 - '@octokit/graphql': 8.2.2 - '@octokit/request': 9.2.3 - '@octokit/request-error': 6.1.8 - '@octokit/types': 14.0.0 - before-after-hook: 3.0.2 - universal-user-agent: 7.0.2 + '@octokit/auth-token': 6.0.0 + '@octokit/graphql': 9.0.3 + '@octokit/request': 10.0.8 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 + before-after-hook: 4.0.0 + universal-user-agent: 7.0.3 - '@octokit/endpoint@10.1.4': + '@octokit/endpoint@11.0.3': dependencies: - '@octokit/types': 14.0.0 - universal-user-agent: 7.0.2 + '@octokit/types': 16.0.0 + universal-user-agent: 7.0.3 - '@octokit/graphql@8.2.2': + '@octokit/graphql@9.0.3': dependencies: - '@octokit/request': 9.2.3 - '@octokit/types': 14.0.0 - universal-user-agent: 7.0.2 + '@octokit/request': 10.0.8 + '@octokit/types': 16.0.0 + universal-user-agent: 7.0.3 - '@octokit/openapi-types@24.2.0': {} - - '@octokit/openapi-types@25.0.0': {} - - '@octokit/plugin-paginate-rest@11.6.0(@octokit/core@6.1.5)': - dependencies: - '@octokit/core': 6.1.5 - '@octokit/types': 13.10.0 + '@octokit/openapi-types@27.0.0': {} - '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.5)': + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 6.1.5 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 - '@octokit/plugin-rest-endpoint-methods@13.5.0(@octokit/core@6.1.5)': + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/core': 6.1.5 - '@octokit/types': 13.10.0 + '@octokit/core': 7.0.6 - '@octokit/request-error@6.1.8': + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.6)': dependencies: - '@octokit/types': 14.0.0 + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 - '@octokit/request@9.2.3': + '@octokit/request-error@7.1.0': dependencies: - '@octokit/endpoint': 10.1.4 - '@octokit/request-error': 6.1.8 - '@octokit/types': 14.0.0 - fast-content-type-parse: 2.0.1 - universal-user-agent: 7.0.2 + '@octokit/types': 16.0.0 - '@octokit/rest@21.1.1': + '@octokit/request@10.0.8': dependencies: - '@octokit/core': 6.1.5 - '@octokit/plugin-paginate-rest': 11.6.0(@octokit/core@6.1.5) - '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.5) - '@octokit/plugin-rest-endpoint-methods': 13.5.0(@octokit/core@6.1.5) + '@octokit/endpoint': 11.0.3 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 + fast-content-type-parse: 3.0.0 + json-with-bigint: 3.5.8 + universal-user-agent: 7.0.3 - '@octokit/types@13.10.0': + '@octokit/rest@22.0.1': dependencies: - '@octokit/openapi-types': 24.2.0 + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.6) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) - '@octokit/types@14.0.0': + '@octokit/types@16.0.0': dependencies: - '@octokit/openapi-types': 25.0.0 + '@octokit/openapi-types': 27.0.0 '@one-ini/wasm@0.1.1': {} @@ -13004,7 +13376,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.34.0': {} - '@oxc-project/types@0.120.0': {} + '@oxc-project/types@0.122.0': {} '@oxfmt/binding-android-arm-eabi@0.44.0': optional: true @@ -13320,7 +13692,7 @@ snapshots: colorette: 1.4.0 js-levenshtein: 1.1.6 js-yaml: 4.1.1 - picomatch: 4.0.3 + picomatch: 4.0.4 pluralize: 8.0.0 yaml-ast-parser: 0.0.43 @@ -13337,56 +13709,59 @@ snapshots: jsonpath-rfc9535: 1.3.0 openapi-sampler: 1.7.2 outdent: 0.8.0 - picomatch: 4.0.3 + picomatch: 4.0.4 - '@rolldown/binding-android-arm64@1.0.0-rc.10': + '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.10': + '@rolldown/binding-darwin-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': optional: true - '@rolldown/pluginutils@1.0.0-rc.10': {} + '@rolldown/pluginutils@1.0.0-rc.12': {} '@rollup/plugin-babel@5.3.1(@babel/core@7.28.6)(@types/babel__core@7.20.5)(rollup@2.80.0)': dependencies: @@ -13441,69 +13816,144 @@ snapshots: '@rollup/rollup-android-arm-eabi@4.52.5': optional: true + '@rollup/rollup-android-arm-eabi@4.60.1': + optional: true + '@rollup/rollup-android-arm64@4.52.5': optional: true + '@rollup/rollup-android-arm64@4.60.1': + optional: true + '@rollup/rollup-darwin-arm64@4.52.5': optional: true + '@rollup/rollup-darwin-arm64@4.60.1': + optional: true + '@rollup/rollup-darwin-x64@4.52.5': optional: true + '@rollup/rollup-darwin-x64@4.60.1': + optional: true + '@rollup/rollup-freebsd-arm64@4.52.5': optional: true + '@rollup/rollup-freebsd-arm64@4.60.1': + optional: true + '@rollup/rollup-freebsd-x64@4.52.5': optional: true + '@rollup/rollup-freebsd-x64@4.60.1': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-arm64-gnu@4.60.1': + optional: true + '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true + '@rollup/rollup-linux-arm64-musl@4.60.1': + optional: true + '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-loong64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.1': + optional: true + '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + optional: true + '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true + '@rollup/rollup-linux-riscv64-musl@4.60.1': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true + '@rollup/rollup-linux-s390x-gnu@4.60.1': + optional: true + '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true + '@rollup/rollup-linux-x64-gnu@4.60.1': + optional: true + '@rollup/rollup-linux-x64-musl@4.52.5': optional: true + '@rollup/rollup-linux-x64-musl@4.60.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.1': + optional: true + '@rollup/rollup-openharmony-arm64@4.52.5': optional: true + '@rollup/rollup-openharmony-arm64@4.60.1': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true + '@rollup/rollup-win32-arm64-msvc@4.60.1': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.52.5': optional: true + '@rollup/rollup-win32-ia32-msvc@4.60.1': + optional: true + '@rollup/rollup-win32-x64-gnu@4.52.5': optional: true + '@rollup/rollup-win32-x64-gnu@4.60.1': + optional: true + '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true + '@rollup/rollup-win32-x64-msvc@4.60.1': + optional: true + '@sentry-internal/browser-utils@10.44.0': dependencies: '@sentry/core': 10.44.0 @@ -13830,10 +14280,10 @@ snapshots: axe-core: 4.11.1 storybook: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs@10.2.16(@types/react@19.2.14)(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@storybook/addon-docs@10.2.16(@types/react@19.2.14)(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@18.3.1) - '@storybook/csf-plugin': 10.2.16(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/csf-plugin': 10.2.16(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.2.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -13858,39 +14308,39 @@ snapshots: dependencies: storybook: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-vitest@10.2.16(@vitest/browser-playwright@4.0.18)(@vitest/browser@4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0))(@vitest/runner@4.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vitest@4.1.0)': + '@storybook/addon-vitest@10.2.16(@vitest/browser-playwright@4.0.18)(@vitest/browser@4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0))(@vitest/runner@4.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vitest@4.1.0)': dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) storybook: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@vitest/browser': 4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) - '@vitest/browser-playwright': 4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) + '@vitest/browser': 4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) + '@vitest/browser-playwright': 4.0.18(playwright@1.58.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) '@vitest/runner': 4.1.0 - vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - react - react-dom - '@storybook/builder-vite@10.2.16(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@storybook/builder-vite@10.2.16(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - '@storybook/csf-plugin': 10.2.16(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/csf-plugin': 10.2.16(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) storybook: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.2.16(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@storybook/csf-plugin@10.2.16(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: storybook: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.27.3 - rollup: 4.52.5 - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + esbuild: 0.27.7 + rollup: 4.60.1 + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@storybook/global@5.0.0': {} @@ -13973,19 +14423,19 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 - '@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.2.1(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.1 '@tailwindcss/oxide': 4.2.1 tailwindcss: 4.2.1 - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@tailwindcss/vite@4.2.1(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.2.1(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.1 '@tailwindcss/oxide': 4.2.1 tailwindcss: 4.2.1 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@tanstack/db-ivm@0.1.17(typescript@6.0.2)': dependencies: @@ -14510,6 +14960,10 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.3 + '@types/ws@8.18.1': + dependencies: + '@types/node': 24.9.1 + '@typescript-eslint/project-service@8.52.0(typescript@6.0.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@6.0.2) @@ -14583,29 +15037,29 @@ snapshots: '@typescript-eslint/types': 8.52.0 eslint-visitor-keys: 4.2.1 - '@vitest/browser-playwright@4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0)': + '@vitest/browser-playwright@4.0.18(playwright@1.58.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0)': dependencies: - '@vitest/browser': 4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/browser': 4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) + '@vitest/mocker': 4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) playwright: 1.58.2 tinyrainbow: 3.0.3 - vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0)': + '@vitest/browser@4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0)': dependencies: - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/utils': 4.0.18 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) ws: 8.19.0 transitivePeerDependencies: - bufferutil @@ -14613,7 +15067,7 @@ snapshots: - utf-8-validate - vite - '@vitest/coverage-v8@4.0.15(vitest@4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@vitest/coverage-v8@4.0.15(vitest@4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -14626,11 +15080,11 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.15(vitest@4.1.0(@types/node@20.5.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@vitest/coverage-v8@4.0.15(vitest@4.1.0(@types/node@20.5.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -14643,11 +15097,11 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.1.0(@types/node@20.5.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@20.5.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.15(vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@vitest/coverage-v8@4.0.15(vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.15 @@ -14660,11 +15114,11 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0))(vitest@4.1.0)': + '@vitest/coverage-v8@4.0.18(@vitest/browser@4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0))(vitest@4.1.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.18 @@ -14676,9 +15130,9 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) optionalDependencies: - '@vitest/browser': 4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) + '@vitest/browser': 4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) '@vitest/expect@3.2.4': dependencies: @@ -14697,53 +15151,61 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.0(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + + '@vitest/mocker@4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + dependencies: + '@vitest/spy': 4.1.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -14951,7 +15413,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 app-module-path@2.2.0: {} @@ -15216,7 +15678,7 @@ snapshots: - encoding - supports-color - before-after-hook@3.0.2: {} + before-after-hook@4.0.0: {} better-ajv-errors@1.2.0(@redocly/ajv@8.18.0): dependencies: @@ -16153,7 +16615,7 @@ snapshots: docker-compose@1.3.0: dependencies: - yaml: 2.8.2 + yaml: 2.8.3 docker-modem@5.0.6: dependencies: @@ -16309,6 +16771,8 @@ snapshots: entities@6.0.1: {} + entities@7.0.1: {} + env-paths@2.2.1: optional: true @@ -16463,6 +16927,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + escalade@3.2.0: {} escape-goat@2.1.1: {} @@ -16735,7 +17228,7 @@ snapshots: fast-content-type-parse@1.1.0: {} - fast-content-type-parse@2.0.1: {} + fast-content-type-parse@3.0.0: {} fast-decode-uri-component@1.0.1: {} @@ -16815,9 +17308,9 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fecha@4.2.3: {} @@ -17439,11 +17932,17 @@ snapshots: hangul-js@0.2.6: {} - happy-dom@20.0.10: + happy-dom@20.8.9: dependencies: - '@types/node': 20.14.11 + '@types/node': 24.9.1 '@types/whatwg-mimetype': 3.0.2 + '@types/ws': 8.18.1 + entities: 7.0.1 whatwg-mimetype: 3.0.0 + ws: 8.19.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate hard-rejection@2.1.0: {} @@ -18112,6 +18611,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-with-bigint@3.5.8: {} + json5@2.2.3: {} jsonfile@6.2.0: @@ -18362,7 +18863,7 @@ snapshots: object-inspect: 1.13.4 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.8.2 + yaml: 2.8.3 transitivePeerDependencies: - enquirer - supports-color @@ -18652,7 +19153,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.52.0: {} @@ -19253,7 +19754,7 @@ snapshots: dependencies: '@babel/parser': 7.28.6 - nodemailer@7.0.11: {} + nodemailer@8.0.4: {} nodemon@3.1.14: dependencies: @@ -19442,7 +19943,7 @@ snapshots: openapi3-ts@3.2.0: dependencies: - yaml: 2.8.2 + yaml: 2.8.3 optionator@0.9.4: dependencies: @@ -19724,8 +20225,6 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - picomatch@2.3.2: {} picomatch@4.0.3: {} @@ -19778,14 +20277,14 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.2): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.3): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.6.1 postcss: 8.5.8 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 postcss-value-parser@4.2.0: {} @@ -20099,7 +20598,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 readdirp@4.1.2: {} @@ -20277,31 +20776,34 @@ snapshots: dependencies: glob: 10.4.5 - rolldown@1.0.0-rc.10: + rolldown@1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0): dependencies: - '@oxc-project/types': 0.120.0 - '@rolldown/pluginutils': 1.0.0-rc.10 + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.10 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.10 - '@rolldown/binding-darwin-x64': 1.0.0-rc.10 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.10 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.10 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.10 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.10 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.10 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.10 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.10 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.10 + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' rollup-plugin-visualizer@5.14.0(rollup@2.80.0): dependencies: open: 8.4.2 - picomatch: 4.0.3 + picomatch: 4.0.4 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: @@ -20339,6 +20841,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 + rollup@4.60.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 + fsevents: 2.3.3 + router@1.3.8: dependencies: array-flatten: 3.0.0 @@ -20725,7 +21258,7 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - solid-devtools@0.34.5(solid-js@1.9.10)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + solid-devtools@0.34.5(solid-js@1.9.10)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@babel/core': 7.28.6 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6) @@ -20734,7 +21267,7 @@ snapshots: '@solid-devtools/shared': 0.20.0(solid-js@1.9.10) solid-js: 1.9.10 optionalDependencies: - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -20875,15 +21408,15 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook-solidjs-vite@10.0.9(@testing-library/jest-dom@6.9.1)(esbuild@0.27.3)(rollup@4.52.5)(solid-js@1.9.11)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + storybook-solidjs-vite@10.0.9(@testing-library/jest-dom@6.9.1)(esbuild@0.27.7)(rollup@4.60.1)(solid-js@1.9.11)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@6.0.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) - '@storybook/builder-vite': 10.2.16(esbuild@0.27.3)(rollup@4.52.5)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@6.0.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@storybook/builder-vite': 10.2.16(esbuild@0.27.7)(rollup@4.60.1)(storybook@10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@storybook/global': 5.0.0 solid-js: 1.9.11 storybook: 10.2.16(@testing-library/dom@10.4.1)(prettier@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) - vite-plugin-solid: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.11)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite-plugin-solid: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.11)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: @@ -21337,8 +21870,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@2.1.0: {} @@ -21459,7 +21992,7 @@ snapshots: tsscmp@1.0.6: {} - tsup@8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.2): + tsup@8.4.0(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@6.0.2)(yaml@2.8.3): dependencies: bundle-require: 5.1.0(esbuild@0.25.11) cac: 6.7.14 @@ -21469,7 +22002,7 @@ snapshots: esbuild: 0.25.11 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.2) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.3) resolve-from: 5.0.0 rollup: 4.52.5 source-map: 0.8.0-beta.0 @@ -21655,7 +22188,7 @@ snapshots: transitivePeerDependencies: - supports-color - universal-user-agent@7.0.2: {} + universal-user-agent@7.0.3: {} universalify@2.0.1: {} @@ -21670,7 +22203,7 @@ snapshots: unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 unplugin@1.0.1: dependencies: @@ -21688,7 +22221,7 @@ snapshots: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.15.0 - picomatch: 4.0.3 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 upath@1.2.0: {} @@ -21768,19 +22301,19 @@ snapshots: - rollup - supports-color - vite-dev-rpc@1.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-dev-rpc@1.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: birpc: 2.6.1 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) - vite-hot-client: 2.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite-hot-client: 2.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - vite-hot-client@2.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-hot-client@2.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-html-inject@1.1.2: {} - vite-plugin-inspect@11.3.3(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-inspect@11.3.3(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: ansis: 4.2.0 debug: 4.4.3(supports-color@5.5.0) @@ -21790,29 +22323,29 @@ snapshots: perfect-debounce: 2.0.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) - vite-dev-rpc: 1.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite-dev-rpc: 1.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - supports-color - vite-plugin-minify@2.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-minify@2.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@types/html-minifier-terser': 7.0.2 html-minifier-terser: 7.2.0 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-pwa@1.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0): + vite-plugin-pwa@1.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0): dependencies: debug: 4.4.3(supports-color@5.5.0) pretty-bytes: 6.1.1 tinyglobby: 0.2.15 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) workbox-build: 7.1.1(@types/babel__core@7.20.5) workbox-window: 7.1.0 transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.11)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.11)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@babel/core': 7.28.6 '@types/babel__core': 7.20.5 @@ -21820,14 +22353,14 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.11 solid-refresh: 0.6.3(solid-js@1.9.11) - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vitefu: 1.1.1(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) optionalDependencies: '@testing-library/jest-dom': 6.9.1 transitivePeerDependencies: - supports-color - vite-plugin-solid@2.11.11(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-solid@2.11.11(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@babel/core': 7.28.6 '@types/babel__core': 7.20.5 @@ -21835,20 +22368,20 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.10 solid-refresh: 0.6.3(solid-js@1.9.10) - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.1(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vitefu: 1.1.1(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) optionalDependencies: '@testing-library/jest-dom': 6.9.1 transitivePeerDependencies: - supports-color - vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 - rollup: 4.52.5 + rollup: 4.60.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.9.1 @@ -21858,31 +22391,34 @@ snapshots: sass: 1.98.0 terser: 5.46.1 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 - vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.10 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 20.5.1 - esbuild: 0.27.3 + esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.6.1 sass: 1.98.0 terser: 5.46.1 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vite@8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.10 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.9.1 @@ -21892,54 +22428,83 @@ snapshots: sass: 1.98.0 terser: 5.46.1 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.10 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.9.1 - esbuild: 0.27.3 + esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.6.1 sass: 1.70.0 terser: 5.46.1 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.10 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.9.1 - esbuild: 0.27.3 + esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.6.1 sass: 1.98.0 terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.2 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + + vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.8 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0) + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.9.1 + esbuild: 0.27.7 + fsevents: 2.3.3 + jiti: 2.6.1 + sass: 1.98.0 + terser: 5.46.1 + tsx: 4.21.0 + yaml: 2.8.3 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vitefu@1.1.1(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): optionalDependencies: - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vitefu@1.1.1(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitefu@1.1.1(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): optionalDependencies: - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vitest@4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.0(@opentelemetry/api@1.8.0)(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -21956,20 +22521,20 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.8.0 '@types/node': 24.9.1 - happy-dom: 20.0.10 + happy-dom: 20.8.9 jsdom: 27.4.0 transitivePeerDependencies: - msw - vitest@4.1.0(@types/node@20.5.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.0(@types/node@20.5.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -21986,19 +22551,49 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 8.0.1(@types/node@20.5.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@20.5.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.5.1 - happy-dom: 20.0.10 + happy-dom: 20.8.9 + jsdom: 27.4.0 + transitivePeerDependencies: + - msw + + vitest@4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.9.1 + '@vitest/browser-playwright': 4.0.18(playwright@1.58.2)(vite@7.3.2(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.0) + happy-dom: 20.8.9 jsdom: 27.4.0 transitivePeerDependencies: - msw - vitest@4.1.0(@types/node@24.9.1)(@vitest/browser-playwright@4.0.18)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -22015,20 +22610,19 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.1 - '@vitest/browser-playwright': 4.0.18(playwright@1.58.2)(vite@7.3.1(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.1.0) - happy-dom: 20.0.10 + happy-dom: 20.8.9 jsdom: 27.4.0 transitivePeerDependencies: - msw - vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -22045,19 +22639,19 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.25.11)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.1 - happy-dom: 20.0.10 + happy-dom: 20.8.9 jsdom: 27.4.0 transitivePeerDependencies: - msw - vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.0.10)(jsdom@27.4.0)(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.0(@types/node@24.9.1)(happy-dom@20.8.9)(jsdom@27.4.0)(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.0(vite@8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -22074,11 +22668,11 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 8.0.1(@types/node@24.9.1)(esbuild@0.27.3)(jiti@2.6.1)(sass@1.70.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.5(@emnapi/core@1.9.0)(@emnapi/runtime@1.9.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.9.1 - happy-dom: 20.0.10 + happy-dom: 20.8.9 jsdom: 27.4.0 transitivePeerDependencies: - msw @@ -22425,6 +23019,8 @@ snapshots: yaml@2.8.2: {} + yaml@2.8.3: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {}