From 551b1c96220ae728e4698b484959f2badc9cb226 Mon Sep 17 00:00:00 2001 From: Pauline Date: Thu, 13 Feb 2025 15:58:38 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(tests):=20fix=20t?= =?UTF-8?q?esting,=20fix=20some=20bugs=20in=20the=20new=20pkgs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Pauline --- .github/labels.yml | 2 + .npmrc | 1 + .vscode/settings.json | 2 +- bump.config.ts | 13 - eslint.config.ts | 4 - package.json | 31 +- packages/create-petal/package.json | 4 +- packages/crypto/README.md | 13 + packages/crypto/package.json | 76 +- packages/crypto/src/index.ts | 2 + packages/crypto/src/lib/advanced.ts | 77 + packages/crypto/src/lib/base.ts | 58 + .../crypto/tests/{.gitkeep => base.test.ts} | 0 packages/crypto/tsup.config.ts | 2 +- packages/crypto/vitest.config.ts | 3 + .../eslint-plugin/docs/indent-unindent.md | 45 - .../docs/only-export-components.md | 129 - packages/eslint-plugin/package.json | 10 +- packages/eslint-plugin/src/index.ts | 27 +- .../src/rules/indent-unindent.ts | 70 - .../src/rules/no-discard-result.ts | 133 - .../src/rules/only-export-components.ts | 237 -- .../tests/rules/indent-unindent.test.ts | 62 - .../tests/rules/no-discard-result.test.ts | 139 - .../rules/only-export-components.test.ts | 327 -- packages/eslint/README.md | 9 +- packages/eslint/package.json | 46 +- packages/eslint/src/configs/imports.ts | 1 + packages/eslint/src/configs/javascript.ts | 4 +- packages/eslint/src/configs/markdown.ts | 3 +- packages/eslint/src/configs/node.ts | 3 - packages/eslint/src/configs/react.ts | 78 +- packages/eslint/src/configs/stylistic.ts | 2 +- packages/eslint/src/configs/test.ts | 3 +- packages/eslint/src/configs/vue.ts | 1 + packages/eslint/src/factory.ts | 16 +- packages/eslint/src/types/configs/test.ts | 3 +- .../eslint/src/types/configs/typescript.ts | 2 +- packages/eslint/src/types/index.ts | 16 +- .../tests/fixtures/output/all/astro.astro | 2 +- .../tests/fixtures/output/all/javascript.js | 2 +- .../tests/fixtures/output/all/markdown.md | 2 +- .../tests/fixtures/output/all/svelte.svelte | 2 +- .../tests/fixtures/output/all/typescript.ts | 4 +- .../tests/fixtures/output/all/vue-ts.vue | 2 +- .../eslint/tests/fixtures/output/all/vue.vue | 2 +- .../tests/fixtures/output/js/javascript.js | 2 +- .../tests/fixtures/output/js/markdown.md | 2 +- .../no-markdown-with-formatters/javascript.js | 2 +- .../no-markdown-with-formatters/markdown.md | 2 +- .../no-markdown-with-formatters/typescript.ts | 4 +- .../fixtures/output/no-style/javascript.js | 2 +- .../tests/fixtures/output/no-style/toml.toml | 2 +- .../fixtures/output/no-style/typescript.ts | 3 +- .../tests/fixtures/output/no-style/vue-ts.vue | 2 +- .../tests/fixtures/output/no-style/vue.vue | 2 +- .../output/tab-double-quotes/javascript.js | 2 +- .../output/tab-double-quotes/markdown.md | 2 +- .../output/tab-double-quotes/typescript.ts | 4 +- .../output/tab-double-quotes/vue-ts.vue | 2 +- .../fixtures/output/tab-double-quotes/vue.vue | 2 +- .../fixtures/output/ts-override/javascript.js | 2 +- .../fixtures/output/ts-override/markdown.md | 2 +- .../fixtures/output/ts-override/typescript.ts | 4 +- .../fixtures/output/ts-override/vue-ts.vue | 2 +- .../tests/fixtures/output/ts-override/vue.vue | 2 +- .../output/ts-strict-with-react/typescript.ts | 2 +- .../fixtures/output/ts-strict/typescript.ts | 2 +- .../output/with-formatters/astro.astro | 2 +- .../fixtures/output/with-formatters/css.css | 2 +- .../output/with-formatters/javascript.js | 2 +- .../output/with-formatters/markdown.md | 2 +- .../output/with-formatters/typescript.ts | 4 +- .../output/with-formatters/vue-ts.vue | 2 +- .../fixtures/output/with-formatters/vue.vue | 2 +- .../fixtures/output/with-formatters/xml.xml | 2 +- packages/eslint/tests/utils.test.ts | 4 +- packages/fetch/package.json | 2 +- packages/fetch/src/lib/fetch.ts | 3 +- packages/iterator/package.json | 150 +- packages/iterator/src/index.ts | 2 +- packages/iterator/src/lib/average.ts | 3 +- packages/iterator/src/lib/compareBy.ts | 6 +- packages/iterator/src/lib/compress.ts | 3 +- packages/iterator/src/lib/count.ts | 3 +- packages/iterator/src/lib/equalBy.ts | 3 +- packages/iterator/src/lib/first.ts | 3 +- packages/iterator/src/lib/inspect.ts | 3 +- packages/iterator/src/lib/intersperse.ts | 3 +- packages/iterator/src/lib/isEmpty.ts | 3 +- packages/iterator/src/lib/isSortedBy.ts | 3 +- packages/iterator/src/lib/isSortedByKey.ts | 3 +- packages/iterator/src/lib/maxBy.ts | 3 +- packages/iterator/src/lib/maxByKey.ts | 3 +- packages/iterator/src/lib/minBy.ts | 3 +- packages/iterator/src/lib/minByKey.ts | 3 +- packages/iterator/src/lib/peekable.ts | 3 +- packages/iterator/src/lib/stepBy.ts | 3 +- packages/iterator/src/lib/sum.ts | 3 +- packages/iterator/src/lib/take.ts | 3 +- packages/iterator/src/lib/tee.ts | 3 +- .../iterator/src/lib/toIterableIterator.ts | 3 +- packages/iterator/src/lib/windows.ts | 3 +- packages/iterator/src/lib/zip.ts | 3 +- packages/iterator/tests/average.test.ts | 4 +- packages/iterator/tests/chunk.test.ts | 4 +- packages/iterator/tests/product.test.ts | 2 +- packages/iterator/tests/sum.test.ts | 12 +- packages/loader/package.json | 10 +- .../loader/src/lib/structures/AliasPiece.ts | 3 +- packages/loader/src/lib/structures/Piece.ts | 6 +- packages/loader/src/lib/structures/Store.ts | 9 +- .../src/lib/structures/StoreRegistry.ts | 3 +- packages/loader/src/lib/utils.ts | 28 +- packages/loader/tests/RootScan.test.ts | 3 +- packages/metadata/package.json | 8 +- packages/node/package.json | 8 +- .../tests/eventIteratorFixture/MockEmitter.ts | 3 +- packages/result/package.json | 2 +- packages/result/src/lib/Option.ts | 3 +- packages/result/src/lib/Result.ts | 6 +- packages/scripts/package.json | 6 +- packages/scripts/tsup.config.ts | 3 +- .../scripts/turbo/generators/package.json | 3 + .../templates/default/LICENSE-APACHE | 202 + .../generators/templates/default/LICENSE-MIT | 21 + .../generators/templates/default/LICENSE-OQL | 57 + .../templates/default/README.md.hbs | 13 + .../generators/templates/default/jsr.json.hbs | 12 + .../templates/default/package.json.hbs | 69 + .../templates/default/tsconfig.json | 16 + .../templates/default/tsup.config.ts.hbs | 3 + .../templates/default/vitest.config.ts.hbs | 3 + packages/scripts/vitest.config.ts | 3 +- packages/store/README.md | 2 +- packages/store/package.json | 8 +- packages/store/src/index.ts | 1 + packages/store/src/lib/Schema.ts | 46 +- packages/store/src/lib/SchemaStore.ts | 22 +- packages/store/src/lib/types/String.ts | 2 - .../store/src/lib/types/base/DuplexBuffer.ts | 42 + packages/store/src/lib/types/base/IType.ts | 6 +- .../lib/types/base/UnalignedUint16Array.ts | 10 +- packages/store/tests/Schema.test.ts | 38 +- packages/store/tests/SchemaStore.test.ts | 9 +- packages/store/vitest.config.ts | 8 +- packages/types/jsr.json | 17 +- packages/types/package.json | 51 +- packages/types/src/index.ts | 15 + packages/types/src/lib/AbstractClass.ts | 18 + packages/types/src/lib/AbstractConstructor.ts | 17 +- .../src/lib/AccessorPropertyDescriptor.ts | 14 + packages/types/src/lib/As.ts | 14 + packages/types/src/lib/Class.ts | 15 + packages/types/src/lib/Constructor.ts | 15 +- packages/types/src/lib/FunctionKeys.ts | 9 + packages/types/src/lib/Is.ts | 11 + packages/types/src/lib/KeyOf.ts | 16 + packages/types/src/lib/MaybeVoidable.ts | 15 + .../types/src/lib/OptionalParametersOf.ts | 24 + packages/types/src/lib/Or.ts | 5 + packages/types/src/lib/ParamatersOf.ts | 14 + packages/types/src/lib/PropertyKeys.ts | 68 + packages/types/src/lib/ValueOf.ts | 4 + packages/types/src/lib/Voidable.ts | 6 + packages/types/src/lib/VoidableArgument.ts | 8 + packages/typescript/package.json | 6 +- packages/utilities/jsr.json | 4 + packages/utilities/package.json | 56 +- packages/utilities/src/index.ts | 4 + packages/utilities/src/lib/brand.ts | 57 + packages/utilities/src/lib/branded.ts | 24 + packages/utilities/src/lib/flavor.ts | 15 + packages/utilities/src/lib/flavored.ts | 25 + packages/utilities/src/lib/objectEntries.ts | 4 +- packages/utilities/src/lib/objectKeys.ts | 4 +- packages/utilities/src/lib/objectValues.ts | 4 +- packages/utilities/src/lib/pollSync.ts | 2 +- packages/utilities/tests/asyncQueue.test.ts | 3 +- .../utilities/tests/browser/browser.test.ts | 3 +- .../utilities/tests/getDeepObjectKeys.test.ts | 3 +- .../utilities/tests/jsonEncodable.test.ts | 3 +- .../utilities/tests/objectEntries.test.ts | 32 +- packages/utilities/tests/objectKeys.test.ts | 18 +- packages/utilities/tests/objectValues.test.ts | 20 +- packages/utilities/tests/pollSync.test.ts | 12 +- packages/utilities/tests/snowflake.test.ts | 3 +- packages/utilities/tests/timestamp.test.ts | 3 +- packages/utilities/vitest.config.ts | 2 +- pnpm-lock.yaml | 3340 +++++++++-------- turbo.json | 2 +- 191 files changed, 3533 insertions(+), 3163 deletions(-) create mode 100644 packages/crypto/README.md create mode 100644 packages/crypto/src/lib/advanced.ts create mode 100644 packages/crypto/src/lib/base.ts rename packages/crypto/tests/{.gitkeep => base.test.ts} (100%) create mode 100644 packages/crypto/vitest.config.ts delete mode 100644 packages/eslint-plugin/docs/indent-unindent.md delete mode 100644 packages/eslint-plugin/docs/only-export-components.md delete mode 100644 packages/eslint-plugin/src/rules/indent-unindent.ts delete mode 100644 packages/eslint-plugin/src/rules/no-discard-result.ts delete mode 100644 packages/eslint-plugin/src/rules/only-export-components.ts delete mode 100644 packages/eslint-plugin/tests/rules/indent-unindent.test.ts delete mode 100644 packages/eslint-plugin/tests/rules/no-discard-result.test.ts delete mode 100644 packages/eslint-plugin/tests/rules/only-export-components.test.ts create mode 100644 packages/scripts/turbo/generators/package.json create mode 100644 packages/scripts/turbo/generators/templates/default/LICENSE-APACHE create mode 100644 packages/scripts/turbo/generators/templates/default/LICENSE-MIT create mode 100644 packages/scripts/turbo/generators/templates/default/LICENSE-OQL create mode 100644 packages/scripts/turbo/generators/templates/default/README.md.hbs create mode 100644 packages/scripts/turbo/generators/templates/default/jsr.json.hbs create mode 100644 packages/scripts/turbo/generators/templates/default/package.json.hbs create mode 100644 packages/scripts/turbo/generators/templates/default/tsconfig.json create mode 100644 packages/scripts/turbo/generators/templates/default/tsup.config.ts.hbs create mode 100644 packages/scripts/turbo/generators/templates/default/vitest.config.ts.hbs create mode 100644 packages/store/src/lib/types/base/DuplexBuffer.ts create mode 100644 packages/types/src/lib/AbstractClass.ts create mode 100644 packages/types/src/lib/AccessorPropertyDescriptor.ts create mode 100644 packages/types/src/lib/As.ts create mode 100644 packages/types/src/lib/Class.ts create mode 100644 packages/types/src/lib/FunctionKeys.ts create mode 100644 packages/types/src/lib/Is.ts create mode 100644 packages/types/src/lib/KeyOf.ts create mode 100644 packages/types/src/lib/MaybeVoidable.ts create mode 100644 packages/types/src/lib/OptionalParametersOf.ts create mode 100644 packages/types/src/lib/Or.ts create mode 100644 packages/types/src/lib/ParamatersOf.ts create mode 100644 packages/types/src/lib/PropertyKeys.ts create mode 100644 packages/types/src/lib/ValueOf.ts create mode 100644 packages/types/src/lib/Voidable.ts create mode 100644 packages/types/src/lib/VoidableArgument.ts create mode 100644 packages/utilities/src/lib/brand.ts create mode 100644 packages/utilities/src/lib/branded.ts create mode 100644 packages/utilities/src/lib/flavor.ts create mode 100644 packages/utilities/src/lib/flavored.ts diff --git a/.github/labels.yml b/.github/labels.yml index 41df6c36..b5a369be 100644 --- a/.github/labels.yml +++ b/.github/labels.yml @@ -40,6 +40,8 @@ color: fbca04 - name: packages:crypto color: fbca04 +- name: packages:crypto + color: fbca04 - name: packages:eslint color: fbca04 - name: packages:eslint-plugin diff --git a/.npmrc b/.npmrc index 9babefe9..6deff673 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,3 @@ registry=https://registry.npmjs.org @jsr:registry=https://npm.jsr.io +strict-dep-builds=true diff --git a/.vscode/settings.json b/.vscode/settings.json index ffb5f966..43f3a1bc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -48,5 +48,5 @@ "postcss" ], - "npm.packageManager": "pnpm", + "npm.packageManager": "pnpm" } diff --git a/bump.config.ts b/bump.config.ts index 9bcdd0be..0625bb97 100644 --- a/bump.config.ts +++ b/bump.config.ts @@ -1,19 +1,6 @@ -import process from 'node:process'; import { defineConfig } from 'bumpp'; export default defineConfig({ - all: false, - commit: true, - confirm: true, - cwd: process.cwd(), - ignoreScripts: false, - interface: true, - noGitCheck: true, - noVerify: false, - preid: 'beta', - push: true, recursive: true, - release: 'prompt', sign: true, - tag: true, }); diff --git a/eslint.config.ts b/eslint.config.ts index df0a6f7a..0ee63140 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -13,8 +13,4 @@ export default defineConfig({ }, tsconfigPath: 'tsconfig.json', }, -}, { - files: ['packages/eslint-plugin/src/rules/**/*.test.ts'], - name: 'userland/test/indent', - rules: { 'petal/indent-unindent': 'error' }, }); diff --git a/package.json b/package.json index a93b5da9..7550c65d 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "start:affected": "pnpm turbo run start --filter=...[origin/main] --concurrency=4", "docs": "pnpm turbo run docs --concurrency=4", "docs:affected": "pnpm turbo run docs --filter=...[origin/main] --concurrency=4", - "lint": "eslint --cache . --flag unstable_ts_config", + "lint": "eslint --cache .", "lint:fix": "pnpm lint --fix", "test": "vitest run", "test:update": "vitest --update", @@ -52,28 +52,28 @@ "devDependencies": { "@arethetypeswrong/cli": "^0.17.3", "@flowr/eslint": "workspace:^", - "@turbo/gen": "^2.3.3", + "@turbo/gen": "^2.4.2", "@types/jsdom": "^21.1.7", - "@types/node": "^22.10.7", - "@vitest/coverage-v8": "^3.0.2", - "@vitest/ui": "^3.0.2", - "bumpp": "^9.10.1", + "@types/node": "^22.13.1", + "@vitest/coverage-v8": "^3.0.5", + "@vitest/ui": "^3.0.5", + "bumpp": "^10.0.3", "colorette": "^2.0.20", "destr": "^2.0.3", - "esbuild": "^0.24.2", + "esbuild": "^0.25.0", "esbuild-plugin-file-path-extensions": "^2.1.4", - "eslint": "^9.18.0", + "eslint": "^9.20.1", "jiti": "^2.4.2", "jsdom": "^26.0.0", "jsr": "^0.13.2", "msw": "^2.7.0", - "pathe": "^2.0.2", - "tsup": "^8.3.5", + "pathe": "^2.0.3", + "tsup": "^8.3.6", "tsx": "^4.19.2", - "turbo": "^2.3.3", + "turbo": "^2.4.2", "typescript": "^5.7.3", - "vite": "^6.0.10", - "vitest": "^3.0.2" + "vite": "^6.1.0", + "vitest": "^3.0.5" }, "pnpm": { "patchedDependencies": { @@ -87,9 +87,8 @@ }, "resolutions": { "@eslint-community/eslint-utils": "^4.4.1", - "@typescript-eslint/utils": "^8.21.0", - "esbuild": "^0.24.2", - "eslint": "^9.18.0", + "@typescript-eslint/utils": "^8.24.0", + "eslint": "^9.20.1", "tsx": "^4.19.2" } } diff --git a/packages/create-petal/package.json b/packages/create-petal/package.json index 8e667d43..0416fb00 100644 --- a/packages/create-petal/package.json +++ b/packages/create-petal/package.json @@ -55,7 +55,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "tsup", @@ -63,7 +63,7 @@ }, "dependencies": { "@astrojs/cli-kit": "^0.4.1", - "giget": "^1.2.3" + "giget": "^1.2.4" }, "devDependencies": { "@flowr/utilities": "workspace:^", diff --git a/packages/crypto/README.md b/packages/crypto/README.md new file mode 100644 index 00000000..c0e0c8cd --- /dev/null +++ b/packages/crypto/README.md @@ -0,0 +1,13 @@ +# @flowr/crypto + +**A simple, type-safe cryptography utility library.** + +## Installation + +You can use the following command to install this package, or replace `pnpm add` with your package manager of choice. + +```sh +pnpm add @flowr/crypto +``` + +## Usage diff --git a/packages/crypto/package.json b/packages/crypto/package.json index 0967ef42..2c81f38c 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -1 +1,75 @@ -{} +{ + "$schema": "https://json.schemastore.org/package.json", + "name": "@flowr/crypto", + "type": "module", + "version": "5.2.0", + "description": "A simple, type-safe cryptography utility library.", + "author": "@flowr", + "contributors": ["Pauline "], + "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", + "funding": "https://ko-fi.com/pauliesnug", + "homepage": "https://petal.dyn.gay", + "repository": { + "type": "git", + "url": "https://github.com/pulseflow/petal.git", + "directory": "packages/result" + }, + "bugs": "https://github.com/pulseflow/petal/issues", + "keywords": [ + "@flowr/crypto", + "petal", + "flowr", + "typescript", + "ts", + "standalone" + ], + "sideEffects": false, + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + }, + "browser": "./dist/iife/index.global.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/cjs/index.cjs", + "module": "./dist/esm/index.js", + "browser": "./dist/iife/index.global.js", + "unpkg": "./dist/iife/index.global.js", + "types": "./dist/esm/index.d.ts", + "files": [ + "LICENSE*", + "README.md", + "dist/**/*.cjs", + "dist/**/*.d.cts", + "dist/**/*.d.mts", + "dist/**/*.d.ts", + "dist/**/*.js", + "dist/**/*.mjs" + ], + "engines": { + "node": ">=22" + }, + "scripts": { + "build": "pnpm gen && tsup && pnpm build:cjs", + "start": "pnpm gen && tsup --watch", + "build:cjs": "tsx ../scripts/src/cjs.ts", + "gen": "tsx ../scripts/src/gen.ts crypto --write" + }, + "devDependencies": { + "@std/crypto": "npm:@jsr/std__crypto@^1.0.3", + "@std/encoding": "npm:@jsr/std__encoding@^1.0.3", + "scule": "^1.3.0", + "tweetnacl": "^1.0.3" + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/packages/crypto/src/index.ts b/packages/crypto/src/index.ts index e69de29b..d15d48ac 100644 --- a/packages/crypto/src/index.ts +++ b/packages/crypto/src/index.ts @@ -0,0 +1,2 @@ +export * from './lib/advanced.ts'; +export * from './lib/base.ts'; diff --git a/packages/crypto/src/lib/advanced.ts b/packages/crypto/src/lib/advanced.ts new file mode 100644 index 00000000..0b910469 --- /dev/null +++ b/packages/crypto/src/lib/advanced.ts @@ -0,0 +1,77 @@ +import type { Base, Variation } from './base.ts'; +import nacl from 'tweetnacl'; +import b from './base.ts'; + +export type Bit = 0 | 1; +export type BufferLike = Uint8Array | ArrayBuffer | string; +export const rand: (n: number) => Uint8Array = n => nacl.randomBytes(n); +export const x25519: (n: Uint8Array) => Uint8Array = n => nacl.scalarMult.base(n); +export const sha512: (msg: BufferLike) => Uint8Array = msg => nacl.hash(toUint8Array(msg)); +export const sha256: (msg: BufferLike) => Promise = async msg => crypto.subtle.digest('SHA-256', toUint8Array(msg)).then(toUint8Array); +export function pair(priv?: Uint8Array): readonly [Uint8Array, Uint8Array] { + priv = priv ?? rand(32); + return [priv, x25519(priv)] as const; +} + +export function toUint8Array(buf: BufferLike): Uint8Array; +export function toUint8Array(buf: string, base: B, variation?: Variation): Uint8Array; +export function toUint8Array(buf: BufferLike, base?: B, variation?: Variation>): Uint8Array { + if (typeof buf === 'string') { + if (base) + return b(base, variation!).decode(buf); + + return new TextEncoder().encode(buf); + } + + return new Uint8Array(buf); +} + +export function verify(msg: Uint8Array, sig: Uint8Array, publicKey: Uint8Array): boolean { + try { + return nacl.sign.detached.verify(msg, sig, publicKey); + } + catch (error) { + console.error(error); + return false; + } +} + +export function uint8ArrayToBits(array: Uint8Array): Bit[] { + const result: number[] = Array.from({ length: array.length * 8 }); + for (const [i, byte] of array.entries()) + for (let j = 0; j < 8; j++) + result[i * 8 + j] = (byte >> j) & 1; + + return result as Bit[]; +} + +export function bitGenerator(): () => Bit { + const context = { + consumed: 0, + random: uint8ArrayToBits(rand(1)), + }; + + const next = (): Bit => { + if (context.consumed === 8) { + context.random = uint8ArrayToBits(rand(1)); + context.consumed = 0; + } + + return context.random[context.consumed++]; + }; + + return next; +} + +export const bit = bitGenerator(); + +export function po2(num: bigint): bigint { + num |= num >> 1n; + num |= num >> 2n; + num |= num >> 4n; + num |= num >> 8n; + num |= num >> 16n; + num |= num >> 32n; + num |= num >> 64n; + return num + 1n; +} diff --git a/packages/crypto/src/lib/base.ts b/packages/crypto/src/lib/base.ts new file mode 100644 index 00000000..fe154d3c --- /dev/null +++ b/packages/crypto/src/lib/base.ts @@ -0,0 +1,58 @@ +import type { Ascii85Standard } from '@std/encoding/ascii85'; +import { decodeAscii85, encodeAscii85 } from '@std/encoding/ascii85'; +import { decodeBase32, encodeBase32 } from '@std/encoding/base32'; +import { decodeBase58, encodeBase58 } from '@std/encoding/base58'; +import { decodeBase64, encodeBase64 } from '@std/encoding/base64'; +import { decodeBase64Url, encodeBase64Url } from '@std/encoding/base64url'; +import { decodeHex, encodeHex } from '@std/encoding/hex'; +// import { decodeVarint, encodeVarint } from '@std/encoding/varint'; + +export type Encodable = ArrayBuffer | Uint8Array | string; +export type Encoder = (data: Encodable) => string; +export type Decoder = (source: string) => Uint8Array; +export type StringDecoder = (source: string) => string; +export type Base64Standard = 'btoa' | 'url' | 'url_padded'; + +const textDecoder = new TextDecoder(); +const $pad_encodeBase64Url: Encoder = data => encodeBase64(data).replace(/\+/g, '-').replace(/\//g, '_'); +const $pad_decodeBase64Url: Decoder = source => decodeBase64(source.replace(/-/g, '+').replace(/_/g, '/')); +const $petal_encodeBase64 = (data: Encodable, standard: Base64Standard = 'btoa'): string => ({ btoa: encodeBase64, url: encodeBase64Url, url_padded: $pad_encodeBase64Url })[standard](data); +const $petal_encodeAscii85 = (data: Encodable, standard?: Ascii85Standard): string => encodeAscii85(data, { standard }); +const $petal_decodeBase64 = (source: string, standard: Base64Standard = 'btoa'): Uint8Array => ({ btoa: decodeBase64, url: decodeBase64Url, url_padded: $pad_decodeBase64Url })[standard](source); +const $petal_decodeAscii85 = (source: string, standard?: Ascii85Standard): Uint8Array => decodeAscii85(source, { standard }); + +const encoders = { + 16: encodeHex, + 32: encodeBase32, + 58: encodeBase58, + 64: $petal_encodeBase64, + 85: $petal_encodeAscii85, +}; + +const decoders = { + 16: decodeHex, + 32: decodeBase32, + 58: decodeBase58, + 64: $petal_decodeBase64, + 85: $petal_decodeAscii85, +}; + +export type Base = Extract; +export type Variation = NonNullable[1]>; +export interface BaseProvider { encode: Encoder; decode: Decoder; decodeString: StringDecoder } + +export function base(base: Base): BaseProvider; +export function base(base: B, variation: Variation): BaseProvider; +export function base(base: B, variation?: Variation): BaseProvider { + const encoder = encoders[base] as (data: Encodable, variation?: string) => string; + const decoder = decoders[base] as (source: string, variation?: string) => Uint8Array; + + return { + encode: data => encoder(data, variation), + decode: source => decoder(source, variation), + decodeString: source => textDecoder.decode(decoder(source, variation)), + }; +} + +export { base as b }; +export default base; diff --git a/packages/crypto/tests/.gitkeep b/packages/crypto/tests/base.test.ts similarity index 100% rename from packages/crypto/tests/.gitkeep rename to packages/crypto/tests/base.test.ts diff --git a/packages/crypto/tsup.config.ts b/packages/crypto/tsup.config.ts index 89dc506a..aa3d4ddb 100644 --- a/packages/crypto/tsup.config.ts +++ b/packages/crypto/tsup.config.ts @@ -1,3 +1,3 @@ import { createTsupConfig } from '../scripts/tsup.config.ts'; -export default createTsupConfig('crypto', {}); +export default createTsupConfig('crypto', { iife: { disabled: true } }); diff --git a/packages/crypto/vitest.config.ts b/packages/crypto/vitest.config.ts new file mode 100644 index 00000000..f6f7ddda --- /dev/null +++ b/packages/crypto/vitest.config.ts @@ -0,0 +1,3 @@ +import { createVitestConfig } from '../scripts/vitest.config.ts'; + +export default createVitestConfig`crypto`; diff --git a/packages/eslint-plugin/docs/indent-unindent.md b/packages/eslint-plugin/docs/indent-unindent.md deleted file mode 100644 index 78fe4b0e..00000000 --- a/packages/eslint-plugin/docs/indent-unindent.md +++ /dev/null @@ -1,45 +0,0 @@ -# indent-unindent - -Enforce consistent indentation style for content inside template string with the `unindent` tag. - -## Rule Details - - -```js -// 👎 bad -import { unindent } from '@flowr/utilities'; - -const cases = [ - unindent` -const foo = { - bar: 'baz', qux: 'quux', - fez: 'fum', -};`, - unindent` - if (true) { - console.log('hello'); - }`, -]; -``` - - -```js -// 👍 good -import { unindent } from '@flowr/utilties'; - -const cases = [ - unindent` - const foo = { - bar: 'baz', qux: 'quux', - fez: 'fum', - }; - `, - unindent` - if (true) { - console.log('hello'); - } - `, -]; -``` - -By default it affects the template tag named `unindent`, `unIndent` or `$`. This rule works specifically for the `unindent` utility function from `@flowr/utilities`, where the leading and trailing empty lines are removed, and the common indentation is removed from each line. This rule fixes the content inside the template string but shall not affect the runtime result. diff --git a/packages/eslint-plugin/docs/only-export-components.md b/packages/eslint-plugin/docs/only-export-components.md deleted file mode 100644 index 9dbd53a7..00000000 --- a/packages/eslint-plugin/docs/only-export-components.md +++ /dev/null @@ -1,129 +0,0 @@ -# only-export-components - -Validates that JSX components can be updated using fast refresh, ensuring they comply which whatever HMR framework is used (Remix, Vite, React, etc.). - -Adapted from [`eslint-plugin-react-refresh`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) - -## Rule Details - - -```jsx -// 👎 bad -export default const Bar = () => <>; - -// 👎 bad -export * from './foo'; - -// 👎 bad -export default compose()(MainComponent); - -// 👎 bad -const Tab = () => {}; -export const tabs = [, ]; - -// 👎 bad -const App = () => {}; -createRoot(document.getElementById('root')).render(); -``` - - -```jsx -// 👍 good (with `allowConstantExport`) -export const CONSTANT = 3; -export const Foo = () => <>; - -// 👍 good -export default function Foo() { - return <>; -} - -// 👍 good -const foo = () => {}; -export const Bar = () => <>; - -// 👍 good -import { App } from './App'; -createRoot(document.getElementById('root')).render(); -``` - -## Limitations - -In order to avoid false positives, this plugin only checks `.tsx` and `.jsx` files by default. You can use the [`checkJS`](#checkjs) option to also check `.js` files. - -This plugin relies on naming conventions (i.e. `PascalCase` for components, and `camelCase` for utility functions, `SCREAMING_SNAKE_CASE` for constants, etc.), which means there are certain limitations: - -* `export *` declarations are unsupported and are reported as errors. -* Anonymous functions are unsupported (i.e. `export default function() {}`). -* Class components are unsupported. -* `SCREAMING_SNAKE_CASE` function exports are considered as errors when not using direct named export (e.g. `const CMS = () => <>; export { CMS }`). -* Lazy loading and some constants are unsupported currently, awaiting fixes. - -## Options - -### `allowExportNames` - -If you use a framework that handles HMR of some specific exports, you can use this option to avoid warning for them. - -Example for the [Remix](https://remix.run/docs/en/main/other-api/dev#:~:text=React%20Fast%20Refresh,-can%20only%20handle) web framework: - - -```js -{ - 'petal/only-export-components': [ - 'error', - { - 'allowExportNames': ['meta', 'links', 'headers', 'loader', 'action'], - }, - ], -} -``` - -### `allowConstantExport` - -Disable warning when a constant (string, number, boolean, template literal) is exported aside one or more components. - -This should be enabled if the fast refresh implementation correctly handles this case. (HMR when the constant doesn't change, propagate update to importers when the constant changes). Vite supports this. - - -```js -{ - 'petal/only-export-components': [ - 'error', - { - 'allowConstantExport': true, - }, - ], -} -``` - -### `checkJS` - -This allows the plugin to check for JSX within `.js` files. To reduce the number of false positives, only files that import the `react` library are checked. - - -```js -{ - 'petal/only-export-components': [ - 'error', - { - 'checkJS': true, - }, - ], -} -``` - -### `customHOCs` - -If you're exporting a component wrapped in a custom HOC, you can use this option to avoid false positives. - - -```js -{ - 'petal/only-export-components': [ - 'error', - { - 'customHOCs': ['observer', 'withAuth'], - }, - ], -} -``` diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index d4ac8a55..74b04af2 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -54,22 +54,22 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "start": "tsx src/index.ts", "build": "tsup" }, "peerDependencies": { - "eslint": "^9.18.0" + "eslint": "^9.20.0" }, "dependencies": { "@flowr/utilities": "workspace:^" }, "devDependencies": { - "@typescript-eslint/parser": "^8.21.0", - "@typescript-eslint/utils": "^8.21.0", - "eslint": "^9.18.0", + "@typescript-eslint/parser": "^8.24.0", + "@typescript-eslint/utils": "^8.24.0", + "eslint": "^9.20.1", "eslint-vitest-rule-tester": "^1.1.0", "jsonc-eslint-parser": "^2.4.0" }, diff --git a/packages/eslint-plugin/src/index.ts b/packages/eslint-plugin/src/index.ts index a749e1b0..657ab5c4 100644 --- a/packages/eslint-plugin/src/index.ts +++ b/packages/eslint-plugin/src/index.ts @@ -6,12 +6,10 @@ import * as consistentListNewline from './rules/consistent-list-newline'; import * as fileHeader from './rules/file-header'; import * as ifNewline from './rules/if-newline'; import * as importDedupe from './rules/import-dedupe'; -import * as indentUnindent from './rules/indent-unindent'; import * as noImportDist from './rules/no-import-dist'; import * as noImportNodeModulesByPath from './rules/no-import-node-modules-by-path'; import * as noOnlyTests from './rules/no-only-tests'; import * as noTsExportEqual from './rules/no-ts-export-equal'; -import * as onlyExportComponents from './rules/only-export-components'; import * as topLevelFunction from './rules/top-level-function'; const rules: Readonly<{ @@ -20,11 +18,9 @@ const rules: Readonly<{ [fileHeader.RULE_NAME]: typeof fileHeader.default; [ifNewline.RULE_NAME]: typeof ifNewline.default; [importDedupe.RULE_NAME]: typeof importDedupe.default; - [indentUnindent.RULE_NAME]: typeof indentUnindent.default; [noImportNodeModulesByPath.RULE_NAME]: typeof noImportNodeModulesByPath.default; [noImportDist.RULE_NAME]: typeof noImportDist.default; [noOnlyTests.RULE_NAME]: typeof noOnlyTests.default; - [onlyExportComponents.RULE_NAME]: typeof onlyExportComponents.default; [noTsExportEqual.RULE_NAME]: typeof noTsExportEqual.default; [topLevelFunction.RULE_NAME]: typeof topLevelFunction.default; }> = { @@ -33,27 +29,40 @@ const rules: Readonly<{ [fileHeader.RULE_NAME]: fileHeader.default, [ifNewline.RULE_NAME]: ifNewline.default, [importDedupe.RULE_NAME]: importDedupe.default, - [indentUnindent.RULE_NAME]: indentUnindent.default, [noImportDist.RULE_NAME]: noImportDist.default, [noImportNodeModulesByPath.RULE_NAME]: noImportNodeModulesByPath.default, [noOnlyTests.RULE_NAME]: noOnlyTests.default, [noTsExportEqual.RULE_NAME]: noTsExportEqual.default, - [onlyExportComponents.RULE_NAME]: onlyExportComponents.default, [topLevelFunction.RULE_NAME]: topLevelFunction.default, -}; +} as const satisfies FlatConfig.Plugin['rules']; + const meta = { name: 'petal', version, -} as const; +} as const satisfies FlatConfig.Plugin['meta']; + +const configs = { + recommended: { + name: 'petal/recommended', + plugins: { + get petal(): FlatConfig.Plugin { + return plugin; + }, + }, + rules: {}, + }, +} as const satisfies FlatConfig.Plugin['configs']; const plugin = { meta, rules, -} satisfies FlatConfig.Plugin; + configs, +} as const satisfies FlatConfig.Plugin; type ESLintPluginPetal = FlatConfig.Plugin & { meta: typeof meta; rules: typeof rules; + configs: typeof configs; }; export default plugin as ESLintPluginPetal; diff --git a/packages/eslint-plugin/src/rules/indent-unindent.ts b/packages/eslint-plugin/src/rules/indent-unindent.ts deleted file mode 100644 index 4d0beed9..00000000 --- a/packages/eslint-plugin/src/rules/indent-unindent.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { unindent } from '@flowr/utilities/unindent'; -import { createEslintRule } from '../utils.ts'; - -export const RULE_NAME = 'indent-unindent'; -export type MessageIds = 'indentUnindent'; -export type Options = [{ - tags?: string[]; -}]; - -const defaultOptions: Options = [{ - tags: ['$', 'unindent', 'unIndent'], -}]; - -export default createEslintRule({ - create: (context, [options = {}] = defaultOptions) => { - const tagSet = new Set(options.tags); - - return { - TaggedTemplateExpression: (node) => { - const id = node.tag; - if (id.type !== 'Identifier') - return; - if (!tagSet.has(id.name)) - return; - if (node.quasi.quasis.length !== 1) - return; - - const quasi = node.quasi.quasis[0]; - const value = quasi.value.raw; - const lineStartIndex = context.sourceCode.getIndexFromLoc({ column: 0, line: node.loc.start.line }); - const baseIndent = context.sourceCode.text.slice(lineStartIndex).match(/^\s*/)?.[0] ?? ''; - const final = `\n${unindent(value).split('\n').map(l => `${baseIndent} ${l}`).join('\n')}\n${baseIndent}`; - - if (final !== value) - context.report({ - fix: fixer => fixer.replaceText(quasi, `\`${final}\``), - messageId: 'indentUnindent', - node: quasi, - }); - }, - }; - }, - defaultOptions, - meta: { - docs: { - description: 'Enforce consistent indentation in the `unindent` template tag', - }, - fixable: 'code', - messages: { - indentUnindent: 'Consistent indentation in unindent tag', - }, - schema: [ - { - additionalProperties: false, - properties: { - tags: { - default: defaultOptions[0].tags, - items: { - type: 'string', - }, - type: 'array', - }, - }, - type: 'object', - }, - ], - type: 'layout', - }, - name: RULE_NAME, -}); diff --git a/packages/eslint-plugin/src/rules/no-discard-result.ts b/packages/eslint-plugin/src/rules/no-discard-result.ts deleted file mode 100644 index 95cce656..00000000 --- a/packages/eslint-plugin/src/rules/no-discard-result.ts +++ /dev/null @@ -1,133 +0,0 @@ -import type { ParserServicesWithTypeInformation, TSESTree } from '@typescript-eslint/utils'; -import { ESLintUtils } from '@typescript-eslint/utils'; -import ts from 'typescript'; -import { createEslintRule } from '../utils.ts'; - -export const RULE_NAME = 'no-discard-result'; -export type MessageIds = 'discardedResult'; -export type Options = []; - -const resultPath = require.resolve('@flowr/result').split('/').slice(0, -1).concat('index.d.ts').join('/'); -const isUnionType = (type: ts.Type): type is ts.UnionType => (type.flags & ts.TypeFlags.Union) !== 0; -const unionTypeParts = (type: ts.Type): ts.Type[] => isUnionType(type) ? type.types : [type]; - -function isCallback(checker: ts.TypeChecker, param: ts.Symbol, node: ts.Node): boolean { - let type: ts.Type | undefined = checker.getApparentType(checker.getTypeOfSymbolAtLocation(param, node)); - - if ((param.valueDeclaration as ts.ParameterDeclaration).dotDotDotToken) { - type = type.getNumberIndexType(); - if (type === undefined) - return false; - } - - for (const t of unionTypeParts(type)) - if (t.getCallSignatures().length !== 0) - return true; - - return false; -} - -function isThenableType(checker: ts.TypeChecker, node: ts.Node, type: ts.Type): boolean; -function isThenableType(checker: ts.TypeChecker, node: ts.Expression, type?: ts.Type): boolean; -function isThenableType(checker: ts.TypeChecker, node: ts.Node, type = checker.getTypeAtLocation(node)): boolean { - for (const t of unionTypeParts(checker.getApparentType(type))) { - const then = t.getProperty('then'); - - if (then === undefined) - continue; - - const thenType = checker.getTypeOfSymbolAtLocation(then, node); - for (const t of unionTypeParts(thenType)) - for (const signature of t.getCallSignatures()) - if (signature.parameters.length !== 0 && isCallback(checker, signature.parameters[0], node)) - return true; - } - - return false; -} - -function getResultType(service: ParserServicesWithTypeInformation, checker: ts.TypeChecker): ts.Type | null { - const file = service.program.getSourceFile(resultPath); - const resultNode = file?.statements.find(node => ts.isTypeAliasDeclaration(node) && node.name.getText() === 'Result'); - - if (resultNode) - return checker.getTypeAtLocation(resultNode); - - return null; -} - -function unwrapPotentialPromise(checker: ts.TypeChecker, node: ts.CallExpression, type = checker.getTypeAtLocation(node)): ts.Type { - if (isUnionType(type)) { - const { ...copy } = type; // avoids mutation - copy.types = type.types.filter(s => Boolean(s)); // filters out nullish values - if (copy.types.length === 1) - return unwrapPotentialPromise(checker, node, copy.types[0]); - - copy.types = copy.types.map(s => unwrapPotentialPromise(checker, node, s)); - return copy; - } - - if (isThenableType(checker, node)) - return checker.getTypeArguments(type as ts.TypeReference)[0]; - - return type; -} - -function hasResultLikeReturnType( - service: ParserServicesWithTypeInformation, - node: TSESTree.CallExpression, -): boolean { - const checker = service.program.getTypeChecker(); - const nodeMap = service.esTreeNodeToTSNodeMap.get(node); - const functionDeclaration = checker.getResolvedSignature(nodeMap); - - if (!functionDeclaration) - return false; - - const returnType = unwrapPotentialPromise(checker, nodeMap); - const resultType = getResultType(service, checker); - - if (!returnType.aliasSymbol || !resultType?.aliasSymbol) - return false; - - // hacky bit of reflection logic until type relationship api https://github.com/microsoft/TypeScript/issues/9879 - return Reflect.get(returnType.aliasSymbol, 'id') === Reflect.get(resultType.aliasSymbol, 'id'); -} - -function isDiscardedResult(node: TSESTree.Node): boolean { - // checks for `void foo();` is explicit and allowed - if (node.parent?.type === 'UnaryExpression' && node.parent.operator === 'void') - return false; - - // checks for variable declaration, assignment, `foo(functionReturningResult());` (automatically false). - if (node.parent && ['AssignmentExpression', 'CallExpression', 'VariableDeclarator'].includes(node.parent.type)) - return false; - - // checks for sequences like `(void 0, x())`, awaits, tenary conditionals, and operators (recursively). - if (node.parent && ['AwaitExpression', 'ConditionalExpression', 'LogicalExpression', 'SequenceExpression'].includes(node.parent.type)) - return isDiscardedResult(node.parent); - - return true; -} - -export default createEslintRule({ - create: context => ({ - CallExpression: (node) => { - if (hasResultLikeReturnType(ESLintUtils.getParserServices(context), node)) - if (isDiscardedResult(node)) - context.report({ messageId: 'discardedResult', node }); - }, - }), - defaultOptions: [], - meta: { - docs: { - description: 'Disallow discarding the result of a function returning a Result.', - }, - messages: { - discardedResult: 'This function returns a Result, but its return value is being discarded.', - }, - schema: [], - type: 'problem', - }, - name: RULE_NAME, -}); diff --git a/packages/eslint-plugin/src/rules/only-export-components.ts b/packages/eslint-plugin/src/rules/only-export-components.ts deleted file mode 100644 index 196b7ef6..00000000 --- a/packages/eslint-plugin/src/rules/only-export-components.ts +++ /dev/null @@ -1,237 +0,0 @@ -import type { TSESTree } from '@typescript-eslint/utils'; -import type { JSONSchema4 } from '@typescript-eslint/utils/json-schema'; -import { createEslintRule } from '../utils.ts'; - -export const RULE_NAME = 'only-export-components'; -export type MessageIds = - | 'exportAll' - | 'namedExport' - | 'anonymousExport' - | 'localComponents' - | 'noExport' - | 'noAMI' - | 'reactContext'; -export type Options = [{ - allowConstantExport?: boolean; - checkJS?: boolean; - allowExportNames?: string[]; - customHOCs?: string[]; -}]; - -const defaultOptions: Options = [{ - allowConstantExport: false, - checkJS: false, - allowExportNames: [], - customHOCs: [], -}]; -const reactComponentNameRE = /^[A-Z][a-zA-Z0-9]*$/u; -type ToString = Type extends `${infer String}` ? String : never; -const notReactComponentExpression: Set> = new Set([ - 'ArrayExpression', - 'AwaitExpression', - 'BinaryExpression', - 'ChainExpression', - 'ConditionalExpression', - 'Literal', - 'LogicalExpression', - 'ObjectExpression', - 'TemplateLiteral', - 'ThisExpression', - 'UnaryExpression', - 'UpdateExpression', -]); - -// Adapted from https://github.com/ArnaudBarre/eslint-plugin-react-refresh - -export default createEslintRule({ - create: (context, [options = {}] = defaultOptions) => { - if (['.test.', '.spec.', '.cy.', '.stories.'].some(f => context.filename.includes(f))) - return {}; - - if (!(['.jsx', '.tsx'].some(f => context.filename.includes(f)) || (options.checkJS && context.filename.endsWith('.js')))) - return {}; - - return { - Program: (program) => { - const ruleContext = { hasExports: false, hasReactExport: false, reactIsInScope: false }; - const localComponents: TSESTree.Identifier[] = []; - const nonComponentExports: Array = []; - const allowExportNames = new Set(options.allowExportNames); - const reactHOCs = ['forwardRef', 'memo', ...(options.customHOCs ?? [])]; - const reactContextExports: TSESTree.Identifier[] = []; - - const canBeReactFunctionComponent = (init: TSESTree.VariableDeclaratorMaybeInit['init']): boolean => { - if (!init) - return false; - - if (init.type === 'ArrowFunctionExpression') - return true; - - if (init.type === 'CallExpression' && init.callee.type === 'Identifier') - return reactHOCs.includes(init.callee.name); - - return false; - }; - - const handleLocalIdentifier = (id: TSESTree.BindingName): void => { - if (id.type !== 'Identifier') - return; - if (reactComponentNameRE.test(id.name)) - localComponents.push(id); - }; - - const handleExportIdentifier = (id: TSESTree.BindingName | TSESTree.StringLiteral, isFn?: boolean, init?: TSESTree.Expression | null): void => { - if (id.type !== 'Identifier') { - nonComponentExports.push(id); - return; - } - - if (allowExportNames.has(id.name)) - return; - - // Literal: 1, 'foo', UnaryExpression: -1, TemplateLiteral: `Some ${template}`, BinaryExpression: 24 * 60. - if (options.allowConstantExport && init && ['BinaryExpression', 'Literal', 'TemplateLiteral', 'UnaryExpression'].includes(init.type)) - return; - - if (isFn) { - if (reactComponentNameRE.test(id.name)) - ruleContext.hasReactExport = true; - else nonComponentExports.push(id); - } - else { - if ( - init && init.type === 'CallExpression' - && ((init.callee.type === 'Identifier' - && init.callee.name === 'createContext') - || (init.callee.type === 'MemberExpression' - && init.callee.property.type === 'Identifier' - && init.callee.property.name === 'createContext')) - ) { - reactContextExports.push(id); - return; - } - if (init && notReactComponentExpression.has(init.type)) { - nonComponentExports.push(id); - return; - } - if (reactComponentNameRE.test(id.name)) - ruleContext.hasReactExport = true; - else - nonComponentExports.push(id); - } - }; - - const handleExportDeclaration = (node: TSESTree.ExportDeclaration): void => { - if (node.type === 'VariableDeclaration') - node.declarations.forEach(v => handleExportIdentifier(v.id, canBeReactFunctionComponent(v.init), v.init)); - else if (node.type === 'FunctionDeclaration') - if (node.id === null) - context.report({ messageId: 'anonymousExport', node }); - else handleExportIdentifier(node.id, true); - else if (node.type === 'CallExpression') - if (node.callee.type === 'CallExpression' && node.callee.callee.type === 'Identifier' && node.callee.callee.name === 'connect') - ruleContext.hasReactExport = true; - else if (node.callee.type !== 'Identifier') - if (node.callee.type === 'MemberExpression' && node.callee.property.type === 'Identifier' && reactHOCs.includes(node.callee.property.name)) - ruleContext.hasReactExport = true; - else context.report({ messageId: 'anonymousExport', node }); - else if (!reactHOCs.includes(node.callee.name)) - context.report({ messageId: 'anonymousExport', node }); - else if (node.arguments[0].type === 'FunctionExpression' && node.arguments[0].id) - handleExportIdentifier(node.arguments[0].id, true); - else if (node.arguments[0]?.type === 'Identifier') - ruleContext.hasReactExport = true; - else context.report({ messageId: 'anonymousExport', node }); - else if (node.type === 'TSEnumDeclaration') - nonComponentExports.push(node.id); - }; - - for (const node of program.body) - if (node.type === 'ExportAllDeclaration') { - if (node.exportKind === 'type') - continue; - ruleContext.hasExports = true; - context.report({ messageId: 'exportAll', node }); - } - else if (node.type === 'ExportDefaultDeclaration') { - ruleContext.hasExports = true; - const declaration = node.declaration.type === 'TSAsExpression' - || node.declaration.type === 'TSSatisfiesExpression' - ? node.declaration.expression - : node.declaration; - if ( - declaration.type === 'VariableDeclaration' - || declaration.type === 'FunctionDeclaration' - || declaration.type === 'CallExpression' - ) - handleExportDeclaration(declaration); - - if (declaration.type === 'Identifier') - handleExportIdentifier(declaration); - - if (declaration.type === 'ArrowFunctionExpression') - context.report({ messageId: 'anonymousExport', node }); - } - else if (node.type === 'ExportNamedDeclaration') { - if (node.exportKind === 'type') - continue; - ruleContext.hasExports = true; - if (node.declaration) - handleExportDeclaration(node.declaration); - node.specifiers.forEach(i => handleExportDeclaration(i.exported.type === 'Identifier' && i.exported.name === 'default' ? i.local : i.exported)); - } - else if (node.type === 'VariableDeclaration') { - node.declarations.forEach(v => handleLocalIdentifier(v.id)); - } - else if (node.type === 'FunctionDeclaration') { - handleLocalIdentifier(node.id); - } - else if (node.type === 'ImportDeclaration' && node.source.value === 'react') { - ruleContext.reactIsInScope = true; - } - - if (options.checkJS && !ruleContext.reactIsInScope) - return; - - if (ruleContext.hasExports) - if (ruleContext.hasReactExport) { - nonComponentExports.forEach(node => context.report({ messageId: 'namedExport', node })); - reactContextExports.forEach(node => context.report({ messageId: 'reactContext', node })); - } - else if (localComponents.length) { - localComponents.forEach(node => context.report({ messageId: 'localComponents', node })); - } - else if (localComponents.length) { - localComponents.forEach(node => context.report({ messageId: 'noExport', node })); - } - }, - }; - }, - defaultOptions, - meta: { - docs: { - description: 'Validates that React components can be safely updated with fast refresh', - }, - messages: { - anonymousExport: 'Fast refresh is unable to handle anonymous components. Add a name to this export.', - exportAll: 'This rule is unable to verify that `export *` only exports components.', - localComponents: 'Fast refresh only works when a file only exports components. Move your component(s) to a seperate file.', - namedExport: 'Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components.', - noAMI: 'Fast refrsh only works when a file uses standard imports, not arbitrary modules.', - noExport: 'Fast refresh only works when a file has exports. Move your component(s) to a seperate file.', - reactContext: 'Fast refresh only works when a file only exports components. Move your React context(s) to a seperate file.', - }, - schema: [{ - additionalProperties: false, - properties: { - allowConstantExport: { type: 'boolean' }, - allowExportNames: { items: { type: 'string' }, type: 'array' }, - checkJS: { type: 'boolean' }, - customHOCs: { type: 'array', items: { type: 'string' } }, - } satisfies Readonly>, - type: 'object', - }], - type: 'problem', - }, - name: RULE_NAME, -}); diff --git a/packages/eslint-plugin/tests/rules/indent-unindent.test.ts b/packages/eslint-plugin/tests/rules/indent-unindent.test.ts deleted file mode 100644 index cab89bbb..00000000 --- a/packages/eslint-plugin/tests/rules/indent-unindent.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import rule, { RULE_NAME } from '../../src/rules/indent-unindent'; -import { $, run } from '../utilities'; - -run({ - invalid: [ - { - code: $` - const a = { - foo: $\` - if (true) return 1 - \` - } - `, - output: $` - const a = { - foo: $\` - if (true) return 1 - \` - } - `, - }, - { - code: $` - const a = $\` - if (true) return 1\` - `, - output: $` - const a = $\` - if (true) return 1 - \` - `, - }, - { - code: $` - const a = $\` - \\t\\t\\\`foo\\\` - \\tbar - \` - `, - description: 'should work with escapes', - output: $` - const a = $\` - \\t\\t\\\`foo\\\` - \\tbar - \` - `, - }, - ], - name: RULE_NAME, - - rule, - valid: [ - $` - const a = $\` - b - \` - `, - $` - const a = foo\`b\` - `, - ], -}); diff --git a/packages/eslint-plugin/tests/rules/no-discard-result.test.ts b/packages/eslint-plugin/tests/rules/no-discard-result.test.ts deleted file mode 100644 index 7a4ccdad..00000000 --- a/packages/eslint-plugin/tests/rules/no-discard-result.test.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { join } from 'node:path'; -import tsParser from '@typescript-eslint/parser'; -import rule, { RULE_NAME } from '../../src/rules/no-discard-result'; -import { $, run } from '../utilities'; - -run({ - invalid: [ - { - code: $` - import { Result } from '@flowr/result'; - function foo(): Result {} - foo(); - `, - errors: [ - { - line: 4, - messageId: 'discardedResult', - }, - ], - name: 'simple discard', - }, - { - code: $` - import { Result } from '@flowr/result'; - async function foo(): Promise> {} - foo(); - `, - errors: [ - { - line: 4, - messageId: 'discardedResult', - }, - ], - name: 'unawaited async function discarded', - }, - { - code: $` - import { Result } from '@flowr/result'; - async function foo(): Promise> {} - await foo(); - `, - errors: [ - { - line: 4, - messageId: 'discardedResult', - }, - ], - name: 'awaited async function discarded', - }, - { - code: $` - import { Result } from '@flowr/result'; - function foo(): Promise> {} - ( - foo(), - await foo() - ); - `, - errors: [ - { - line: 5, - messageId: 'discardedResult', - }, - { - line: 6, - messageId: 'discardedResult', - }, - ], - name: 'double discard', - }, - { - code: $` - import { Result } from '@flowr/result'; - function foo(): Promise> {} - null ?? foo(); - `, - errors: [ - { - line: 4, - messageId: 'discardedResult', - }, - ], - name: 'potential discard (??)', - }, - ], - name: RULE_NAME, - - parserOptions: { - ecmaVersion: 'latest', - parser: tsParser, - tsconfigRootDir: join(import.meta.dirname, '../fixtures'), - projectService: { - }, - parserOptions: { - tsconfigRootDir: join(import.meta.dirname, '../fixtures'), - projectService: { - }, - }, - }, - - languageOptions: { - parserOptions: { - ecmaVersion: 'latest', - parser: tsParser, - tsconfigRootDir: join(import.meta.dirname, '../fixtures'), - projectService: { - }, - parserOptions: { - tsconfigRootDir: join(import.meta.dirname, '../fixtures'), - projectService: { - }, - }, - }, - }, - rule, - - valid: [ - $` - import { Result } from '@flowr/result'; - function foo(): Result {} - async function bar(): Promise> {} - const x = foo(); - let y = await bar(), z = (void 0, foo()); - y = z = await bar(); - const complex = foo() && (((Math.random() > 0.5 ? foo(): await bar()) || foo()) ?? await bar()); - `, - $` - import { Result } from '@flowr/result'; - function foo(): Result {} - void foo(); - `, - $` - import { Result } from '@flowr/result'; - function foo(): Result {} - function bar(result: Result) {} - void bar(foo()); - `, - ], -}); diff --git a/packages/eslint-plugin/tests/rules/only-export-components.test.ts b/packages/eslint-plugin/tests/rules/only-export-components.test.ts deleted file mode 100644 index 6f03a2cd..00000000 --- a/packages/eslint-plugin/tests/rules/only-export-components.test.ts +++ /dev/null @@ -1,327 +0,0 @@ -import type { InvalidTestCase, ValidTestCase } from 'eslint-vitest-rule-tester'; -import rule, { RULE_NAME } from '../../src/rules/only-export-components'; -import { $, run } from '../utilities'; - -const valids: ValidTestCase[] = [ - { - code: 'export function Foo() {};', - name: 'Direct export named component', - }, - { - code: 'function Foo() {}; export { Foo };', - name: 'Export named component', - }, - { - code: 'function Foo() {}; export default Foo;', - name: 'Export default named component', - }, - { - code: 'export default function Foo() {}', - name: 'Direct export default named component', - }, - { - code: 'export const Foo = () => {};', - name: 'Direct export AF component', - }, - { - code: 'export const Foo2 = () => {};', - name: 'Direct export AF component with number', - }, - { - code: 'export function CMS() {};', - name: 'Direct export uppercase function', - }, - { - code: 'export const SVG = forwardRef(() => );', - name: 'Uppercase component with forwardRef', - }, - { - code: 'export const CMS = () => {};', - name: 'Direct export uppercase component', - }, - { - code: 'const Foo = () => {}; export { Foo };', - name: 'Export AF component', - }, - { - code: 'const Foo = () => {}; export default Foo;', - name: 'Default export AF component', - }, - { - code: 'const foo = 4; export const Bar = () => {}; export const Baz = () => {};', - name: 'Two components & local variable', - }, - { - code: 'const foo = () => {}; export const Bar = () => {}; export const Baz = () => {};', - name: 'Two components & local function', - }, - { - code: 'export const Foo = () => {}; export const Bar = styled.div`padding-bottom: 6px;`;', - name: 'styled components', - }, - { - code: 'export const foo = 3;', - name: 'Direct export variable', - }, - { - code: 'const foo = 3; const bar = \'Hello\'; export { foo, bar };', - name: 'Export variables', - }, - { - code: 'export const foo = () => {};', - name: 'Direct export AF', - }, - { - code: 'export default function foo () {};', - name: 'Direct export default AF', - }, - { - code: 'export default memo(function Foo () {});', - name: 'export default memo function', - }, - { - code: 'export default React.memo(function Foo () {});', - name: 'export default React.memo function', - }, - { - code: 'const Foo = () => {}; export default memo(Foo);', - name: 'export default memo function assignment', - }, - { - code: 'const Foo = () => {}; export default React.memo(Foo);', - name: 'export default React.memo function assignment', - }, - { - code: 'function Foo() {}; export default memo(Foo);', - name: 'export default memo function declaration', - }, - { - code: 'function Foo() {}; export default React.memo(Foo);', - name: 'export default React.memo function declaration', - }, - { - code: 'function Foo() {}; export default React.memo(Foo) as typeof Foo;', - name: 'export default React.memo function declaration with type assertion', - }, - { - code: 'export type * from \'./module\';', - filename: 'Test.tsx', - name: 'export type *', - }, - { - code: 'type foo = string; export const Foo = () => null; export type { foo };', - filename: 'Test.tsx', - name: 'export type { foo }', - }, - { - code: 'export type foo = string; export const Foo = () => null;', - filename: 'Test.tsx', - name: 'export type foo', - }, - { - code: 'export const foo = () => {}; export const Bar = () => {};', - filename: 'Test.js', - name: 'Mixed export in JS without checkJS', - }, - { - code: 'export const foo = () => {}; export const Bar = () => {};', - filename: 'Test.js', - name: 'Mixed export in JS without react import', - options: [{ checkJS: true }], - }, - { - code: 'export const foo = 4; export const Bar = () => {};', - name: 'Component and number constant with allowConstantExport', - options: [{ allowConstantExport: true }], - }, - { - code: 'export const foo = -4; export const Bar = () => {};', - name: 'Component and negative number constant with allowConstantExport', - options: [{ allowConstantExport: true }], - }, - { - code: 'export const CONSTANT = \'Hello world\'; export const Foo = () => {};', - name: 'Component and string constant with allowConstantExport', - options: [{ allowConstantExport: true }], - }, - { - // eslint-disable-next-line no-template-curly-in-string -- used in test - code: 'const foo = \'world\'; export const CONSTANT = \`Hello ${foo}\`; export const Foo = () => {};', - name: 'Component and template literal with allowConstantExport', - options: [{ allowConstantExport: true }], - }, - { - code: 'export const loader = () => {}; export const Bar = () => {};', - name: 'Component and allowed export', - options: [{ allowExportNames: ['loader', 'meta'] }], - }, - { - code: 'export function loader() {}; export const Bar = () => {};', - name: 'Component and allowed function export', - options: [{ allowExportNames: ['loader', 'meta'] }], - }, - { - code: 'export const loader = () => {}; export const meta = { title: \'Home\' };', - name: 'Only allowed exports without component', - options: [{ allowExportNames: ['loader', 'meta'] }], - }, - { - code: 'export { App as default }; const App = () => <>Test;', - name: 'Export as default', - }, - { - code: 'const MyComponent = () => {}; export default connect(() => ({}))(MyComponent);', - name: 'Allow connect from react-redux', - }, - { - name: 'Two components, one of them with \'Context\' in its name', - code: 'export const MyComponent = () => {}; export const ChatContext = () => {};', - }, - { - name: 'Component & local React context', - code: 'export const MyComponent = () => {}; const MyContext = createContext(\'test\');', - }, - { - name: 'Only React context', - code: 'export const MyContext = createContext(\'test\');', - }, - { - name: 'Custom HOCs like mobx observer', - code: 'const MyComponent = () => {}; export default observer(MyComponent);', - options: [{ customHOCs: ['observer'] }], - }, -]; - -const invalid: InvalidTestCase[] = [ - { - code: 'export const foo = () => {}; export const Bar = () => {};', - errors: [{ messageId: 'namedExport' }], - name: 'Component and function', - }, - { - code: 'export const foo = () => {}; export const Bar = () => {};', - errors: [{ messageId: 'namedExport' }], - name: 'Component and function with allowConstantExport', - options: [{ allowConstantExport: true }], - }, - { - code: 'export const foo = 4; export const Bar = () => {};', - errors: [{ messageId: 'namedExport' }], - name: 'Component and variable (direct export)', - }, - { - code: 'export function Component() {}; export const Aa = \'a\'', - errors: [{ messageId: 'namedExport' }], - name: 'Component and PascalCase variable', - }, - { - code: 'const foo = 4; const Bar = () => {}; export { foo, Bar };', - errors: [{ messageId: 'namedExport' }], - name: 'Component and variable', - }, - { - code: 'export * from \'./foo\';', - errors: [{ messageId: 'exportAll' }], - name: 'Export all', - }, - { - code: 'export default () => {};', - errors: [{ messageId: 'anonymousExport' }], - name: 'Export default anonymous AF', - }, - { - code: 'export default memo(() => {});', - errors: [{ messageId: 'anonymousExport' }], - name: 'export default anonymous memo AF', - }, - { - code: 'export default function () {};', - errors: [{ messageId: 'anonymousExport' }], - name: 'Export default anonymous function', - }, - { - code: 'export const CONSTANT = 3; export const Foo = () => {};', - errors: [{ messageId: 'namedExport' }], - name: 'Component and constant', - }, - { - code: 'export enum Tab { Home, Settings }; export const Bar = () => {};', - errors: [{ messageId: 'namedExport' }], - name: 'Component and enum', - }, - { - code: 'const Tab = () => {}; export const tabs = [, ];', - errors: [{ messageId: 'localComponents' }], - name: 'Unexported component and export', - }, - { - code: $` - import React from 'react'; - export const CONSTANT = 3; export const Foo = () => {}; - `, - errors: [{ messageId: 'namedExport' }], - filename: 'Test.js', - name: 'Mixed export in JS with react import', - options: [{ checkJS: true }], - }, - { - code: 'export default compose()(MainView);', - errors: [{ messageId: 'anonymousExport' }], - filename: 'Test.jsx', - name: 'export default compose', - }, - { - code: 'export const loader = () => {}; export const Bar = () => {}; export const foo = () => {};', - errors: [{ messageId: 'namedExport' }], - name: 'Component and export non in allowExportNames', - options: [{ allowExportNames: ['loader', 'meta'] }], - }, - { - code: 'const Foo = () => {}; export { Foo as "🍌"}', - errors: [{ messageId: 'localComponents' }], - name: 'Export with arbitrary module identifier', - }, - { - errors: [{ messageId: 'reactContext' }], - code: 'export const MyComponent = () => {}; export const MyContext = createContext("test");', - name: 'Component and React Context', - }, - { - name: 'Component and React Context with React import', - code: 'export const MyComponent = () => {}; export const MyContext = React.createContext(\'test\');', - errors: [{ messageId: 'reactContext' }], - }, - { - name: 'should be invalid when custom HOC is used without adding it to the rule configuration', - code: 'const MyComponent = () => {}; export default observer(MyComponent);', - errors: [{ messageId: 'localComponents' }, { messageId: 'anonymousExport' }], - }, -]; - -run({ - invalid: invalid.map((i) => { - if (typeof i === 'string') - return { - code: i, - filename: 'Test.jsx', - }; - i.filename = i.filename ?? 'Test.jsx'; - return i; - }), - name: RULE_NAME, - - parserOptions: { - ecmaFeatures: { jsx: true }, - }, - rule, - - valid: valids.map((i) => { - if (typeof i === 'string') - return { - code: i, - filename: 'Test.jsx', - }; - i.filename = i.filename ?? 'Test.jsx'; - return i; - }), -}); diff --git a/packages/eslint/README.md b/packages/eslint/README.md index b7dd0b9e..7ff587d5 100644 --- a/packages/eslint/README.md +++ b/packages/eslint/README.md @@ -664,9 +664,13 @@ export default defineConfig({ ### editor specific disables -certain rules are disabled when inside [eslint ide integrations](#ide-integration), namely [`unused-imports/no-unused-imports`] and [`petal/no-only-tests`]. +auto-fixing for the following rules are disabled when [eslitn is running in a code editor](#ide-integration): -this is to prevent unused imports and temporary patches from getting removed by the ide during refactoring. those rules are applied when eslint is ran in the terminal. you can disable this behavior by manually setting `isInEditor`: +- [`prefer-const`] +- [`unused-imports/no-unused-imports`] +- [`petal/no-only-tests`] + +this is to prevent unused imports and temporary patches from getting removed by the editor during refactoring. those rules are applied when eslint is ran in the terminal. you can disable this behavior by manually setting `isInEditor`: ```js // eslint.config.js @@ -754,6 +758,7 @@ export default defineConfig({ [`eslint-plugin-command`]: https://eslint-plugin-command.antfu.me/ [`@eslint/config-inspector`]: https://github.com/eslint/config-inspector [`eslint-plugin-json-schema-validator`]: https://ota-meshi.github.io/eslint-plugin-json-schema-validator/ +[`prefer-const`]: https://eslint.org/docs/rules/prefer-const [`unused-imports/no-unused-imports`]: https://github.com/sweepline/eslint-plugin-unused-imports [`petal/no-only-tests`]: ../eslint-plugin/src/rules/no-only-tests.md [npm-version-src]: https://img.shields.io/npm/v/@flowr/eslint?style=flat&colorA=080f12&colorB=1fa669 diff --git a/packages/eslint/package.json b/packages/eslint/package.json index c44feec7..ba27ae20 100644 --- a/packages/eslint/package.json +++ b/packages/eslint/package.json @@ -54,7 +54,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "tsx ./scripts/typegen.ts && tsup", @@ -69,7 +69,7 @@ "@tanstack/eslint-plugin-query": "^5.62.1", "@unocss/eslint-plugin": ">=0.65.0 < 1", "astro-eslint-parser": "^1.1.0", - "eslint": "^9.18.0", + "eslint": "^9.20.0", "eslint-plugin-astro": "^1.3.1", "eslint-plugin-format": "^0.1.3", "eslint-plugin-json-schema-validator": "^5.3.1", @@ -146,23 +146,23 @@ }, "dependencies": { "@antfu/install-pkg": "^1.0.0", - "@clack/prompts": "^0.9.1", + "@clack/prompts": "^0.10.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", - "@eslint/compat": "^1.2.5", + "@eslint/compat": "^1.2.6", "@eslint/markdown": "^6.2.1", - "@stylistic/eslint-plugin": "^2.13.0", - "@typescript-eslint/eslint-plugin": "^8.21.0", - "@typescript-eslint/parser": "^8.21.0", - "@vitest/eslint-plugin": "^1.1.25", - "eslint-flat-config-utils": "^1.0.0", + "@stylistic/eslint-plugin": "^4.0.0-beta.1", + "@typescript-eslint/eslint-plugin": "^8.24.0", + "@typescript-eslint/parser": "^8.24.0", + "@vitest/eslint-plugin": "^1.1.31", + "eslint-flat-config-utils": "^2.0.1", "eslint-import-resolver-typescript": "^3.7.0", - "eslint-merge-processors": "^1.0.0", - "eslint-plugin-command": "^2.1.0", + "eslint-merge-processors": "^2.0.0", + "eslint-plugin-command": "^3.0.0", "eslint-plugin-import-x": "^4.6.1", - "eslint-plugin-jsdoc": "^50.6.2", - "eslint-plugin-jsonc": "^2.18.2", + "eslint-plugin-jsdoc": "^50.6.3", + "eslint-plugin-jsonc": "^2.19.1", "eslint-plugin-n": "^17.15.1", - "eslint-plugin-perfectionist": "^4.7.0", + "eslint-plugin-perfectionist": "^4.8.0", "eslint-plugin-petal": "workspace:^", "eslint-plugin-regexp": "^2.7.0", "eslint-plugin-toml": "^0.12.0", @@ -170,24 +170,24 @@ "eslint-plugin-unused-imports": "^4.1.4", "eslint-plugin-yml": "^1.16.0", "find-up-simple": "^1.0.0", - "globals": "^15.14.0", + "globals": "^15.15.0", "jsonc-eslint-parser": "^2.4.0", "local-pkg": "^1.0.0", "toml-eslint-parser": "^0.10.0", "yaml-eslint-parser": "^1.2.3" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.24.0", + "@eslint-react/eslint-plugin": "^1.26.2", "@eslint/config-inspector": "^1.0.0", "@flowr/types": "workspace:^", "@prettier/plugin-xml": "^3.4.1", - "@tanstack/eslint-plugin-query": "^5.64.2", + "@tanstack/eslint-plugin-query": "^5.66.1", "@types/eslint-plugin-jsx-a11y": "^6.10.0", "@types/fs-extra": "^11.0.4", "@types/prompts": "^2.4.9", - "@unocss/eslint-plugin": "^65.4.2", - "astro-eslint-parser": "^1.1.0", - "eslint": "^9.18.0", + "@unocss/eslint-plugin": "^65.4.3", + "astro-eslint-parser": "^1.2.1", + "eslint": "^9.20.1", "eslint-plugin-astro": "^1.3.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-json-schema-validator": "^5.3.1", @@ -197,17 +197,17 @@ "eslint-plugin-svelte": "^2.46.1", "eslint-plugin-vue": "^9.32.0", "eslint-plugin-vuejs-accessibility": "^2.4.1", - "eslint-processor-vue-blocks": "^1.0.0", + "eslint-processor-vue-blocks": "^2.0.0", "eslint-typegen": "^1.0.0", "execa": "^9.5.2", "fast-glob": "^3.3.3", "fs-extra": "^11.3.0", "jiti": "^2.4.2", "magic-regexp": "^0.8.0", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-slidev": "^1.0.5", - "svelte": "^5.19.0", + "svelte": "^5.20.0", "svelte-eslint-parser": "^0.43.0", "vue": "^3.5.13", "vue-eslint-parser": "^9.4.3" diff --git a/packages/eslint/src/configs/imports.ts b/packages/eslint/src/configs/imports.ts index 86dd609b..8dfd80b1 100644 --- a/packages/eslint/src/configs/imports.ts +++ b/packages/eslint/src/configs/imports.ts @@ -33,6 +33,7 @@ export async function imports(options: OptionsImports = {}): Promise { 'node/no-path-concat': 'error', 'node/prefer-global/buffer': ['error', 'never'], 'node/prefer-global/process': ['error', 'never'], - 'node/prefer-global/text-decoder': ['error', 'never'], - 'node/prefer-global/text-encoder': ['error', 'never'], - 'node/prefer-global/url-search-params': ['error', 'never'], 'node/process-exit-as-throw': 'error', }, }, diff --git a/packages/eslint/src/configs/react.ts b/packages/eslint/src/configs/react.ts index f1728bb1..93a33a23 100644 --- a/packages/eslint/src/configs/react.ts +++ b/packages/eslint/src/configs/react.ts @@ -59,40 +59,40 @@ export async function react(options: OptionsReact = {}): Promise; export type UserConfig = Awaitable; @@ -100,12 +102,14 @@ export function defineConfig(options: FactoryOptions = {}, ...userConfigs: UserC configs.push(ignores(options.ignores)); configs.push(javascript({ isInEditor, overrides: getOverrides(options, 'javascript') })); configs.push(comments()); - configs.push(node()); configs.push(jsdoc({ stylistic: stylisticOptions })); configs.push(imports({ stylistic: stylisticOptions })); configs.push(command()); configs.push(perfectionist()); + if (options.node ?? true) + configs.push(node()); + if (options.unicorn ?? true) configs.push(unicorn(resolveSubOptions(options, 'unicorn'))); @@ -134,6 +138,7 @@ export function defineConfig(options: FactoryOptions = {}, ...userConfigs: UserC configs.push(test({ ...resolveSubOptions(options, 'test'), overrides: getOverrides(options, 'test'), + isInEditor, })); if (options.regexp ?? true) @@ -250,11 +255,14 @@ export function defineConfig(options: FactoryOptions = {}, ...userConfigs: UserC if (Object.keys(fusedConfig).length) configs.push([fusedConfig]); - const composer = new FlatConfigComposer() + let composer = new FlatConfigComposer() .append(...configs, ...userConfigs as TypedFlatConfigItem[]); if (options.autoRenamePlugins ?? true) - return composer.renamePlugins(DEFAULT_PLUGIN_RENAMING); + composer = composer.renamePlugins(DEFAULT_PLUGIN_RENAMING); + + if (isInEditor) + composer = composer.disableRulesFix(DEFAULT_RULE_FIX, { builtinRules: async () => import(['eslint', 'use-at-your-own-risk'].join('/')).then(r => r.builtinRules) }); return composer; } diff --git a/packages/eslint/src/types/configs/test.ts b/packages/eslint/src/types/configs/test.ts index db3edb62..bda3eddf 100644 --- a/packages/eslint/src/types/configs/test.ts +++ b/packages/eslint/src/types/configs/test.ts @@ -1,7 +1,8 @@ +import type { OptionsIsInEditor } from './editor'; import type { OptionsFiles } from './files'; import type { OptionsOverrides } from './overrides'; -export interface OptionsTest extends OptionsOverrides, OptionsFiles { +export interface OptionsTest extends OptionsOverrides, OptionsFiles, OptionsIsInEditor { /** * Enable test type checking support. * diff --git a/packages/eslint/src/types/configs/typescript.ts b/packages/eslint/src/types/configs/typescript.ts index d24d5395..48eb4e0a 100644 --- a/packages/eslint/src/types/configs/typescript.ts +++ b/packages/eslint/src/types/configs/typescript.ts @@ -21,7 +21,7 @@ export interface OptionsTypeScriptParserOptions extends OptionsOverrides { filesTypeAware?: string[]; /** - * Glob patterns for files that should not be type aware. + * Glob patterns for files that should **not** be type aware. * * @see https://typescript-eslint.io/getting-started/typed-linting * @default ['**\/*.md\/**', '**\/*.astro/*.ts'] diff --git a/packages/eslint/src/types/index.ts b/packages/eslint/src/types/index.ts index 1305d693..8fb3b19e 100644 --- a/packages/eslint/src/types/index.ts +++ b/packages/eslint/src/types/index.ts @@ -43,9 +43,7 @@ export interface TypedFlatConfigItem extends Omit { ''; }); - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/all/javascript.js b/packages/eslint/tests/fixtures/output/all/javascript.js index 5179e561..2bc98d67 100644 --- a/packages/eslint/tests/fixtures/output/all/javascript.js +++ b/packages/eslint/tests/fixtures/output/all/javascript.js @@ -67,4 +67,4 @@ if (a || c || d || (d && b) ) - foo(); + foo(); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/all/markdown.md b/packages/eslint/tests/fixtures/output/all/markdown.md index f6cb3346..3eb49e0e 100644 --- a/packages/eslint/tests/fixtures/output/all/markdown.md +++ b/packages/eslint/tests/fixtures/output/all/markdown.md @@ -30,4 +30,4 @@ Jane Roe|JFK|314 [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/all/svelte.svelte b/packages/eslint/tests/fixtures/output/all/svelte.svelte index 7a9bd92d..f2da4365 100644 --- a/packages/eslint/tests/fixtures/output/all/svelte.svelte +++ b/packages/eslint/tests/fixtures/output/all/svelte.svelte @@ -5,4 +5,4 @@
{@html content}
-
+ \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/all/typescript.ts b/packages/eslint/tests/fixtures/output/all/typescript.ts index 0f7dbed1..c44cf28e 100644 --- a/packages/eslint/tests/fixtures/output/all/typescript.ts +++ b/packages/eslint/tests/fixtures/output/all/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } @@ -80,4 +80,4 @@ function fn(): string { return `hello${1}`; } -log(car1, car2, favoriteFruit, numericValue, fn()); +log(car1, car2, favoriteFruit, numericValue, fn()); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/all/vue-ts.vue b/packages/eslint/tests/fixtures/output/all/vue-ts.vue index 11449580..b302bd52 100644 --- a/packages/eslint/tests/fixtures/output/all/vue-ts.vue +++ b/packages/eslint/tests/fixtures/output/all/vue-ts.vue @@ -32,4 +32,4 @@ $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; } - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/all/vue.vue b/packages/eslint/tests/fixtures/output/all/vue.vue index 618b2ea4..11f19074 100644 --- a/packages/eslint/tests/fixtures/output/all/vue.vue +++ b/packages/eslint/tests/fixtures/output/all/vue.vue @@ -24,4 +24,4 @@ const _zero = doubled.value + counter.value;

Counter: {{ counter }}

- + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/js/javascript.js b/packages/eslint/tests/fixtures/output/js/javascript.js index 5179e561..2bc98d67 100644 --- a/packages/eslint/tests/fixtures/output/js/javascript.js +++ b/packages/eslint/tests/fixtures/output/js/javascript.js @@ -67,4 +67,4 @@ if (a || c || d || (d && b) ) - foo(); + foo(); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/js/markdown.md b/packages/eslint/tests/fixtures/output/js/markdown.md index f6cb3346..3eb49e0e 100644 --- a/packages/eslint/tests/fixtures/output/js/markdown.md +++ b/packages/eslint/tests/fixtures/output/js/markdown.md @@ -30,4 +30,4 @@ Jane Roe|JFK|314 [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/javascript.js b/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/javascript.js index 5179e561..2bc98d67 100644 --- a/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/javascript.js +++ b/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/javascript.js @@ -67,4 +67,4 @@ if (a || c || d || (d && b) ) - foo(); + foo(); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/markdown.md b/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/markdown.md index b049fd92..3fc9e23a 100644 --- a/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/markdown.md +++ b/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/markdown.md @@ -30,4 +30,4 @@ function identity(x) { [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/typescript.ts b/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/typescript.ts index 0f7dbed1..c44cf28e 100644 --- a/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/typescript.ts +++ b/packages/eslint/tests/fixtures/output/no-markdown-with-formatters/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } @@ -80,4 +80,4 @@ function fn(): string { return `hello${1}`; } -log(car1, car2, favoriteFruit, numericValue, fn()); +log(car1, car2, favoriteFruit, numericValue, fn()); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-style/javascript.js b/packages/eslint/tests/fixtures/output/no-style/javascript.js index ff1abc38..bf384ef8 100644 --- a/packages/eslint/tests/fixtures/output/no-style/javascript.js +++ b/packages/eslint/tests/fixtures/output/no-style/javascript.js @@ -67,4 +67,4 @@ if (a || (d && b) ) { foo() - } + } \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-style/toml.toml b/packages/eslint/tests/fixtures/output/no-style/toml.toml index a28003c4..7b352941 100644 --- a/packages/eslint/tests/fixtures/output/no-style/toml.toml +++ b/packages/eslint/tests/fixtures/output/no-style/toml.toml @@ -20,4 +20,4 @@ apple.skin = "thin" apple.color = "red" orange.type = "fruit" orange.skin = "thick" -orange.color = "orange" +orange.color = "orange" \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-style/typescript.ts b/packages/eslint/tests/fixtures/output/no-style/typescript.ts index e849c33d..d4449efd 100644 --- a/packages/eslint/tests/fixtures/output/no-style/typescript.ts +++ b/packages/eslint/tests/fixtures/output/no-style/typescript.ts @@ -76,5 +76,4 @@ const fn = (): string => { return `hello${ 1}` } -log(car1, car2, favoriteFruit, numericValue, fn()) - +log(car1, car2, favoriteFruit, numericValue, fn()) \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-style/vue-ts.vue b/packages/eslint/tests/fixtures/output/no-style/vue-ts.vue index 58c53a46..402552c0 100644 --- a/packages/eslint/tests/fixtures/output/no-style/vue-ts.vue +++ b/packages/eslint/tests/fixtures/output/no-style/vue-ts.vue @@ -32,4 +32,4 @@ $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; } - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/no-style/vue.vue b/packages/eslint/tests/fixtures/output/no-style/vue.vue index 81bd01bc..65ad0a17 100644 --- a/packages/eslint/tests/fixtures/output/no-style/vue.vue +++ b/packages/eslint/tests/fixtures/output/no-style/vue.vue @@ -24,4 +24,4 @@ const _zero = doubled.value + counter.value

Counter: {{ counter }}

- + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/tab-double-quotes/javascript.js b/packages/eslint/tests/fixtures/output/tab-double-quotes/javascript.js index 59cbfebd..b01d5d99 100644 --- a/packages/eslint/tests/fixtures/output/tab-double-quotes/javascript.js +++ b/packages/eslint/tests/fixtures/output/tab-double-quotes/javascript.js @@ -67,4 +67,4 @@ if (a || c || d || (d && b) ) - foo(); + foo(); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/tab-double-quotes/markdown.md b/packages/eslint/tests/fixtures/output/tab-double-quotes/markdown.md index 3e6e8247..a932c35e 100644 --- a/packages/eslint/tests/fixtures/output/tab-double-quotes/markdown.md +++ b/packages/eslint/tests/fixtures/output/tab-double-quotes/markdown.md @@ -30,4 +30,4 @@ Jane Roe|JFK|314 [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/tab-double-quotes/typescript.ts b/packages/eslint/tests/fixtures/output/tab-double-quotes/typescript.ts index b20bf579..1f4b626e 100644 --- a/packages/eslint/tests/fixtures/output/tab-double-quotes/typescript.ts +++ b/packages/eslint/tests/fixtures/output/tab-double-quotes/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } @@ -80,4 +80,4 @@ function fn(): string { return `hello${1}`; } -log(car1, car2, favoriteFruit, numericValue, fn()); +log(car1, car2, favoriteFruit, numericValue, fn()); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/tab-double-quotes/vue-ts.vue b/packages/eslint/tests/fixtures/output/tab-double-quotes/vue-ts.vue index 3455b51b..bc2896c0 100644 --- a/packages/eslint/tests/fixtures/output/tab-double-quotes/vue-ts.vue +++ b/packages/eslint/tests/fixtures/output/tab-double-quotes/vue-ts.vue @@ -32,4 +32,4 @@ $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; } - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/tab-double-quotes/vue.vue b/packages/eslint/tests/fixtures/output/tab-double-quotes/vue.vue index ff6a08b6..3c782477 100644 --- a/packages/eslint/tests/fixtures/output/tab-double-quotes/vue.vue +++ b/packages/eslint/tests/fixtures/output/tab-double-quotes/vue.vue @@ -24,4 +24,4 @@ const _zero = doubled.value + counter.value;

Counter: {{ counter }}

- + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/ts-override/javascript.js b/packages/eslint/tests/fixtures/output/ts-override/javascript.js index 5179e561..2bc98d67 100644 --- a/packages/eslint/tests/fixtures/output/ts-override/javascript.js +++ b/packages/eslint/tests/fixtures/output/ts-override/javascript.js @@ -67,4 +67,4 @@ if (a || c || d || (d && b) ) - foo(); + foo(); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/ts-override/markdown.md b/packages/eslint/tests/fixtures/output/ts-override/markdown.md index f6cb3346..3eb49e0e 100644 --- a/packages/eslint/tests/fixtures/output/ts-override/markdown.md +++ b/packages/eslint/tests/fixtures/output/ts-override/markdown.md @@ -30,4 +30,4 @@ Jane Roe|JFK|314 [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/ts-override/typescript.ts b/packages/eslint/tests/fixtures/output/ts-override/typescript.ts index f6db977c..ca79ee51 100644 --- a/packages/eslint/tests/fixtures/output/ts-override/typescript.ts +++ b/packages/eslint/tests/fixtures/output/ts-override/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } @@ -80,4 +80,4 @@ function fn(): string { return `hello${1}`; } -log(car1, car2, favoriteFruit, numericValue, fn()); +log(car1, car2, favoriteFruit, numericValue, fn()); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/ts-override/vue-ts.vue b/packages/eslint/tests/fixtures/output/ts-override/vue-ts.vue index 11449580..b302bd52 100644 --- a/packages/eslint/tests/fixtures/output/ts-override/vue-ts.vue +++ b/packages/eslint/tests/fixtures/output/ts-override/vue-ts.vue @@ -32,4 +32,4 @@ $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; } - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/ts-override/vue.vue b/packages/eslint/tests/fixtures/output/ts-override/vue.vue index 618b2ea4..11f19074 100644 --- a/packages/eslint/tests/fixtures/output/ts-override/vue.vue +++ b/packages/eslint/tests/fixtures/output/ts-override/vue.vue @@ -24,4 +24,4 @@ const _zero = doubled.value + counter.value;

Counter: {{ counter }}

- + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/ts-strict-with-react/typescript.ts b/packages/eslint/tests/fixtures/output/ts-strict-with-react/typescript.ts index d1dfcc85..3a081548 100644 --- a/packages/eslint/tests/fixtures/output/ts-strict-with-react/typescript.ts +++ b/packages/eslint/tests/fixtures/output/ts-strict-with-react/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } diff --git a/packages/eslint/tests/fixtures/output/ts-strict/typescript.ts b/packages/eslint/tests/fixtures/output/ts-strict/typescript.ts index d1dfcc85..3a081548 100644 --- a/packages/eslint/tests/fixtures/output/ts-strict/typescript.ts +++ b/packages/eslint/tests/fixtures/output/ts-strict/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } diff --git a/packages/eslint/tests/fixtures/output/with-formatters/astro.astro b/packages/eslint/tests/fixtures/output/with-formatters/astro.astro index 782adb02..75ff3a30 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/astro.astro +++ b/packages/eslint/tests/fixtures/output/with-formatters/astro.astro @@ -14,4 +14,4 @@ const content = 'hi!'; document.querySelector('h1')?.addEventListener('click', () => { ''; }); - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/css.css b/packages/eslint/tests/fixtures/output/with-formatters/css.css index 5f196262..79a0f0d5 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/css.css +++ b/packages/eslint/tests/fixtures/output/with-formatters/css.css @@ -8,4 +8,4 @@ padding-right: 0.75rem; padding-left: 0.75rem; } -} +} \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/javascript.js b/packages/eslint/tests/fixtures/output/with-formatters/javascript.js index 5179e561..2bc98d67 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/javascript.js +++ b/packages/eslint/tests/fixtures/output/with-formatters/javascript.js @@ -67,4 +67,4 @@ if (a || c || d || (d && b) ) - foo(); + foo(); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/markdown.md b/packages/eslint/tests/fixtures/output/with-formatters/markdown.md index 00c626c0..95367d12 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/markdown.md +++ b/packages/eslint/tests/fixtures/output/with-formatters/markdown.md @@ -31,4 +31,4 @@ function identity(x) { [another one]: http://example.com 'Example title' Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. +Curabitur consectetur maximus risus, sed maximus tellus tincidunt et. \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/typescript.ts b/packages/eslint/tests/fixtures/output/with-formatters/typescript.ts index 0f7dbed1..c44cf28e 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/typescript.ts +++ b/packages/eslint/tests/fixtures/output/with-formatters/typescript.ts @@ -19,7 +19,7 @@ for (const person of people) log(`Hello, my name is ${person.name} and I am ${person.age} years old.`); // Define a generic function -function identity< T >(arg: T): T { +function identity(arg: T): T { return arg; } @@ -80,4 +80,4 @@ function fn(): string { return `hello${1}`; } -log(car1, car2, favoriteFruit, numericValue, fn()); +log(car1, car2, favoriteFruit, numericValue, fn()); \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/vue-ts.vue b/packages/eslint/tests/fixtures/output/with-formatters/vue-ts.vue index 52ba7a45..5a4c0aac 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/vue-ts.vue +++ b/packages/eslint/tests/fixtures/output/with-formatters/vue-ts.vue @@ -35,4 +35,4 @@ body { font: 100% $font-stack; color: $primary-color; } - + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/vue.vue b/packages/eslint/tests/fixtures/output/with-formatters/vue.vue index 618b2ea4..11f19074 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/vue.vue +++ b/packages/eslint/tests/fixtures/output/with-formatters/vue.vue @@ -24,4 +24,4 @@ const _zero = doubled.value + counter.value;

Counter: {{ counter }}

- + \ No newline at end of file diff --git a/packages/eslint/tests/fixtures/output/with-formatters/xml.xml b/packages/eslint/tests/fixtures/output/with-formatters/xml.xml index 4213d242..75aab066 100644 --- a/packages/eslint/tests/fixtures/output/with-formatters/xml.xml +++ b/packages/eslint/tests/fixtures/output/with-formatters/xml.xml @@ -17,4 +17,4 @@ - + \ No newline at end of file diff --git a/packages/eslint/tests/utils.test.ts b/packages/eslint/tests/utils.test.ts index 8290356e..7f57f863 100644 --- a/packages/eslint/tests/utils.test.ts +++ b/packages/eslint/tests/utils.test.ts @@ -27,5 +27,5 @@ describe('parserPlain', () => { }, } `); - }) -}) + }); +}); diff --git a/packages/fetch/package.json b/packages/fetch/package.json index c2769438..31b59783 100644 --- a/packages/fetch/package.json +++ b/packages/fetch/package.json @@ -78,7 +78,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && tsup && pnpm build:cjs", diff --git a/packages/fetch/src/lib/fetch.ts b/packages/fetch/src/lib/fetch.ts index 7d2995ae..4447d9ce 100644 --- a/packages/fetch/src/lib/fetch.ts +++ b/packages/fetch/src/lib/fetch.ts @@ -1,6 +1,7 @@ /* eslint-disable node/prefer-global/buffer -- iife */ +import type { RequestOptions } from './types'; import { QueryError } from './error'; -import { FetchResultTypes, type RequestOptions } from './types'; +import { FetchResultTypes } from './types'; /** * Performs an HTTP(S) fetch diff --git a/packages/iterator/package.json b/packages/iterator/package.json index 5afd84d5..12969eec 100644 --- a/packages/iterator/package.json +++ b/packages/iterator/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "Opinionated collection of common iterator utilities", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -26,104 +28,104 @@ "helper" ], "sideEffects": [ - "./dist/esm/chunk-S3RL7WCH.js", - "./dist/esm/chunk-U7U3QFJY.js", - "./dist/esm/chunk-PSUTEROD.js", "./dist/esm/chunk-VT6CCMEC.js", - "./dist/esm/chunk-OMRPBXIU.js", - "./dist/esm/chunk-YD3DG5XQ.js", - "./dist/esm/chunk-ZP5X2XSO.js", - "./dist/esm/chunk-KJ7PVWTC.js", + "./dist/esm/chunk-25NVECBU.js", + "./dist/esm/chunk-SO6UFQB2.js", + "./dist/esm/chunk-6IL4HBJC.js", + "./dist/esm/chunk-JVU2GXHE.js", + "./dist/esm/chunk-I6LOQBW3.js", "./dist/esm/chunk-OHGSFKIM.js", - "./dist/esm/chunk-APKYFUQD.js", - "./dist/esm/chunk-PODDHA2X.js", - "./dist/esm/chunk-SYHLZP64.js", - "./dist/esm/chunk-GP4YLV7L.js", + "./dist/esm/chunk-EGFSISKM.js", + "./dist/esm/chunk-33OISSRN.js", + "./dist/esm/chunk-ATDB277W.js", + "./dist/esm/chunk-IB5LXMO6.js", "./dist/esm/chunk-4ECXZBSP.js", - "./dist/esm/chunk-VOTSXEMI.js", - "./dist/esm/chunk-KRJHFY4X.js", - "./dist/esm/chunk-G45KHJSP.js", + "./dist/esm/chunk-JSO5B7XG.js", + "./dist/esm/chunk-OIQGDM7V.js", + "./dist/esm/chunk-YPNVKSWM.js", + "./dist/esm/chunk-7AWHFBKS.js", + "./dist/esm/chunk-BYDKBULR.js", "./dist/esm/chunk-6MBH6JDP.js", "./dist/esm/chunk-EGKTYU6H.js", + "./dist/esm/chunk-CLBC2AAH.js", "./dist/esm/chunk-LITECLZ4.js", - "./dist/esm/chunk-DOD7A4LS.js", - "./dist/esm/chunk-W5WFMNYN.js", - "./dist/esm/chunk-QJEGUIVU.js", - "./dist/esm/chunk-KGO7HFHA.js", + "./dist/esm/chunk-K3FXMNK6.js", + "./dist/esm/chunk-J46LPGYU.js", "./dist/esm/chunk-DQ7G2DRO.js", - "./dist/esm/chunk-MOOFGFKI.js", - "./dist/esm/chunk-DIUVAQKR.js", - "./dist/esm/chunk-JLIXZKVV.js", - "./dist/esm/chunk-I5XZNEPE.js", - "./dist/esm/chunk-6QRPBRL4.js", - "./dist/esm/chunk-QQFMMERJ.js", + "./dist/esm/chunk-55NBB5TM.js", + "./dist/esm/chunk-EHP2WD5U.js", + "./dist/esm/chunk-V4X3RECI.js", + "./dist/esm/chunk-XNIEFRGJ.js", + "./dist/esm/chunk-TOMRSSYO.js", + "./dist/esm/chunk-VETLHJ2L.js", "./dist/esm/chunk-XAST7CLS.js", - "./dist/esm/chunk-HTRTXORB.js", - "./dist/esm/chunk-H6RNGNRS.js", - "./dist/esm/chunk-MPAUNVDO.js", + "./dist/esm/chunk-TMY42Y6E.js", + "./dist/esm/chunk-V4MEKJMB.js", + "./dist/esm/chunk-OLM3WZOJ.js", + "./dist/esm/chunk-JLVFPUWT.js", "./dist/esm/chunk-QFKBBL7L.js", - "./dist/esm/chunk-MIUTYLLR.js", - "./dist/esm/chunk-PI3BODXC.js", - "./dist/esm/chunk-44G5TAMG.js", - "./dist/esm/chunk-DTRLRBKI.js", - "./dist/esm/chunk-7W5F7LZD.js", - "./dist/esm/chunk-OETNV4WY.js", - "./dist/esm/chunk-NQ2U7BEZ.js", + "./dist/esm/chunk-IADLHZLQ.js", + "./dist/esm/chunk-I5EZ6APG.js", + "./dist/esm/chunk-ZZ4OOEXB.js", + "./dist/esm/chunk-M5P4SVSH.js", + "./dist/esm/chunk-2PCPLBT7.js", + "./dist/esm/chunk-5XM575HX.js", + "./dist/esm/chunk-OVPARLAB.js", "./dist/esm/chunk-TUIGL5QT.js", - "./dist/esm/chunk-KLDRG7FQ.js", - "./dist/esm/chunk-TA5XXNOC.js", + "./dist/esm/chunk-3J2ASI66.js", "./dist/esm/chunk-6LRVL3RF.js", + "./dist/esm/chunk-SHDJI7PP.js", + "./dist/esm/chunk-NI3NEI3B.js", "./dist/esm/chunk-7QVYU63E.js", - "./dist/esm/chunk-JXYDJVYU.js", "./dist/esm/chunk-55LTFO7R.js", "./dist/esm/chunk-IFR746KX.js", - "./dist/esm/chunk-5BQ3O24T.js", - "./dist/esm/chunk-QT2R57FL.js", - "./dist/esm/chunk-2JKGEMOX.js", + "./dist/esm/chunk-CILGW265.js", + "./dist/esm/chunk-4IV5EHIE.js", + "./dist/esm/chunk-45ZS6SYK.js", + "./dist/esm/chunk-YYJNVPEP.js", + "./dist/esm/chunk-WWKYXUPR.js", "./dist/esm/chunk-HB4BGBLE.js", - "./dist/esm/chunk-AGNK3XSN.js", - "./dist/esm/chunk-ZCUHGF7U.js", - "./dist/esm/chunk-IQOBTSY3.js", - "./dist/esm/chunk-7AOFNXQ4.js", "./dist/esm/chunk-BOVMM3VK.js", - "./dist/esm/chunk-7OIHNIZC.js", - "./dist/esm/chunk-G4S54JTX.js", - "./dist/esm/chunk-F7IJ4AYJ.js", - "./dist/esm/chunk-3TDRSXJZ.js", - "./dist/esm/chunk-HV4IK2ZN.js", - "./dist/esm/chunk-7ORFVH34.js", - "./dist/esm/chunk-TTNIRW5Q.js", + "./dist/esm/chunk-74I62BBC.js", + "./dist/esm/chunk-HJJFEXGV.js", + "./dist/esm/chunk-XD3GQ3MY.js", + "./dist/esm/chunk-V2VQRZ5I.js", + "./dist/esm/chunk-6LJRYPJU.js", "./dist/esm/chunk-6N25MPOD.js", - "./dist/esm/chunk-AOZAO3HQ.js", "./dist/esm/chunk-R4U2C5PA.js", - "./dist/esm/chunk-XA5B55S3.js", - "./dist/esm/chunk-Q5RNRYMP.js", - "./dist/esm/chunk-V5M2YZJU.js", + "./dist/esm/chunk-NZ45TJ3D.js", + "./dist/esm/chunk-CGM46WIV.js", + "./dist/esm/chunk-IU4PXL5T.js", + "./dist/esm/chunk-4NGIBZDS.js", + "./dist/esm/chunk-I5RVBFUQ.js", + "./dist/esm/chunk-TNTN4L7G.js", + "./dist/esm/chunk-6DHUZJX7.js", + "./dist/esm/chunk-CEBFO3M7.js", + "./dist/esm/chunk-J7ELUNNS.js", + "./dist/esm/chunk-LOMTOPIX.js", "./dist/esm/chunk-VWHIV66P.js", "./dist/esm/chunk-RHTS5YRV.js", + "./dist/esm/chunk-CS6637C6.js", + "./dist/esm/chunk-AEDYSKM3.js", "./dist/esm/chunk-52UQYYGP.js", + "./dist/esm/chunk-EUCROBYF.js", + "./dist/esm/chunk-KFOJZE6B.js", "./dist/esm/chunk-QGJYYVOL.js", - "./dist/esm/chunk-ORICOLFK.js", - "./dist/esm/chunk-SXVLMHYO.js", - "./dist/esm/chunk-3UQTXYHO.js", - "./dist/esm/chunk-JW6HDSVF.js", - "./dist/esm/chunk-B4MHJ4HJ.js", - "./dist/esm/chunk-IJVRQFOS.js", - "./dist/esm/chunk-UW7E7VRR.js", + "./dist/esm/chunk-SUCFGEFW.js", + "./dist/esm/chunk-L5YW2L5E.js", + "./dist/esm/chunk-7N52YRSB.js", + "./dist/esm/chunk-IS5M2FL2.js", + "./dist/esm/chunk-YNLIDURA.js", + "./dist/esm/chunk-B6TG7QED.js", + "./dist/esm/chunk-LE5HHGS6.js", + "./dist/esm/chunk-XQJMCD5J.js", "./dist/esm/chunk-JEPSXA2W.js", - "./dist/esm/chunk-3AP76FHA.js", + "./dist/esm/chunk-KFG2CFQV.js", "./dist/esm/chunk-HAACKT3J.js", "./dist/esm/chunk-PJWSBAOA.js", "./dist/esm/chunk-VJNFJ44L.js", - "./dist/esm/chunk-ERTX3X2B.js", - "./dist/esm/chunk-VCD4GHEH.js", - "./dist/esm/chunk-ZEUJXNF7.js", - "./dist/esm/chunk-ELA2WWWE.js", - "./dist/esm/chunk-UQCVGUHT.js", - "./dist/esm/chunk-ZUUROJON.js", - "./dist/esm/chunk-LSRK5QKS.js", - "./dist/esm/chunk-Y4RASVJD.js", - "./dist/esm/chunk-ZETHDABQ.js", + "./dist/esm/chunk-VJZMUOOM.js", + "./dist/esm/chunk-XZWVGSDD.js", "./dist/iife/index.global.js" ], "exports": { @@ -1046,7 +1048,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && tsup && pnpm run '/^build:.*/'", diff --git a/packages/iterator/src/index.ts b/packages/iterator/src/index.ts index 6e5df70e..5b11a4f8 100644 --- a/packages/iterator/src/index.ts +++ b/packages/iterator/src/index.ts @@ -66,7 +66,7 @@ export * from './lib/range.ts'; export * from './lib/reduce.ts'; export * from './lib/repeat.ts'; export * from './lib/reverse.ts'; -export type { LexicographicComparison, CompareByComparator } from './lib/shared/_compare.ts'; +export type { CompareByComparator, LexicographicComparison } from './lib/shared/_compare.ts'; export type { NumberResolvable } from './lib/shared/_toNumberOrThrow.ts'; export * from './lib/shared/comparators.ts'; export * from './lib/skip.ts'; diff --git a/packages/iterator/src/lib/average.ts b/packages/iterator/src/lib/average.ts index c224260e..cddc1442 100644 --- a/packages/iterator/src/lib/average.ts +++ b/packages/iterator/src/lib/average.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { NumberResolvable } from './shared/_toNumberOrThrow.ts'; import { map } from './map.ts'; -import { type NumberResolvable, toNumberOrThrow } from './shared/_toNumberOrThrow.ts'; +import { toNumberOrThrow } from './shared/_toNumberOrThrow.ts'; /** * Consumes the iterable and returns the average value of all the elements. If the iterable is empty, it returns `null`. diff --git a/packages/iterator/src/lib/compareBy.ts b/packages/iterator/src/lib/compareBy.ts index 92bcbb77..291c10b6 100644 --- a/packages/iterator/src/lib/compareBy.ts +++ b/packages/iterator/src/lib/compareBy.ts @@ -1,5 +1,7 @@ -import { from, type IterableResolvable } from './from.ts'; -import { type CompareByComparator, compareIteratorElements, type LexicographicComparison, orderingIsEqual, orderingIsLess } from './shared/_compare.ts'; +import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator, LexicographicComparison } from './shared/_compare.ts'; +import { from } from './from.ts'; +import { compareIteratorElements, orderingIsEqual, orderingIsLess } from './shared/_compare.ts'; import { toIterableIterator } from './toIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/compress.ts b/packages/iterator/src/lib/compress.ts index 81bc1e43..ce58e460 100644 --- a/packages/iterator/src/lib/compress.ts +++ b/packages/iterator/src/lib/compress.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { toIterableIterator } from './toIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/count.ts b/packages/iterator/src/lib/count.ts index b24f4560..5fc53745 100644 --- a/packages/iterator/src/lib/count.ts +++ b/packages/iterator/src/lib/count.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; /** * Consumes the iterable and returns the number of elements. diff --git a/packages/iterator/src/lib/equalBy.ts b/packages/iterator/src/lib/equalBy.ts index 3394f95e..2fc27876 100644 --- a/packages/iterator/src/lib/equalBy.ts +++ b/packages/iterator/src/lib/equalBy.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { assertFunction } from './shared/_assertFunction.ts'; import { toIterableIterator } from './toIterableIterator.ts'; diff --git a/packages/iterator/src/lib/first.ts b/packages/iterator/src/lib/first.ts index 190f5808..cac022b4 100644 --- a/packages/iterator/src/lib/first.ts +++ b/packages/iterator/src/lib/first.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; /** * Consumes the first element of the iterable, returning it if it's found and `undefined` otherwise. diff --git a/packages/iterator/src/lib/inspect.ts b/packages/iterator/src/lib/inspect.ts index ba7119c0..5440ce8b 100644 --- a/packages/iterator/src/lib/inspect.ts +++ b/packages/iterator/src/lib/inspect.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { assertFunction } from './shared/_assertFunction.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; diff --git a/packages/iterator/src/lib/intersperse.ts b/packages/iterator/src/lib/intersperse.ts index 8c8f0211..4a366112 100644 --- a/packages/iterator/src/lib/intersperse.ts +++ b/packages/iterator/src/lib/intersperse.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/isEmpty.ts b/packages/iterator/src/lib/isEmpty.ts index 579bcbbe..f3a50029 100644 --- a/packages/iterator/src/lib/isEmpty.ts +++ b/packages/iterator/src/lib/isEmpty.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; /** * Advances the iterable once, returning `true` if it's exhausted and `false` otherwise. diff --git a/packages/iterator/src/lib/isSortedBy.ts b/packages/iterator/src/lib/isSortedBy.ts index 01a44399..0f414adc 100644 --- a/packages/iterator/src/lib/isSortedBy.ts +++ b/packages/iterator/src/lib/isSortedBy.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator } from './shared/_compare.ts'; import { assertFunction } from './shared/_assertFunction'; -import { type CompareByComparator, compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; +import { compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; import { toIterableIterator } from './toIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/isSortedByKey.ts b/packages/iterator/src/lib/isSortedByKey.ts index e4ed6359..99f6b3e7 100644 --- a/packages/iterator/src/lib/isSortedByKey.ts +++ b/packages/iterator/src/lib/isSortedByKey.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator } from './shared/_compare.ts'; import { assertFunction } from './shared/_assertFunction.ts'; -import { type CompareByComparator, compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; +import { compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; import { defaultCompare } from './shared/comparators.ts'; import { toIterableIterator } from './toIterableIterator.ts'; diff --git a/packages/iterator/src/lib/maxBy.ts b/packages/iterator/src/lib/maxBy.ts index 36f8bce2..a790f503 100644 --- a/packages/iterator/src/lib/maxBy.ts +++ b/packages/iterator/src/lib/maxBy.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator } from './shared/_compare.ts'; import { assertFunction } from './shared/_assertFunction.ts'; -import { type CompareByComparator, compareIteratorElements, orderingIsLess } from './shared/_compare.ts'; +import { compareIteratorElements, orderingIsLess } from './shared/_compare.ts'; import { toIterableIterator } from './toIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/maxByKey.ts b/packages/iterator/src/lib/maxByKey.ts index 7733e8cd..1e53cfc0 100644 --- a/packages/iterator/src/lib/maxByKey.ts +++ b/packages/iterator/src/lib/maxByKey.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator } from './shared/_compare.ts'; import { assertFunction } from './shared/_assertFunction.ts'; -import { type CompareByComparator, compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; +import { compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; import { defaultCompare } from './shared/comparators.ts'; import { toIterableIterator } from './toIterableIterator.ts'; diff --git a/packages/iterator/src/lib/minBy.ts b/packages/iterator/src/lib/minBy.ts index af76887e..2416a4b8 100644 --- a/packages/iterator/src/lib/minBy.ts +++ b/packages/iterator/src/lib/minBy.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator } from './shared/_compare.ts'; import { assertFunction } from './shared/_assertFunction.ts'; -import { type CompareByComparator, compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; +import { compareIteratorElements, orderingIsGreater } from './shared/_compare.ts'; import { toIterableIterator } from './toIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/minByKey.ts b/packages/iterator/src/lib/minByKey.ts index 54882b29..bcbba0aa 100644 --- a/packages/iterator/src/lib/minByKey.ts +++ b/packages/iterator/src/lib/minByKey.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { CompareByComparator } from './shared/_compare.ts'; import { assertFunction } from './shared/_assertFunction.ts'; -import { type CompareByComparator, compareIteratorElements, orderingIsLess } from './shared/_compare.ts'; +import { compareIteratorElements, orderingIsLess } from './shared/_compare.ts'; import { defaultCompare } from './shared/comparators.ts'; import { toIterableIterator } from './toIterableIterator.ts'; diff --git a/packages/iterator/src/lib/peekable.ts b/packages/iterator/src/lib/peekable.ts index b478b0d5..84e98ef6 100644 --- a/packages/iterator/src/lib/peekable.ts +++ b/packages/iterator/src/lib/peekable.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; /** * Creates an iterator that allows you to peek at the next element without advancing the iterator. diff --git a/packages/iterator/src/lib/stepBy.ts b/packages/iterator/src/lib/stepBy.ts index 9e895c8b..93dc7391 100644 --- a/packages/iterator/src/lib/stepBy.ts +++ b/packages/iterator/src/lib/stepBy.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { assertPositive } from './shared/_assertPositive.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; import { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow.ts'; diff --git a/packages/iterator/src/lib/sum.ts b/packages/iterator/src/lib/sum.ts index 3b015c5c..3f97be6b 100644 --- a/packages/iterator/src/lib/sum.ts +++ b/packages/iterator/src/lib/sum.ts @@ -1,6 +1,7 @@ import type { IterableResolvable } from './from.ts'; +import type { NumberResolvable } from './shared/_toNumberOrThrow.ts'; import { map } from './map.ts'; -import { type NumberResolvable, toNumberOrThrow } from './shared/_toNumberOrThrow.ts'; +import { toNumberOrThrow } from './shared/_toNumberOrThrow.ts'; /** * Consumes the iterable and returns the sum of all the elements. diff --git a/packages/iterator/src/lib/take.ts b/packages/iterator/src/lib/take.ts index 11279b06..d21f790f 100644 --- a/packages/iterator/src/lib/take.ts +++ b/packages/iterator/src/lib/take.ts @@ -1,5 +1,6 @@ +import type { IterableResolvable } from './from.ts'; import { empty } from './empty.ts'; -import { from, type IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { assertNotNegative } from './shared/_assertNotNegative.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; import { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow.ts'; diff --git a/packages/iterator/src/lib/tee.ts b/packages/iterator/src/lib/tee.ts index 1a3c8470..c0aa59f0 100644 --- a/packages/iterator/src/lib/tee.ts +++ b/packages/iterator/src/lib/tee.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { repeat } from './repeat.ts'; import { assertNotNegative } from './shared/_assertNotNegative.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; diff --git a/packages/iterator/src/lib/toIterableIterator.ts b/packages/iterator/src/lib/toIterableIterator.ts index 6259a96a..d87fb33c 100644 --- a/packages/iterator/src/lib/toIterableIterator.ts +++ b/packages/iterator/src/lib/toIterableIterator.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; /** diff --git a/packages/iterator/src/lib/windows.ts b/packages/iterator/src/lib/windows.ts index c8e83085..41850db2 100644 --- a/packages/iterator/src/lib/windows.ts +++ b/packages/iterator/src/lib/windows.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; import { assertPositive } from './shared/_assertPositive.ts'; import { makeIterableIterator } from './shared/_makeIterableIterator.ts'; import { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow.ts'; diff --git a/packages/iterator/src/lib/zip.ts b/packages/iterator/src/lib/zip.ts index 81ce4a47..bebbd3d6 100644 --- a/packages/iterator/src/lib/zip.ts +++ b/packages/iterator/src/lib/zip.ts @@ -1,4 +1,5 @@ -import { from, type IterableResolvable } from './from.ts'; +import type { IterableResolvable } from './from.ts'; +import { from } from './from.ts'; /** * Creates an iterable with the elements of the input iterables zipped together. The opposite of {@linkcode unzip}. diff --git a/packages/iterator/tests/average.test.ts b/packages/iterator/tests/average.test.ts index 0f28c114..7994465e 100644 --- a/packages/iterator/tests/average.test.ts +++ b/packages/iterator/tests/average.test.ts @@ -25,9 +25,9 @@ describe('average', () => { expect(result).toBe(-3); }); - it('given iterable with strings then throws TypeError', () => { + it('given iterable with strings then throws RangeError', () => { const iterable = ['a', 'e', 'c', 'b', 'd']; // @ts-expect-error: testing invalid input - expect(() => average(iterable)).toThrow(new TypeError('a must be a non-NaN number')); + expect(() => average(iterable)).toThrow(new RangeError('a must be a non-NaN number')); }); }); diff --git a/packages/iterator/tests/chunk.test.ts b/packages/iterator/tests/chunk.test.ts index cc1ed09e..a6b548a8 100644 --- a/packages/iterator/tests/chunk.test.ts +++ b/packages/iterator/tests/chunk.test.ts @@ -38,10 +38,10 @@ describe('chunk', () => { expect(() => [...chunk(iterable, chunkSize)]).toThrowError(new RangeError('-1 must be a positive number')); }); - it('given iterable and NaN chunk size then throws TypeError', () => { + it('given iterable and NaN chunk size then throws RangeError', () => { const iterable = [1, 2, 3]; const chunkSize = Number.NaN; - expect(() => [...chunk(iterable, chunkSize)]).toThrowError(new TypeError('NaN must be a non-NaN number')); + expect(() => [...chunk(iterable, chunkSize)]).toThrowError(new RangeError('NaN must be a non-NaN number')); }); it('given iterable and Infinity chunk size then throws RangeError', () => { diff --git a/packages/iterator/tests/product.test.ts b/packages/iterator/tests/product.test.ts index 3ea19e45..451a6367 100644 --- a/packages/iterator/tests/product.test.ts +++ b/packages/iterator/tests/product.test.ts @@ -34,6 +34,6 @@ describe('product', () => { it('given iterable with strings then returns the maximum value', () => { const iterable = ['a', 'e', 'c', 'b', 'd']; // @ts-expect-error: Testing invalid input - expect(() => product(iterable)).toThrow(new TypeError('a must be a non-NaN number')); + expect(() => product(iterable)).toThrow(new RangeError('a must be a non-NaN number')); }); }); diff --git a/packages/iterator/tests/sum.test.ts b/packages/iterator/tests/sum.test.ts index 2f46797c..8be346b5 100644 --- a/packages/iterator/tests/sum.test.ts +++ b/packages/iterator/tests/sum.test.ts @@ -25,15 +25,15 @@ describe('sum', () => { expect(result).toEqual(3); }); - it('given iterable with strings then throws TypeError', () => { + it('given iterable with strings then throws RangeError', () => { const iterable = ['a', 'e', 'c', 'b', 'd']; // @ts-expect-error: Testing invalid input - expect(() => sum(iterable)).toThrow(new TypeError('a must be a non-NaN number')); + expect(() => sum(iterable)).toThrow(new RangeError('a must be a non-NaN number')); }); - it('given iterable with NaN then throws TypeError', () => { + it('given iterable with NaN then throws RangeError', () => { const iterable = [1, 2, 3, Number.NaN, 5]; - expect(() => sum(iterable)).toThrow(new TypeError('NaN must be a non-NaN number')); + expect(() => sum(iterable)).toThrow(new RangeError('NaN must be a non-NaN number')); }); it('given iterable with bigints then throws TypeError', () => { @@ -48,10 +48,10 @@ describe('sum', () => { expect(() => sum(iterable)).toThrow(new TypeError('Cannot convert a Symbol value to a number')); }); - it('given iterable with objects then throws TypeError', () => { + it('given iterable with objects then throws RangeError', () => { const iterable = [{ foo: 'bar' }, { hello: 'world' }, { bax: 'qux' }]; // @ts-expect-error: Testing invalid input - expect(() => sum(iterable)).toThrow(new TypeError('[object Object] must be a non-NaN number')); + expect(() => sum(iterable)).toThrow(new RangeError('[object Object] must be a non-NaN number')); }); it('given objects with valueOf method then returns the sum of all numbers', () => { diff --git a/packages/loader/package.json b/packages/loader/package.json index 69ea9e11..0ad27693 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "A simple TypeScript code piece loader", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -55,7 +57,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "tsup && pnpm build:cjs", @@ -67,11 +69,11 @@ "provenance": true }, "dependencies": { + "pathe": "^2.0.3", "tslib": "^2.8.1" }, "devDependencies": { "@flowr/types": "workspace:^", - "@flowr/utilities": "workspace:^", - "pathe": "^2.0.2" + "@flowr/utilities": "workspace:^" } } diff --git a/packages/loader/src/lib/structures/AliasPiece.ts b/packages/loader/src/lib/structures/AliasPiece.ts index 38d010ee..0ecd8d2c 100644 --- a/packages/loader/src/lib/structures/AliasPiece.ts +++ b/packages/loader/src/lib/structures/AliasPiece.ts @@ -1,5 +1,6 @@ +import type { LoaderPieceContext, PieceJSON, PieceOptions } from './Piece'; import type { StoreRegistryKey } from './StoreRegistry'; -import { type LoaderPieceContext, Piece, type PieceJSON, type PieceOptions } from './Piece'; +import { Piece } from './Piece'; export interface AliasPieceOptions extends PieceOptions { /** diff --git a/packages/loader/src/lib/structures/Piece.ts b/packages/loader/src/lib/structures/Piece.ts index 77734403..eda70b42 100644 --- a/packages/loader/src/lib/structures/Piece.ts +++ b/packages/loader/src/lib/structures/Piece.ts @@ -1,7 +1,9 @@ import type { Awaitable } from '@flowr/types'; +import type { Container } from './Container'; +import type { PieceLocationJSON } from './PieceLocation'; import type { StoreOf, StoreRegistryKey } from './StoreRegistry'; -import { container, type Container } from './Container'; -import { PieceLocation, type PieceLocationJSON } from './PieceLocation'; +import { container } from './Container'; +import { PieceLocation } from './PieceLocation'; /** * The context for the piece, contains extra information from the store, diff --git a/packages/loader/src/lib/structures/Store.ts b/packages/loader/src/lib/structures/Store.ts index 4bef4b9a..94c92477 100644 --- a/packages/loader/src/lib/structures/Store.ts +++ b/packages/loader/src/lib/structures/Store.ts @@ -1,14 +1,17 @@ import type { AbstractConstructor, Constructor } from '@flowr/types'; +import type { HydratedModuleData, ILoaderResultEntry, ILoaderStrategy } from '../strategies/ILoaderStrategy'; +import type { Path } from '../utils.ts'; +import type { Container } from './Container'; import type { Piece } from './Piece'; import type { StoreRegistryEntries, StoreRegistryKey } from './StoreRegistry'; import { classExtends, isClass } from '@flowr/utilities'; import { Collection } from '@flowr/utilities/collection'; import { join } from 'pathe'; import { LoaderError, LoaderErrorType } from '../errors/LoaderError'; -import { type HydratedModuleData, hydrateModuleData, type ILoaderResultEntry, type ILoaderStrategy } from '../strategies/ILoaderStrategy'; +import { hydrateModuleData } from '../strategies/ILoaderStrategy'; import { LoaderStrategy } from '../strategies/LoaderStrategy'; -import { ManuallyRegisteredPiecesSymbol, type Path, resolvePath, VirtualPath } from '../utils.ts'; -import { container, type Container } from './Container'; +import { ManuallyRegisteredPiecesSymbol, resolvePath, VirtualPath } from '../utils.ts'; +import { container } from './Container'; /** * The options for the store, this features both hooks (changes the behaviour) and handlers (similar to event listeners). diff --git a/packages/loader/src/lib/structures/StoreRegistry.ts b/packages/loader/src/lib/structures/StoreRegistry.ts index 55c372ea..82c4c356 100644 --- a/packages/loader/src/lib/structures/StoreRegistry.ts +++ b/packages/loader/src/lib/structures/StoreRegistry.ts @@ -1,9 +1,10 @@ +import type { Path } from '../utils.ts'; import type { Piece, PieceOptions } from './Piece'; import type { Store, StoreManuallyRegisteredPiece } from './Store'; import { isClass } from '@flowr/utilities'; import { Collection } from '@flowr/utilities/collection'; import { join } from 'pathe'; -import { getRootData, ManuallyRegisteredPiecesSymbol, type Path, resolvePath } from '../utils.ts'; +import { getRootData, ManuallyRegisteredPiecesSymbol, resolvePath } from '../utils.ts'; /** * A strict-typed store registry. This is available in {@link container}. diff --git a/packages/loader/src/lib/utils.ts b/packages/loader/src/lib/utils.ts index 604415d8..3f28a3be 100644 --- a/packages/loader/src/lib/utils.ts +++ b/packages/loader/src/lib/utils.ts @@ -144,20 +144,20 @@ const checkEnvVariable = (name: string, value?: string): boolean => value ? proc */ export const CanLoadTypeScriptFiles: boolean = Reflect.has(globalThis, 'Deno') // deno - || 'bun' in process.versions // bun - || Symbol.for('ts-node.register.instance') in process // ts-node/register - || checkProcessArgv('ts-node/esm') // ts-node/esm - || !isNullish(process.env.TS_NODE_DEV) // ts-node-dev - || checkProcessArgv('babel-node') // @babel/node - || checkEnvVariable('VITEST', 'true') // vitest - || checkEnvVariable('VITEST_WORKER_ID') // vitest/worker - || checkEnvVariable('JEST_WORKER_ID') // jest - || checkPreloadModules('@swc/register') // swc/register - || checkPreloadModules('@swc-node/register') // swc-node/register - || checkProcessArgv('.bin/swc-node') // swc-node - || checkPreloadModules('tsm') // tsm - || checkPreloadModules('esbuild-register') // esbuild - || checkPreloadModules('tsx'); // tsx + || 'bun' in process.versions // bun + || Symbol.for('ts-node.register.instance') in process // ts-node/register + || checkProcessArgv('ts-node/esm') // ts-node/esm + || !isNullish(process.env.TS_NODE_DEV) // ts-node-dev + || checkProcessArgv('babel-node') // @babel/node + || checkEnvVariable('VITEST', 'true') // vitest + || checkEnvVariable('VITEST_WORKER_ID') // vitest/worker + || checkEnvVariable('JEST_WORKER_ID') // jest + || checkPreloadModules('@swc/register') // swc/register + || checkPreloadModules('@swc-node/register') // swc-node/register + || checkProcessArgv('.bin/swc-node') // swc-node + || checkPreloadModules('tsm') // tsm + || checkPreloadModules('esbuild-register') // esbuild + || checkPreloadModules('tsx'); // tsx /** * Determines whether or not a value is a class. diff --git a/packages/loader/tests/RootScan.test.ts b/packages/loader/tests/RootScan.test.ts index 621e7893..66a80b1e 100644 --- a/packages/loader/tests/RootScan.test.ts +++ b/packages/loader/tests/RootScan.test.ts @@ -1,7 +1,8 @@ import type { MockInstance } from 'vitest'; +import type { RootData } from '../src/lib/utils.ts'; import { fileURLToPath } from 'node:url'; import { resolve } from 'pathe'; -import { parseRootData, type RootData } from '../src/lib/utils.ts'; +import { parseRootData } from '../src/lib/utils.ts'; let cwd: MockInstance; diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 0c2f93ee..bec16914 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "Useful TypeScript decorators for Petal projects", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -55,7 +57,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && tsup && pnpm build:cjs", @@ -70,6 +72,6 @@ "devDependencies": { "@flowr/types": "workspace:^", "@flowr/utilities": "workspace:^", - "pathe": "^2.0.2" + "pathe": "^2.0.3" } } diff --git a/packages/node/package.json b/packages/node/package.json index 9cd1a8ab..792fc42c 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "Node-specific opinionated TypeScript utilities", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -55,7 +57,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && tsup && pnpm build:cjs", @@ -68,6 +70,6 @@ "provenance": true }, "devDependencies": { - "pathe": "^2.0.2" + "pathe": "^2.0.3" } } diff --git a/packages/node/tests/eventIteratorFixture/MockEmitter.ts b/packages/node/tests/eventIteratorFixture/MockEmitter.ts index 5ed6f278..bd7c7c50 100644 --- a/packages/node/tests/eventIteratorFixture/MockEmitter.ts +++ b/packages/node/tests/eventIteratorFixture/MockEmitter.ts @@ -1,5 +1,6 @@ +import type { EventIteratorOptions } from '../../src/lib/eventIterator'; import { EventEmitter } from 'node:events'; -import { EventIterator, type EventIteratorOptions } from '../../src/lib/eventIterator'; +import { EventIterator } from '../../src/lib/eventIterator'; import { Person } from './Person'; export class PeopleIterator extends EventIterator<[Person]> {} diff --git a/packages/result/package.json b/packages/result/package.json index d589110b..837fa855 100644 --- a/packages/result/package.json +++ b/packages/result/package.json @@ -62,7 +62,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && tsup && pnpm build:cjs", diff --git a/packages/result/src/lib/Option.ts b/packages/result/src/lib/Option.ts index 8f42cf14..bc840e95 100644 --- a/packages/result/src/lib/Option.ts +++ b/packages/result/src/lib/Option.ts @@ -1,7 +1,8 @@ import type { Err, Ok, Result } from './Result.ts'; +import type { Awaitable, If } from './utils.ts'; import { OptionError } from './error.ts'; import { err, ok } from './Result.ts'; -import { type Awaitable, type If, isFunction, returnThis } from './utils.ts'; +import { isFunction, returnThis } from './utils.ts'; const ValueProperty: unique symbol = Symbol.for('@flowr/result:Option.value'); const ExistsProperty: unique symbol = Symbol.for('@flowr/result:Option.exists'); diff --git a/packages/result/src/lib/Result.ts b/packages/result/src/lib/Result.ts index fe145117..54a5e62d 100644 --- a/packages/result/src/lib/Result.ts +++ b/packages/result/src/lib/Result.ts @@ -1,6 +1,8 @@ +import type { None, Option, Some } from './Option.ts'; +import type { Awaitable, If } from './utils.ts'; import { ResultError } from './error.ts'; -import { none, type None, type Option, some, type Some } from './Option.ts'; -import { type Awaitable, type If, isFunction, returnThis } from './utils.ts'; +import { none, some } from './Option.ts'; +import { isFunction, returnThis } from './utils.ts'; const ValueProperty: unique symbol = Symbol.for('@flowr/result:Result.value'); const SuccessProperty: unique symbol = Symbol.for('@flowr/result:Result.success'); diff --git a/packages/scripts/package.json b/packages/scripts/package.json index c00ec6f9..ebf10c92 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -53,16 +53,16 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "dependencies": { "@actions/glob": "^0.5.0", "commander": "^13.1.0", "tslib": "^2.8.1", - "undici": "^7.2.3", + "undici": "^7.3.0", "yaml": "^2.7.0" }, "devDependencies": { - "@turbo/gen": "^2.3.3" + "@turbo/gen": "^2.4.2" } } diff --git a/packages/scripts/tsup.config.ts b/packages/scripts/tsup.config.ts index 68f5e7ef..ad9b6710 100644 --- a/packages/scripts/tsup.config.ts +++ b/packages/scripts/tsup.config.ts @@ -1,4 +1,5 @@ -import { defineConfig, type Options } from 'tsup'; +import type { Options } from 'tsup'; +import { defineConfig } from 'tsup'; import { capitalizeFirstLetter } from '../utilities/src/lib/capitalizeFirstLetter'; // @keep-sorted diff --git a/packages/scripts/turbo/generators/package.json b/packages/scripts/turbo/generators/package.json new file mode 100644 index 00000000..a0df0c86 --- /dev/null +++ b/packages/scripts/turbo/generators/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/packages/scripts/turbo/generators/templates/default/LICENSE-APACHE b/packages/scripts/turbo/generators/templates/default/LICENSE-APACHE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/LICENSE-APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/scripts/turbo/generators/templates/default/LICENSE-MIT b/packages/scripts/turbo/generators/templates/default/LICENSE-MIT new file mode 100644 index 00000000..4855987a --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021~PRESENT Petal Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/scripts/turbo/generators/templates/default/LICENSE-OQL b/packages/scripts/turbo/generators/templates/default/LICENSE-OQL new file mode 100644 index 00000000..99145733 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/LICENSE-OQL @@ -0,0 +1,57 @@ +# 🏳️‍🌈 Opinionated Queer License v1.2 + +© Copyright [Pulseflow](https://dyn.gay) + +## Permissions + +The creators of this Work (“The Licensor”) grant permission +to any person, group or legal entity that doesn't violate the prohibitions below (“The User”), +to do everything with this Work that would otherwise infringe their copyright or any patent claims, +subject to the following conditions: + +## Obligations + +The User must give appropriate credit to the Licensor, +provide a copy of this license or a (clickable, if the medium allows) link to +[oql.avris.it/license/v1.2](https://oql.avris.it/license/v1.2), +and indicate whether and what kind of changes were made. +The User may do so in any reasonable manner, +but not in any way that suggests the Licensor endorses the User or their use. + +## Prohibitions + +No one may use this Work for prejudiced or bigoted purposes, including but not limited to: +racism, xenophobia, queerphobia, queer exclusionism, homophobia, transphobia, enbyphobia, misogyny. + +No one may use this Work to inflict or facilitate violence or abuse of human rights, +as defined in either of the following documents: +[Universal Declaration of Human Rights](https://www.un.org/en/about-us/universal-declaration-of-human-rights), +[European Convention on Human Rights](https://prd-echr.coe.int/web/echr/european-convention-on-human-rights) +along with the rulings of the [European Court of Human Rights](https://www.echr.coe.int/). + +No law enforcement, carceral institutions, immigration enforcement entities, military entities or military contractors +may use the Work for any reason. This also applies to any individuals employed by those entities. + +No business entity where the ratio of pay (salaried, freelance, stocks, or other benefits) +between the highest and lowest individual in the entity is greater than 50 : 1 +may use the Work for any reason. + +No private business run for profit with more than a thousand employees +may use the Work for any reason. + +Unless the User has made substantial changes to the Work, +or uses it only as a part of a new work (eg. as a library, as a part of an anthology, etc.), +they are prohibited from selling the Work. +That prohibition includes processing the Work with machine learning models. + +## Sanctions + +If the Licensor notifies the User that they have not complied with the rules of the license, +they can keep their license by complying within 30 days after the notice. +If they do not do so, their license ends immediately. + +## Warranty + +This Work is provided “as is”, without warranty of any kind, express or implied. +The Licensor will not be liable to anyone for any damages related to the Work or this license, +under any kind of legal claim as far as the law allows. diff --git a/packages/scripts/turbo/generators/templates/default/README.md.hbs b/packages/scripts/turbo/generators/templates/default/README.md.hbs new file mode 100644 index 00000000..15582053 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/README.md.hbs @@ -0,0 +1,13 @@ +# @flowr/{{name}} + +**{{description}}** + +## Installation + +You can use the following command to install this package, or replace `pnpm add` with your package manager of choice. + +```sh +pnpm add @flowr/{{name}} +``` + +## Usage diff --git a/packages/scripts/turbo/generators/templates/default/jsr.json.hbs b/packages/scripts/turbo/generators/templates/default/jsr.json.hbs new file mode 100644 index 00000000..8fa9fb60 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/jsr.json.hbs @@ -0,0 +1,12 @@ +{ + "$schema": "https://jsr.io/schema/config-file.v1.json", + "name": "@petal/{{name}}", + "version": "4.4.1", + "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", + "exports": { + ".": "./src/index.ts" + }, + "publish": { + "include": ["LICENSE*", "README.md", "src", "package.json"] + } +} diff --git a/packages/scripts/turbo/generators/templates/default/package.json.hbs b/packages/scripts/turbo/generators/templates/default/package.json.hbs new file mode 100644 index 00000000..c113c3a1 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/package.json.hbs @@ -0,0 +1,69 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "name": "@flowr/{{name}}", + "type": "module", + "version": "5.2.0", + "description": "{{description}}", + "author": "@flowr", + "contributors": ["Pauline "], + "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", + "funding": "https://ko-fi.com/pauliesnug", + "homepage": "https://petal.dyn.gay", + "repository": { + "type": "git", + "url": "https://github.com/pulseflow/petal.git", + "directory": "packages/result" + }, + "bugs": "https://github.com/pulseflow/petal/issues", + "keywords": [ + "@flowr/{{name}}", + "petal", + "flowr", + "typescript", + "ts", + "standalone" + ], + "sideEffects": false, + "exports": { + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.cts", + "default": "./dist/cjs/index.cjs" + }, + "browser": "./dist/iife/index.global.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/cjs/index.cjs", + "module": "./dist/esm/index.js", + "browser": "./dist/iife/index.global.js", + "unpkg": "./dist/iife/index.global.js", + "types": "./dist/esm/index.d.ts", + "files": [ + "LICENSE*", + "README.md", + "dist/**/*.cjs", + "dist/**/*.d.cts", + "dist/**/*.d.mts", + "dist/**/*.d.ts", + "dist/**/*.js", + "dist/**/*.mjs" + ], + "engines": { + "node": ">=22" + }, + "scripts": { + "build": "pnpm gen && tsup && pnpm build:cjs", + "start": "pnpm gen && tsup --watch", + "build:cjs": "tsx ../scripts/src/cjs.ts", + "gen": "tsx ../scripts/src/gen.ts {{name}} --write" + }, + "publishConfig": { + "access": "public", + "provenance": true + } +} diff --git a/packages/scripts/turbo/generators/templates/default/tsconfig.json b/packages/scripts/turbo/generators/templates/default/tsconfig.json new file mode 100644 index 00000000..e23875b0 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/tsconfig.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig.json", + "extends": "../../tsconfig.json", + "include": [ + "*.ts", + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.js", + "src/**/*.cjs", + "src/**/*.mjs", + "bin", + "tests", + "scripts" + ], + "exclude": ["node_modules", "dist", ".turbo"] +} diff --git a/packages/scripts/turbo/generators/templates/default/tsup.config.ts.hbs b/packages/scripts/turbo/generators/templates/default/tsup.config.ts.hbs new file mode 100644 index 00000000..6fcf0c30 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/tsup.config.ts.hbs @@ -0,0 +1,3 @@ +import { createTsupConfig } from '../scripts/tsup.config.ts'; + +export default createTsupConfig`{{name}}`; diff --git a/packages/scripts/turbo/generators/templates/default/vitest.config.ts.hbs b/packages/scripts/turbo/generators/templates/default/vitest.config.ts.hbs new file mode 100644 index 00000000..9066b1b3 --- /dev/null +++ b/packages/scripts/turbo/generators/templates/default/vitest.config.ts.hbs @@ -0,0 +1,3 @@ +import { createVitestConfig } from '../scripts/vitest.config.ts'; + +export default createVitestConfig`{{name}}`; diff --git a/packages/scripts/vitest.config.ts b/packages/scripts/vitest.config.ts index f5c0516f..6b565a4e 100644 --- a/packages/scripts/vitest.config.ts +++ b/packages/scripts/vitest.config.ts @@ -1,4 +1,5 @@ -import { defineConfig, type ViteUserConfig } from 'vitest/config'; +import type { ViteUserConfig } from 'vitest/config'; +import { defineConfig } from 'vitest/config'; export function createVitestConfig(name: string | TemplateStringsArray, options: ViteUserConfig = {}): ViteUserConfig { return defineConfig({ diff --git a/packages/store/README.md b/packages/store/README.md index 40e24344..65c9608e 100644 --- a/packages/store/README.md +++ b/packages/store/README.md @@ -12,7 +12,7 @@ pnpm add ## Usage -**Note**: While this section uses `import`, the imports match 1:1 with CJS imports. For example, `const { SchemaStore } = require('@sapphire/string-store')` is equivalent to `import { SchemaStore } from '@sapphire/string-store'`. +**Note**: While this section uses `import`, the imports match 1:1 with CJS imports. For example, `const { SchemaStore } = require('@flowr/store')` is equivalent to `import { SchemaStore } from '@flowr/store'`. ```ts // Require the store classes diff --git a/packages/store/package.json b/packages/store/package.json index e0e0737f..b42522aa 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "High-capacity fast raw string storage with UTF-16", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -55,7 +57,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "tsup && pnpm build:cjs", @@ -67,6 +69,6 @@ "provenance": true }, "devDependencies": { - "pathe": "^2.0.2" + "pathe": "^2.0.3" } } diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index 3b2f847e..cfa6d8e7 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -1,6 +1,7 @@ export * from './lib/Pointer.ts'; export * from './lib/Schema.ts'; export * from './lib/SchemaStore.ts'; +export type * from './lib/types/base/DuplexBuffer.ts'; export * from './lib/types/base/UnalignedUint16Array.ts'; export * from './lib/types/index.ts'; export * from './lib/utils/index.ts'; diff --git a/packages/store/src/lib/Schema.ts b/packages/store/src/lib/Schema.ts index a7a0ca44..c0df1c65 100644 --- a/packages/store/src/lib/Schema.ts +++ b/packages/store/src/lib/Schema.ts @@ -1,6 +1,9 @@ -import type { UnalignedUint16Array } from './types/base/UnalignedUint16Array.ts'; -import { Pointer, type PointerLike } from './Pointer.ts'; -import { type IType, t } from './types/index.ts'; +import type { PointerLike } from './Pointer.ts'; +import type { DuplexBuffer } from './types/base/DuplexBuffer.ts'; +import type { IType } from './types/index.ts'; +import { Pointer } from './Pointer.ts'; +import { UnalignedUint16Array } from './types/base/UnalignedUint16Array.ts'; +import { t } from './types/index.ts'; export class Schema { readonly #id: Id; @@ -64,6 +67,32 @@ export class Schema return type; } + /** + * Create a buffer and serialize a value into it, then convert it to a string + * + * @param value The value to serialize into the buffer + * @param defaultMaximumArrayLength The default maximum array length, if any + * @returns The newly created string. + * + * @seealso This method calls {@link Schema.serializeRaw} before calling `toString()` to its result. + */ + public serialize(value: Readonly>, defaultMaximumArrayLength = 100): string { + return this.serializeRaw(value, defaultMaximumArrayLength).toString(); + } + + /** + * Create a buffer and serialize a value into it. + * + * @param value The value to serialize into the buffer + * @param defaultMaximumArrayLength The default maximum array length, if any + * @returns The newly created buffer. + */ + public serializeRaw(value: Readonly>, defaultMaximumArrayLength = 100): DuplexBuffer { + const buffer = new UnalignedUint16Array(this.totalBitSize ?? defaultMaximumArrayLength); + this.serializeInto(buffer, value); + return buffer; + } + /** * Serialize a value into a buffer. * @@ -75,7 +104,7 @@ export class Schema * The schema's ID is written to the buffer first, followed by each property * in the schema. */ - public serialize(buffer: UnalignedUint16Array, value: Readonly>): void { + public serializeInto(buffer: DuplexBuffer, value: Readonly>): void { buffer.writeInt16(this.#id); for (const [name, type] of this) (type as IType).serialize(buffer, (value as any)[name]); @@ -90,16 +119,17 @@ export class Schema * * @remarks * - * Unlike {@link Schema.serialize}, this method does not read the schema's ID + * Unlike {@link Schema.serializeInto}, this method does not read the schema's ID * from the buffer, that is reserved for the {@link SchemaStore}. */ - public deserialize(buffer: UnalignedUint16Array, pointer: PointerLike): UnwrapSchemaEntries { - const ptr = Pointer.from(pointer); + public deserialize(buffer: DuplexBuffer | string, pointer: PointerLike): UnwrapSchemaEntries { + buffer = UnalignedUint16Array.from(buffer); + pointer = Pointer.from(pointer); const result = Object.create(null) as UnwrapSchemaEntries; for (const [name, type] of this) // @ts-expect-error: Complex types // eslint-disable-next-line ts/no-unsafe-call -- complex types - result[name] = type.deserialize(buffer, ptr); + result[name] = type.deserialize(buffer, pointer); return result; } diff --git a/packages/store/src/lib/SchemaStore.ts b/packages/store/src/lib/SchemaStore.ts index 7d02c5ce..c7f1e2ac 100644 --- a/packages/store/src/lib/SchemaStore.ts +++ b/packages/store/src/lib/SchemaStore.ts @@ -1,4 +1,5 @@ import type { Schema, SerializeValue, UnwrapSchema } from './Schema.ts'; +import type { DuplexBuffer } from './types/base/DuplexBuffer.ts'; import { Pointer } from './Pointer.ts'; import { UnalignedUint16Array } from './types/base/UnalignedUint16Array.ts'; @@ -54,6 +55,17 @@ export class SchemaStore { return schema; } + /** + * Serializes a value using the schema with the given id + * + * @param id The id of the schema to use for serialization + * @param value The value to serialize + * @returns The serialized string + */ + public serialize>(id: Id, value: SerializeValue): string { + return this.serializeRaw(id, value).toString(); + } + /** * Serializes a value using the schema with the given id * @@ -61,11 +73,9 @@ export class SchemaStore { * @param value The value to serialize * @returns The serialized buffer */ - public serialize>(id: Id, value: SerializeValue): UnalignedUint16Array { + public serializeRaw>(id: Id, value: SerializeValue): DuplexBuffer { const schema = this.get(id) as Schema; - const buffer = new UnalignedUint16Array(schema.totalBitSize ?? this.defaultMaximumArrayLength); - schema.serialize(buffer, value); - return buffer; + return schema.serializeRaw(value, this.defaultMaximumArrayLength); } /** @@ -74,7 +84,7 @@ export class SchemaStore { * @param buffer The buffer to deserialize * @returns The resolved value, including the id of the schema used for deserialization */ - public deserialize(buffer: string | UnalignedUint16Array): DeserializationResult { + public deserialize(buffer: string | DuplexBuffer): DeserializationResult { buffer = UnalignedUint16Array.from(buffer); const pointer = new Pointer(); const id = buffer.readInt16(pointer) as KeyOfStore; @@ -93,7 +103,7 @@ export class SchemaStore { * If an empty value is passed, a {@linkcode RangeError} will be thrown. */ // eslint-disable-next-line ts/class-methods-use-this -- complex buffer - public getIdentifier(buffer: string | UnalignedUint16Array): KeyOfStore { + public getIdentifier(buffer: string | DuplexBuffer): KeyOfStore { if (buffer.length === 0) throw new RangeError('Expected a non-empty value'); diff --git a/packages/store/src/lib/types/String.ts b/packages/store/src/lib/types/String.ts index 7c00ece0..0b87c53c 100644 --- a/packages/store/src/lib/types/String.ts +++ b/packages/store/src/lib/types/String.ts @@ -1,8 +1,6 @@ import type { IType } from './base/IType.ts'; -// eslint-disable-next-line node/prefer-global/text-encoder -- iife const encoder = new TextEncoder(); -// eslint-disable-next-line node/prefer-global/text-decoder -- iife const decoder = new TextDecoder(); export const StringType: IType = { serialize(buffer, value) { diff --git a/packages/store/src/lib/types/base/DuplexBuffer.ts b/packages/store/src/lib/types/base/DuplexBuffer.ts new file mode 100644 index 00000000..26a46479 --- /dev/null +++ b/packages/store/src/lib/types/base/DuplexBuffer.ts @@ -0,0 +1,42 @@ +import type { PointerLike } from '../../Pointer.ts'; + +export interface DuplexBuffer { + at: (index: number) => number | undefined; + + get maxLength(): number; + get maxBitLength(): number; + get length(): number; + get bitLength(): number; + writeBit: (value: number) => void; + writeInt2: (value: number) => void; + writeInt4: (value: number) => void; + writeInt8: (value: number) => void; + writeInt16: (value: number) => void; + writeInt32: (value: number) => void; + writeInt64: (value: number) => void; + writeBigInt32: (value: bigint) => void; + writeBigInt64: (value: bigint) => void; + writeFloat32: (value: number) => void; + writeFloat64: (value: number) => void; + readBit: (offset: PointerLike) => 0 | 1; + readInt2: (offset: PointerLike) => number; + readUint2: (offset: PointerLike) => number; + readInt4: (offset: PointerLike) => number; + readUint4: (offset: PointerLike) => number; + readInt8: (offset: PointerLike) => number; + readUint8: (offset: PointerLike) => number; + readInt16: (offset: PointerLike) => number; + readUint16: (offset: PointerLike) => number; + readInt32: (offset: PointerLike) => number; + readUint32: (offset: PointerLike) => number; + readInt64: (offset: PointerLike) => number; + readUint64: (offset: PointerLike) => number; + readBigInt32: (offset: PointerLike) => bigint; + readBigUint32: (offset: PointerLike) => bigint; + readBigInt64: (offset: PointerLike) => bigint; + readBigUint64: (offset: PointerLike) => bigint; + readFloat32: (offset: PointerLike) => number; + readFloat64: (offset: PointerLike) => number; + toString: () => string; + toArray: () => Uint16Array; +} diff --git a/packages/store/src/lib/types/base/IType.ts b/packages/store/src/lib/types/base/IType.ts index 5c32fe1c..5ed20441 100644 --- a/packages/store/src/lib/types/base/IType.ts +++ b/packages/store/src/lib/types/base/IType.ts @@ -1,5 +1,5 @@ import type { Pointer } from '../../Pointer.ts'; -import type { UnalignedUint16Array } from './UnalignedUint16Array.ts'; +import type { DuplexBuffer } from './DuplexBuffer.ts'; export interface IType { /** @@ -8,7 +8,7 @@ export interface IType void; + serialize: (buffer: DuplexBuffer, value: InputValue) => void; /** * Deserialize a value from a buffer. @@ -16,7 +16,7 @@ export interface IType ValueType; + deserialize: (buffer: DuplexBuffer, pointer: Pointer) => ValueType; /** * The size of the value in bits, or `null` if the size is variable. diff --git a/packages/store/src/lib/types/base/UnalignedUint16Array.ts b/packages/store/src/lib/types/base/UnalignedUint16Array.ts index 2a266511..36483c04 100644 --- a/packages/store/src/lib/types/base/UnalignedUint16Array.ts +++ b/packages/store/src/lib/types/base/UnalignedUint16Array.ts @@ -1,4 +1,6 @@ -import { Pointer, type PointerLike } from '../../Pointer.ts'; +import type { PointerLike } from '../../Pointer.ts'; +import type { DuplexBuffer } from './DuplexBuffer.ts'; +import { Pointer } from '../../Pointer.ts'; const ConverterUint8 = new Uint8Array(8); const ConverterUint16 = new Uint16Array(ConverterUint8.buffer); @@ -9,7 +11,7 @@ const ConverterInt64 = new BigInt64Array(ConverterUint8.buffer); const ConverterFloat = new Float32Array(ConverterUint8.buffer); const ConverterDouble = new Float64Array(ConverterUint8.buffer); -export class UnalignedUint16Array { +export class UnalignedUint16Array implements DuplexBuffer { #buffer: Uint16Array; #bitLength = 0; #wordIndex = 0; @@ -298,8 +300,8 @@ export class UnalignedUint16Array { this.#wordLength++; } - public static from(value: string | UnalignedUint16Array): UnalignedUint16Array { - if (value instanceof UnalignedUint16Array) + public static from(value: string | DuplexBuffer): DuplexBuffer { + if (typeof value !== 'string') return value; const buffer = new UnalignedUint16Array(value.length); diff --git a/packages/store/tests/Schema.test.ts b/packages/store/tests/Schema.test.ts index 01fa4446..ea226638 100644 --- a/packages/store/tests/Schema.test.ts +++ b/packages/store/tests/Schema.test.ts @@ -1,4 +1,5 @@ -import { type IType, Schema, SnowflakeType, StringType, t, UnalignedUint16Array } from '../src'; +import type { IType } from '../src'; +import { Schema, SnowflakeType, StringType, t, UnalignedUint16Array } from '../src'; describe('schema', () => { it('given a new instance then it has the correct properties', () => { @@ -402,11 +403,40 @@ describe('schema', () => { }); describe('serialization', () => { - it('given a schema with a boolean property then it serializes correctly', () => { - const buffer = new UnalignedUint16Array(3); + it('given a schema with a boolean property then it serializes correctly (serialize)', () => { + const schema = new Schema(4).boolean('a').int16('b'); + const buffer = schema.serialize({ a: true, b: 15234 }, 3); + // The buffer has 3 values: + // - 4 (schema:id) & 0xffff (mask) + // + // - 1 (prop:a) & 0b0001 (mask) + // | 15234 (prop:b) & 0xffff (mask) << 1 (offset) + // + // - 15234 (prop:b) & 0xffff (mask) >> 15 (shift) + expect(buffer).toBe('\x04\u{7705}\0'); + const value = schema.deserialize(buffer, 16); + expect<{ a: boolean }>(value).toEqual({ a: true, b: 15234 }); + }); + + it('given a schema with a boolean property then it serializes correctly (serializeRaw)', () => { const schema = new Schema(4).boolean('a').int16('b'); + const buffer = schema.serializeRaw({ a: true, b: 15234 }, 3); + // The buffer has 3 values: + // - 4 (schema:id) & 0xffff (mask) + // + // - 1 (prop:a) & 0b0001 (mask) + // | 15234 (prop:b) & 0xffff (mask) << 1 (offset) + // + // - 15234 (prop:b) & 0xffff (mask) >> 15 (shift) + expect(buffer.toArray()).toEqual(new Uint16Array([4, 30469, 0])); + const value = schema.deserialize(buffer, 16); + expect<{ a: boolean }>(value).toEqual({ a: true, b: 15234 }); + }); - schema.serialize(buffer, { a: true, b: 15234 }); + it('given a schema with a boolean property then it serializes correctly (serializeInto)', () => { + const buffer = new UnalignedUint16Array(3); + const schema = new Schema(4).boolean('a').int16('b'); + schema.serializeInto(buffer, { a: true, b: 15234 }); // The buffer has 3 values: // - 4 (schema:id) & 0xffff (mask) // diff --git a/packages/store/tests/SchemaStore.test.ts b/packages/store/tests/SchemaStore.test.ts index 9b9e87f8..c1cdc52f 100644 --- a/packages/store/tests/SchemaStore.test.ts +++ b/packages/store/tests/SchemaStore.test.ts @@ -1,4 +1,4 @@ -import type { Float64Type } from '../src'; +import type { DuplexBuffer, Float64Type } from '../src'; import { Schema, SchemaStore, UnalignedUint16Array } from '../src'; describe('schemaStore', () => { @@ -29,23 +29,24 @@ describe('schemaStore', () => { it('given a schema and a value then it serializes and deserializes the buffer correctly', () => { const store = new SchemaStore(10).add(new Schema(2).string('name').float64('height')); - const buffer = store.serialize(2, { name: 'Mario', height: 1.8 }); + const buffer = store.serializeRaw(2, { name: 'Mario', height: 1.8 }); const deserialized = store.deserialize(buffer); expect<{ id: 2; data: { height: number } }>(deserialized).toEqual({ id: 2, data: { name: 'Mario', height: 1.8 } }); expect<2>(store.getIdentifier(buffer)).toBe(2); expect<2>(store.getIdentifier(buffer.toString())).toBe(2); + expectTypeOf(buffer).toEqualTypeOf(); }); it('given a schema and a value then it serializes and deserializes the binary string correctly', () => { const store = new SchemaStore(10).add(new Schema(2).string('name').float64('height')); const buffer = store.serialize(2, { name: 'Mario', height: 1.8 }); - const deserialized = store.deserialize(buffer.toString()); + const deserialized = store.deserialize(buffer); expect<{ id: 2; data: { height: number } }>(deserialized).toEqual({ id: 2, data: { name: 'Mario', height: 1.8 } }); expect<2>(store.getIdentifier(buffer)).toBe(2); - expect<2>(store.getIdentifier(buffer.toString())).toBe(2); + expectTypeOf(buffer).toEqualTypeOf(); }); it('given a schema with a constant then it serializes and deserializes the buffer correctly', () => { diff --git a/packages/store/vitest.config.ts b/packages/store/vitest.config.ts index 7944babd..9a633860 100644 --- a/packages/store/vitest.config.ts +++ b/packages/store/vitest.config.ts @@ -1,3 +1,9 @@ import { createVitestConfig } from '../scripts/vitest.config.ts'; -export default createVitestConfig`store`; +export default createVitestConfig(`store`, { + test: { + coverage: { + exclude: ['./src/lib/types/base/DuplexBuffer.ts', './src/lib/types/base/IType.ts'], + }, + }, +}); diff --git a/packages/types/jsr.json b/packages/types/jsr.json index dad5b26c..885cab69 100644 --- a/packages/types/jsr.json +++ b/packages/types/jsr.json @@ -5,15 +5,19 @@ "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "exports": { ".": "./src/index.ts", + "./abstractClass": "./src/lib/AbstractClass.ts", "./abstractConstructor": "./src/lib/AbstractConstructor.ts", "./abstractCtor": "./src/lib/AbstractCtor.ts", + "./accessorPropertyDescriptor": "./src/lib/AccessorPropertyDescriptor.ts", "./anyReadonlyArray": "./src/lib/AnyReadonlyArray.ts", "./argumentTypes": "./src/lib/ArgumentTypes.ts", "./arrayable": "./src/lib/Arrayable.ts", "./arrayElementType": "./src/lib/ArrayElementType.ts", + "./as": "./src/lib/As.ts", "./awaitable": "./src/lib/Awaitable.ts", "./bindable": "./src/lib/Bindable.ts", "./builtin": "./src/lib/Builtin.ts", + "./class": "./src/lib/Class.ts", "./constructor": "./src/lib/Constructor.ts", "./ctor": "./src/lib/Ctor.ts", "./deepMerge": "./src/lib/DeepMerge.ts", @@ -27,8 +31,12 @@ "./dictionaryPosition": "./src/lib/DictionaryPosition.ts", "./extractKeysByType": "./src/lib/ExtractKeysByType.ts", "./firstArgument": "./src/lib/FirstArgument.ts", + "./functionKeys": "./src/lib/FunctionKeys.ts", "./if": "./src/lib/If.ts", + "./is": "./src/lib/Is.ts", + "./keyOf": "./src/lib/KeyOf.ts", "./lastOf": "./src/lib/LastOf.ts", + "./maybeVoidable": "./src/lib/MaybeVoidable.ts", "./merge": "./src/lib/Merge.ts", "./mergeInsertions": "./src/lib/MergeInsertions.ts", "./mergeLeft": "./src/lib/MergeLeft.ts", @@ -41,12 +49,16 @@ "./nullish": "./src/lib/Nullish.ts", "./optional": "./src/lib/Optional.ts", "./optionalExcept": "./src/lib/OptionalExcept.ts", + "./optionalParametersOf": "./src/lib/OptionalParametersOf.ts", + "./or": "./src/lib/Or.ts", + "./paramatersOf": "./src/lib/ParamatersOf.ts", "./parametersExceptFirst": "./src/lib/ParametersExceptFirst.ts", "./pickByValue": "./src/lib/PickByValue.ts", "./pickNecessary": "./src/lib/PickNecessary.ts", "./pickOptional": "./src/lib/PickOptional.ts", "./prettifyObject": "./src/lib/PrettifyObject.ts", "./primitive": "./src/lib/Primitive.ts", + "./propertyKeys": "./src/lib/PropertyKeys.ts", "./pushArray": "./src/lib/PushArray.ts", "./readonlyMap": "./src/lib/ReadonlyMap.ts", "./readonlyMapKey": "./src/lib/ReadonlyMapKey.ts", @@ -57,7 +69,10 @@ "./strings": "./src/lib/Strings.ts", "./swap": "./src/lib/Swap.ts", "./tuplifyUnion": "./src/lib/TuplifyUnion.ts", - "./unionToIntersection": "./src/lib/UnionToIntersection.ts" + "./unionToIntersection": "./src/lib/UnionToIntersection.ts", + "./valueOf": "./src/lib/ValueOf.ts", + "./voidable": "./src/lib/Voidable.ts", + "./voidableArgument": "./src/lib/VoidableArgument.ts" }, "publish": { "include": [ diff --git a/packages/types/package.json b/packages/types/package.json index bb1e5d73..1fa2afa3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "Essential TypeScript types used in @flowr/utilities", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -33,12 +35,18 @@ ".": { "types": "./src/index.ts" }, + "./abstractClass": { + "types": "./src/lib/AbstractClass.ts" + }, "./abstractConstructor": { "types": "./src/lib/AbstractConstructor.ts" }, "./abstractCtor": { "types": "./src/lib/AbstractCtor.ts" }, + "./accessorPropertyDescriptor": { + "types": "./src/lib/AccessorPropertyDescriptor.ts" + }, "./anyReadonlyArray": { "types": "./src/lib/AnyReadonlyArray.ts" }, @@ -51,6 +59,9 @@ "./arrayElementType": { "types": "./src/lib/ArrayElementType.ts" }, + "./as": { + "types": "./src/lib/As.ts" + }, "./awaitable": { "types": "./src/lib/Awaitable.ts" }, @@ -60,6 +71,9 @@ "./builtin": { "types": "./src/lib/Builtin.ts" }, + "./class": { + "types": "./src/lib/Class.ts" + }, "./constructor": { "types": "./src/lib/Constructor.ts" }, @@ -99,12 +113,24 @@ "./firstArgument": { "types": "./src/lib/FirstArgument.ts" }, + "./functionKeys": { + "types": "./src/lib/FunctionKeys.ts" + }, "./if": { "types": "./src/lib/If.ts" }, + "./is": { + "types": "./src/lib/Is.ts" + }, + "./keyOf": { + "types": "./src/lib/KeyOf.ts" + }, "./lastOf": { "types": "./src/lib/LastOf.ts" }, + "./maybeVoidable": { + "types": "./src/lib/MaybeVoidable.ts" + }, "./merge": { "types": "./src/lib/Merge.ts" }, @@ -141,7 +167,16 @@ "./optionalExcept": { "types": "./src/lib/OptionalExcept.ts" }, + "./optionalParametersOf": { + "types": "./src/lib/OptionalParametersOf.ts" + }, + "./or": { + "types": "./src/lib/Or.ts" + }, "./package.json": "./package.json", + "./paramatersOf": { + "types": "./src/lib/ParamatersOf.ts" + }, "./parametersExceptFirst": { "types": "./src/lib/ParametersExceptFirst.ts" }, @@ -160,6 +195,9 @@ "./primitive": { "types": "./src/lib/Primitive.ts" }, + "./propertyKeys": { + "types": "./src/lib/PropertyKeys.ts" + }, "./pushArray": { "types": "./src/lib/PushArray.ts" }, @@ -192,6 +230,15 @@ }, "./unionToIntersection": { "types": "./src/lib/UnionToIntersection.ts" + }, + "./valueOf": { + "types": "./src/lib/ValueOf.ts" + }, + "./voidable": { + "types": "./src/lib/Voidable.ts" + }, + "./voidableArgument": { + "types": "./src/lib/VoidableArgument.ts" } }, "types": "src/index.ts", @@ -201,7 +248,7 @@ "src/**/*.ts" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && pnpm run '/^build:.*/'", diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index e7f3ba3e..4fc6f82b 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,12 +1,16 @@ +export type * from './lib/AbstractClass.ts'; export type * from './lib/AbstractConstructor.ts'; export type * from './lib/AbstractCtor.ts'; +export type * from './lib/AccessorPropertyDescriptor.ts'; export type * from './lib/AnyReadonlyArray.ts'; export type * from './lib/ArgumentTypes.ts'; export type * from './lib/Arrayable.ts'; export type * from './lib/ArrayElementType.ts'; +export type * from './lib/As.ts'; export type * from './lib/Awaitable.ts'; export type * from './lib/Bindable.ts'; export type * from './lib/Builtin.ts'; +export type * from './lib/Class.ts'; export type * from './lib/Constructor.ts'; export type * from './lib/Ctor.ts'; export type * from './lib/DeepMerge.ts'; @@ -20,8 +24,12 @@ export type * from './lib/DictionaryInfoMethod.ts'; export type * from './lib/DictionaryPosition.ts'; export type * from './lib/ExtractKeysByType.ts'; export type * from './lib/FirstArgument.ts'; +export type * from './lib/FunctionKeys.ts'; export type * from './lib/If.ts'; +export type * from './lib/Is.ts'; +export type * from './lib/KeyOf.ts'; export type * from './lib/LastOf.ts'; +export type * from './lib/MaybeVoidable.ts'; export type * from './lib/Merge.ts'; export type * from './lib/MergeInsertions.ts'; export type * from './lib/MergeLeft.ts'; @@ -34,12 +42,16 @@ export type * from './lib/Nullable.ts'; export type * from './lib/Nullish.ts'; export type * from './lib/Optional.ts'; export type * from './lib/OptionalExcept.ts'; +export type * from './lib/OptionalParametersOf.ts'; +export type * from './lib/Or.ts'; +export type * from './lib/ParamatersOf.ts'; export type * from './lib/ParametersExceptFirst.ts'; export type * from './lib/PickByValue.ts'; export type * from './lib/PickNecessary.ts'; export type * from './lib/PickOptional.ts'; export type * from './lib/PrettifyObject.ts'; export type * from './lib/Primitive.ts'; +export type * from './lib/PropertyKeys.ts'; export type * from './lib/PushArray.ts'; export type * from './lib/ReadonlyMap.ts'; export type * from './lib/ReadonlyMapKey.ts'; @@ -51,3 +63,6 @@ export type * from './lib/Strings.ts'; export type * from './lib/Swap.ts'; export type * from './lib/TuplifyUnion.ts'; export type * from './lib/UnionToIntersection.ts'; +export type * from './lib/ValueOf.ts'; +export type * from './lib/Voidable.ts'; +export type * from './lib/VoidableArgument.ts'; diff --git a/packages/types/src/lib/AbstractClass.ts b/packages/types/src/lib/AbstractClass.ts new file mode 100644 index 00000000..b45bcfbb --- /dev/null +++ b/packages/types/src/lib/AbstractClass.ts @@ -0,0 +1,18 @@ +/* eslint-disable ts/no-empty-object-type -- intentionally use {} for constructor impl */ +import type { AbstractConstructor } from './AbstractConstructor.ts'; + +export type AbstractClass< + Prototype extends object | null = any, + Args extends readonly unknown[] = readonly any[], + Static extends {} = {}, +> = + & AbstractConstructor + & { readonly prototype: Prototype } + & ( + {} extends Static ? unknown + : { + [K in keyof Static as[Static[K]] extends [never] ? never : K]: + & ThisType> + & Static[K]; + } + ); diff --git a/packages/types/src/lib/AbstractConstructor.ts b/packages/types/src/lib/AbstractConstructor.ts index 9ad670fb..a1bfa7d4 100644 --- a/packages/types/src/lib/AbstractConstructor.ts +++ b/packages/types/src/lib/AbstractConstructor.ts @@ -1,4 +1,17 @@ /** - * A generic abstract constructor without parameters + * Represents an abstract constructor function (i.e. an abstract class) that + * **cannot** be directly instantiated, but can be extended by other classes. + * + * This is a supertype of the {@linkcode Constructor} type, and therefore it + * typically can be used in place of a constructor type to represent a normal + * concrete class as well. + * + * @template [T=any] The type of the instances created by the constructor. + * @template {readonly unknown[]} [A=readonly any[]] The type of the arguments + * passed to the constructor. + * @category Utility Types */ -export type AbstractConstructor = abstract new (...args: any[]) => Constructable; +export type AbstractConstructor< + T = any, + A extends readonly unknown[] = readonly any[], +> = abstract new (...args: A) => T; diff --git a/packages/types/src/lib/AccessorPropertyDescriptor.ts b/packages/types/src/lib/AccessorPropertyDescriptor.ts new file mode 100644 index 00000000..69907f74 --- /dev/null +++ b/packages/types/src/lib/AccessorPropertyDescriptor.ts @@ -0,0 +1,14 @@ +/** + * Represents an accessor method's property descriptor. which may only have a + * getter and/or setter, a `configurable` flag, and an `enumerable` flag. The + * `value` and `writable` flags are not allowed. + * + * @template T The type of the accessor's value. + * @category Types + */ +export interface AccessorPropertyDescriptor { + get?: () => T; + set?: (value: T) => void; + configurable?: boolean; + enumerable?: boolean; +} diff --git a/packages/types/src/lib/As.ts b/packages/types/src/lib/As.ts new file mode 100644 index 00000000..c3fca7c6 --- /dev/null +++ b/packages/types/src/lib/As.ts @@ -0,0 +1,14 @@ +/** + * Casts a type `T` to a type `U`, but only if `T` is assignable to `U`. If + * `T` is not assignable to `U`, and if `T & U` results in `never`, then the + * type `U` is intersected with the type `Omit`. This allows for + * partial type casting, where the two types are merged but defer to `U` where + * possible. If `T` is not assignable to `U`, and if `T & U` does not result in + * `never`, then the last resort is to return the intersection of `T` and `U`. + * + * @template T The type to cast to the type `U`. + * @template U The type to cast the type `T` to. + */ +export type As = T extends U ? U extends T ? U : T + : [T & U] extends [never] ? U & Omit + : T & U; diff --git a/packages/types/src/lib/Class.ts b/packages/types/src/lib/Class.ts new file mode 100644 index 00000000..0cf9680c --- /dev/null +++ b/packages/types/src/lib/Class.ts @@ -0,0 +1,15 @@ +/* eslint-disable ts/no-empty-object-type -- intentionally use {} for constructor impl */ +import type { Constructor } from './Constructor.ts'; + +export type Class< + Prototype extends object | null = any, + Args extends readonly unknown[] = readonly any[], + Static extends {} = {}, +> = + & Constructor + & { readonly prototype: Prototype } + & ({} extends Static ? unknown : { + [K in keyof Static as[Static[K]] extends [never] ? never : K]: + & ThisType> + & Static[K]; + }); diff --git a/packages/types/src/lib/Constructor.ts b/packages/types/src/lib/Constructor.ts index b2a784fd..eb5ec812 100644 --- a/packages/types/src/lib/Constructor.ts +++ b/packages/types/src/lib/Constructor.ts @@ -1,4 +1,15 @@ /** - * A generic constructor without parameters + * Represents a constructor function that can be used to create new instances + * of a given type {@linkcode T}. Similar to {@linkcode AbstractConstructor}, + * but this represents a concrete class instead of an abstract one. + * + * Values of this type are subtypes of {@linkcode AbstractConstructor}. + * + * @template [T=any] The type of the instances created by the constructor. + * @template {readonly unknown[]} [A=readonly any[]] The type of the arguments + * passed to the constructor. + * @category Utility Types */ -export type Constructor = new (...args: any[]) => Constructable; +export interface Constructor { + new(...args: A): T; +} diff --git a/packages/types/src/lib/FunctionKeys.ts b/packages/types/src/lib/FunctionKeys.ts new file mode 100644 index 00000000..6a635325 --- /dev/null +++ b/packages/types/src/lib/FunctionKeys.ts @@ -0,0 +1,9 @@ +/** + * Returns a union of the keys of an object `T` whose values are functions. + * This is useful for extracting the keys of a class's methods. + * @template T The object type to extract keys from. + * @category Utility Types + */ +export type FunctionKeys = { + [K in keyof T]: T[K] extends (...args: any) => any ? K : never; +}[keyof T]; diff --git a/packages/types/src/lib/Is.ts b/packages/types/src/lib/Is.ts new file mode 100644 index 00000000..cefcc2ca --- /dev/null +++ b/packages/types/src/lib/Is.ts @@ -0,0 +1,11 @@ +import type { Or } from './Or.ts'; + +/** + * Casts a type `T` to a type `U`, but only if `T` is assignable to `U`. If + * `Extract` results in `never`, then the type `U` is returned as is. + * + * @template T The type to cast to the type `U`. + * @template [U=unknown] The type to cast the type `T` to. + * @category Utility Types + */ +export type Is = Or, U>; diff --git a/packages/types/src/lib/KeyOf.ts b/packages/types/src/lib/KeyOf.ts new file mode 100644 index 00000000..b0ef0c16 --- /dev/null +++ b/packages/types/src/lib/KeyOf.ts @@ -0,0 +1,16 @@ +import type { Is } from './Is.ts'; +import type { PropertyKeys } from './PropertyKeys.ts'; + +/** + * This is a "safe" version of the `keyof` operator, which will only return + * keys that are both assignable to `PropertyKey` and are not `never`. This is + * useful for extracting keys from objects that could potentially be empty, and + * always ensuring the resulting type is at least a `PropertyKey`. + * + * If the {@linkcode Strict} type parameter is set to `false`, the union of + * keys will be "anchored" with the {@linkcode PropertyKeys} branded type, to + * allow for literal key unions to be preserved in autocomplete suggestions. + */ +export type KeyOf = + | (Strict extends true ? never : PropertyKeys) + | Is; diff --git a/packages/types/src/lib/MaybeVoidable.ts b/packages/types/src/lib/MaybeVoidable.ts new file mode 100644 index 00000000..e7543583 --- /dev/null +++ b/packages/types/src/lib/MaybeVoidable.ts @@ -0,0 +1,15 @@ +import type { VoidableArgument } from './VoidableArgument.ts'; + +/** + * Used to determine the return type of a decorator function. If the argument + * {@linkcode V} is `true`, then this resolves to `void | T`. If the argument + * `V` is `false`, it resolves to just `T`. If `V` is `void`, it resolves to + * just `void`. + * + * @template T The type of the return value. + * @template {VoidableArgument} V Whether the return type should include `void`. + * @category Utility Types + */ +export type MaybeVoidable = + | ([V] extends [true] | [void] ? void : never) + | ([V] extends [void] ? never : T); diff --git a/packages/types/src/lib/OptionalParametersOf.ts b/packages/types/src/lib/OptionalParametersOf.ts new file mode 100644 index 00000000..95a69b3f --- /dev/null +++ b/packages/types/src/lib/OptionalParametersOf.ts @@ -0,0 +1,24 @@ +import type { ParametersOf } from './ParamatersOf.ts'; + +export type OptionalParametersOf< + T, + Fallback extends readonly unknown[] = never, +> = [T] extends [never] ? Fallback + : ParametersOf extends infer A extends readonly unknown[] + ? OptionalParametersOfWorker + : Fallback; + +type OptionalParametersOfWorker = + A extends readonly [infer F, ...infer R] + ? IsEqual< + Exclude, + F, + OptionalParametersOfWorker, + [F, ...OptionalParametersOfWorker] + > + : A; + +type IsEqual = + // eslint-disable-next-line ts/no-unnecessary-type-parameters -- weird + (() => T extends A ? 1 : 2) extends () => T extends B ? 1 : 2 ? True + : False; diff --git a/packages/types/src/lib/Or.ts b/packages/types/src/lib/Or.ts new file mode 100644 index 00000000..d7cf5c78 --- /dev/null +++ b/packages/types/src/lib/Or.ts @@ -0,0 +1,5 @@ +/** + * If `A` is `never`, `null`, or `undefined`, returns `B`. Otherwise, as long + * as `A` is assignable to `B`, returns `A`. Otherwise, returns `never`. + */ +export type Or = ([A & {}] extends [never] ? B : A) extends infer V extends B ? V : never; diff --git a/packages/types/src/lib/ParamatersOf.ts b/packages/types/src/lib/ParamatersOf.ts new file mode 100644 index 00000000..a1da6a62 --- /dev/null +++ b/packages/types/src/lib/ParamatersOf.ts @@ -0,0 +1,14 @@ +import type { ValueOf } from './ValueOf.ts'; + +export type ParametersOf = + | [T] extends [never] ? Fallback : ParametersOfWorker< + | T extends (...args: any) => any ? T + : ValueOf extends infer U + ? U extends (...args: any) => any ? U : never + : Fallback, + Fallback + > extends infer A extends readonly unknown[] ? A + : Fallback; + +type ParametersOfWorker = + | T extends (...args: infer A) => any ? Readonly : Fallback; diff --git a/packages/types/src/lib/PropertyKeys.ts b/packages/types/src/lib/PropertyKeys.ts new file mode 100644 index 00000000..0c3b3274 --- /dev/null +++ b/packages/types/src/lib/PropertyKeys.ts @@ -0,0 +1,68 @@ +/** + * Represents the mildest form of a branded generic string type. This type is + * used to create string literal unions that accept any string input, but will + * preserve the literal string union members for autocomplete purposes. + * + * For example, using `strings | "foo" | "bar"` for an argument type will allow + * any string to be passed, but will still suggest `"foo"` or `"bar"` as valid + * suggestions in an editor that supports TypeScript's language server. + * + * > **Note**: the lowercase name was chosen for this type to intentionally + * > convey that it is capable of being assigned any `string` value. It also + * > helps distinguish this type from the built-in `string` type, while still + * > being visually similar. + * + * @category Utility Types + */ +export type strings = string & {}; + +/** + * Represents the mildest form of a branded generic number type. This type is + * used to create number literal unions that accept any number input, but will + * preserve the literal number union members for autocomplete purposes. + * + * Similiar to {@linkcode strings}, this type is useful for creating number + * literal unions that accept any number, but will still suggest the literal + * number union members for autocomplete purposes. + * + * > **Note**: the lowercase name was chosen for this type to intentionally + * > convey that it is capable of being assigned any `number` value. It also + * > helps distinguish this type from the built-in `number` type, while still + * > being visually similar. + * + * @category Utility Types + */ +export type numbers = number & {}; + +/** + * Represents the mildest form of a branded generic symbol type. This type is + * used to create symbol literal unions that accept any symbol input, but will + * preserve the literal symbol union members for autocomplete purposes. + * + * Similiar to {@linkcode strings} and {@linkcode numbers}, this type is useful + * for creating symbol literal unions that accept any symbol, but will still + * suggest the literal symbol union members for autocomplete purposes. + * + * > **Note**: the lowercase name was chosen for this type to intentionally + * > convey that it is capable of being assigned any `symbol` value. It also + * > helps distinguish this type from the built-in `symbol` type, while still + * > being visually similar. + * + * @category Utility Types + */ +// We cannot just intersect `symbol` with `{}`, as this will widen the type to +// `symbol`. Instead, we need to create a new type that is a subtype of symbol, +// with a property that is never used. +export type symbols = symbol & {}; // export type symbols = symbol & { [BRAND]?: never }; + +/** + * Union of {@linkcode strings}, {@linkcode numbers}, and {@linkcode symbols}, + * this type can be used as an "anchor" type in a literal union of properties. + * This will ensure your literal union is not widened to a `string`, `number`, + * or `symbol` type, but will still accept any of these types as valid inputs. + * + * @category Utility Types + */ +export type PropertyKeys = strings | numbers | symbols; + +export type { PropertyKeys as properties }; diff --git a/packages/types/src/lib/ValueOf.ts b/packages/types/src/lib/ValueOf.ts new file mode 100644 index 00000000..b2bea449 --- /dev/null +++ b/packages/types/src/lib/ValueOf.ts @@ -0,0 +1,4 @@ +/** + * Represents a type that is the union of the values of an object `T`. + */ +export type ValueOf = T[keyof T]; diff --git a/packages/types/src/lib/Voidable.ts b/packages/types/src/lib/Voidable.ts new file mode 100644 index 00000000..3629be0b --- /dev/null +++ b/packages/types/src/lib/Voidable.ts @@ -0,0 +1,6 @@ +/** + * Adds a `void` type to the given type `T`, to become `T | void`. + * + * @category Utility Types + */ +export type Voidable = T | void; diff --git a/packages/types/src/lib/VoidableArgument.ts b/packages/types/src/lib/VoidableArgument.ts new file mode 100644 index 00000000..f9121d27 --- /dev/null +++ b/packages/types/src/lib/VoidableArgument.ts @@ -0,0 +1,8 @@ +/** + * The type that can be passed to the {@linkcode MaybeVoidable} type for its + * second type parameter, `V`. @see {@linkcode MaybeVoidable} for more info + * on how these types are used. + * + * @category Utility Types + */ +export type VoidableArgument = boolean | void; diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 5804c8b5..dcca06f1 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -65,15 +65,15 @@ "src/**/*.json" ], "engines": { - "node": ">=20" + "node": ">=22" }, "peerDependencies": { "typescript": ">=5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.0.2", + "@vitest/coverage-v8": "^3.0.5", "typescript": "^5.7.3", - "vitest": "^3.0.2" + "vitest": "^3.0.5" }, "publishConfig": { "access": "public", diff --git a/packages/utilities/jsr.json b/packages/utilities/jsr.json index 10ade0cd..2d8965b0 100644 --- a/packages/utilities/jsr.json +++ b/packages/utilities/jsr.json @@ -15,6 +15,8 @@ "./asyncQueue": "./src/lib/asyncQueue.ts", "./bitField": "./src/lib/bitField.ts", "./boundMethods": "./src/lib/boundMethods.ts", + "./brand": "./src/lib/brand.ts", + "./branded": "./src/lib/branded.ts", "./capitalizeFirstLetter": "./src/lib/capitalizeFirstLetter.ts", "./cast": "./src/lib/cast.ts", "./chunk": "./src/lib/chunk.ts", @@ -39,6 +41,8 @@ "./filterNullishOrEmpty": "./src/lib/filterNullishOrEmpty.ts", "./filterNullishOrZero": "./src/lib/filterNullishOrZero.ts", "./flattenArrayable": "./src/lib/flattenArrayable.ts", + "./flavor": "./src/lib/flavor.ts", + "./flavored": "./src/lib/flavored.ts", "./getDeepObjectKeys": "./src/lib/getDeepObjectKeys.ts", "./getDimension": "./src/lib/getDimension.ts", "./hasAtLeastOneKeyInMap": "./src/lib/hasAtLeastOneKeyInMap.ts", diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 99486bf3..0ad751e5 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -5,7 +5,9 @@ "version": "5.2.0", "description": "Opinionated collection of common TypeScript utilities", "author": "@flowr", - "contributors": ["Pauline "], + "contributors": [ + "Pauline " + ], "license": "(LicenseRef-OQL-1.2 OR MIT OR Apache-2.0)", "funding": "https://ko-fi.com/pauliesnug", "homepage": "https://petal.dyn.gay", @@ -36,7 +38,6 @@ "./dist/esm/chunk-5D2TBMQN.js", "./dist/esm/chunk-UXJTKJQU.js", "./dist/esm/chunk-GBICWU25.js", - "./dist/esm/chunk-7OLL5IN4.js", "./dist/esm/chunk-N7LXSAF2.js", "./dist/esm/chunk-QAJAZWBL.js", "./dist/esm/chunk-GQQ27P4R.js", @@ -46,7 +47,6 @@ "./dist/esm/chunk-QCWMJ2E5.js", "./dist/esm/chunk-3KHAGD5I.js", "./dist/esm/chunk-HFABF7LA.js", - "./dist/esm/chunk-W3A5COZA.js", "./dist/esm/chunk-3RGNDQFH.js", "./dist/esm/chunk-QWDAQH4J.js", "./dist/esm/chunk-JBPLL3WN.js", @@ -55,19 +55,20 @@ "./dist/esm/chunk-YO24QW7U.js", "./dist/esm/chunk-4X33FJXC.js", "./dist/esm/chunk-MI3YHEDY.js", - "./dist/esm/chunk-7WMK52DC.js", "./dist/esm/chunk-M4EL5XHZ.js", "./dist/esm/chunk-XU4VQA6E.js", "./dist/esm/chunk-PZX3YXIQ.js", "./dist/esm/chunk-IPNQ7HKI.js", "./dist/esm/chunk-FQ6VNCUR.js", "./dist/esm/chunk-UQMIIBOW.js", + "./dist/esm/chunk-MBKH65RG.js", "./dist/esm/chunk-K5V3IMNL.js", "./dist/esm/chunk-WUCDYGWB.js", "./dist/esm/chunk-GAMLSS57.js", "./dist/esm/chunk-DNKF52KZ.js", "./dist/esm/chunk-E3BLVHJY.js", "./dist/esm/chunk-6RCL46UG.js", + "./dist/esm/chunk-3X4ONC5T.js", "./dist/esm/chunk-BRYQC7ZV.js", "./dist/esm/chunk-VV45RV77.js", "./dist/esm/chunk-TWPQRIYA.js", @@ -77,6 +78,7 @@ "./dist/esm/chunk-VTA5WZ7F.js", "./dist/esm/chunk-OAOGU5I5.js", "./dist/esm/chunk-7UVTFIHZ.js", + "./dist/esm/chunk-QFSUO7VH.js", "./dist/esm/chunk-MQMMOFTQ.js", "./dist/esm/chunk-PRRKL2MU.js", "./dist/esm/chunk-FBSMGDUQ.js", @@ -86,7 +88,6 @@ "./dist/esm/chunk-P3ET2WKY.js", "./dist/esm/chunk-NBLCMKV7.js", "./dist/esm/chunk-ZEDYR3SF.js", - "./dist/esm/chunk-UPEYEHRM.js", "./dist/esm/chunk-3GNFTKMG.js", "./dist/esm/chunk-T6ORITVN.js", "./dist/esm/chunk-Q3DZBJIJ.js", @@ -106,6 +107,7 @@ "./dist/esm/chunk-K2RGD3BD.js", "./dist/esm/chunk-CLRV5DI2.js", "./dist/esm/chunk-YE66WIBM.js", + "./dist/esm/chunk-4EYG4JHI.js", "./dist/esm/chunk-XYUJLUMM.js", "./dist/esm/chunk-UHYSAHTC.js", "./dist/esm/chunk-AZXYAT3D.js", @@ -164,6 +166,26 @@ "default": "./dist/cjs/lib/boundMethods.cjs" } }, + "./brand": { + "import": { + "types": "./dist/esm/lib/brand.d.ts", + "default": "./dist/esm/lib/brand.js" + }, + "require": { + "types": "./dist/cjs/lib/brand.d.cts", + "default": "./dist/cjs/lib/brand.cjs" + } + }, + "./branded": { + "import": { + "types": "./dist/esm/lib/branded.d.ts", + "default": "./dist/esm/lib/branded.js" + }, + "require": { + "types": "./dist/cjs/lib/branded.d.cts", + "default": "./dist/cjs/lib/branded.cjs" + } + }, "./capitalizeFirstLetter": { "import": { "types": "./dist/esm/lib/capitalizeFirstLetter.d.ts", @@ -404,6 +426,26 @@ "default": "./dist/cjs/lib/flattenArrayable.cjs" } }, + "./flavor": { + "import": { + "types": "./dist/esm/lib/flavor.d.ts", + "default": "./dist/esm/lib/flavor.js" + }, + "require": { + "types": "./dist/cjs/lib/flavor.d.cts", + "default": "./dist/cjs/lib/flavor.cjs" + } + }, + "./flavored": { + "import": { + "types": "./dist/esm/lib/flavored.d.ts", + "default": "./dist/esm/lib/flavored.js" + }, + "require": { + "types": "./dist/cjs/lib/flavored.d.cts", + "default": "./dist/cjs/lib/flavored.cjs" + } + }, "./getDeepObjectKeys": { "import": { "types": "./dist/esm/lib/getDeepObjectKeys.d.ts", @@ -992,7 +1034,7 @@ "dist/**/*.mjs" ], "engines": { - "node": ">=20" + "node": ">=22" }, "scripts": { "build": "pnpm gen && tsup && pnpm run '/^build:.*/'", @@ -1007,7 +1049,7 @@ }, "devDependencies": { "@flowr/types": "workspace:^", - "pathe": "^2.0.2" + "pathe": "^2.0.3" }, "publishConfig": { "access": "public", diff --git a/packages/utilities/src/index.ts b/packages/utilities/src/index.ts index 92cd9fe7..cd2ccc2d 100644 --- a/packages/utilities/src/index.ts +++ b/packages/utilities/src/index.ts @@ -2,6 +2,8 @@ export * from './lib/arrayStrictEquals.ts'; export * from './lib/asyncQueue.ts'; export * from './lib/bitField.ts'; export * from './lib/boundMethods.ts'; +export type * from './lib/brand.ts'; +export type * from './lib/branded.ts'; export * from './lib/capitalizeFirstLetter.ts'; export * from './lib/cast.ts'; export * from './lib/chunk.ts'; @@ -26,6 +28,8 @@ export * from './lib/filterNullishAndZero.ts'; export * from './lib/filterNullishOrEmpty.ts'; export * from './lib/filterNullishOrZero.ts'; export * from './lib/flattenArrayable.ts'; +export type * from './lib/flavor.ts'; +export type * from './lib/flavored.ts'; export * from './lib/getDeepObjectKeys.ts'; export * from './lib/getDimension.ts'; export * from './lib/hasAtLeastOneKeyInMap.ts'; diff --git a/packages/utilities/src/lib/brand.ts b/packages/utilities/src/lib/brand.ts new file mode 100644 index 00000000..5cd05f70 --- /dev/null +++ b/packages/utilities/src/lib/brand.ts @@ -0,0 +1,57 @@ +/* eslint-disable ts/no-redeclare -- intentionally redeclare symbol types */ + +/** + * Represents a unique symbol that is used to create branded and flavored types + * in TypeScript. This symbol is used to create nominal types and prevent type + * collisions in the type system. + * @see https://michalzalecki.com/nominal-typing-in-typescript/ + * @see {@linkcode Brand} for more information on branded types. + * @see {@linkcode Branded} for a helper type that creates branded types. + * @see {@linkcode Flavor} for more information on flavored types. + * @see {@linkcode Flavored} for a helper type that creates flavored types. + * @category Utility Types + */ +export const BRAND: unique symbol = Symbol('BRAND'); + +/** + * Represents a unique symbol that is used to create branded and flavored types + * in TypeScript. This symbol is used to create nominal types and prevent type + * collisions in the type system. + * @see https://michalzalecki.com/nominal-typing-in-typescript/ + * @see {@linkcode Brand} for more information on branded types. + * @see {@linkcode Branded} for a helper type that creates branded types. + * @see {@linkcode Flavor} for more information on flavored types. + * @see {@linkcode Flavored} for a helper type that creates flavored types. + * @category Utility Types + */ +export type BRAND = typeof BRAND; + +/** + * Represents a unique symbol that can be used to create a simulated partial + * application of type parameters. This is useful for creating branded types + * with a default value for a type parameter. + * @category Utility Types + */ +export const NEVER: unique symbol = Symbol('NEVER'); + +/** + * Represents a unique symbol that can be used to create a simulated partial + * application of type parameters. This is useful for creating branded types + * with a default value for a type parameter. + * @category Utility Types + */ +export type NEVER = typeof NEVER; + +/** + * Represents a unique brand for a type, which can be used to create nominal + * types in TypeScript and prevent type collisions. For a less-strict version + * of this type, see the {@linkcode Flavor} interface. + * + * To create a branded type, you can either use the {@linkcode Branded} helper + * type, or manually extend/intersect another type with this interface. The + * {@linkcode A} type parameter is the type that becomes the brand's value, and + * it defaults to `never`. + */ +export interface Brand { + readonly [BRAND]: B; +} diff --git a/packages/utilities/src/lib/branded.ts b/packages/utilities/src/lib/branded.ts new file mode 100644 index 00000000..a3071c20 --- /dev/null +++ b/packages/utilities/src/lib/branded.ts @@ -0,0 +1,24 @@ +import type { Brand, NEVER } from './brand.ts'; + +/** + * Creates a new branded type by intersecting the given type `V` with the + * {@linkcode Brand} interface. This can be used to create nominal types in + * TypeScript and prevent type collisions. + * + * This is an "overloaded" type that can be used in two ways: + * - If only two type arguments are provided, the first type `V` is branded + * with the second type `T` (e.g. `V & Brand`). + * - If three type arguments are provided, the first type `V` is **unioned** + * with type `T`, which is branded with the third type `B`. This is useful + * for creating things like a string literal union with a brand type. It is + * equivalent to `V | Branded`. + * + * @template V The type to brand with the given type `T`. + * @template T The type to brand the given type `V` with. + * @template [B=NEVER] The type that becomes the brand's value. Defaults to the + * special `NEVER` type, which is a unique symbol that can be used to create a + * simulated partial application of type parameters. + * @category Utility Types + */ +export type Branded = [B] extends [NEVER] ? V & Brand + : V | Branded; diff --git a/packages/utilities/src/lib/flavor.ts b/packages/utilities/src/lib/flavor.ts new file mode 100644 index 00000000..fc8b542b --- /dev/null +++ b/packages/utilities/src/lib/flavor.ts @@ -0,0 +1,15 @@ +import type { BRAND } from './brand.ts'; + +/** + * Represents a unique flavor for a type, which can be used to create nominal + * types in TypeScript and prevent type collisions. For a stricter version of + * this type, see the {@linkcode Brand} interface. + * + * To create a flavored type, you can either use the {@linkcode Flavored} + * helper type, or manually extend/intersect another type with this interface. + * The {@linkcode F} type parameter is the type that becomes the flavor's + * value, and it defaults to `never`. + */ +export interface Flavor { + readonly [BRAND]?: F | void; +} diff --git a/packages/utilities/src/lib/flavored.ts b/packages/utilities/src/lib/flavored.ts new file mode 100644 index 00000000..850aaeb8 --- /dev/null +++ b/packages/utilities/src/lib/flavored.ts @@ -0,0 +1,25 @@ +import type { NEVER } from './brand.ts'; +import type { Flavor } from './flavor.ts'; + +/** + * Creates a new flavored type by intersecting the given type `V` with the + * {@linkcode Flavor} interface. This can be used to create nominal types in + * TypeScript and prevent type collisions. + * + * This is an "overloaded" type that can be used in two ways: + * - If only two type arguments are provided, the first type `V` is flavored + * with the second type `T` (e.g. `V & Flavor`). + * - If three type arguments are provided, the first type `V` is **unioned** + * with type `T`, which is flavored with the third type `F`. This is useful + * for creating things like a string literal union with a flavor type. It + * is equivalent to `V | Flavored`. + * + * @template V The type to flavor with the given type `T`. + * @template T The type to flavor the given type `V` with. + * @template [F=NEVER] The type that becomes the flavor's value. Defaults to + * the special `NEVER` type, which is a unique symbol that can be used to + * create a simulated partial application of type parameters. + * @category Utility Types + */ +export type Flavored = [F] extends [NEVER] ? V & Flavor + : V | Flavored; diff --git a/packages/utilities/src/lib/objectEntries.ts b/packages/utilities/src/lib/objectEntries.ts index b3944b79..12fcc351 100644 --- a/packages/utilities/src/lib/objectEntries.ts +++ b/packages/utilities/src/lib/objectEntries.ts @@ -1,3 +1,3 @@ -export function objectEntries(obj: Object): Object extends ArrayLike ? Array<[`${number}`, Object[number]]> : Array<[keyof Object, Object[keyof Object]]> { - return Object.entries(obj) as Object extends ArrayLike ? Values[] : Array<[keyof Object, Object[keyof Object]]>; +export function objectEntries(obj: T): T extends ArrayLike ? Array<[`${number}`, Values]> : Array<[keyof T, T[keyof T]]> { + return Object.entries(obj) as T extends ArrayLike ? Array<[`${number}`, Values]> : Array<[keyof T, T[keyof T]]>; } diff --git a/packages/utilities/src/lib/objectKeys.ts b/packages/utilities/src/lib/objectKeys.ts index d6d99a44..4a52ac30 100644 --- a/packages/utilities/src/lib/objectKeys.ts +++ b/packages/utilities/src/lib/objectKeys.ts @@ -1,3 +1,3 @@ -export function objectKeys(obj: Object): Object extends ArrayLike ? Array<`${number}`> : Array { - return Object.keys(obj) as Object extends ArrayLike ? Values[] : Array; +export function objectKeys(obj: T): T extends ArrayLike ? Array<`${number}`> : Array { + return Object.keys(obj) as T extends ArrayLike ? Array<`${number}`> : Array; } diff --git a/packages/utilities/src/lib/objectValues.ts b/packages/utilities/src/lib/objectValues.ts index cba7d40c..a96bd967 100644 --- a/packages/utilities/src/lib/objectValues.ts +++ b/packages/utilities/src/lib/objectValues.ts @@ -1,3 +1,3 @@ -export function objectValues(obj: Object): Object extends ArrayLike ? Array : Array { - return Object.values(obj) as Object extends ArrayLike ? Values[] : Array; +export function objectValues(obj: T): T extends ArrayLike ? Values[] : Array { + return Object.values(obj) as T extends ArrayLike ? Values[] : Array; } diff --git a/packages/utilities/src/lib/pollSync.ts b/packages/utilities/src/lib/pollSync.ts index 413bfb21..3d2a3d20 100644 --- a/packages/utilities/src/lib/pollSync.ts +++ b/packages/utilities/src/lib/pollSync.ts @@ -47,7 +47,7 @@ export function pollSync(cb: () => Return, cbCondition: (value: Return) throw new DOMException('This operation was aborted', 'AbortError'); if (waitBetweenRetries > 0) { if (options.verbose) - // eslint-disable-next-line no-console -- info logging + // eslint-disable-next-line no-console -- yeah console.log(`Waiting ${waitBetweenRetries}ms before polling again...`); sleepSync(waitBetweenRetries); } diff --git a/packages/utilities/tests/asyncQueue.test.ts b/packages/utilities/tests/asyncQueue.test.ts index 026c9b4d..dc45dbc9 100644 --- a/packages/utilities/tests/asyncQueue.test.ts +++ b/packages/utilities/tests/asyncQueue.test.ts @@ -1,4 +1,5 @@ -import { AsyncQueue, type AsyncQueueWaitOptions } from '../src/lib/asyncQueue'; +import type { AsyncQueueWaitOptions } from '../src/lib/asyncQueue'; +import { AsyncQueue } from '../src/lib/asyncQueue'; function genNumbers(queue: AsyncQueue) { let i = 0; diff --git a/packages/utilities/tests/browser/browser.test.ts b/packages/utilities/tests/browser/browser.test.ts index f3fd7e86..23a6e2fd 100644 --- a/packages/utilities/tests/browser/browser.test.ts +++ b/packages/utilities/tests/browser/browser.test.ts @@ -1,7 +1,8 @@ // @vitest-environment jsdom +import type { DOMWindow } from 'jsdom'; import { readFile } from 'node:fs/promises'; -import { type DOMWindow, JSDOM } from 'jsdom'; +import { JSDOM } from 'jsdom'; import { join } from 'pathe'; describe('browser-bundle-test', () => { diff --git a/packages/utilities/tests/getDeepObjectKeys.test.ts b/packages/utilities/tests/getDeepObjectKeys.test.ts index 33c26dcc..c92f75df 100644 --- a/packages/utilities/tests/getDeepObjectKeys.test.ts +++ b/packages/utilities/tests/getDeepObjectKeys.test.ts @@ -1,4 +1,5 @@ -import { getDeepObjectKeys, type GetDeepObjectKeysOptions } from '../src'; +import type { GetDeepObjectKeysOptions } from '../src'; +import { getDeepObjectKeys } from '../src'; describe('getDeepObjectKeys', () => { const scenarios: Scenario[] = [ diff --git a/packages/utilities/tests/jsonEncodable.test.ts b/packages/utilities/tests/jsonEncodable.test.ts index 023762bc..4bd44c93 100644 --- a/packages/utilities/tests/jsonEncodable.test.ts +++ b/packages/utilities/tests/jsonEncodable.test.ts @@ -1,4 +1,5 @@ -import { isJSONEncodable, type JSONEncodable } from '../src/lib/jsonEncodable'; +import type { JSONEncodable } from '../src/lib/jsonEncodable'; +import { isJSONEncodable } from '../src/lib/jsonEncodable'; class Encodable implements JSONEncodable<{ meow: string; diff --git a/packages/utilities/tests/objectEntries.test.ts b/packages/utilities/tests/objectEntries.test.ts index f268c79b..c7389618 100644 --- a/packages/utilities/tests/objectEntries.test.ts +++ b/packages/utilities/tests/objectEntries.test.ts @@ -6,7 +6,7 @@ describe('objectEntries', () => { const expected = [ ['a', 'Hello'], ['b', 420], - ] as Array<[string, unknown]>; + ]; expect>(objectEntries(source)).toEqual(expected); }); @@ -17,19 +17,29 @@ describe('objectEntries', () => { ['a', 'Hello'], ['b', 420], ['deep', { i: [] }], - ] as Array<[string, unknown]>; + ]; expect>(objectEntries(source)).toEqual(expected); }); + it('given array readonly then returns expected', () => { + const source = ['Hello', 420] as const; + const expected = [ + ['0', 'Hello'], + ['1', 420], + ]; + + expect>(objectEntries(source)).toEqual(expected); + }); + it('given basic then returns expected', () => { const source = { a: 'Hello', b: 420 }; const expected = [ ['a', 'Hello'], ['b', 420], - ] as Array<[string, unknown]>; + ]; - expect(objectEntries(source)).toEqual(expected); + expect>(objectEntries(source)).toEqual(expected); }); it('given deep then returns expected', () => { @@ -38,8 +48,18 @@ describe('objectEntries', () => { ['a', 'Hello'], ['b', 420], ['deep', { i: [] }], - ] as Array<[string, unknown]>; + ]; + + expect>(objectEntries(source)).toEqual(expected); + }); + + it('given array then returns expected', () => { + const source = ['Hello', 420]; + const expected = [ + ['0', 'Hello'], + ['1', 420], + ]; - expect(objectEntries(source)).toEqual(expected); + expect>(objectEntries(source)).toEqual(expected); }); }); diff --git a/packages/utilities/tests/objectKeys.test.ts b/packages/utilities/tests/objectKeys.test.ts index bf9da8c2..648c3d0c 100644 --- a/packages/utilities/tests/objectKeys.test.ts +++ b/packages/utilities/tests/objectKeys.test.ts @@ -15,17 +15,31 @@ describe('objectKeys', () => { expect>(objectKeys(source)).toEqual(expected); }); + it('given array readonly then returns expected', () => { + const source = ['Hello', 420] as const; + const expected = ['0', '1']; + + expect>(objectKeys(source)).toEqual(expected); + }); + it('given basic then returns expected', () => { const source = { a: 'Hello', b: 420 }; const expected = ['a', 'b']; - expect(objectKeys(source)).toEqual(expected); + expect>(objectKeys(source)).toEqual(expected); }); it('given deep then returns expected', () => { const source = { a: 'Hello', b: 420, deep: { i: [] } }; const expected = ['a', 'b', 'deep']; - expect(objectKeys(source)).toEqual(expected); + expect>(objectKeys(source)).toEqual(expected); + }); + + it('given array then returns expected', () => { + const source = ['Hello', 420]; + const expected = ['0', '1']; + + expect>(objectKeys(source)).toEqual(expected); }); }); diff --git a/packages/utilities/tests/objectValues.test.ts b/packages/utilities/tests/objectValues.test.ts index b6cc69b5..8a25c805 100644 --- a/packages/utilities/tests/objectValues.test.ts +++ b/packages/utilities/tests/objectValues.test.ts @@ -1,7 +1,7 @@ import { objectValues } from '../src'; describe('objectValues', () => { - it('given basic readonly then returns expected (typed)', () => { + it('given basic readonly then returns expected', () => { const source = { a: 'Hello', b: 420 } as const; const expected = ['Hello', 420]; @@ -15,17 +15,29 @@ describe('objectValues', () => { expect>(objectValues(source)).toEqual(expected); }); - it('given basic readonly then returns expected', () => { + it('given array readonly then returns same', () => { + const source = ['Hello', 420] as const; + + expect>(objectValues(source)).toEqual(source); + }); + + it('given basic then returns expected', () => { const source = { a: 'Hello', b: 420 }; const expected = ['Hello', 420]; - expect(objectValues(source)).toEqual(expected); + expect>(objectValues(source)).toEqual(expected); }); it('given deep then returns expected', () => { const source = { a: 'Hello', b: 420, deep: { i: [] } }; const expected = ['Hello', 420, { i: [] }]; - expect(objectValues(source)).toEqual(expected); + expect>(objectValues(source)).toEqual(expected); + }); + + it('given array then returns same', () => { + const source = ['Hello', 420]; + + expect>(objectValues(source)).toEqual(source); }); }); diff --git a/packages/utilities/tests/pollSync.test.ts b/packages/utilities/tests/pollSync.test.ts index b6374b4d..bda42e1c 100644 --- a/packages/utilities/tests/pollSync.test.ts +++ b/packages/utilities/tests/pollSync.test.ts @@ -18,7 +18,7 @@ describe('pollSync', () => { it('given a function that fails twice then succeeds then calls that function thrice', () => { const cb = vi - .fn() + .fn() // .mockReturnValueOnce(fail) .mockReturnValueOnce(fail) .mockReturnValueOnce(pass); @@ -51,7 +51,7 @@ describe('pollSync', () => { it('given a poll with only one retry and fails both then calls that function twice, but condition only once', () => { const cb = vi - .fn() + .fn() // .mockReturnValueOnce(fail) .mockReturnValueOnce(fail); const cbCondition = vi.fn((result: string) => result === pass); @@ -87,7 +87,7 @@ describe('pollSync', () => { it.each(['foo', true])('given %j then throws TypeError', (waitBetweenRetries) => { const cb = vi.fn(cbRaw); const cbCondition = vi.fn(cbConditionRaw); - const callback = () => pollSync(cb, cbCondition, { waitBetweenRetries: waitBetweenRetries as unknown as number }); + const callback = () => pollSync(cb, cbCondition, { waitBetweenRetries: waitBetweenRetries as any }); expect(callback).toThrowError(new TypeError('Expected waitBetweenRetries to be a number')); expect(cb).toBeCalledTimes(0); @@ -106,7 +106,7 @@ describe('pollSync', () => { it('given a poll with a wait of 5ms then waits 5ms between retries', () => { const cb = vi - .fn() + .fn() // .mockReturnValueOnce(fail) .mockReturnValueOnce(pass); const cbCondition = vi.fn(cbConditionRaw); @@ -145,7 +145,7 @@ describe('pollSync', () => { it('given a poll with 5ms timeout but takes longer then throws an error', () => { const cb = vi - .fn() + .fn() // .mockReturnValueOnce(fail) .mockReturnValueOnce(fail); const cbCondition = vi.fn((result: string) => result === pass); @@ -162,7 +162,7 @@ describe('pollSync', () => { expect(callback).toThrowError(new DOMException('This operation was aborted', 'AbortError')); expect(cb).toBeCalledTimes(2); expect(cbCondition).toBeCalledTimes(2); - expect(dateNow).toBeCalledTimes(6); + expect(dateNow).toBeCalledTimes(16); }); }); diff --git a/packages/utilities/tests/snowflake.test.ts b/packages/utilities/tests/snowflake.test.ts index 826be6dc..19d1badf 100644 --- a/packages/utilities/tests/snowflake.test.ts +++ b/packages/utilities/tests/snowflake.test.ts @@ -1,4 +1,5 @@ -import { type DeconstructedSnowflake, Snowflake } from '../src/lib/snowflake'; +import type { DeconstructedSnowflake } from '../src/lib/snowflake'; +import { Snowflake } from '../src/lib/snowflake'; const sampleEpoch = 1577836800000n; diff --git a/packages/utilities/tests/timestamp.test.ts b/packages/utilities/tests/timestamp.test.ts index ef436f28..0fe5f3fc 100644 --- a/packages/utilities/tests/timestamp.test.ts +++ b/packages/utilities/tests/timestamp.test.ts @@ -1,4 +1,5 @@ -import { Timestamp, type TimestampTemplateEntry } from '../src/lib/timestamp'; +import type { TimestampTemplateEntry } from '../src/lib/timestamp'; +import { Timestamp } from '../src/lib/timestamp'; describe(`timestamp`, () => { describe(`displayAfternoon`, () => { diff --git a/packages/utilities/vitest.config.ts b/packages/utilities/vitest.config.ts index f4305d5b..dcf8c3f8 100644 --- a/packages/utilities/vitest.config.ts +++ b/packages/utilities/vitest.config.ts @@ -1,3 +1,3 @@ import { createVitestConfig } from '../scripts/vitest.config.ts'; -export default createVitestConfig`utils`; +export default createVitestConfig`utilities`; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45fb0547..2baee472 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,9 +6,8 @@ settings: overrides: '@eslint-community/eslint-utils': ^4.4.1 - '@typescript-eslint/utils': ^8.21.0 - esbuild: ^0.24.2 - eslint: ^9.18.0 + '@typescript-eslint/utils': ^8.24.0 + eslint: ^9.20.1 tsx: ^4.19.2 patchedDependencies: @@ -27,23 +26,23 @@ importers: specifier: workspace:^ version: link:packages/eslint '@turbo/gen': - specifier: ^2.3.3 - version: 2.3.3(@types/node@22.10.7)(typescript@5.7.3) + specifier: ^2.4.2 + version: 2.4.2(@types/node@22.13.1)(typescript@5.7.3) '@types/jsdom': specifier: ^21.1.7 version: 21.1.7(patch_hash=e3366b6daa76fd621cbb60e62959ed91d7a0dbcf5a46e3c0253bd1a79f65ef57) '@types/node': - specifier: ^22.10.7 - version: 22.10.7 + specifier: ^22.13.1 + version: 22.13.1 '@vitest/coverage-v8': - specifier: ^3.0.2 - version: 3.0.2(vitest@3.0.2) + specifier: ^3.0.5 + version: 3.0.5(vitest@3.0.5) '@vitest/ui': - specifier: ^3.0.2 - version: 3.0.2(vitest@3.0.2) + specifier: ^3.0.5 + version: 3.0.5(vitest@3.0.5) bumpp: - specifier: ^9.10.1 - version: 9.10.1(magicast@0.3.5) + specifier: ^10.0.3 + version: 10.0.3(magicast@0.3.5) colorette: specifier: ^2.0.20 version: 2.0.20 @@ -51,14 +50,14 @@ importers: specifier: ^2.0.3 version: 2.0.3 esbuild: - specifier: ^0.24.2 - version: 0.24.2 + specifier: ^0.25.0 + version: 0.25.0 esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 eslint: - specifier: ^9.18.0 - version: 9.18.0(jiti@2.4.2) + specifier: ^9.20.1 + version: 9.20.1(jiti@2.4.2) jiti: specifier: ^2.4.2 version: 2.4.2 @@ -67,31 +66,31 @@ importers: version: 26.0.0 jsr: specifier: ^0.13.2 - version: 0.13.2 + version: 0.13.3 msw: specifier: ^2.7.0 - version: 2.7.0(@types/node@22.10.7)(typescript@5.7.3) + version: 2.7.0(@types/node@22.13.1)(typescript@5.7.3) pathe: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 tsup: - specifier: ^8.3.5 - version: 8.3.5(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + specifier: ^8.3.6 + version: 8.3.6(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) tsx: specifier: ^4.19.2 version: 4.19.2 turbo: - specifier: ^2.3.3 - version: 2.3.3 + specifier: ^2.4.2 + version: 2.4.2 typescript: specifier: ^5.7.3 version: 5.7.3 vite: - specifier: ^6.0.10 - version: 6.0.10(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + specifier: ^6.1.0 + version: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) vitest: - specifier: ^3.0.2 - version: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) + specifier: ^3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) packages/create-petal: dependencies: @@ -99,8 +98,8 @@ importers: specifier: ^0.4.1 version: 0.4.1 giget: - specifier: ^1.2.3 - version: 1.2.3 + specifier: ^1.2.4 + version: 1.2.4 devDependencies: '@flowr/utilities': specifier: workspace:^ @@ -115,7 +114,20 @@ importers: specifier: ^17.7.2 version: 17.7.2 - packages/crypto: {} + packages/crypto: + devDependencies: + '@std/crypto': + specifier: npm:@jsr/std__crypto@^1.0.3 + version: '@jsr/std__crypto@1.0.4' + '@std/encoding': + specifier: npm:@jsr/std__encoding@^1.0.3 + version: '@jsr/std__encoding@1.0.7' + scule: + specifier: ^1.3.0 + version: 1.3.0 + tweetnacl: + specifier: ^1.0.3 + version: 1.0.3 packages/eslint: dependencies: @@ -123,80 +135,80 @@ importers: specifier: ^1.0.0 version: 1.0.0 '@clack/prompts': - specifier: ^0.9.1 - version: 0.9.1 + specifier: ^0.10.0 + version: 0.10.0 '@eslint-community/eslint-plugin-eslint-comments': specifier: ^4.4.1 - version: 4.4.1(eslint@9.18.0(jiti@2.4.2)) + version: 4.4.1(eslint@9.20.1(jiti@2.4.2)) '@eslint/compat': - specifier: ^1.2.5 - version: 1.2.5(eslint@9.18.0(jiti@2.4.2)) + specifier: ^1.2.6 + version: 1.2.6(eslint@9.20.1(jiti@2.4.2)) '@eslint/markdown': specifier: ^6.2.1 - version: 6.2.1 + version: 6.2.2 '@stylistic/eslint-plugin': - specifier: ^2.13.0 - version: 2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^4.0.0-beta.1 + version: 4.0.0-beta.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/eslint-plugin': - specifier: ^8.21.0 - version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^8.24.0 + version: 8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/parser': - specifier: ^8.21.0 - version: 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^8.24.0 + version: 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) '@vitest/eslint-plugin': - specifier: ^1.1.25 - version: 1.1.25(@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.2) + specifier: ^1.1.31 + version: 1.1.31(@typescript-eslint/utils@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.5) eslint-flat-config-utils: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^2.0.1 + version: 2.0.1 eslint-import-resolver-typescript: specifier: ^3.7.0 - version: 3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + version: 3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2)) eslint-merge-processors: - specifier: ^1.0.0 - version: 1.0.0(eslint@9.18.0(jiti@2.4.2)) + specifier: ^2.0.0 + version: 2.0.0(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-command: - specifier: ^2.1.0 - version: 2.1.0(eslint@9.18.0(jiti@2.4.2)) + specifier: ^3.0.0 + version: 3.0.0(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-import-x: specifier: ^4.6.1 - version: 4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + version: 4.6.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) eslint-plugin-jsdoc: - specifier: ^50.6.2 - version: 50.6.2(eslint@9.18.0(jiti@2.4.2)) + specifier: ^50.6.3 + version: 50.6.3(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-jsonc: - specifier: ^2.18.2 - version: 2.18.2(eslint@9.18.0(jiti@2.4.2)) + specifier: ^2.19.1 + version: 2.19.1(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-n: specifier: ^17.15.1 - version: 17.15.1(eslint@9.18.0(jiti@2.4.2)) + version: 17.15.1(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-perfectionist: - specifier: ^4.7.0 - version: 4.7.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^4.8.0 + version: 4.8.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) eslint-plugin-petal: specifier: workspace:^ version: link:../eslint-plugin eslint-plugin-regexp: specifier: ^2.7.0 - version: 2.7.0(eslint@9.18.0(jiti@2.4.2)) + version: 2.7.0(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-toml: specifier: ^0.12.0 - version: 0.12.0(eslint@9.18.0(jiti@2.4.2)) + version: 0.12.0(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-unicorn: specifier: ^56.0.1 - version: 56.0.1(eslint@9.18.0(jiti@2.4.2)) + version: 56.0.1(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-yml: specifier: ^1.16.0 - version: 1.16.0(eslint@9.18.0(jiti@2.4.2)) + version: 1.16.0(eslint@9.20.1(jiti@2.4.2)) find-up-simple: specifier: ^1.0.0 version: 1.0.0 globals: - specifier: ^15.14.0 - version: 15.14.0 + specifier: ^15.15.0 + version: 15.15.0 jsonc-eslint-parser: specifier: ^2.4.0 version: 2.4.0 @@ -211,20 +223,20 @@ importers: version: 1.2.3 devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.24.0 - version: 1.24.0(eslint@9.18.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3) + specifier: ^1.26.2 + version: 1.26.2(eslint@9.20.1(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3) '@eslint/config-inspector': specifier: ^1.0.0 - version: 1.0.0(eslint@9.18.0(jiti@2.4.2)) + version: 1.0.0(eslint@9.20.1(jiti@2.4.2)) '@flowr/types': specifier: workspace:^ version: link:../types '@prettier/plugin-xml': specifier: ^3.4.1 - version: 3.4.1(prettier@3.4.2) + version: 3.4.1(prettier@3.5.0) '@tanstack/eslint-plugin-query': - specifier: ^5.64.2 - version: 5.64.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^5.66.1 + version: 5.66.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) '@types/eslint-plugin-jsx-a11y': specifier: ^6.10.0 version: 6.10.0 @@ -235,47 +247,47 @@ importers: specifier: ^2.4.9 version: 2.4.9 '@unocss/eslint-plugin': - specifier: ^65.4.2 - version: 65.4.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^65.4.3 + version: 65.4.3(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) astro-eslint-parser: - specifier: ^1.1.0 - version: 1.1.0(typescript@5.7.3) + specifier: ^1.2.1 + version: 1.2.1 eslint: - specifier: ^9.18.0 - version: 9.18.0(jiti@2.4.2) + specifier: ^9.20.1 + version: 9.20.1(jiti@2.4.2) eslint-plugin-astro: specifier: ^1.3.1 - version: 1.3.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + version: 1.3.1(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.18.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-json-schema-validator: specifier: ^5.3.1 - version: 5.3.1(eslint@9.18.0(jiti@2.4.2)) + version: 5.3.1(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.18.0(jiti@2.4.2)) + version: 6.10.2(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-react-hooks: specifier: ^5.1.0 - version: 5.1.0(eslint@9.18.0(jiti@2.4.2)) + version: 5.1.0(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-solid: specifier: ^0.14.5 - version: 0.14.5(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + version: 0.14.5(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) eslint-plugin-svelte: specifier: ^2.46.1 - version: 2.46.1(eslint@9.18.0(jiti@2.4.2))(svelte@5.19.0)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3)) + version: 2.46.1(eslint@9.20.1(jiti@2.4.2))(svelte@5.20.0)(ts-node@10.9.2(@types/node@22.13.1)(typescript@5.7.3)) eslint-plugin-vue: specifier: ^9.32.0 - version: 9.32.0(eslint@9.18.0(jiti@2.4.2)) + version: 9.32.0(eslint@9.20.1(jiti@2.4.2)) eslint-plugin-vuejs-accessibility: specifier: ^2.4.1 - version: 2.4.1(eslint@9.18.0(jiti@2.4.2)) + version: 2.4.1(eslint@9.20.1(jiti@2.4.2)) eslint-processor-vue-blocks: - specifier: ^1.0.0 - version: 1.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2)) + specifier: ^2.0.0 + version: 2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.20.1(jiti@2.4.2)) eslint-typegen: specifier: ^1.0.0 - version: 1.0.0(eslint@9.18.0(jiti@2.4.2)) + version: 1.0.0(eslint@9.20.1(jiti@2.4.2)) execa: specifier: ^9.5.2 version: 9.5.2 @@ -292,26 +304,26 @@ importers: specifier: ^0.8.0 version: 0.8.0 pathe: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 prettier-plugin-astro: specifier: ^0.14.1 version: 0.14.1 prettier-plugin-slidev: specifier: ^1.0.5 - version: 1.0.5(prettier@3.4.2) + version: 1.0.5(prettier@3.5.0) svelte: - specifier: ^5.19.0 - version: 5.19.0 + specifier: ^5.20.0 + version: 5.20.0 svelte-eslint-parser: specifier: ^0.43.0 - version: 0.43.0(svelte@5.19.0) + version: 0.43.0(svelte@5.20.0) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.7.3) vue-eslint-parser: specifier: ^9.4.3 - version: 9.4.3(eslint@9.18.0(jiti@2.4.2)) + version: 9.4.3(eslint@9.20.1(jiti@2.4.2)) packages/eslint-plugin: dependencies: @@ -320,17 +332,17 @@ importers: version: link:../utilities devDependencies: '@typescript-eslint/parser': - specifier: ^8.21.0 - version: 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^8.24.0 + version: 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/utils': - specifier: ^8.21.0 - version: 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + specifier: ^8.24.0 + version: 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) eslint: - specifier: ^9.18.0 - version: 9.18.0(jiti@2.4.2) + specifier: ^9.20.1 + version: 9.20.1(jiti@2.4.2) eslint-vitest-rule-tester: specifier: ^1.1.0 - version: 1.1.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.2) + version: 1.1.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.5) jsonc-eslint-parser: specifier: ^2.4.0 version: 2.4.0 @@ -341,6 +353,9 @@ importers: packages/loader: dependencies: + pathe: + specifier: ^2.0.3 + version: 2.0.3 tslib: specifier: ^2.8.1 version: 2.8.1 @@ -351,9 +366,6 @@ importers: '@flowr/utilities': specifier: workspace:^ version: link:../utilities - pathe: - specifier: ^2.0.2 - version: 2.0.2 packages/metadata: devDependencies: @@ -364,14 +376,14 @@ importers: specifier: workspace:^ version: link:../utilities pathe: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 packages/node: devDependencies: pathe: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 packages/result: {} @@ -387,35 +399,35 @@ importers: specifier: ^2.8.1 version: 2.8.1 undici: - specifier: ^7.2.3 - version: 7.2.3 + specifier: ^7.3.0 + version: 7.3.0 yaml: specifier: ^2.7.0 version: 2.7.0 devDependencies: '@turbo/gen': - specifier: ^2.3.3 - version: 2.3.3(@types/node@22.10.7)(typescript@5.7.3) + specifier: ^2.4.2 + version: 2.4.2(@types/node@22.13.1)(typescript@5.7.3) packages/store: devDependencies: pathe: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 packages/types: {} packages/typescript: devDependencies: '@vitest/coverage-v8': - specifier: ^3.0.2 - version: 3.0.2(vitest@3.0.2) + specifier: ^3.0.5 + version: 3.0.5(vitest@3.0.5) typescript: specifier: ^5.7.3 version: 5.7.3 vitest: - specifier: ^3.0.2 - version: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) + specifier: ^3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) packages/utilities: devDependencies: @@ -423,8 +435,8 @@ importers: specifier: workspace:^ version: link:../types pathe: - specifier: ^2.0.2 - version: 2.0.2 + specifier: ^2.0.3 + version: 2.0.3 packages: @@ -456,8 +468,8 @@ packages: '@antfu/utils@8.1.0': resolution: {integrity: sha512-XPR7Jfwp0FFl/dFYPX8ZjpmU4/1mIXTjnZ1ba48BLMyKOV62/tiRjdsFcPs2hsYcSud4tzk7w3a3LjX8Fu3huA==} - '@apidevtools/json-schema-ref-parser@11.7.3': - resolution: {integrity: sha512-WApSdLdXEBb/1FUPca2lteASewEfpjEYJ8oXZP+0gExK5qSfsEKBKcA+WjY6Q4wvXwyv0+W6Kvc372pSceib9w==} + '@apidevtools/json-schema-ref-parser@11.9.0': + resolution: {integrity: sha512-8Q/r5mXLa8Rfyh6r4SgEEFJgISVN5cDNFlcfSWLgFn3odzQhTfHAqzI3hMGdcROViL+8NrDNVVFQtEUrYOksDg==} engines: {node: '>= 16'} '@arethetypeswrong/cli@0.17.3': @@ -469,15 +481,15 @@ packages: resolution: {integrity: sha512-2TB7O5JmC7UX7QHRGGftxRVQjV4Ce6oOIDGIDDERyT9dQ8lK/tRGfFubzO80rWeXm/gSrA8jirlXSWSE1i5ynQ==} engines: {node: '>=18'} - '@asamuzakjp/css-color@2.8.2': - resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} + '@asamuzakjp/css-color@2.8.3': + resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} '@astrojs/cli-kit@0.4.1': resolution: {integrity: sha512-bVzyKzEpIwqjihBU/aUzt1LQckJuHK0agd3/ITdXhPUYculrc6K1/K7H+XG4rwjXtg+ikT3PM05V1MVYWiIvQw==} engines: {node: '>=18.14.1'} - '@astrojs/compiler@2.10.3': - resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} + '@astrojs/compiler@2.10.4': + resolution: {integrity: sha512-86B3QGagP99MvSNwuJGiYSBHnh8nLvm2Q1IFI15wIUJJsPeQTO3eb2uwBmrqRsXykeR/mBzH8XCgz5AAt1BJrQ==} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} @@ -491,26 +503,17 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.3': - resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + '@babel/parser@7.26.8': + resolution: {integrity: sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.26.5': - resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/runtime-corejs3@7.26.0': - resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.26.3': - resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + '@babel/runtime-corejs3@7.26.7': + resolution: {integrity: sha512-55gRV8vGrCIYZnaQHQrD92Lo/hYE3Sj5tmbuf0hhHR7sj2CWhEhHU89hbq+UVDXvFG1zUVXJhUkEq1eAfqXtFw==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.5': - resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} + '@babel/types@7.26.8': + resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -529,8 +532,8 @@ packages: '@clack/core@0.4.1': resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} - '@clack/prompts@0.9.1': - resolution: {integrity: sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==} + '@clack/prompts@0.10.0': + resolution: {integrity: sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -585,247 +588,541 @@ packages: resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} engines: {node: '>=18'} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.0': + resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.0': + resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.0': + resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.0': + resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.0': + resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.0': + resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.0': + resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.0': + resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.0': + resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.0': + resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.0': + resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.0': + resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.0': + resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.0': + resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.0': + resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.0': + resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.0': + resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.24.2': resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.25.0': + resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.0': + resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-arm64@0.24.2': resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.0': + resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.0': + resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.0': + resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.0': + resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.0': + resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.0': + resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.4.1': resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.24.0': - resolution: {integrity: sha512-XluE6kcOpKDJ4wxCfVrldHwwDgfCUhPrLqNqbBmuY03hCZS6ZMuJguVK8C7PTgETApf+a+KTIC+sTCCkU/ZVdg==} + '@eslint-react/ast@1.26.2': + resolution: {integrity: sha512-WuljGOJaaiehGkW0aAyuCZIGKfcv/Q1fSl4rvlfWohIDgpp5MFIkBa56drR75WUdNKrrUb3JirnVGIAhegUBIA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/core@1.24.0': - resolution: {integrity: sha512-wJv9cQUbT8Wfs4FX4Meal8npO2VApW+izQHbmnwqD7HbHsuisbb9f5G8ncZdaKyX4IxeC5vB9lQxhTftqwfb7Q==} + '@eslint-react/core@1.26.2': + resolution: {integrity: sha512-2mB5hZBL6XmOjDNL3o0h/qHQHuzxGQGYtQQHjD0Yddhde7NU/b4z/oxtrzEInc6Lk2Ry7Rhqi4S49EpwKXWJlQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/eff@1.24.0': - resolution: {integrity: sha512-Kpozsuen1NPDfbgV0JuHucnaZPefQ/m94QbgD3MMDZtzY9rjRU2BKhtn6Y+Yg6M+bkBQaOqrK6sXwYO8K7wmQQ==} + '@eslint-react/eff@1.26.2': + resolution: {integrity: sha512-7ttz+DPNZl+cHdR5PwU9/ff95VHZmo10icGVX34HyRktJuU2boinWzib5KRg6V1jVwgWuzdvULNXyBd5NVMhhg==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/eslint-plugin@1.24.0': - resolution: {integrity: sha512-3NnENQUd2Rjth2gfzCwQWNsd8DmuMdHTZcqv/8Akn9JZY4tuYbWEZc8c9hV2eW1YQAYPdLVOD6S37m2JJMq0dA==} + '@eslint-react/eslint-plugin@1.26.2': + resolution: {integrity: sha512-nTfR32jTLChc0RXKbks2Gf6seMYeqiCGj0qYq+yOmEn/XhcDWVQj86SHIJLFPwvH3LSwDUSgiQzdW9jn/rNv3A==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - '@eslint-react/jsx@1.24.0': - resolution: {integrity: sha512-KcYyU5qyp37Igvh9dGRXZV1aEozeylKpcvbiMTuZ8QSj1FGbdxkTcx5fLOOlrsGusUfB4ZLdIgxQ5a8HbDu1Mw==} + '@eslint-react/jsx@1.26.2': + resolution: {integrity: sha512-lldo9Sd/tZslBN8X7/ZAZXY7UccZZYctrNAoeR8DFMFWLxzvooykixLOl5YkRCWm4uaSmq3r3VNFZ35N2wcbyQ==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/shared@1.24.0': - resolution: {integrity: sha512-Lpo8ik1a6YUzQ1bGxJ1qlrRFmjPSmiTNT+CGlFYSNd8ZLoNt29yLLrYxu8UJTEpJ6gMVJH7PRgTex7o0GzqrVg==} + '@eslint-react/shared@1.26.2': + resolution: {integrity: sha512-q/xrNkFe8sHAPjaAuvqyCl3Ls5ly9cfUpAfhAgxYtArNAtIZHvuwu0zrwoHMYk0ZpZi+VlQYwUCtKX8axPXoTw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint-react/var@1.24.0': - resolution: {integrity: sha512-8nPYFFDtF8RFEsOGKAi4haE1tsuzf0skufzy8faXSM+vVZJPgO5cRSvdE0lKpNKpRSrHMDfHN7S7uSLn+TiVfQ==} + '@eslint-react/var@1.26.2': + resolution: {integrity: sha512-9abwhGTd4DBxOy5jVF0CnjEYDiRTXg4cbbAulZ+MVqE03KZDWNAVYYEYI5e+YTOcyJbGYY/zPEYmB+c+cUEiyw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} - '@eslint/compat@1.2.5': - resolution: {integrity: sha512-5iuG/StT+7OfvhoBHPlmxkPA9om6aDUFgmD4+mWKAGsYt4vCe8rypneG03AuseyRHBmcCLXQtIH5S26tIoggLg==} + '@eslint/compat@1.2.6': + resolution: {integrity: sha512-k7HNCqApoDHM6XzT30zGoETj+D+uUcZUb+IVAJmar3u6bvHf7hhHJcWx09QHj4/a2qrKZMWU0E16tvkiAdv06Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 peerDependenciesMeta: eslint: optional: true - '@eslint/config-array@0.19.1': - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/config-inspector@1.0.0': resolution: {integrity: sha512-fzl4OHQazPSpsT5LIoE5qQV+8m48pdLN92lPdmIZJpQpD+kZmYC5JfxRilj5vcSaVmB9klJ8s81knNyC3hG7Eg==} hasBin: true peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 '@eslint/core@0.10.0': resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + '@eslint/core@0.11.0': + resolution: {integrity: sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.18.0': - resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/markdown@6.2.1': - resolution: {integrity: sha512-cKVd110hG4ICHmWhIwZJfKmmJBvbiDWyrHODJknAtudKgZtlROGoLX9UEOA0o746zC0hCY4UV4vR+aOGW9S6JQ==} + '@eslint/js@9.20.0': + resolution: {integrity: sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.5': - resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + '@eslint/markdown@6.2.2': + resolution: {integrity: sha512-U0/KgzI9BVUuHDQ9M2fuVgB0QZ1fSyzwm8jKmHr1dlsLHGHYzoeIA9yqLMdTbV3ivZfp6rTdt6zqre3TfNExUQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.4': - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/plugin-kit@0.2.5': @@ -856,25 +1153,36 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} - '@inquirer/confirm@5.1.1': - resolution: {integrity: sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==} + '@inquirer/confirm@5.1.5': + resolution: {integrity: sha512-ZB2Cz8KeMINUvoeDi7IrvghaVkYT2RB0Zb31EaLWOE87u276w4wnApv0SH2qWaJ3r0VSUa3BIuz7qAV2ZvsZlg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - '@inquirer/core@10.1.2': - resolution: {integrity: sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==} + '@inquirer/core@10.1.6': + resolution: {integrity: sha512-Bwh/Zk6URrHwZnSSzAZAKH7YgGYi0xICIBDFOqBQoXNNAzBHw/bgXgLmChfp+GyR3PnChcTbiCTZGC6YJNJkMA==} engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true - '@inquirer/figures@1.0.9': - resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==} + '@inquirer/figures@1.0.10': + resolution: {integrity: sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==} engines: {node: '>=18'} - '@inquirer/type@3.0.2': - resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==} + '@inquirer/type@3.0.4': + resolution: {integrity: sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -908,8 +1216,14 @@ packages: '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - '@mswjs/interceptors@0.37.5': - resolution: {integrity: sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==} + '@jsr/std__crypto@1.0.4': + resolution: {integrity: sha512-qtfyxcQbfhqTEOYRel8h6vssKpT2yD4kC39mzzwN1KsH53+nbiQZfXC5lmBxcfyihH7V2EibbP/MvSsYMmv6ZA==, tarball: https://npm.jsr.io/~/11/@jsr/std__crypto/1.0.4.tgz} + + '@jsr/std__encoding@1.0.7': + resolution: {integrity: sha512-eySTZkCAHjiKGgOMvhUyTL4aT22svaCO0eO6CAbz48kRECMtRGEfe3KWXkVy4fhlZ/4OTw/RQLrTYyEqpGQp/Q==, tarball: https://npm.jsr.io/~/11/@jsr/std__encoding/1.0.7.tgz} + + '@mswjs/interceptors@0.37.6': + resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} engines: {node: '>=18'} '@nodelib/fs.scandir@2.1.5': @@ -965,193 +1279,98 @@ packages: peerDependencies: prettier: ^3.0.0 - '@rollup/rollup-android-arm-eabi@4.30.1': - resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} + '@rollup/rollup-android-arm-eabi@4.34.6': + resolution: {integrity: sha512-+GcCXtOQoWuC7hhX1P00LqjjIiS/iOouHXhMdiDSnq/1DGTox4SpUvO52Xm+div6+106r+TcvOeo/cxvyEyTgg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.31.0': - resolution: {integrity: sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.30.1': - resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} + '@rollup/rollup-android-arm64@4.34.6': + resolution: {integrity: sha512-E8+2qCIjciYUnCa1AiVF1BkRgqIGW9KzJeesQqVfyRITGQN+dFuoivO0hnro1DjT74wXLRZ7QF8MIbz+luGaJA==} cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.31.0': - resolution: {integrity: sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.30.1': - resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.31.0': - resolution: {integrity: sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==} + '@rollup/rollup-darwin-arm64@4.34.6': + resolution: {integrity: sha512-z9Ib+OzqN3DZEjX7PDQMHEhtF+t6Mi2z/ueChQPLS/qUMKY7Ybn5A2ggFoKRNRh1q1T03YTQfBTQCJZiepESAg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.30.1': - resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} + '@rollup/rollup-darwin-x64@4.34.6': + resolution: {integrity: sha512-PShKVY4u0FDAR7jskyFIYVyHEPCPnIQY8s5OcXkdU8mz3Y7eXDJPdyM/ZWjkYdR2m0izD9HHWA8sGcXn+Qrsyg==} cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.31.0': - resolution: {integrity: sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.30.1': - resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} + '@rollup/rollup-freebsd-arm64@4.34.6': + resolution: {integrity: sha512-YSwyOqlDAdKqs0iKuqvRHLN4SrD2TiswfoLfvYXseKbL47ht1grQpq46MSiQAx6rQEN8o8URtpXARCpqabqxGQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.31.0': - resolution: {integrity: sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.30.1': - resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.31.0': - resolution: {integrity: sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==} + '@rollup/rollup-freebsd-x64@4.34.6': + resolution: {integrity: sha512-HEP4CgPAY1RxXwwL5sPFv6BBM3tVeLnshF03HMhJYCNc6kvSqBgTMmsEjb72RkZBAWIqiPUyF1JpEBv5XT9wKQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.30.1': - resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': - resolution: {integrity: sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==} + '@rollup/rollup-linux-arm-gnueabihf@4.34.6': + resolution: {integrity: sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.30.1': - resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} + '@rollup/rollup-linux-arm-musleabihf@4.34.6': + resolution: {integrity: sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.31.0': - resolution: {integrity: sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.30.1': - resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.31.0': - resolution: {integrity: sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==} + '@rollup/rollup-linux-arm64-gnu@4.34.6': + resolution: {integrity: sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.30.1': - resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} + '@rollup/rollup-linux-arm64-musl@4.34.6': + resolution: {integrity: sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.31.0': - resolution: {integrity: sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.30.1': - resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.34.6': + resolution: {integrity: sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': - resolution: {integrity: sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': - resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': - resolution: {integrity: sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.34.6': + resolution: {integrity: sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.30.1': - resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} + '@rollup/rollup-linux-riscv64-gnu@4.34.6': + resolution: {integrity: sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.31.0': - resolution: {integrity: sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.30.1': - resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.31.0': - resolution: {integrity: sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==} + '@rollup/rollup-linux-s390x-gnu@4.34.6': + resolution: {integrity: sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.30.1': - resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.31.0': - resolution: {integrity: sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.30.1': - resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} + '@rollup/rollup-linux-x64-gnu@4.34.6': + resolution: {integrity: sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.31.0': - resolution: {integrity: sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==} + '@rollup/rollup-linux-x64-musl@4.34.6': + resolution: {integrity: sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.30.1': - resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} + '@rollup/rollup-win32-arm64-msvc@4.34.6': + resolution: {integrity: sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.31.0': - resolution: {integrity: sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.30.1': - resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} + '@rollup/rollup-win32-ia32-msvc@4.34.6': + resolution: {integrity: sha512-oLHxuyywc6efdKVTxvc0135zPrRdtYVjtVD5GUm55I3ODxhU/PwkQFD97z16Xzxa1Fz0AEe4W/2hzRtd+IfpOA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.31.0': - resolution: {integrity: sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.30.1': - resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.31.0': - resolution: {integrity: sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==} + '@rollup/rollup-win32-x64-msvc@4.34.6': + resolution: {integrity: sha512-0PVwmgzZ8+TZ9oGBmdZoQVXflbvuwzN/HRclujpl4N/q3i+y0lqLw8n1bXA8ru3sApDjlmONaNAuYr38y1Kr9w==} cpu: [x64] os: [win32] @@ -1174,16 +1393,16 @@ packages: resolution: {integrity: sha512-X67V4cCgM0Sz50bP8GbVzmiL8DHC2IXvdKcsN7DlxHyf+/T4d9GveeGukwha5Fx3MuYeGZWKag7TFL2ZY4w54A==} engines: {node: '>=18.0.0'} - '@stylistic/eslint-plugin@2.13.0': - resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==} + '@stylistic/eslint-plugin@4.0.0-beta.1': + resolution: {integrity: sha512-QjXLdE0K6NWxCj3G6588UCxWRbZ7wW/shInTC0iruog4qfvlhWhW67+6GZvBHs3qK53ucoI03fyM8I+hg2i7Dg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - '@tanstack/eslint-plugin-query@5.64.2': - resolution: {integrity: sha512-Xq7jRYvNtGMHjQEGUZLHgEMNB59hgTlqdmKor6cdJ6CMZ/nwmBGpnlr/dcHden7W7BPCdBVN4PWMZBICWvCNQQ==} + '@tanstack/eslint-plugin-query@5.66.1': + resolution: {integrity: sha512-pYMVTGgJ7yPk9Rm6UWEmbY6TX0EmMmxJqYkthgeDCwEznToy2m+W928nUODFirtZBZlhBsqHy33LO0kyTlgf0w==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} @@ -1200,12 +1419,12 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@turbo/gen@2.3.3': - resolution: {integrity: sha512-MIXXX0sVRvfTWOrLhjDT1KJ15dqzRlNlHIvNeWoS5ZtTMQ9XuBl9D5ek/5vMj77n+84mFRS/VKAoEuScOIWwaw==} + '@turbo/gen@2.4.2': + resolution: {integrity: sha512-iAndpPDVI5GxAd6a2c3WtVhjGeVDBGYml6DV+fLDTrElHc4MtvMa2EeU19mR0RzCscCZbATeAGzDxdnHtuxlJA==} hasBin: true - '@turbo/workspaces@2.3.3': - resolution: {integrity: sha512-PSys7Hy5NuX76HBleOkd8wlRtI4GCzLHS2XUpKeGIj0vpzH4fqE+tpi7fBb5t9U7UiyM6E6pyabSKjoD2zUsoQ==} + '@turbo/workspaces@2.4.2': + resolution: {integrity: sha512-HdXoW7LxCL+cvoEx8SBdg98o7DupN48hEvoEeUJ08R0ud8cLHCO8/2heyG/X/Y60pY9uxhpwjsmn9l5Dx75uMA==} hasBin: true '@types/cookie@0.6.0': @@ -1250,14 +1469,11 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.10.5': - resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} - - '@types/node@22.10.7': - resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} + '@types/node@22.13.1': + resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1280,100 +1496,82 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.21.0': - resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} + '@typescript-eslint/eslint-plugin@8.24.0': + resolution: {integrity: sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.21.0': - resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} + '@typescript-eslint/parser@8.24.0': + resolution: {integrity: sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.19.1': - resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + '@typescript-eslint/scope-manager@8.24.0': + resolution: {integrity: sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.21.0': - resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.21.0': - resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} + '@typescript-eslint/type-utils@8.24.0': + resolution: {integrity: sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.19.1': - resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.21.0': - resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} + '@typescript-eslint/types@8.24.0': + resolution: {integrity: sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.1': - resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + '@typescript-eslint/typescript-estree@8.24.0': + resolution: {integrity: sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/typescript-estree@8.21.0': - resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} + '@typescript-eslint/utils@8.24.0': + resolution: {integrity: sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + eslint: ^9.20.1 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.21.0': - resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.18.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/visitor-keys@8.19.1': - resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + '@typescript-eslint/visitor-keys@8.24.0': + resolution: {integrity: sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.21.0': - resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@unocss/config@65.4.2': - resolution: {integrity: sha512-2xyWDt6t879rsdxJ0TiRbk9ENkGuLjAWjl3aAph5HHxwgGaBN1c9S5G9607j/WXP+tO6c37B4Q1iG/XYx35HBA==} + '@unocss/config@65.4.3': + resolution: {integrity: sha512-Z3tnQ10UjM09Y1yVqfCYfZEh2pXFQlUQ1g188mMWxjXWEIXeei3f9dIApRBgC+xcPE6prqdu3fDC5emU+sqyxw==} engines: {node: '>=14'} - '@unocss/core@65.4.2': - resolution: {integrity: sha512-VmXy5D25por+pt9LBlKZ3gk4rOE5ldm80MyVOEnLcpaFb9LqB0g/8qUU9/Dk3TSA+ZPeoGm53Juo0p8LMFIigA==} + '@unocss/core@65.4.3': + resolution: {integrity: sha512-luFgdcchSlNrYSaDvU2176T2PPQZdxqfREVbxEXNXlFEgyEFrx5hOSUXoJtJSZjRhAcE6zkWyLDf/JkQJ5Eeyw==} - '@unocss/eslint-plugin@65.4.2': - resolution: {integrity: sha512-Ibk5zLnEvg22S7c7JLusuW8MbWTmw3BwcdP0j/EaGE3sk5Q1mazb8UqO0CymPCaQp/d2Sx1dv1SEEECLkZSUzQ==} + '@unocss/eslint-plugin@65.4.3': + resolution: {integrity: sha512-uK6WpZPy/zJxunw4lh51KjIO370SRAIFlvg/Knh4Kl5214xiJDezKp7F7NATVBx+JqSf7iHYn2qUdB8Z8I7sXg==} engines: {node: '>=14'} - '@unocss/rule-utils@65.4.2': - resolution: {integrity: sha512-OdMSJZiZUr8XmLo3Bz3Wrw1nZLT1nTPnPOV8gdi4vZ+2RgCChua9o8Dz4IyeQ7mMhLXoqHIUpJ7jE5Nv+Uz1Fw==} + '@unocss/rule-utils@65.4.3': + resolution: {integrity: sha512-bzRRdb9mb82IvgOt3KiRyUh/njRfJC3hoV84lMyUPryT8YTEP/hl6kt2KQ2l1K3WDz7ZPQXVi2eqUbqc+AUpwg==} engines: {node: '>=14'} - '@vitest/coverage-v8@3.0.2': - resolution: {integrity: sha512-U+hZYb0FtgNDb6B3E9piAHzXXIuxuBw2cd6Lvepc9sYYY4KjgiwCBmo3Sird9ZRu3ggLpLBTfw1ZRr77ipiSfw==} + '@vitest/coverage-v8@3.0.5': + resolution: {integrity: sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==} peerDependencies: - '@vitest/browser': 3.0.2 - vitest: 3.0.2 + '@vitest/browser': 3.0.5 + vitest: 3.0.5 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.1.25': - resolution: {integrity: sha512-u8DpDnMbPcqBmJOB4PeEtn6q7vKmLVTLFMpzoxSAo0hjYdl4iYSHRleqwPQo0ywc7UV0S6RKIahYRQ3BnZdMVw==} + '@vitest/eslint-plugin@1.1.31': + resolution: {integrity: sha512-xlsLr+e+AXZ/00eVZCtNmMeCJoJaRCoLDiAgLcxgQjSS1EertieB2MUHf8xIqPKs9lECc/UpL+y1xDcpvi02hw==} peerDependencies: - '@typescript-eslint/utils': ^8.21.0 - eslint: ^9.18.0 + '@typescript-eslint/utils': ^8.24.0 + eslint: ^9.20.1 typescript: '>= 5.0.0' vitest: '*' peerDependenciesMeta: @@ -1382,11 +1580,11 @@ packages: vitest: optional: true - '@vitest/expect@3.0.2': - resolution: {integrity: sha512-dKSHLBcoZI+3pmP5hiZ7I5grNru2HRtEW8Z5Zp4IXog8QYcxhlox7JUPyIIFWfN53+3HW3KPLIl6nSzUGgKSuQ==} + '@vitest/expect@3.0.5': + resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} - '@vitest/mocker@3.0.2': - resolution: {integrity: sha512-Hr09FoBf0jlwwSyzIF4Xw31OntpO3XtZjkccpcBf8FeVW3tpiyKlkeUzxS/txzHqpUCNIX157NaTySxedyZLvA==} + '@vitest/mocker@3.0.5': + resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -1396,25 +1594,25 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.2': - resolution: {integrity: sha512-yBohcBw/T/p0/JRgYD+IYcjCmuHzjC3WLAKsVE4/LwiubzZkE8N49/xIQ/KGQwDRA8PaviF8IRO8JMWMngdVVQ==} + '@vitest/pretty-format@3.0.5': + resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} - '@vitest/runner@3.0.2': - resolution: {integrity: sha512-GHEsWoncrGxWuW8s405fVoDfSLk6RF2LCXp6XhevbtDjdDme1WV/eNmUueDfpY1IX3MJaCRelVCEXsT9cArfEg==} + '@vitest/runner@3.0.5': + resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} - '@vitest/snapshot@3.0.2': - resolution: {integrity: sha512-h9s67yD4+g+JoYG0zPCo/cLTabpDqzqNdzMawmNPzDStTiwxwkyYM1v5lWE8gmGv3SVJ2DcxA2NpQJZJv9ym3g==} + '@vitest/snapshot@3.0.5': + resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} - '@vitest/spy@3.0.2': - resolution: {integrity: sha512-8mI2iUn+PJFMT44e3ISA1R+K6ALVs47W6eriDTfXe6lFqlflID05MB4+rIFhmDSLBj8iBsZkzBYlgSkinxLzSQ==} + '@vitest/spy@3.0.5': + resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} - '@vitest/ui@3.0.2': - resolution: {integrity: sha512-R0E4nG0OAafsCKwKnENLdjpMbxAyDqT/hdbJp71eeAR1wE+C7IFv1G158sRj5gUfJ7pM7IxtcwIqa34beYzLhg==} + '@vitest/ui@3.0.5': + resolution: {integrity: sha512-gw2noso6WI+2PeMVCZFntdATS6xl9qhQcbhkPQ9sOmx/Xn0f4Bx4KDSbD90jpJPF0l5wOzSoGCmKyVR3W612mg==} peerDependencies: - vitest: 3.0.2 + vitest: 3.0.5 - '@vitest/utils@3.0.2': - resolution: {integrity: sha512-Qu01ZYZlgHvDP02JnMBRpX43nRaZtNpIzw3C1clDXmn8eakgX6iQVGzTQ/NjkIr64WD8ioqOjkaYRVvHQI5qiw==} + '@vitest/utils@3.0.5': + resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} @@ -1526,6 +1724,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + args-tokenizer@0.3.0: + resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -1565,8 +1766,8 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - astro-eslint-parser@1.1.0: - resolution: {integrity: sha512-F6NW1RJo5pp2kPnnM97M5Ohw8zAGjv83MpxHqfAochH68n/kiXN57+hYaNUCA7XkScoVNr6yzvly3hsY34TGfQ==} + astro-eslint-parser@1.2.1: + resolution: {integrity: sha512-3oqANMjrvJ+IE5pwlUWsH/4UztmYf/GTL0HPUkWnYBNAHiGVGrOh2EbegxS5niAwlO0w9dRYk0CkCPlJcu8c3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} astrojs-compiler-sync@1.0.1: @@ -1575,6 +1776,10 @@ packages: peerDependencies: '@astrojs/compiler': '>=0.27.0' + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1631,9 +1836,9 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bumpp@9.10.1: - resolution: {integrity: sha512-KG7oQmv6cz7QQwOvM3x/yPcF8+VBEtuLEEecmohNyb4+bLbtSVpJp8brjzcZYQN7UOyR4i0qIIYThnsBgP8uCA==} - engines: {node: '>=10'} + bumpp@10.0.3: + resolution: {integrity: sha512-5ONBZenNf9yfTIl2vFvDEfeeioidt0fG10SzjHQw50BRxOmXzsdY+lab1+SDMfiW6UyJ1xQqzFymcy5wa8YhTA==} + engines: {node: '>=18'} hasBin: true bundle-name@4.1.0: @@ -1644,10 +1849,10 @@ packages: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: ^0.24.2 + esbuild: '>=0.18' - c12@2.0.1: - resolution: {integrity: sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==} + c12@2.0.2: + resolution: {integrity: sha512-NkvlL5CHZt9kPswJYDCUYtTaMt7JOfcpsnNncfj7sWsc13x6Wz+GiTpBtqZOojFlzyTHui8+OAfR6praV6PYaQ==} peerDependencies: magicast: ^0.3.5 peerDependenciesMeta: @@ -1677,8 +1882,8 @@ packages: camel-case@3.0.0: resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - caniuse-lite@1.0.30001692: - resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} + caniuse-lite@1.0.30001699: + resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1738,8 +1943,8 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} @@ -1838,10 +2043,6 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - consola@3.3.3: - resolution: {integrity: sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==} - engines: {node: ^14.18.0 || >=16.10.0} - consola@3.4.0: resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -1869,8 +2070,8 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.3.1: - resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} + crossws@0.3.4: + resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -1924,8 +2125,8 @@ packages: supports-color: optional: true - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -2015,8 +2216,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.80: - resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} + electron-to-chromium@1.5.97: + resolution: {integrity: sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -2030,14 +2231,18 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -2060,8 +2265,8 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: @@ -2079,11 +2284,21 @@ packages: resolution: {integrity: sha512-lNjylaAsJMprYg28zjUyBivP3y0ms9b7RJZ5tdhDUFLa3sCbqZw4wDnbFUSmnyZYWhCYDPxxp7KkXM2TXGw3PQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} hasBin: true + esbuild@0.25.0: + resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2109,21 +2324,21 @@ packages: resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-compat-utils@0.6.4: resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} engines: {node: '>=12'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-flat-config-utils@1.0.0: - resolution: {integrity: sha512-tmzcXeCsa24/u3glyw1Mo7KfC/r9a5Vsu1nPCkX7uefD7C5Z4x922Q2KP/drhTLbOI5lcFHYpfXjKhqqnUWObw==} + eslint-flat-config-utils@2.0.1: + resolution: {integrity: sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==} eslint-formatting-reporter@0.0.0: resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -2132,7 +2347,7 @@ packages: resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-import: '*' eslint-plugin-import-x: '*' peerDependenciesMeta: @@ -2146,16 +2361,16 @@ packages: engines: {node: '>=12'} peerDependencies: '@eslint/json': '*' - eslint: ^9.18.0 + eslint: ^9.20.1 jsonc-eslint-parser: ^2.4.0 peerDependenciesMeta: '@eslint/json': optional: true - eslint-merge-processors@1.0.0: - resolution: {integrity: sha512-4GybyHmhXtT7/W8RAouQzNM0791sYasJCTYHIAYjuiJvbNFY0jMKkoESREhX+mjX37dxiN6v4EqhZ1nc0tJF7A==} + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-parser-plain@0.1.1: resolution: {integrity: sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==} @@ -2164,91 +2379,91 @@ packages: resolution: {integrity: sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-plugin-command@2.1.0: - resolution: {integrity: sha512-S3gvDSCRHLdRG7NYaevLvGA0g/txOju7NEB2di7SE80NtbCwsvpi/fft045YuTZpOzqCRUfuye39raldmpXXYQ==} + eslint-plugin-command@3.0.0: + resolution: {integrity: sha512-6EFOKGnBMHr0dN/9uKYmxYz6RbsCmEzPRcKYrl+dfEMvlt6+zf6x5TzXKzOowhh3f/hqSBMZmxcB3HHyfbpwWw==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-format@1.0.1: resolution: {integrity: sha512-Tdns+CDjS+m7QrM85wwRi2yLae88XiWVdIOXjp9mDII0pmTBQlczPCmjpKnjiUIY3yPZNLqb5Ms/A/JXcBF2Dw==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-import-x@4.6.1: resolution: {integrity: sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-plugin-jsdoc@50.6.2: - resolution: {integrity: sha512-n7GNZ4czMAAbDg7DsDA7PvHo1IPIUwAXYmxTx6j/hTlXbt5V0x5q/kGkiJ7s4wA9SpB/yaiK8jF7CO237lOLew==} + eslint-plugin-jsdoc@50.6.3: + resolution: {integrity: sha512-NxbJyt1M5zffPcYZ8Nb53/8nnbIScmiLAMdoe0/FAszwb7lcSiX3iYBTsuF7RV84dZZJC8r3NghomrUXsmWvxQ==} engines: {node: '>=18'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-json-schema-validator@5.3.1: resolution: {integrity: sha512-S5HpOPrpAMXd81TYJbm5iOgy3YirQ+NtHVaii6rmw/iiv5xSu5kPhxiuovoYpL9HSJsyKXJRK597yCy3BLKN8g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-plugin-jsonc@2.18.2: - resolution: {integrity: sha512-SDhJiSsWt3nItl/UuIv+ti4g3m4gpGkmnUJS9UWR3TrpyNsIcnJoBRD7Kof6cM4Rk3L0wrmY5Tm3z7ZPjR2uGg==} + eslint-plugin-jsonc@2.19.1: + resolution: {integrity: sha512-MmlAOaZK1+Lg7YoCZPGRjb88ZjT+ct/KTsvcsbZdBm+w8WMzGx+XEmexk0m40P1WV9G2rFV7X3klyRGRpFXEjA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-jsx-a11y@6.10.2: resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-n@17.15.1: resolution: {integrity: sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-plugin-perfectionist@4.7.0: - resolution: {integrity: sha512-e2ODzm2SsAztFWY3ZRJd1K702vyl8Sapacjc3JluOW294CfA3+jfjin+UxjcrK48EvlNIMOp+JJB9N54YR2LRw==} + eslint-plugin-perfectionist@4.8.0: + resolution: {integrity: sha512-ZF04IAPGItYMlj9xjgvvl/QpksZf79g0dkxbNcuxDjbcUSZ4CwucJ7h5Yzt5JuHe+i6igQbUYEp40j4ndfbvWQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-plugin-react-debug@1.24.0: - resolution: {integrity: sha512-tWE+OLzJBTzLPiqFrBiP+xXKHVBmB7MAEMvPgsHH/bIP8h/bynam29SONYzVH5Z3do66BudqmmmR8aKkYWjhuw==} + eslint-plugin-react-debug@1.26.2: + resolution: {integrity: sha512-UKCXj090YGXYmVLfZ8yZh09RLPlMfhJFYRXGUL4i/IHal22PO7kNTwNSHw105THVJXTiKPxuj/dDbII3H2C+7w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-dom@1.24.0: - resolution: {integrity: sha512-k1ukArWz2eapG2PVAaU0z0EDD8Ri8+w6UdxKfF087wcF+1WYl1I/0obZ7tanjFZTqgamQgLoqYbZDGcgFekPxQ==} + eslint-plugin-react-dom@1.26.2: + resolution: {integrity: sha512-W4PLB5+zRt+Ceewtwf2tobEPBF+Pvl5ycElRPeKT9VOpn6IAqk0i5JqCVu7mPvPruLFbUDlGaHK769aZhqLyjA==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-hooks-extra@1.24.0: - resolution: {integrity: sha512-E39eHeehtJgx7j07B/DW7j2gRHtzQG0m8rdGP+s3SVs5XSlCLy86oEMfAQ0DVJdtPkvEf+mOcyHw23LGKbeH0Q==} + eslint-plugin-react-hooks-extra@1.26.2: + resolution: {integrity: sha512-Xh1Pp6lvYDI8aOFDvtd1E6WzBE3QVk2cV48pmKQOWzzL25Tod/7kk4pOXoML1t1rqRQW8xcoL7UmrlR8IMQh+w==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: @@ -2258,34 +2473,34 @@ packages: resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} engines: {node: '>=10'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-plugin-react-naming-convention@1.24.0: - resolution: {integrity: sha512-fCDnw3BdtP7m4KeCs0cAIX7kd1wJSU7HCRhan+LxkDXXcxRjycRNe4tISXCq3Y+GeEVFMcteh9wfCl7meKHVDw==} + eslint-plugin-react-naming-convention@1.26.2: + resolution: {integrity: sha512-eiudTnDwwVpOY6K2g2fsoklG3x4X7N0X4+wFM2AE0+qSy4TCCFic+H+NRi3T53nL0pbvNawHkjS8sRSRRzOG3A==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-web-api@1.24.0: - resolution: {integrity: sha512-gvF3CGk38aYCkb8JwLiHSDwdFm8bPyqZmdMPjWhFAtohOLXMMwFTiNFXi2Yt4zJQwSnLTeBkuSQM/UEIPhnKng==} + eslint-plugin-react-web-api@1.26.2: + resolution: {integrity: sha512-xu0QWvptg9zDaf/hfiJ02hTOd/soF10ww3h9wnJZ7ohbMclIA89ZRET6lXXXJNie3HrOLsB+HmOg/h/Rc7zL+A==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: typescript: optional: true - eslint-plugin-react-x@1.24.0: - resolution: {integrity: sha512-MiTJCsZ6zWX4H9mSHF3xd65w7cT4t6fCNvqrwnAyTzW1x4QCa0ozv4sTILw7l/xKkF6FjZAkR8+58MpnKkbWcA==} + eslint-plugin-react-x@1.26.2: + resolution: {integrity: sha512-4wEHGPdCY8yNl0AYcZWDdQ6QyX7lRmjoaM7CSw3v9ZEHLh2u8ttKl2JJpx5mRKFWP0JxQ8YvbgLW8MovDAIWmw==} engines: {bun: '>=1.0.15', node: '>=18.18.0'} peerDependencies: - eslint: ^9.18.0 - ts-api-utils: ^2.0.0 + eslint: ^9.20.1 + ts-api-utils: ^2.0.1 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: ts-api-utils: @@ -2297,20 +2512,20 @@ packages: resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} engines: {node: ^18 || >=20} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-solid@0.14.5: resolution: {integrity: sha512-nfuYK09ah5aJG/oEN6P1qziy1zLgW4PDWe75VNPi4CEFYk1x2AEqwFeQfEPR7gNn0F2jOeqKhx2E+5oNCOBYWQ==} engines: {node: '>=18.0.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: '>=4.8.4' eslint-plugin-svelte@2.46.1: resolution: {integrity: sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: svelte: @@ -2320,19 +2535,19 @@ packages: resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-unicorn@56.0.1: resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} engines: {node: '>=18.18'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-unused-imports@4.1.4: resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} peerDependencies: '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.18.0 + eslint: ^9.20.1 peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true @@ -2341,25 +2556,25 @@ packages: resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-vuejs-accessibility@2.4.1: resolution: {integrity: sha512-ZRZhPdslplZXSF71MtSG+zXYRAT5KiHR4JVuo/DERQf9noAkDvi5W418VOE1qllmJd7wTenndxi1q8XeDMxdHw==} engines: {node: '>=16.0.0'} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-plugin-yml@1.16.0: resolution: {integrity: sha512-t4MNCetPjTn18/fUDlQ/wKkcYjnuLYKChBrZ0qUaNqRigVqChHWzTP8SrfFi5s4keX3vdlkWRSu8zHJMdKwxWQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 - eslint-processor-vue-blocks@1.0.0: - resolution: {integrity: sha512-q+Wn9bCml65NwYtuINVCE5dUqZa/uVoY4jfc8qEDwWbcGqdRyfJJmAONNZsreA4Q9EJqjYGjk8Hk1QuwAktgkw==} + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} peerDependencies: '@vue/compiler-sfc': ^3.3.0 - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -2372,7 +2587,7 @@ packages: eslint-typegen@1.0.0: resolution: {integrity: sha512-1Dku9Ljb/lBjpuI2tT5VZPTivPirs+fjrAnoXSy97BDMIs6fcz8nOqajv/zzPrSxtiRINxz/DymGLn4X+Oiksg==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -2385,11 +2600,11 @@ packages: eslint-vitest-rule-tester@1.1.0: resolution: {integrity: sha512-rilURDIBbHZKUDXdnlDnewJ3A5NdiK9HpYgdaeKY7rPpn+nI1KfvB/DyYMc0R8KgL9ziu5lbXVmWukgX0JPbAQ==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 vitest: ^1.0.0 || ^2.0.0 || ^3.0.0 - eslint@9.18.0: - resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} + eslint@9.20.1: + resolution: {integrity: sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2418,8 +2633,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@1.4.3: - resolution: {integrity: sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==} + esrap@1.4.4: + resolution: {integrity: sha512-tDN6xP/r/b3WmdpWm7LybrD252hY52IokcycPnO+WHfhFF0+n5AWtcLLK7VNV6m0uYgVRhGVs8OkZwRyfC7HzQ==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -2443,10 +2658,6 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - execa@9.5.2: resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} engines: {node: ^18.19.0 || >=20.5.0} @@ -2475,14 +2686,14 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.5: - resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2531,8 +2742,9 @@ packages: flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.4: + resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} + engines: {node: '>= 0.4'} foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} @@ -2591,10 +2803,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -2603,15 +2811,15 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} get-uri@6.0.4: resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} + giget@1.2.4: + resolution: {integrity: sha512-Wv+daGyispVoA31TrWAVR+aAdP7roubTPEM/8JzRnqXhLbdJH0T9eQyXVFF8fjk3WKTsctII6QcyxILYgNp2DA==} hasBin: true glob-parent@5.1.2: @@ -2638,8 +2846,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.14.0: - resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} globalthis@1.0.4: @@ -2650,10 +2858,6 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -2672,8 +2876,8 @@ packages: resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - h3@1.13.1: - resolution: {integrity: sha512-u/z6Z4YY+ANZ05cRRfsFJadTBrNA6e3jxdU+AN5UCbZSZEUwgHiwjvUEe0k1NoQmAvQmETwr+xB5jd7mhCJuIQ==} + h3@1.15.0: + resolution: {integrity: sha512-OsjX4JW8J4XGgCgEcad20pepFQWnuKH+OwkCJjogF3C+9AZ1iYdtB4hX6vAb5DskBiu5ljEXqApINjR8CqoCMQ==} handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} @@ -2746,10 +2950,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - human-signals@8.0.0: resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} engines: {node: '>=18.18.0'} @@ -2769,8 +2969,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} importx@0.5.1: @@ -2823,16 +3023,16 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.1.0: - resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} - is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-builtin-module@3.2.1: @@ -2894,7 +3094,7 @@ packages: is-immutable-type@5.0.1: resolution: {integrity: sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 typescript: '>=4.7.4' is-inside-container@1.0.0: @@ -2958,10 +3158,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -2993,8 +3189,8 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} is-weakset@2.0.4: @@ -3105,8 +3301,8 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsr@0.13.2: - resolution: {integrity: sha512-c4ir0ql2Xgpg9mSOSPKBANS9oTvlV8fSzpesCsHP04VAOJ3pBm7YygY2LVkHC0jz9G36JBGh1oiEZTWO4UyctA==} + jsr@0.13.3: + resolution: {integrity: sha512-iPt9r1lMK8BIdGwLP9/PslqkP8HoU3tn3c26qrQlavC6sgqy7lbJk0wLHbrbKZCD5a7RIomvTivvJTFQrvkIPQ==} hasBin: true jsx-ast-utils@3.3.5: @@ -3179,6 +3375,7 @@ packages: lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -3204,8 +3401,8 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loupe@3.1.2: - resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} lower-case-first@1.0.2: resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} @@ -3216,10 +3413,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} @@ -3243,11 +3436,11 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - marked-terminal@7.2.1: - resolution: {integrity: sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==} + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} engines: {node: '>=16.0.0'} peerDependencies: - marked: '>=1 <15' + marked: '>=1 <16' marked@9.1.6: resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} @@ -3267,8 +3460,8 @@ packages: mdast-util-gfm-autolink-literal@2.0.1: resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} mdast-util-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} @@ -3279,8 +3472,8 @@ packages: mdast-util-gfm-task-list-item@2.0.0: resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} @@ -3310,8 +3503,8 @@ packages: micromark-extension-gfm-strikethrough@2.1.0: resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} @@ -3370,8 +3563,8 @@ packages: micromark-util-sanitize-uri@2.0.1: resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - micromark-util-subtokenize@2.0.3: - resolution: {integrity: sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==} + micromark-util-subtokenize@2.0.4: + resolution: {integrity: sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==} micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} @@ -3394,19 +3587,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -3454,9 +3638,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.3: - resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} - mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -3513,8 +3694,11 @@ packages: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + + node-mock-http@1.0.0: + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} node-plop@0.26.3: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} @@ -3534,10 +3718,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} @@ -3548,8 +3728,8 @@ packages: nwsapi@2.2.16: resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} - nypm@0.3.12: - resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} + nypm@0.5.2: + resolution: {integrity: sha512-AHzvnyUJYSrrphPhRWWZNcoZfArGNp3Vrc4pm/ZurO74tYNTgAPrEyBQEKy+qioqmWlPXwvMZCG2wOaHlPG0Pw==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true @@ -3557,8 +3737,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-keys@1.1.1: @@ -3587,10 +3767,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - open@10.1.0: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} @@ -3661,8 +3837,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.8: - resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + package-manager-detector@0.2.9: + resolution: {integrity: sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==} param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} @@ -3741,6 +3917,9 @@ packages: pathe@2.0.2: resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -3766,9 +3945,6 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-types@1.3.0: - resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==} - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -3776,8 +3952,8 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss-load-config@3.1.4: @@ -3826,16 +4002,12 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.0.0: - resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.5.1: - resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + postcss@8.5.2: + resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -3855,8 +4027,8 @@ packages: peerDependencies: prettier: ^3.2.4 - prettier@3.4.2: - resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} + prettier@3.5.0: + resolution: {integrity: sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==} engines: {node: '>=14'} hasBin: true @@ -3910,9 +4082,9 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} refa@0.12.1: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} @@ -3995,13 +4167,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.30.1: - resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.31.0: - resolution: {integrity: sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==} + rollup@4.34.6: + resolution: {integrity: sha512-wc2cBWqJgkU3Iz5oztRkQbfVkbxoz5EhnCGOrnJvnLnQ7O0WhQUYyv18qQI79O8L7DdHrrlJNeCHd4VGpnaXKQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4058,6 +4225,9 @@ packages: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + semiver@1.1.0: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} engines: {node: '>=6'} @@ -4071,8 +4241,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -4158,8 +4328,8 @@ packages: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + socks@2.8.4: + resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} source-map-js@1.2.1: @@ -4186,9 +4356,6 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} @@ -4211,8 +4378,8 @@ packages: strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} - string-ts@2.2.0: - resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} + string-ts@2.2.1: + resolution: {integrity: sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4253,10 +4420,6 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} @@ -4296,8 +4459,8 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-hyperlinks@3.1.0: - resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: @@ -4313,8 +4476,8 @@ packages: svelte: optional: true - svelte@5.19.0: - resolution: {integrity: sha512-qvd2GvvYnJxS/MteQKFSMyq8cQrAAut28QZ39ySv9k3ggmhw4Au4Rfcsqva74i0xMys//OhbhVCNfXPrDzL/Bg==} + svelte@5.20.0: + resolution: {integrity: sha512-04HJfFLaTwTyEKdPm3vYGdaD/8ZAHcd9SEBufq0FZNIrdzJWdM1usVdm4KIlzzDfM5+aMzio6BBhpXPoPGuMjg==} engines: {node: '>=18'} swap-case@1.1.2: @@ -4384,11 +4547,11 @@ packages: title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - tldts-core@6.1.71: - resolution: {integrity: sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==} + tldts-core@6.1.77: + resolution: {integrity: sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg==} - tldts@6.1.71: - resolution: {integrity: sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==} + tldts@6.1.77: + resolution: {integrity: sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g==} hasBin: true tmp@0.0.33: @@ -4411,8 +4574,8 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tough-cookie@5.1.0: - resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} + tough-cookie@5.1.1: + resolution: {integrity: sha512-Ek7HndSVkp10hmHP9V4qZO1u+pn1RU5sI0Fw+jCU3lyvuMZcgqsNgc6CmJJZyByK4Vm/qotGRJlfgAX8q+4JiA==} engines: {node: '>=16'} tr46@1.0.1: @@ -4426,8 +4589,8 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -4454,8 +4617,8 @@ packages: '@swc/wasm': optional: true - ts-pattern@5.6.1: - resolution: {integrity: sha512-k126YkAs7sZFGTIr6rEdEbxOkqj4cEKAfhwpJMQcwt2M1SuwSD4PM2ClfeUuIlLwEMtVotiZhOsqXNNWqAMWKA==} + ts-pattern@5.6.2: + resolution: {integrity: sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==} tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -4463,8 +4626,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsup@8.3.5: - resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} + tsup@8.3.6: + resolution: {integrity: sha512-XkVtlDV/58S9Ye0JxUUTcrQk4S+EqlOHKzg6Roa62rdjL1nGWNUstG0xgI4vanHdfIpjP448J8vlN0oK6XOJ5g==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -4494,40 +4657,43 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.3.3: - resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} + turbo-darwin-64@2.4.2: + resolution: {integrity: sha512-HFfemyWB60CJtEvVQj9yby5rkkWw9fLAdLtAPGtPQoU3tKh8t/uzCAZKso2aPVbib9vGUuGbPGoGpaRXdVhj5g==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.3.3: - resolution: {integrity: sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==} + turbo-darwin-arm64@2.4.2: + resolution: {integrity: sha512-uwSx1dsBSSFeEC0nxyx2O219FEsS/haiESaWwE9JI8mHkQK61s6w6fN2G586krKxyNam4AIxRltleL+O2Em94g==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.3.3: - resolution: {integrity: sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==} + turbo-linux-64@2.4.2: + resolution: {integrity: sha512-Fy/uL8z/LAYcPbm7a1LwFnTY9pIi5FAi12iuHsgB7zHjdh4eeIKS2NIg4nroAmTcUTUZ0/cVTo4bDOCUcS3aKw==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.3.3: - resolution: {integrity: sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==} + turbo-linux-arm64@2.4.2: + resolution: {integrity: sha512-AEA0d8h5W/K6iiXfEgiNwWt0yqRL1NpBs8zQCLdc4/L7WeYeJW3sORWX8zt7xhutF/KW9gTm8ehKpiK6cCIsAA==} cpu: [arm64] os: [linux] - turbo-windows-64@2.3.3: - resolution: {integrity: sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==} + turbo-windows-64@2.4.2: + resolution: {integrity: sha512-CybtIZ9wRgnnNFVN9En9G+rxsO+mwU81fvW4RpE8BWyNEkhQ8J28qYf4PaimueMxGHHp/28i/G7Kcdn2GAWG0g==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.3.3: - resolution: {integrity: sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==} + turbo-windows-arm64@2.4.2: + resolution: {integrity: sha512-7V0yneVPL8Y3TgrkUIjw7Odmwu1tHnyIiPHFM7eFcA7U+H6hPXyCxge7nC3wOKfjhKCQqUm+Vf/k6kjmLz5G4g==} cpu: [arm64] os: [win32] - turbo@2.3.3: - resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} + turbo@2.4.2: + resolution: {integrity: sha512-Qxi0ioQCxMRUCcHKHZkTnYH8e7XCpNfg9QiJcyfWIc+ZXeaCjzV5rCGlbQlTXMAtI8qgfP8fZADv3CFtPwqdPQ==} hasBin: true + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -4552,8 +4718,8 @@ packages: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} - type-fest@4.32.0: - resolution: {integrity: sha512-rfgpoi08xagF3JSdtJlCwMq9DGNDE0IMh3Mkpc1wUypg9vPi786AiqeBBKcqvIkq42azsBM85N490fyZjeUftw==} + type-fest@4.34.1: + resolution: {integrity: sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==} engines: {node: '>=16'} type-level-regexp@0.1.17: @@ -4610,13 +4776,10 @@ packages: resolution: {integrity: sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==} engines: {node: '>=14.0'} - undici@7.2.3: - resolution: {integrity: sha512-2oSLHaDalSt2/O/wHA9M+/ZPAOcU2yrSP/cdBYJ+YxZskiPYDSqHbysLSlD7gq3JMqOoJI5O31RVU3BxX/MnAA==} + undici@7.3.0: + resolution: {integrity: sha512-Qy96NND4Dou5jKoSJ2gm8ax8AJM/Ey9o9mz7KN1bb9GP+G0l20Zw8afxTnY2f4b7hmhn/z8aC2kfArVQlAhFBw==} engines: {node: '>=20.18.1'} - unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} @@ -4687,13 +4850,13 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - vite-node@3.0.2: - resolution: {integrity: sha512-hsEQerBAHvVAbv40m3TFQe/lTEbOp7yDpyqMJqr2Tnd+W58+DEYOt+fluQgekOePcsNBmR77lpVAnIU2Xu4SvQ==} + vite-node@3.0.5: + resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@6.0.10: - resolution: {integrity: sha512-MEszunEcMo6pFsfXN1GhCFQqnE25tWRH0MA4f0Q7uanACi4y1Us+ZGpTMnITwCTnYzB2b9cpmnelTlxgTBmaBA==} + vite@6.1.0: + resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4732,60 +4895,23 @@ packages: yaml: optional: true - vite@6.0.7: - resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.19.2 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vitest@3.0.2: - resolution: {integrity: sha512-5bzaHakQ0hmVVKLhfh/jXf6oETDBtgPo8tQCHYB+wftNgFJ+Hah67IsWc8ivx4vFL025Ow8UiuTf4W57z4izvQ==} + vitest@3.0.5: + resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.2 - '@vitest/ui': 3.0.2 + '@vitest/browser': 3.0.5 + '@vitest/ui': 3.0.5 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/debug': + optional: true '@types/node': optional: true '@vitest/browser': @@ -4801,7 +4927,7 @@ packages: resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.18.0 + eslint: ^9.20.1 vue@3.5.13: resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} @@ -5008,12 +5134,12 @@ snapshots: '@antfu/install-pkg@1.0.0': dependencies: - package-manager-detector: 0.2.8 + package-manager-detector: 0.2.9 tinyexec: 0.3.2 '@antfu/utils@8.1.0': {} - '@apidevtools/json-schema-ref-parser@11.7.3': + '@apidevtools/json-schema-ref-parser@11.9.0': dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 @@ -5026,26 +5152,26 @@ snapshots: cli-table3: 0.6.5 commander: 10.0.1 marked: 9.1.6 - marked-terminal: 7.2.1(marked@9.1.6) - semver: 7.6.3 + marked-terminal: 7.3.0(marked@9.1.6) + semver: 7.7.1 '@arethetypeswrong/core@0.17.3': dependencies: '@andrewbranch/untar.js': 1.0.3 - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.4.3 fflate: 0.8.2 lru-cache: 10.4.3 - semver: 7.6.3 + semver: 7.7.1 typescript: 5.6.1-rc validate-npm-package-name: 5.0.1 - '@asamuzakjp/css-color@2.8.2': + '@asamuzakjp/css-color@2.8.3': dependencies: '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) '@csstools/css-tokenizer': 3.0.3 - lru-cache: 11.0.2 + lru-cache: 10.4.3 '@astrojs/cli-kit@0.4.1': dependencies: @@ -5053,7 +5179,7 @@ snapshots: log-update: 5.0.1 sisteransi: 1.0.5 - '@astrojs/compiler@2.10.3': {} + '@astrojs/compiler@2.10.4': {} '@babel/code-frame@7.26.2': dependencies: @@ -5065,25 +5191,16 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.26.3': - dependencies: - '@babel/types': 7.26.3 - - '@babel/parser@7.26.5': + '@babel/parser@7.26.8': dependencies: - '@babel/types': 7.26.5 + '@babel/types': 7.26.8 - '@babel/runtime-corejs3@7.26.0': + '@babel/runtime-corejs3@7.26.7': dependencies: core-js-pure: 3.40.0 regenerator-runtime: 0.14.1 - '@babel/types@7.26.3': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@babel/types@7.26.5': + '@babel/types@7.26.8': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -5108,7 +5225,7 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@clack/prompts@0.9.1': + '@clack/prompts@0.10.0': dependencies: '@clack/core': 0.4.1 picocolors: 1.1.1 @@ -5157,205 +5274,352 @@ snapshots: dependencies: '@types/eslint': 9.6.1 '@types/estree': 1.0.6 - '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/types': 8.24.0 comment-parser: 1.4.1 esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 - '@esbuild/aix-ppc64@0.24.2': + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/aix-ppc64@0.25.0': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.25.0': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-arm@0.25.0': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/android-x64@0.25.0': optional: true - '@esbuild/android-arm64@0.24.2': + '@esbuild/darwin-arm64@0.23.1': optional: true - '@esbuild/android-arm@0.24.2': + '@esbuild/darwin-arm64@0.24.2': optional: true - '@esbuild/android-x64@0.24.2': + '@esbuild/darwin-arm64@0.25.0': optional: true - '@esbuild/darwin-arm64@0.24.2': + '@esbuild/darwin-x64@0.23.1': optional: true '@esbuild/darwin-x64@0.24.2': optional: true + '@esbuild/darwin-x64@0.25.0': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.24.2': optional: true + '@esbuild/freebsd-arm64@0.25.0': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.24.2': optional: true + '@esbuild/freebsd-x64@0.25.0': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.24.2': optional: true + '@esbuild/linux-arm64@0.25.0': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-arm@0.24.2': optional: true + '@esbuild/linux-arm@0.25.0': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-ia32@0.24.2': optional: true + '@esbuild/linux-ia32@0.25.0': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-loong64@0.24.2': optional: true + '@esbuild/linux-loong64@0.25.0': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.24.2': optional: true + '@esbuild/linux-mips64el@0.25.0': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.24.2': optional: true + '@esbuild/linux-ppc64@0.25.0': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.24.2': optional: true + '@esbuild/linux-riscv64@0.25.0': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-s390x@0.24.2': optional: true + '@esbuild/linux-s390x@0.25.0': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/linux-x64@0.24.2': optional: true + '@esbuild/linux-x64@0.25.0': + optional: true + '@esbuild/netbsd-arm64@0.24.2': optional: true + '@esbuild/netbsd-arm64@0.25.0': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.24.2': optional: true + '@esbuild/netbsd-x64@0.25.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-arm64@0.24.2': optional: true + '@esbuild/openbsd-arm64@0.25.0': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.24.2': optional: true + '@esbuild/openbsd-x64@0.25.0': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.24.2': optional: true + '@esbuild/sunos-x64@0.25.0': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.24.2': optional: true + '@esbuild/win32-arm64@0.25.0': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-ia32@0.24.2': optional: true + '@esbuild/win32-ia32@0.25.0': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.18.0(jiti@2.4.2))': + '@esbuild/win32-x64@0.25.0': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.20.1(jiti@2.4.2))': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) ignore: 5.3.2 - '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.20.1(jiti@2.4.2))': dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/ast@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/eff': 1.24.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + '@eslint-react/eff': 1.26.2 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + string-ts: 2.2.1 + ts-pattern: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/core@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) birecord: 0.1.1 - ts-pattern: 5.6.1 + ts-pattern: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/eff@1.24.0': {} - - '@eslint-react/eslint-plugin@1.24.0(eslint@9.18.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3)': - dependencies: - '@eslint-react/eff': 1.24.0 - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-react-debug: 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-dom: 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-hooks-extra: 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-naming-convention: 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-web-api: 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-react-x: 1.24.0(eslint@9.18.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3) + '@eslint-react/eff@1.26.2': {} + + '@eslint-react/eslint-plugin@1.26.2(eslint@9.20.1(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3)': + dependencies: + '@eslint-react/eff': 1.26.2 + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + eslint-plugin-react-debug: 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-dom: 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-hooks-extra: 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-naming-convention: 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-web-api: 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-x: 1.26.2(eslint@9.20.1(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - ts-api-utils - '@eslint-react/jsx@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/jsx@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - ts-pattern: 5.6.1 + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + ts-pattern: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/shared@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/shared@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/eff': 1.24.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) picomatch: 4.0.2 - ts-pattern: 5.6.1 + ts-pattern: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-react/var@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@eslint-react/var@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + string-ts: 2.2.1 + ts-pattern: 5.6.2 transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint/compat@1.2.5(eslint@9.18.0(jiti@2.4.2))': + '@eslint/compat@1.2.6(eslint@9.20.1(jiti@2.4.2))': optionalDependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) - '@eslint/config-array@0.19.1': + '@eslint/config-array@0.19.2': dependencies: - '@eslint/object-schema': 2.1.5 + '@eslint/object-schema': 2.1.6 debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-inspector@1.0.0(eslint@9.18.0(jiti@2.4.2))': + '@eslint/config-inspector@1.0.0(eslint@9.20.1(jiti@2.4.2))': dependencies: '@nodelib/fs.walk': 3.0.1 bundle-require: 5.1.0(esbuild@0.24.2) @@ -5363,11 +5627,11 @@ snapshots: chokidar: 4.0.3 debug: 4.4.0 esbuild: 0.24.2 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) fast-glob: 3.3.3 find-up: 7.0.0 get-port-please: 3.1.2 - h3: 1.13.1 + h3: 1.15.0 mlly: 1.7.4 mrmime: 2.0.0 open: 10.1.0 @@ -5382,6 +5646,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.11.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 @@ -5389,29 +5657,26 @@ snapshots: espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.18.0': {} + '@eslint/js@9.20.0': {} - '@eslint/markdown@6.2.1': + '@eslint/markdown@6.2.2': dependencies: - '@eslint/plugin-kit': 0.2.4 + '@eslint/core': 0.10.0 + '@eslint/plugin-kit': 0.2.5 mdast-util-from-markdown: 2.0.2 - mdast-util-gfm: 3.0.0 + mdast-util-gfm: 3.1.0 micromark-extension-gfm: 3.0.0 transitivePeerDependencies: - supports-color - '@eslint/object-schema@2.1.5': {} - - '@eslint/plugin-kit@0.2.4': - dependencies: - levn: 0.4.1 + '@eslint/object-schema@2.1.6': {} '@eslint/plugin-kit@0.2.5': dependencies: @@ -5433,31 +5698,31 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@inquirer/confirm@5.1.1(@types/node@22.10.7)': + '@inquirer/confirm@5.1.5(@types/node@22.13.1)': dependencies: - '@inquirer/core': 10.1.2(@types/node@22.10.7) - '@inquirer/type': 3.0.2(@types/node@22.10.7) - '@types/node': 22.10.7 + '@inquirer/core': 10.1.6(@types/node@22.13.1) + '@inquirer/type': 3.0.4(@types/node@22.13.1) + optionalDependencies: + '@types/node': 22.13.1 - '@inquirer/core@10.1.2(@types/node@22.10.7)': + '@inquirer/core@10.1.6(@types/node@22.13.1)': dependencies: - '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.2(@types/node@22.10.7) + '@inquirer/figures': 1.0.10 + '@inquirer/type': 3.0.4(@types/node@22.13.1) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 - strip-ansi: 6.0.1 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 - transitivePeerDependencies: - - '@types/node' + optionalDependencies: + '@types/node': 22.13.1 - '@inquirer/figures@1.0.9': {} + '@inquirer/figures@1.0.10': {} - '@inquirer/type@3.0.2(@types/node@22.10.7)': - dependencies: - '@types/node': 22.10.7 + '@inquirer/type@3.0.4(@types/node@22.13.1)': + optionalDependencies: + '@types/node': 22.13.1 '@isaacs/cliui@8.0.2': dependencies: @@ -5494,7 +5759,11 @@ snapshots: '@jsdevtools/ono@7.1.3': {} - '@mswjs/interceptors@0.37.5': + '@jsr/std__crypto@1.0.4': {} + + '@jsr/std__encoding@1.0.7': {} + + '@mswjs/interceptors@0.37.6': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -5520,12 +5789,12 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.19.0 '@nodelib/fs.walk@3.0.1': dependencies: '@nodelib/fs.scandir': 4.0.1 - fastq: 1.18.0 + fastq: 1.19.0 '@nolyfill/is-core-module@1.0.39': {} @@ -5545,123 +5814,66 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@prettier/plugin-xml@3.4.1(prettier@3.4.2)': + '@prettier/plugin-xml@3.4.1(prettier@3.5.0)': dependencies: '@xml-tools/parser': 1.0.11 - prettier: 3.4.2 - - '@rollup/rollup-android-arm-eabi@4.30.1': - optional: true - - '@rollup/rollup-android-arm-eabi@4.31.0': - optional: true - - '@rollup/rollup-android-arm64@4.30.1': - optional: true - - '@rollup/rollup-android-arm64@4.31.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.30.1': - optional: true - - '@rollup/rollup-darwin-arm64@4.31.0': - optional: true - - '@rollup/rollup-darwin-x64@4.30.1': - optional: true - - '@rollup/rollup-darwin-x64@4.31.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.30.1': - optional: true - - '@rollup/rollup-freebsd-arm64@4.31.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.30.1': - optional: true - - '@rollup/rollup-freebsd-x64@4.31.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.30.1': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.30.1': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.31.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.30.1': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.31.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.30.1': - optional: true + prettier: 3.5.0 - '@rollup/rollup-linux-arm64-musl@4.31.0': + '@rollup/rollup-android-arm-eabi@4.34.6': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + '@rollup/rollup-android-arm64@4.34.6': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': + '@rollup/rollup-darwin-arm64@4.34.6': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + '@rollup/rollup-darwin-x64@4.34.6': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': + '@rollup/rollup-freebsd-arm64@4.34.6': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.30.1': + '@rollup/rollup-freebsd-x64@4.34.6': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.31.0': + '@rollup/rollup-linux-arm-gnueabihf@4.34.6': optional: true - '@rollup/rollup-linux-s390x-gnu@4.30.1': + '@rollup/rollup-linux-arm-musleabihf@4.34.6': optional: true - '@rollup/rollup-linux-s390x-gnu@4.31.0': + '@rollup/rollup-linux-arm64-gnu@4.34.6': optional: true - '@rollup/rollup-linux-x64-gnu@4.30.1': + '@rollup/rollup-linux-arm64-musl@4.34.6': optional: true - '@rollup/rollup-linux-x64-gnu@4.31.0': + '@rollup/rollup-linux-loongarch64-gnu@4.34.6': optional: true - '@rollup/rollup-linux-x64-musl@4.30.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.34.6': optional: true - '@rollup/rollup-linux-x64-musl@4.31.0': + '@rollup/rollup-linux-riscv64-gnu@4.34.6': optional: true - '@rollup/rollup-win32-arm64-msvc@4.30.1': + '@rollup/rollup-linux-s390x-gnu@4.34.6': optional: true - '@rollup/rollup-win32-arm64-msvc@4.31.0': + '@rollup/rollup-linux-x64-gnu@4.34.6': optional: true - '@rollup/rollup-win32-ia32-msvc@4.30.1': + '@rollup/rollup-linux-x64-musl@4.34.6': optional: true - '@rollup/rollup-win32-ia32-msvc@4.31.0': + '@rollup/rollup-win32-arm64-msvc@4.34.6': optional: true - '@rollup/rollup-win32-x64-msvc@4.30.1': + '@rollup/rollup-win32-ia32-msvc@4.34.6': optional: true - '@rollup/rollup-win32-x64-msvc@4.31.0': + '@rollup/rollup-win32-x64-msvc@4.34.6': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -5677,10 +5889,10 @@ snapshots: '@slidev/types@0.47.5': {} - '@stylistic/eslint-plugin@2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@stylistic/eslint-plugin@4.0.0-beta.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -5689,10 +5901,10 @@ snapshots: - supports-color - typescript - '@tanstack/eslint-plugin-query@5.64.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@tanstack/eslint-plugin-query@5.66.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript @@ -5707,9 +5919,9 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@turbo/gen@2.3.3(@types/node@22.10.7)(typescript@5.7.3)': + '@turbo/gen@2.4.2(@types/node@22.13.1)(typescript@5.7.3)': dependencies: - '@turbo/workspaces': 2.3.3 + '@turbo/workspaces': 2.4.2 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 @@ -5717,7 +5929,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@22.13.1)(typescript@5.7.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -5727,7 +5939,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.3.3': + '@turbo/workspaces@2.4.2': dependencies: commander: 10.0.1 execa: 5.1.1 @@ -5745,7 +5957,7 @@ snapshots: '@types/debug@4.1.12': dependencies: - '@types/ms': 0.7.34 + '@types/ms': 2.1.0 '@types/doctrine@0.0.9': {} @@ -5763,12 +5975,12 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.10.7 + '@types/node': 22.13.1 '@types/inquirer@6.5.0': dependencies: @@ -5777,7 +5989,7 @@ snapshots: '@types/jsdom@21.1.7(patch_hash=e3366b6daa76fd621cbb60e62959ed91d7a0dbcf5a46e3c0253bd1a79f65ef57)': dependencies: - '@types/node': 22.10.7 + '@types/node': 22.13.1 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -5785,7 +5997,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 '@types/mdast@4.0.4': dependencies: @@ -5793,13 +6005,9 @@ snapshots: '@types/minimatch@5.1.2': {} - '@types/ms@0.7.34': {} - - '@types/node@22.10.5': - dependencies: - undici-types: 6.20.0 + '@types/ms@2.1.0': {} - '@types/node@22.10.7': + '@types/node@22.13.1': dependencies: undici-types: 6.20.0 @@ -5807,14 +6015,14 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.13.1 kleur: 3.0.3 '@types/statuses@2.0.5': {} '@types/through@0.0.33': dependencies: - '@types/node': 22.10.7 + '@types/node': 22.13.1 '@types/tinycolor2@1.4.6': {} @@ -5822,124 +6030,98 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.0 + eslint: 9.20.1(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.0 debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.1': + '@typescript-eslint/scope-manager@8.24.0': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/visitor-keys': 8.24.0 - '@typescript-eslint/scope-manager@8.21.0': + '@typescript-eslint/type-utils@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 - - '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.1': {} - - '@typescript-eslint/types@8.21.0': {} - - '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.24.0': {} - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.24.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/visitor-keys': 8.24.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.1': + '@typescript-eslint/visitor-keys@8.24.0': dependencies: - '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/types': 8.24.0 eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.21.0': + '@unocss/config@65.4.3': dependencies: - '@typescript-eslint/types': 8.21.0 - eslint-visitor-keys: 4.2.0 - - '@unocss/config@65.4.2': - dependencies: - '@unocss/core': 65.4.2 + '@unocss/core': 65.4.3 unconfig: 0.6.1 transitivePeerDependencies: - supports-color - '@unocss/core@65.4.2': {} + '@unocss/core@65.4.3': {} - '@unocss/eslint-plugin@65.4.2(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)': + '@unocss/eslint-plugin@65.4.3(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@unocss/config': 65.4.2 - '@unocss/core': 65.4.2 - '@unocss/rule-utils': 65.4.2 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@unocss/config': 65.4.3 + '@unocss/core': 65.4.3 + '@unocss/rule-utils': 65.4.3 magic-string: 0.30.17 synckit: 0.9.2 transitivePeerDependencies: @@ -5947,12 +6129,12 @@ snapshots: - supports-color - typescript - '@unocss/rule-utils@65.4.2': + '@unocss/rule-utils@65.4.3': dependencies: - '@unocss/core': 65.4.2 + '@unocss/core': 65.4.3 magic-string: 0.30.17 - '@vitest/coverage-v8@3.0.2(vitest@3.0.2)': + '@vitest/coverage-v8@3.0.5(vitest@3.0.5)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -5966,73 +6148,73 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.1.25(@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.2)': + '@vitest/eslint-plugin@1.1.31(@typescript-eslint/utils@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.5)': dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) optionalDependencies: typescript: 5.7.3 - vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) - '@vitest/expect@3.0.2': + '@vitest/expect@3.0.5': dependencies: - '@vitest/spy': 3.0.2 - '@vitest/utils': 3.0.2 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.2(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0))': + '@vitest/mocker@3.0.5(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0))': dependencies: - '@vitest/spy': 3.0.2 + '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.7.0(@types/node@22.10.7)(typescript@5.7.3) - vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + msw: 2.7.0(@types/node@22.13.1)(typescript@5.7.3) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) - '@vitest/pretty-format@3.0.2': + '@vitest/pretty-format@3.0.5': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.2': + '@vitest/runner@3.0.5': dependencies: - '@vitest/utils': 3.0.2 - pathe: 2.0.2 + '@vitest/utils': 3.0.5 + pathe: 2.0.3 - '@vitest/snapshot@3.0.2': + '@vitest/snapshot@3.0.5': dependencies: - '@vitest/pretty-format': 3.0.2 + '@vitest/pretty-format': 3.0.5 magic-string: 0.30.17 - pathe: 2.0.2 + pathe: 2.0.3 - '@vitest/spy@3.0.2': + '@vitest/spy@3.0.5': dependencies: tinyspy: 3.0.2 - '@vitest/ui@3.0.2(vitest@3.0.2)': + '@vitest/ui@3.0.5(vitest@3.0.5)': dependencies: - '@vitest/utils': 3.0.2 + '@vitest/utils': 3.0.5 fflate: 0.8.2 flatted: 3.3.2 - pathe: 2.0.2 + pathe: 2.0.3 sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 2.0.0 - vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) - '@vitest/utils@3.0.2': + '@vitest/utils@3.0.5': dependencies: - '@vitest/pretty-format': 3.0.2 - loupe: 3.1.2 + '@vitest/pretty-format': 3.0.5 + loupe: 3.1.3 tinyrainbow: 2.0.0 '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.8 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -6045,14 +6227,14 @@ snapshots: '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.8 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.4.49 + postcss: 8.5.2 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -6119,7 +6301,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.5 + fast-uri: 3.0.6 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -6157,6 +6339,8 @@ snapshots: argparse@2.0.1: {} + args-tokenizer@0.3.0: {} + aria-query@5.3.2: {} array-buffer-byte-length@1.0.2: @@ -6169,7 +6353,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 is-string: 1.1.1 @@ -6207,35 +6391,35 @@ snapshots: dependencies: tslib: 2.8.1 - astro-eslint-parser@1.1.0(typescript@5.7.3): + astro-eslint-parser@1.2.1: dependencies: - '@astrojs/compiler': 2.10.3 - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - astrojs-compiler-sync: 1.0.1(@astrojs/compiler@2.10.3) + '@astrojs/compiler': 2.10.4 + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + astrojs-compiler-sync: 1.0.1(@astrojs/compiler@2.10.4) debug: 4.4.0 - entities: 4.5.0 + entities: 6.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 - globby: 11.1.0 + fast-glob: 3.3.3 is-glob: 4.0.3 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color - - typescript - astrojs-compiler-sync@1.0.1(@astrojs/compiler@2.10.3): + astrojs-compiler-sync@1.0.1(@astrojs/compiler@2.10.4): dependencies: - '@astrojs/compiler': 2.10.3 + '@astrojs/compiler': 2.10.4 synckit: 0.9.2 + async-function@1.0.0: {} + asynckit@0.4.0: {} available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 axe-core@4.10.2: {} @@ -6272,8 +6456,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.80 + caniuse-lite: 1.0.30001699 + electron-to-chromium: 1.5.97 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -6284,16 +6468,17 @@ snapshots: builtin-modules@3.3.0: {} - bumpp@9.10.1(magicast@0.3.5): + bumpp@10.0.3(magicast@0.3.5): dependencies: - c12: 2.0.1(magicast@0.3.5) + args-tokenizer: 0.3.0 + c12: 2.0.2(magicast@0.3.5) cac: 6.7.14 escalade: 3.2.0 js-yaml: 4.1.0 jsonc-parser: 3.3.1 - package-manager-detector: 0.2.8 + package-manager-detector: 0.2.9 prompts: 2.4.2 - semver: 7.6.3 + semver: 7.7.1 tinyexec: 0.3.2 tinyglobby: 0.2.10 transitivePeerDependencies: @@ -6308,17 +6493,17 @@ snapshots: esbuild: 0.24.2 load-tsconfig: 0.2.5 - c12@2.0.1(magicast@0.3.5): + c12@2.0.2(magicast@0.3.5): dependencies: chokidar: 4.0.3 confbox: 0.1.8 defu: 6.1.4 dotenv: 16.4.7 - giget: 1.2.3 + giget: 1.2.4 jiti: 2.4.2 mlly: 1.7.4 ohash: 1.1.4 - pathe: 1.1.2 + pathe: 2.0.3 perfect-debounce: 1.0.0 pkg-types: 1.3.1 rc9: 2.1.2 @@ -6351,7 +6536,7 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - caniuse-lite@1.0.30001692: {} + caniuse-lite@1.0.30001699: {} ccount@2.0.1: {} @@ -6360,7 +6545,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.2 + loupe: 3.1.3 pathval: 2.0.0 chalk@2.4.2: @@ -6416,7 +6601,7 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.1 chownr@2.0.0: {} @@ -6424,9 +6609,9 @@ snapshots: citty@0.1.6: dependencies: - consola: 3.3.3 + consola: 3.4.0 - cjs-module-lexer@1.4.1: {} + cjs-module-lexer@1.4.3: {} clean-regexp@1.0.0: dependencies: @@ -6511,8 +6696,6 @@ snapshots: confbox@0.1.8: {} - consola@3.3.3: {} - consola@3.4.0: {} constant-case@2.0.0: @@ -6538,7 +6721,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - crossws@0.3.1: + crossws@0.3.4: dependencies: uncrypto: 0.1.3 @@ -6546,7 +6729,7 @@ snapshots: cssstyle@4.2.1: dependencies: - '@asamuzakjp/css-color': 2.8.2 + '@asamuzakjp/css-color': 2.8.3 rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -6586,7 +6769,7 @@ snapshots: dependencies: ms: 2.1.3 - decimal.js@10.4.3: {} + decimal.js@10.5.0: {} decode-named-character-reference@1.0.2: dependencies: @@ -6676,7 +6859,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.80: {} + electron-to-chromium@1.5.97: {} emoji-regex@10.4.0: {} @@ -6686,13 +6869,15 @@ snapshots: emojilib@2.4.0: {} - enhanced-resolve@5.18.0: + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 entities@4.5.0: {} + entities@6.0.0: {} + environment@1.1.0: {} error-ex@1.3.2: @@ -6711,7 +6896,7 @@ snapshots: data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 @@ -6732,9 +6917,9 @@ snapshots: is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 - is-weakref: 1.1.0 + is-weakref: 1.1.1 math-intrinsics: 1.1.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 object-keys: 1.1.1 object.assign: 4.1.7 own-keys: 1.0.1 @@ -6759,7 +6944,7 @@ snapshots: es-module-lexer@1.6.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -6782,6 +6967,33 @@ snapshots: esbuild-plugin-file-path-extensions@2.1.4: {} + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + esbuild@0.24.2: optionalDependencies: '@esbuild/aix-ppc64': 0.24.2 @@ -6810,6 +7022,34 @@ snapshots: '@esbuild/win32-ia32': 0.24.2 '@esbuild/win32-x64': 0.24.2 + esbuild@0.25.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.0 + '@esbuild/android-arm': 0.25.0 + '@esbuild/android-arm64': 0.25.0 + '@esbuild/android-x64': 0.25.0 + '@esbuild/darwin-arm64': 0.25.0 + '@esbuild/darwin-x64': 0.25.0 + '@esbuild/freebsd-arm64': 0.25.0 + '@esbuild/freebsd-x64': 0.25.0 + '@esbuild/linux-arm': 0.25.0 + '@esbuild/linux-arm64': 0.25.0 + '@esbuild/linux-ia32': 0.25.0 + '@esbuild/linux-loong64': 0.25.0 + '@esbuild/linux-mips64el': 0.25.0 + '@esbuild/linux-ppc64': 0.25.0 + '@esbuild/linux-riscv64': 0.25.0 + '@esbuild/linux-s390x': 0.25.0 + '@esbuild/linux-x64': 0.25.0 + '@esbuild/netbsd-arm64': 0.25.0 + '@esbuild/netbsd-x64': 0.25.0 + '@esbuild/openbsd-arm64': 0.25.0 + '@esbuild/openbsd-x64': 0.25.0 + '@esbuild/sunos-x64': 0.25.0 + '@esbuild/win32-arm64': 0.25.0 + '@esbuild/win32-ia32': 0.25.0 + '@esbuild/win32-x64': 0.25.0 + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -6826,23 +7066,23 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.18.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) - semver: 7.6.3 + eslint: 9.20.1(jiti@2.4.2) + semver: 7.7.1 - eslint-compat-utils@0.6.4(eslint@9.18.0(jiti@2.4.2)): + eslint-compat-utils@0.6.4(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) - semver: 7.6.3 + eslint: 9.20.1(jiti@2.4.2) + semver: 7.7.1 - eslint-flat-config-utils@1.0.0: + eslint-flat-config-utils@2.0.1: dependencies: - pathe: 2.0.2 + pathe: 2.0.3 - eslint-formatting-reporter@0.0.0(eslint@9.18.0(jiti@2.4.2)): + eslint-formatting-reporter@0.0.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) prettier-linter-helpers: 1.0.0 eslint-import-resolver-node@0.3.9: @@ -6853,117 +7093,116 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - enhanced-resolve: 5.18.0 - eslint: 9.18.0(jiti@2.4.2) + enhanced-resolve: 5.18.1 + eslint: 9.20.1(jiti@2.4.2) fast-glob: 3.3.3 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.0 is-bun-module: 1.3.0 is-glob: 4.0.3 stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import-x: 4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-import-x: 4.6.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) transitivePeerDependencies: - supports-color - eslint-json-compat-utils@0.2.1(eslint@9.18.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + eslint-json-compat-utils@0.2.1(eslint@9.20.1(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) esquery: 1.6.0 jsonc-eslint-parser: 2.4.0 - eslint-merge-processors@1.0.0(eslint@9.18.0(jiti@2.4.2)): + eslint-merge-processors@2.0.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) eslint-parser-plain@0.1.1: {} - eslint-plugin-astro@1.3.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-astro@1.3.1(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.0 - '@typescript-eslint/types': 8.19.1 - astro-eslint-parser: 1.1.0(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.18.0(jiti@2.4.2)) - globals: 15.14.0 - postcss: 8.4.49 - postcss-selector-parser: 7.0.0 + '@typescript-eslint/types': 8.24.0 + astro-eslint-parser: 1.2.1 + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.20.1(jiti@2.4.2)) + globals: 15.15.0 + postcss: 8.5.2 + postcss-selector-parser: 7.1.0 transitivePeerDependencies: - supports-color - - typescript - eslint-plugin-command@2.1.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-command@3.0.0(eslint@9.20.1(jiti@2.4.2)): dependencies: '@es-joy/jsdoccomment': 0.50.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) - eslint-plugin-es-x@7.8.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.20.1(jiti@2.4.2)) - eslint-plugin-format@1.0.1(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-format@1.0.1(eslint@9.20.1(jiti@2.4.2)): dependencies: '@dprint/formatter': 0.3.0 '@dprint/markdown': 0.17.8 '@dprint/toml': 0.6.4 - eslint: 9.18.0(jiti@2.4.2) - eslint-formatting-reporter: 0.0.0(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + eslint-formatting-reporter: 0.0.0(eslint@9.20.1(jiti@2.4.2)) eslint-parser-plain: 0.1.1 - prettier: 3.4.2 + prettier: 3.5.0 synckit: 0.9.2 - eslint-plugin-import-x@4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-import-x@4.6.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): dependencies: '@types/doctrine': 0.0.9 - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 doctrine: 3.0.0 - enhanced-resolve: 5.18.0 - eslint: 9.18.0(jiti@2.4.2) + enhanced-resolve: 5.18.1 + eslint: 9.20.1(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.1 stable-hash: 0.0.4 tslib: 2.8.1 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@50.6.2(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-jsdoc@50.6.3(eslint@9.20.1(jiti@2.4.2)): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) espree: 10.3.0 esquery: 1.6.0 parse-imports: 2.2.1 - semver: 7.6.3 + semver: 7.7.1 spdx-expression-parse: 4.0.0 synckit: 0.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-json-schema-validator@5.3.1(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-json-schema-validator@5.3.1(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) ajv: 8.17.1 debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.18.0(jiti@2.4.2)) - eslint-json-compat-utils: 0.2.1(eslint@9.18.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.20.1(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.20.1(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) json-schema-migrate: 2.0.0 jsonc-eslint-parser: 2.4.0 minimatch: 8.0.4 @@ -6975,12 +7214,12 @@ snapshots: - '@eslint/json' - supports-color - eslint-plugin-jsonc@2.18.2(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-jsonc@2.19.1(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.18.0(jiti@2.4.2)) - eslint-json-compat-utils: 0.2.1(eslint@9.18.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.20.1(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.20.1(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 @@ -6989,7 +7228,7 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.20.1(jiti@2.4.2)): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -6999,7 +7238,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -7008,168 +7247,168 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-n@17.15.1(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-n@17.15.1(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - enhanced-resolve: 5.18.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.18.0(jiti@2.4.2)) - get-tsconfig: 4.8.1 - globals: 15.14.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) + enhanced-resolve: 5.18.1 + eslint: 9.20.1(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.20.1(jiti@2.4.2)) + get-tsconfig: 4.10.0 + globals: 15.15.0 ignore: 5.3.2 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.1 - eslint-plugin-perfectionist@4.7.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-perfectionist@4.8.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-react-debug@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + eslint-plugin-react-debug@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.6.2 optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-dom@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) compare-versions: 6.1.1 - eslint: 9.18.0(jiti@2.4.2) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + eslint: 9.20.1(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.6.2 optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + eslint-plugin-react-hooks-extra@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.6.2 optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@5.1.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.1.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) - eslint-plugin-react-naming-convention@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-react-naming-convention@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.6.2 optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + eslint-plugin-react-web-api@1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + string-ts: 2.2.1 + ts-pattern: 5.6.2 optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.24.0(eslint@9.18.0(jiti@2.4.2))(ts-api-utils@2.0.0(typescript@5.7.3))(typescript@5.7.3): - dependencies: - '@eslint-react/ast': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/core': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/eff': 1.24.0 - '@eslint-react/jsx': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/shared': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@eslint-react/var': 1.24.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + eslint-plugin-react-x@1.26.2(eslint@9.20.1(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.7.3))(typescript@5.7.3): + dependencies: + '@eslint-react/ast': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/core': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/eff': 1.26.2 + '@eslint-react/jsx': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/shared': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@eslint-react/var': 1.26.2(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.0 + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/types': 8.24.0 + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) compare-versions: 6.1.1 - eslint: 9.18.0(jiti@2.4.2) - is-immutable-type: 5.0.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - string-ts: 2.2.0 - ts-pattern: 5.6.1 + eslint: 9.20.1(jiti@2.4.2) + is-immutable-type: 5.0.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + string-ts: 2.2.1 + ts-pattern: 5.6.2 optionalDependencies: - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - eslint-plugin-regexp@2.7.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-regexp@2.7.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-solid@0.14.5(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + eslint-plugin-solid@0.14.5(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) estraverse: 5.3.0 is-html: 2.0.0 kebab-case: 1.0.2 @@ -7179,45 +7418,45 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-svelte@2.46.1(eslint@9.18.0(jiti@2.4.2))(svelte@5.19.0)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3)): + eslint-plugin-svelte@2.46.1(eslint@9.20.1(jiti@2.4.2))(svelte@5.20.0)(ts-node@10.9.2(@types/node@22.13.1)(typescript@5.7.3)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.20.1(jiti@2.4.2)) esutils: 2.0.3 known-css-properties: 0.35.0 - postcss: 8.4.49 - postcss-load-config: 3.1.4(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3)) - postcss-safe-parser: 6.0.0(postcss@8.4.49) + postcss: 8.5.2 + postcss-load-config: 3.1.4(postcss@8.5.2)(ts-node@10.9.2(@types/node@22.13.1)(typescript@5.7.3)) + postcss-safe-parser: 6.0.0(postcss@8.5.2) postcss-selector-parser: 6.1.2 - semver: 7.6.3 - svelte-eslint-parser: 0.43.0(svelte@5.19.0) + semver: 7.7.1 + svelte-eslint-parser: 0.43.0(svelte@5.20.0) optionalDependencies: - svelte: 5.19.0 + svelte: 5.20.0 transitivePeerDependencies: - ts-node - eslint-plugin-toml@0.12.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-toml@0.12.0(eslint@9.20.1(jiti@2.4.2)): dependencies: debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.20.1(jiti@2.4.2)) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@56.0.1(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-unicorn@56.0.1(eslint@9.20.1(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) ci-info: 4.1.0 clean-regexp: 1.0.0 core-js-compat: 3.40.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) esquery: 1.6.0 - globals: 15.14.0 + globals: 15.15.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.1.0 @@ -7225,53 +7464,53 @@ snapshots: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.6.3 + semver: 7.7.1 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.24.0(@typescript-eslint/parser@8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-vue@9.32.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-vue@9.32.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) - eslint: 9.18.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.18.0(jiti@2.4.2)) + semver: 7.7.1 + vue-eslint-parser: 9.4.3(eslint@9.20.1(jiti@2.4.2)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-vuejs-accessibility@2.4.1(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-vuejs-accessibility@2.4.1(eslint@9.20.1(jiti@2.4.2)): dependencies: aria-query: 5.3.2 emoji-regex: 10.4.0 - eslint: 9.18.0(jiti@2.4.2) - vue-eslint-parser: 9.4.3(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + vue-eslint-parser: 9.4.3(eslint@9.20.1(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-yml@1.16.0(eslint@9.18.0(jiti@2.4.2)): + eslint-plugin-yml@1.16.0(eslint@9.20.1(jiti@2.4.2)): dependencies: debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.20.1(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.20.1(jiti@2.4.2)) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@1.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2)): + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.20.1(jiti@2.4.2)): dependencies: '@vue/compiler-sfc': 3.5.13 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) eslint-scope@7.2.2: dependencies: @@ -7283,9 +7522,9 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-typegen@1.0.0(eslint@9.18.0(jiti@2.4.2)): + eslint-typegen@1.0.0(eslint@9.20.1(jiti@2.4.2)): dependencies: - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) json-schema-to-typescript-lite: 14.1.0 ohash: 1.1.4 @@ -7293,25 +7532,25 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint-vitest-rule-tester@1.1.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.2): + eslint-vitest-rule-tester@1.1.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.5): dependencies: '@antfu/utils': 8.1.0 '@types/eslint': 9.6.1 - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - vitest: 3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) + '@typescript-eslint/utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + vitest: 3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color - typescript - eslint@9.18.0(jiti@2.4.2): + eslint@9.20.1(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.10.0 + '@eslint/config-array': 0.19.2 + '@eslint/core': 0.11.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.18.0 + '@eslint/js': 9.20.0 '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -7365,7 +7604,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@1.4.3: + esrap@1.4.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -7395,18 +7634,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - execa@9.5.2: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -7446,13 +7673,13 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.5: {} + fast-uri@3.0.6: {} - fastq@1.18.0: + fastq@1.19.0: dependencies: reusify: 1.0.4 - fdir@6.4.2(picomatch@4.0.2): + fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -7499,7 +7726,7 @@ snapshots: flatted@3.3.2: {} - for-each@0.3.3: + for-each@0.3.4: dependencies: is-callable: 1.2.7 @@ -7555,7 +7782,7 @@ snapshots: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 @@ -7568,12 +7795,10 @@ snapshots: get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -7585,7 +7810,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.7 - get-tsconfig@4.8.1: + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -7597,15 +7822,15 @@ snapshots: transitivePeerDependencies: - supports-color - giget@1.2.3: + giget@1.2.4: dependencies: citty: 0.1.6 - consola: 3.3.3 + consola: 3.4.0 defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.12 + node-fetch-native: 1.6.6 + nypm: 0.5.2 ohash: 1.1.4 - pathe: 1.1.2 + pathe: 2.0.2 tar: 6.2.1 glob-parent@5.1.2: @@ -7640,7 +7865,7 @@ snapshots: globals@14.0.0: {} - globals@15.14.0: {} + globals@15.15.0: {} globalthis@1.0.4: dependencies: @@ -7658,15 +7883,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -7680,18 +7896,18 @@ snapshots: graphql@16.10.0: {} - h3@1.13.1: + h3@1.15.0: dependencies: cookie-es: 1.2.2 - crossws: 0.3.1 + crossws: 0.3.4 defu: 6.1.4 destr: 2.0.3 iron-webcrypto: 1.2.1 + node-mock-http: 1.0.0 ohash: 1.1.4 radix3: 1.1.2 ufo: 1.5.4 uncrypto: 0.1.3 - unenv: 1.10.0 handlebars@4.7.8: dependencies: @@ -7761,8 +7977,6 @@ snapshots: human-signals@2.1.0: {} - human-signals@5.0.0: {} - human-signals@8.0.0: {} iconv-lite@0.4.24: @@ -7777,7 +7991,7 @@ snapshots: ignore@5.3.2: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -7863,8 +8077,9 @@ snapshots: is-arrayish@0.2.1: {} - is-async-function@2.1.0: + is-async-function@2.1.1: dependencies: + async-function: 1.0.0 call-bound: 1.0.3 get-proto: 1.0.1 has-tostringtag: 1.0.2 @@ -7874,7 +8089,7 @@ snapshots: dependencies: has-bigints: 1.1.0 - is-boolean-object@1.2.1: + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 @@ -7885,7 +8100,7 @@ snapshots: is-bun-module@1.3.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 is-callable@1.2.7: {} @@ -7931,11 +8146,11 @@ snapshots: dependencies: html-tags: 3.3.1 - is-immutable-type@5.0.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3): + is-immutable-type@5.0.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.18.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.24.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.7.3) ts-declaration-location: 1.0.5(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: @@ -7989,8 +8204,6 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - is-stream@4.0.1: {} is-string@1.1.1: @@ -8018,7 +8231,7 @@ snapshots: is-weakmap@2.0.2: {} - is-weakref@1.1.0: + is-weakref@1.1.1: dependencies: call-bound: 1.0.3 @@ -8082,7 +8295,7 @@ snapshots: dependencies: cssstyle: 4.2.1 data-urls: 5.0.0 - decimal.js: 10.4.3 + decimal.js: 10.5.0 form-data: 4.0.1 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 @@ -8093,7 +8306,7 @@ snapshots: rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.0 + tough-cookie: 5.1.1 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 @@ -8120,7 +8333,7 @@ snapshots: json-schema-to-typescript-lite@14.1.0: dependencies: - '@apidevtools/json-schema-ref-parser': 11.7.3 + '@apidevtools/json-schema-ref-parser': 11.9.0 '@types/json-schema': 7.0.15 json-schema-traverse@0.4.1: {} @@ -8134,7 +8347,7 @@ snapshots: acorn: 8.14.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.6.3 + semver: 7.7.1 jsonc-parser@3.3.1: {} @@ -8144,7 +8357,7 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsr@0.13.2: + jsr@0.13.3: dependencies: kolorist: 1.8.0 node-stream-zip: 1.15.0 @@ -8192,8 +8405,8 @@ snapshots: local-pkg@1.0.0: dependencies: - mlly: 1.7.3 - pkg-types: 1.3.0 + mlly: 1.7.4 + pkg-types: 1.3.1 locate-character@3.0.0: {} @@ -8236,7 +8449,7 @@ snapshots: longest-streak@3.1.0: {} - loupe@3.1.2: {} + loupe@3.1.3: {} lower-case-first@1.0.2: dependencies: @@ -8246,15 +8459,13 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.2: {} - lru-cache@7.18.3: {} magic-regexp@0.8.0: dependencies: estree-walker: 3.0.3 magic-string: 0.30.17 - mlly: 1.7.3 + mlly: 1.7.4 regexp-tree: 0.1.27 type-level-regexp: 0.1.17 ufo: 1.5.4 @@ -8266,19 +8477,19 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.5 - '@babel/types': 7.26.5 + '@babel/parser': 7.26.8 + '@babel/types': 7.26.8 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 make-error@1.3.6: {} markdown-table@3.0.4: {} - marked-terminal@7.2.1(marked@9.1.6): + marked-terminal@7.3.0(marked@9.1.6): dependencies: ansi-escapes: 7.0.0 ansi-regex: 6.1.0 @@ -8287,7 +8498,7 @@ snapshots: cli-table3: 0.6.5 marked: 9.1.6 node-emoji: 2.2.0 - supports-hyperlinks: 3.1.0 + supports-hyperlinks: 3.2.0 marked@9.1.6: {} @@ -8325,7 +8536,7 @@ snapshots: mdast-util-find-and-replace: 3.0.2 micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@2.0.0: + mdast-util-gfm-footnote@2.1.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -8362,11 +8573,11 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm@3.0.0: + mdast-util-gfm@3.1.0: dependencies: mdast-util-from-markdown: 2.0.2 mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 @@ -8414,7 +8625,7 @@ snapshots: micromark-util-html-tag-name: 2.0.1 micromark-util-normalize-identifier: 2.0.1 micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.0.3 + micromark-util-subtokenize: 2.0.4 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.1 @@ -8445,7 +8656,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.1 - micromark-extension-gfm-table@2.1.0: + micromark-extension-gfm-table@2.1.1: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.1 @@ -8470,7 +8681,7 @@ snapshots: micromark-extension-gfm-autolink-literal: 2.1.0 micromark-extension-gfm-footnote: 2.1.0 micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-table: 2.1.1 micromark-extension-gfm-tagfilter: 2.0.0 micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.1 @@ -8557,7 +8768,7 @@ snapshots: micromark-util-encode: 2.0.1 micromark-util-symbol: 2.0.1 - micromark-util-subtokenize@2.0.3: + micromark-util-subtokenize@2.0.4: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.1 @@ -8584,7 +8795,7 @@ snapshots: micromark-util-normalize-identifier: 2.0.1 micromark-util-resolve-all: 2.0.1 micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.0.3 + micromark-util-subtokenize: 2.0.4 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.1 transitivePeerDependencies: @@ -8601,12 +8812,8 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@3.0.0: {} - mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - min-indent@1.0.1: {} minimatch@10.0.1: @@ -8646,17 +8853,10 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.7.3: - dependencies: - acorn: 8.14.0 - pathe: 1.1.2 - pkg-types: 1.3.0 - ufo: 1.5.4 - mlly@1.7.4: dependencies: acorn: 8.14.0 - pathe: 2.0.2 + pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.5.4 @@ -8664,13 +8864,13 @@ snapshots: ms@2.1.3: {} - msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3): + msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.1(@types/node@22.10.7) - '@mswjs/interceptors': 0.37.5 + '@inquirer/confirm': 5.1.5(@types/node@22.13.1) + '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 '@types/cookie': 0.6.0 @@ -8682,7 +8882,7 @@ snapshots: path-to-regexp: 6.3.0 picocolors: 1.1.1 strict-event-emitter: 0.5.1 - type-fest: 4.32.0 + type-fest: 4.34.1 yargs: 17.7.2 optionalDependencies: typescript: 5.7.3 @@ -8720,11 +8920,13 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 - node-fetch-native@1.6.4: {} + node-fetch-native@1.6.6: {} + + node-mock-http@1.0.0: {} node-plop@0.26.3: dependencies: - '@babel/runtime-corejs3': 7.26.0 + '@babel/runtime-corejs3': 7.26.7 '@types/inquirer': 6.5.0 change-case: 3.1.0 del: 5.1.0 @@ -8751,10 +8953,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - npm-run-path@6.0.0: dependencies: path-key: 4.0.0 @@ -8766,18 +8964,18 @@ snapshots: nwsapi@2.2.16: {} - nypm@0.3.12: + nypm@0.5.2: dependencies: citty: 0.1.6 - consola: 3.3.3 - execa: 8.0.1 - pathe: 1.1.2 - pkg-types: 1.3.0 + consola: 3.4.0 + pathe: 2.0.2 + pkg-types: 1.3.1 + tinyexec: 0.3.2 ufo: 1.5.4 object-assign@4.1.1: {} - object-inspect@1.13.3: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} @@ -8786,7 +8984,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 @@ -8795,14 +8993,14 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 object.values@1.2.1: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 ohash@1.1.4: {} @@ -8814,10 +9012,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - open@10.1.0: dependencies: default-browser: 5.2.1 @@ -8917,7 +9111,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.8: {} + package-manager-detector@0.2.9: {} param-case@2.1.1: dependencies: @@ -8987,6 +9181,8 @@ snapshots: pathe@2.0.2: {} + pathe@2.0.3: {} + pathval@2.0.0: {} perfect-debounce@1.0.0: {} @@ -9001,64 +9197,52 @@ snapshots: pirates@4.0.6: {} - pkg-types@1.3.0: - dependencies: - confbox: 0.1.8 - mlly: 1.7.3 - pathe: 1.1.2 - pkg-types@1.3.1: dependencies: confbox: 0.1.8 mlly: 1.7.4 - pathe: 2.0.2 + pathe: 2.0.3 pluralize@8.0.0: {} - possible-typed-array-names@1.0.0: {} + possible-typed-array-names@1.1.0: {} - postcss-load-config@3.1.4(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3)): + postcss-load-config@3.1.4(postcss@8.5.2)(ts-node@10.9.2(@types/node@22.13.1)(typescript@5.7.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.4.49 - ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.7.3) + postcss: 8.5.2 + ts-node: 10.9.2(@types/node@22.13.1)(typescript@5.7.3) - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.4.2 - postcss: 8.5.1 + postcss: 8.5.2 tsx: 4.19.2 yaml: 2.7.0 - postcss-safe-parser@6.0.0(postcss@8.4.49): + postcss-safe-parser@6.0.0(postcss@8.5.2): dependencies: - postcss: 8.4.49 + postcss: 8.5.2 - postcss-scss@4.0.9(postcss@8.4.49): + postcss-scss@4.0.9(postcss@8.5.2): dependencies: - postcss: 8.4.49 + postcss: 8.5.2 postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.0.0: + postcss-selector-parser@7.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.4.49: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postcss@8.5.1: + postcss@8.5.2: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -9072,16 +9256,16 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: - '@astrojs/compiler': 2.10.3 - prettier: 3.4.2 + '@astrojs/compiler': 2.10.4 + prettier: 3.5.0 sass-formatter: 0.7.9 - prettier-plugin-slidev@1.0.5(prettier@3.4.2): + prettier-plugin-slidev@1.0.5(prettier@3.5.0): dependencies: '@slidev/parser': 0.47.5 - prettier: 3.4.2 + prettier: 3.5.0 - prettier@3.4.2: {} + prettier@3.5.0: {} pretty-ms@9.2.0: dependencies: @@ -9150,7 +9334,7 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@4.0.2: {} + readdirp@4.1.1: {} refa@0.12.1: dependencies: @@ -9162,7 +9346,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 get-intrinsic: 1.2.7 get-proto: 1.0.1 which-builtin-type: 1.2.1 @@ -9234,54 +9418,29 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.30.1: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.30.1 - '@rollup/rollup-android-arm64': 4.30.1 - '@rollup/rollup-darwin-arm64': 4.30.1 - '@rollup/rollup-darwin-x64': 4.30.1 - '@rollup/rollup-freebsd-arm64': 4.30.1 - '@rollup/rollup-freebsd-x64': 4.30.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 - '@rollup/rollup-linux-arm-musleabihf': 4.30.1 - '@rollup/rollup-linux-arm64-gnu': 4.30.1 - '@rollup/rollup-linux-arm64-musl': 4.30.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 - '@rollup/rollup-linux-riscv64-gnu': 4.30.1 - '@rollup/rollup-linux-s390x-gnu': 4.30.1 - '@rollup/rollup-linux-x64-gnu': 4.30.1 - '@rollup/rollup-linux-x64-musl': 4.30.1 - '@rollup/rollup-win32-arm64-msvc': 4.30.1 - '@rollup/rollup-win32-ia32-msvc': 4.30.1 - '@rollup/rollup-win32-x64-msvc': 4.30.1 - fsevents: 2.3.3 - - rollup@4.31.0: + rollup@4.34.6: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.31.0 - '@rollup/rollup-android-arm64': 4.31.0 - '@rollup/rollup-darwin-arm64': 4.31.0 - '@rollup/rollup-darwin-x64': 4.31.0 - '@rollup/rollup-freebsd-arm64': 4.31.0 - '@rollup/rollup-freebsd-x64': 4.31.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.31.0 - '@rollup/rollup-linux-arm-musleabihf': 4.31.0 - '@rollup/rollup-linux-arm64-gnu': 4.31.0 - '@rollup/rollup-linux-arm64-musl': 4.31.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.31.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.31.0 - '@rollup/rollup-linux-riscv64-gnu': 4.31.0 - '@rollup/rollup-linux-s390x-gnu': 4.31.0 - '@rollup/rollup-linux-x64-gnu': 4.31.0 - '@rollup/rollup-linux-x64-musl': 4.31.0 - '@rollup/rollup-win32-arm64-msvc': 4.31.0 - '@rollup/rollup-win32-ia32-msvc': 4.31.0 - '@rollup/rollup-win32-x64-msvc': 4.31.0 + '@rollup/rollup-android-arm-eabi': 4.34.6 + '@rollup/rollup-android-arm64': 4.34.6 + '@rollup/rollup-darwin-arm64': 4.34.6 + '@rollup/rollup-darwin-x64': 4.34.6 + '@rollup/rollup-freebsd-arm64': 4.34.6 + '@rollup/rollup-freebsd-x64': 4.34.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.6 + '@rollup/rollup-linux-arm-musleabihf': 4.34.6 + '@rollup/rollup-linux-arm64-gnu': 4.34.6 + '@rollup/rollup-linux-arm64-musl': 4.34.6 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.6 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.6 + '@rollup/rollup-linux-riscv64-gnu': 4.34.6 + '@rollup/rollup-linux-s390x-gnu': 4.34.6 + '@rollup/rollup-linux-x64-gnu': 4.34.6 + '@rollup/rollup-linux-x64-musl': 4.34.6 + '@rollup/rollup-win32-arm64-msvc': 4.34.6 + '@rollup/rollup-win32-ia32-msvc': 4.34.6 + '@rollup/rollup-win32-x64-msvc': 4.34.6 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -9341,13 +9500,15 @@ snapshots: refa: 0.12.1 regexp-ast-analysis: 0.7.1 + scule@1.3.0: {} + semiver@1.1.0: {} semver@5.7.2: {} semver@7.6.2: {} - semver@7.6.3: {} + semver@7.7.1: {} sentence-case@2.1.1: dependencies: @@ -9374,7 +9535,7 @@ snapshots: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 shebang-command@2.0.0: dependencies: @@ -9385,27 +9546,27 @@ snapshots: side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map@1.0.1: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map: 1.0.1 side-channel@1.1.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -9447,11 +9608,11 @@ snapshots: dependencies: agent-base: 7.1.3 debug: 4.4.0 - socks: 2.8.3 + socks: 2.8.4 transitivePeerDependencies: - supports-color - socks@2.8.3: + socks@2.8.4: dependencies: ip-address: 9.0.5 smart-buffer: 4.2.0 @@ -9467,22 +9628,20 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.21 - spdx-license-ids@3.0.20: {} - spdx-license-ids@3.0.21: {} sprintf-js@1.1.3: {} @@ -9497,7 +9656,7 @@ snapshots: strict-event-emitter@0.5.1: {} - string-ts@2.2.0: {} + string-ts@2.2.1: {} string-width@4.2.3: dependencies: @@ -9524,7 +9683,7 @@ snapshots: define-data-property: 1.1.4 define-properties: 1.2.1 es-abstract: 1.23.9 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: @@ -9532,13 +9691,13 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string_decoder@1.3.0: dependencies: @@ -9554,8 +9713,6 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-final-newline@4.0.0: {} strip-indent@3.0.0: @@ -9594,24 +9751,24 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.1.0: + supports-hyperlinks@3.2.0: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 supports-preserve-symlinks-flag@1.0.0: {} - svelte-eslint-parser@0.43.0(svelte@5.19.0): + svelte-eslint-parser@0.43.0(svelte@5.20.0): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.49 - postcss-scss: 4.0.9(postcss@8.4.49) + postcss: 8.5.2 + postcss-scss: 4.0.9(postcss@8.5.2) optionalDependencies: - svelte: 5.19.0 + svelte: 5.20.0 - svelte@5.19.0: + svelte@5.20.0: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -9622,7 +9779,7 @@ snapshots: axobject-query: 4.1.0 clsx: 2.1.1 esm-env: 1.2.2 - esrap: 1.4.3 + esrap: 1.4.4 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.17 @@ -9679,7 +9836,7 @@ snapshots: tinyglobby@0.2.10: dependencies: - fdir: 6.4.2(picomatch@4.0.2) + fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 tinygradient@1.1.5: @@ -9698,11 +9855,11 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - tldts-core@6.1.71: {} + tldts-core@6.1.77: {} - tldts@6.1.71: + tldts@6.1.77: dependencies: - tldts-core: 6.1.71 + tldts-core: 6.1.77 tmp@0.0.33: dependencies: @@ -9725,9 +9882,9 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tough-cookie@5.1.0: + tough-cookie@5.1.1: dependencies: - tldts: 6.1.71 + tldts: 6.1.77 tr46@1.0.1: dependencies: @@ -9739,7 +9896,7 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.0.0(typescript@5.7.3): + ts-api-utils@2.0.1(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -9750,14 +9907,14 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3): + ts-node@10.9.2(@types/node@22.13.1)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.10.7 + '@types/node': 22.13.1 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -9768,32 +9925,32 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-pattern@5.6.1: {} + ts-pattern@5.6.2: {} tslib@1.14.1: {} tslib@2.8.1: {} - tsup@8.3.5(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): + tsup@8.3.6(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.24.2) cac: 6.7.14 chokidar: 4.0.3 - consola: 3.3.3 + consola: 3.4.0 debug: 4.4.0 esbuild: 0.24.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(yaml@2.7.0) resolve-from: 5.0.0 - rollup: 4.30.1 + rollup: 4.34.6 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.1 + postcss: 8.5.2 typescript: 5.7.3 transitivePeerDependencies: - jiti @@ -9803,8 +9960,8 @@ snapshots: tsx@4.19.2: dependencies: - esbuild: 0.24.2 - get-tsconfig: 4.8.1 + esbuild: 0.23.1 + get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 @@ -9814,32 +9971,34 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.3.3: + turbo-darwin-64@2.4.2: optional: true - turbo-darwin-arm64@2.3.3: + turbo-darwin-arm64@2.4.2: optional: true - turbo-linux-64@2.3.3: + turbo-linux-64@2.4.2: optional: true - turbo-linux-arm64@2.3.3: + turbo-linux-arm64@2.4.2: optional: true - turbo-windows-64@2.3.3: + turbo-windows-64@2.4.2: optional: true - turbo-windows-arm64@2.3.3: + turbo-windows-arm64@2.4.2: optional: true - turbo@2.3.3: + turbo@2.4.2: optionalDependencies: - turbo-darwin-64: 2.3.3 - turbo-darwin-arm64: 2.3.3 - turbo-linux-64: 2.3.3 - turbo-linux-arm64: 2.3.3 - turbo-windows-64: 2.3.3 - turbo-windows-arm64: 2.3.3 + turbo-darwin-64: 2.4.2 + turbo-darwin-arm64: 2.4.2 + turbo-linux-64: 2.4.2 + turbo-linux-arm64: 2.4.2 + turbo-windows-64: 2.4.2 + turbo-windows-arm64: 2.4.2 + + tweetnacl@1.0.3: {} type-check@0.4.0: dependencies: @@ -9855,7 +10014,7 @@ snapshots: type-fest@1.4.0: {} - type-fest@4.32.0: {} + type-fest@4.34.1: {} type-level-regexp@0.1.17: {} @@ -9868,7 +10027,7 @@ snapshots: typed-array-byte-length@1.0.3: dependencies: call-bind: 1.0.8 - for-each: 0.3.3 + for-each: 0.3.4 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -9877,7 +10036,7 @@ snapshots: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 - for-each: 0.3.3 + for-each: 0.3.4 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -9886,10 +10045,10 @@ snapshots: typed-array-length@1.0.7: dependencies: call-bind: 1.0.8 - for-each: 0.3.3 + for-each: 0.3.4 gopd: 1.2.0 is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 typescript@5.6.1-rc: {} @@ -9924,15 +10083,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.2.3: {} - - unenv@1.10.0: - dependencies: - consola: 3.4.0 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 + undici@7.3.0: {} unicode-emoji-modifier-base@1.0.0: {} @@ -10005,13 +10156,13 @@ snapshots: validate-npm-package-name@5.0.1: {} - vite-node@3.0.2(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): + vite-node@3.0.5(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 - pathe: 2.0.2 - vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + pathe: 2.0.3 + vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -10026,55 +10177,44 @@ snapshots: - tsx - yaml - vite@6.0.10(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): - dependencies: - esbuild: 0.24.2 - postcss: 8.5.1 - rollup: 4.31.0 - optionalDependencies: - '@types/node': 22.10.7 - fsevents: 2.3.3 - jiti: 2.4.2 - tsx: 4.19.2 - yaml: 2.7.0 - - vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): + vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): dependencies: esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.30.1 + postcss: 8.5.2 + rollup: 4.34.6 optionalDependencies: - '@types/node': 22.10.7 + '@types/node': 22.13.1 fsevents: 2.3.3 jiti: 2.4.2 tsx: 4.19.2 yaml: 2.7.0 - vitest@3.0.2(@types/node@22.10.7)(@vitest/ui@3.0.2)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0): + vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.13.1)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@26.0.0)(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(tsx@4.19.2)(yaml@2.7.0): dependencies: - '@vitest/expect': 3.0.2 - '@vitest/mocker': 3.0.2(msw@2.7.0(@types/node@22.10.7)(typescript@5.7.3))(vite@6.0.7(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.2 - '@vitest/runner': 3.0.2 - '@vitest/snapshot': 3.0.2 - '@vitest/spy': 3.0.2 - '@vitest/utils': 3.0.2 + '@vitest/expect': 3.0.5 + '@vitest/mocker': 3.0.5(msw@2.7.0(@types/node@22.13.1)(typescript@5.7.3))(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.5 + '@vitest/runner': 3.0.5 + '@vitest/snapshot': 3.0.5 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 magic-string: 0.30.17 - pathe: 2.0.2 + pathe: 2.0.3 std-env: 3.8.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.0.7(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) - vite-node: 3.0.2(@types/node@22.10.7)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + vite-node: 3.0.5(@types/node@22.13.1)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.7 - '@vitest/ui': 3.0.2(vitest@3.0.2) + '@types/debug': 4.1.12 + '@types/node': 22.13.1 + '@vitest/ui': 3.0.5(vitest@3.0.5) jsdom: 26.0.0 transitivePeerDependencies: - jiti @@ -10090,16 +10230,16 @@ snapshots: - tsx - yaml - vue-eslint-parser@9.4.3(eslint@9.18.0(jiti@2.4.2)): + vue-eslint-parser@9.4.3(eslint@9.20.1(jiti@2.4.2)): dependencies: debug: 4.4.0 - eslint: 9.18.0(jiti@2.4.2) + eslint: 9.20.1(jiti@2.4.2) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.6.0 lodash: 4.17.21 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color @@ -10147,7 +10287,7 @@ snapshots: which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.1 + is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 @@ -10157,12 +10297,12 @@ snapshots: call-bound: 1.0.3 function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.1.0 + is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 is-generator-function: 1.1.0 is-regex: 1.2.1 - is-weakref: 1.1.0 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 @@ -10180,7 +10320,7 @@ snapshots: available-typed-arrays: 1.0.7 call-bind: 1.0.8 call-bound: 1.0.3 - for-each: 0.3.3 + for-each: 0.3.4 gopd: 1.2.0 has-tostringtag: 1.0.2 diff --git a/turbo.json b/turbo.json index beef21d2..0dda20e6 100644 --- a/turbo.json +++ b/turbo.json @@ -3,7 +3,7 @@ "globalDependencies": ["tsconfig.json", "./packages/scripts/tsup.config.ts"], "globalEnv": [], "cacheDir": ".turbo/cache", - "daemon": true, + "daemon": false, "envMode": "strict", "ui": "stream", "dangerouslyDisablePackageManagerCheck": false,