diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7db2491..52e041c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,10 +3,12 @@ name: CI/CD Pipeline on: push: branches: + - main - master - develop pull_request: branches: + - main - master - develop @@ -34,14 +36,14 @@ jobs: - name: Run Linter run: pnpm lint - - name: Run Tests - run: pnpm test:all - - - name: Run Coverage - run: pnpm coverage:all - - name: Run Type Check run: pnpm typecheck:all - name: Build Project - run: pnpm build:all \ No newline at end of file + run: pnpm build:all + + - name: Run Tests + run: pnpm test:all + + # - name: Run Coverage + # run: pnpm coverage:all diff --git a/.husky/pre-commit b/.husky/pre-commit index f1bac86..060a403 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,3 +1,2 @@ -pnpm test pnpm lint pnpm typecheck diff --git a/build.js b/build.js new file mode 100644 index 0000000..5a3a945 --- /dev/null +++ b/build.js @@ -0,0 +1,32 @@ +const esbuild = require("esbuild"); +const path = require("path"); +const fs = require("fs"); + +const packages = [ + "core", +]; + +for (const pkg of packages) { + const srcDir = path.join(__dirname, `packages/${pkg}/src`); + const distDir = path.join(__dirname, `packages/${pkg}/dist`); + // Find all .ts entry points (excluding test files) + const entryPoints = fs + .readdirSync(srcDir) + .filter((f) => f.endsWith(".ts") && !f.endsWith(".spec.ts")) + .map((f) => path.join(srcDir, f)); + + if (!fs.existsSync(distDir)) fs.mkdirSync(distDir, { recursive: true }); + + esbuild.buildSync({ + entryPoints, + outdir: distDir, + // outfile: path.join(distDir, 'index.js'), + bundle: true, + format: "esm", + platform: "node", + sourcemap: true, + target: ["node24"], + tsconfig: path.join(__dirname, `packages/${pkg}/tsconfig.build.json`), + external: ["tsconfig.json"], // Add external dependencies if needed + }); +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 0cb41ff..8b859c3 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -13,6 +13,7 @@ export default tsEslint.config( "**/coverage", "**/out", "**/lib", + "build.js", ], }, { diff --git a/package.json b/package.json index 3ede020..1545ab9 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,13 @@ "keywords": [], "author": "elijah kotyluk ", "license": "MIT", + "private": false, "packageManager": "pnpm@10.20.0", "workspaces": [ "packages/*" ], - "scripts": { + "scripts": { + "build:esbuild": "node build.js", "clean": "pnpm run -r clean", "clean:all": "npx lerna run clean", "build": "pnpm run -r build", @@ -27,7 +29,8 @@ }, "devDependencies": { "@eslint/js": "~9.38.0", - "@vitest/coverage-v8": "^4.0.9", + "@types/node": "^24.10.1", + "esbuild": "^0.27.0", "eslint": "~9.38.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "~5.5.0", @@ -36,8 +39,6 @@ "lerna": "^9.0.1", "prettier": "~3.6.0", "typescript": "^5.9.3", - "typescript-eslint": "~8.46.0", - "vitest": "^4.0.9" - }, - "dependencies": {} + "typescript-eslint": "~8.46.0" + } } diff --git a/packages/core/bin/onyx.mjs b/packages/core/bin/onyx.mjs new file mode 100644 index 0000000..fd79fbc --- /dev/null +++ b/packages/core/bin/onyx.mjs @@ -0,0 +1,36 @@ +#!/usr/bin/env node +"use strict"; + +import { existsSync } from "fs"; +import { dirname, join, resolve } from "path"; + +const rootDir = resolve(process.cwd()); + +const CONFIG_BASENAME = "onyx.config"; +const CONFIG_EXTS = [".js", ".ts", ".json", ".mjs", ".cjs"]; + +function findOnyxConfig(startDir = rootDir) { + let dir = startDir; + + while (true) { + for (const ext of CONFIG_EXTS) { + const configPath = join(dir, CONFIG_BASENAME + ext); + if (existsSync(configPath)) return configPath; + } + + const parent = dirname(dir); + if (parent === dir) break; + dir = parent; + } + + return null; +} + +const configPath = findOnyxConfig(); + +if (configPath) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const config = await import(configPath); +} + +await import("../dist/cli.js"); diff --git a/packages/core/onyx.config.ts b/packages/core/onyx.config.ts new file mode 100644 index 0000000..2cc1434 --- /dev/null +++ b/packages/core/onyx.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "@onyxjs/core"; + +export default defineConfig({ + testDir: "test", + timeoutMs: 5000, + bail: false, + includes: ["**/*.spec.ts"], + excludes: ["**/node_modules/**", "**/dist/**"], +}); diff --git a/packages/core/package.json b/packages/core/package.json index 37915f1..a31998c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,25 +1,44 @@ { - "name": "@onyxjs/core", - "version": "1.0.0", + "name": "@onyx.js/core", + "version": "0.0.0-alpha.1.0", "description": "", - "main": "dist/index.js", - "types": "dist/index.d.ts", + "private": false, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "type": "module", "files": [ - "dist" + "dist", + "bin" ], + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./*": "./*" + }, + "bin": { + "onyx": "./bin/onyx.mjs" + }, "scripts": { "build": "pnpm run clean && pnpm run compile", + "build:tsc": "tsc -p ./tsconfig.build.json && tsc-esm-fix dist --tsconfig ./tsconfig.build.json", + "build:esbuild": "pnpm clean && pnpm build:tsc && pnpm --filter @onyxjs/core exec node ../../build.js", "clean": "rm -rf ./dist", - "compile": "tsc -p tsconfig.build.json", + "compile": "tsc -p tsconfig.build.json && tsc-esm-fix dist --tsconfig ./tsconfig.build.json", "prepublishOnly": "pnpm run build", "typecheck": "tsc -p tsconfig.build.json --noEmit", - "test": "vitest run" + "test": "node bin/onyx.mjs" }, "keywords": [], "author": "elijah kotyluk ", "license": "ISC", "packageManager": "pnpm@10.20.0", "devDependencies": { + "chalk": "^5.6.2", + "ts-node": "^10.9.2", + "tsc-esm-fix": "^3.1.2", "typescript": "^5.9.3" } } diff --git a/packages/core/src/cli.ts b/packages/core/src/cli.ts new file mode 100644 index 0000000..89a87ef --- /dev/null +++ b/packages/core/src/cli.ts @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +import { runTestsCLI } from "./runner"; + +const args = process.argv.slice(2); +const patternArg = args[0] ? new RegExp(args[0]) : undefined; + +runTestsCLI({ pattern: patternArg }).catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/packages/core/src/context.ts b/packages/core/src/context.ts new file mode 100644 index 0000000..75901a7 --- /dev/null +++ b/packages/core/src/context.ts @@ -0,0 +1,10 @@ +import { Suite } from "./suite"; + +interface OnyxGlobalContext { + currentSuite: Suite | null; +} +const onyxGlobalContext: OnyxGlobalContext = { + currentSuite: null, +}; + +export { onyxGlobalContext, type OnyxGlobalContext }; diff --git a/packages/core/src/expect.ts b/packages/core/src/expect.ts new file mode 100644 index 0000000..e09081b --- /dev/null +++ b/packages/core/src/expect.ts @@ -0,0 +1,74 @@ +import { + MatcherContext, + MatcherFn, + MatcherMap, + matcherRegistry, +} from "./matchers"; + +export interface ExpectInterface { + (value: T): Expectation; + extend(m: M): void; +} + +type Expectation = { + not: Expectation; +} & { + [K in keyof typeof matcherRegistry]: (typeof matcherRegistry)[K] extends MatcherFn< + T, + infer A + > + ? (...args: A) => ReturnType<(typeof matcherRegistry)[K]> + : never; +}; + +export function extendMatchers(newMatchers: MatcherMap) { + for (const key in newMatchers) { + matcherRegistry[key] = newMatchers[key]; + } +} + +export const expect: ExpectInterface = (function () { + function expectFn(received: T): Expectation { + function makeExpectation(isNot: boolean): Expectation { + const ctx: MatcherContext = { + isNot, + diff(a, b) { + return ( + JSON.stringify(a, null, 2) + "\nvs\n" + JSON.stringify(b, null, 2) + ); + }, + }; + + const handler: Record = {}; + + for (const name in matcherRegistry) { + const fn = matcherRegistry[name] as MatcherFn; + + handler[name] = (...args: unknown[]) => + fn.call(ctx, received, ...(args as [])); + } + + return new Proxy(handler as Expectation, { + get(target, prop) { + if (prop === "not") { + return makeExpectation(!isNot); + } + return target[prop as keyof typeof target]; + }, + }); + } + + return makeExpectation(false); + } + + (expectFn as ExpectInterface).extend = extendMatchers; + + return expectFn as ExpectInterface; +})(); + +expect.extend = extendMatchers; +Object.defineProperty(expect, "matchers", { + get() { + return matcherRegistry; + }, +}); diff --git a/packages/core/src/hooks.ts b/packages/core/src/hooks.ts new file mode 100644 index 0000000..abc3d76 --- /dev/null +++ b/packages/core/src/hooks.ts @@ -0,0 +1,40 @@ +import { getCurrentSuite } from "./suite"; +import { PromisableFn } from "./types"; + +type HookFn = PromisableFn; + +type Hook = Array; + +interface Hooks { + beforeAll: Hook; + afterAll: Hook; + beforeEach: Hook; + afterEach: Hook; +} + +type HookName = keyof Hooks; + +function beforeAll(...hooks: HookFn[]): void { + getCurrentSuite().beforeAllHooks.push(...hooks); +} +function afterAll(...hooks: HookFn[]): void { + getCurrentSuite().afterAllHooks.push(...hooks); +} +function beforeEach(...hooks: HookFn[]): void { + getCurrentSuite().beforeEachHooks.push(...hooks); +} + +function afterEach(...hooks: HookFn[]): void { + getCurrentSuite().afterEachHooks.push(...hooks); +} + +export { + beforeAll, + afterAll, + beforeEach, + afterEach, + type Hooks, + type HookName, + type Hook, + type HookFn, +}; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index cbb6970..27337ec 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1 +1,6 @@ -console.log("Core package"); +export { defineConfig } from "./utils/defineConfig"; + +export { expect } from "./expect"; +export { describe, it } from "./interface"; + +export { beforeEach, afterEach, beforeAll, afterAll } from "./hooks"; diff --git a/packages/core/src/interface.ts b/packages/core/src/interface.ts new file mode 100644 index 0000000..1b9bdf1 --- /dev/null +++ b/packages/core/src/interface.ts @@ -0,0 +1,33 @@ +import { onyxGlobalContext } from "./context"; +import { getCurrentSuite, Suite } from "./suite"; +import { Test } from "./test"; + +import type { PromisableFn } from "./types"; + +function _describe(description: string, fn: PromisableFn) { + const parent = getCurrentSuite(); + const suite = new Suite(description, parent); + parent.addSuite(suite); + + onyxGlobalContext.currentSuite = suite; + try { + fn(); + } finally { + onyxGlobalContext.currentSuite = parent; + } +} + +function _it(description: string, fn: PromisableFn) { + const test = new Test(description, fn); + getCurrentSuite().addTest(test); +} + +const describe = (description: string, fn: PromisableFn) => { + return _describe(description, fn); +}; + +const it = (description: string, fn: PromisableFn) => { + return _it(description, fn); +}; + +export { describe, it }; diff --git a/packages/core/src/matchers.ts b/packages/core/src/matchers.ts new file mode 100644 index 0000000..e216b7f --- /dev/null +++ b/packages/core/src/matchers.ts @@ -0,0 +1,46 @@ +import { deepEqual } from "./utils/deepEqual"; +import { extendMatchers } from "./expect"; + +export interface MatcherMap { + [name: string]: MatcherFn; +} + +export const coreMatchers: MatcherMap = {}; + +export const matcherRegistry: MatcherMap = { ...coreMatchers }; + +extendMatchers({ + toBe(this: MatcherContext, received: T, expected: T) { + const pass = Object.is(received, expected); + if (this.isNot ? pass : !pass) { + throw new Error( + `Expected ${received} ${this.isNot ? "not " : ""}to be ${expected}`, + ); + } + }, + + toEqual(this: MatcherContext, received: T, expected: T) { + const pass = JSON.stringify(received) === JSON.stringify(expected); + if (this.isNot ? pass : !pass) { + throw new Error(`Expected:\n${this.diff(received, expected)}`); + } + }, + + toStrictEqual(this: MatcherContext, received: T, expected: T) { + const pass = deepEqual(received, expected); + if (this.isNot ? pass : !pass) { + throw new Error(`Expected:\n${this.diff(received, expected)}`); + } + }, +}); + +export interface MatcherContext { + isNot: boolean; + diff(a: unknown, b: unknown): string; +} + +export type MatcherFn = ( + this: MatcherContext, + received: T, + ...args: A +) => void | Promise; diff --git a/packages/core/src/runner.ts b/packages/core/src/runner.ts new file mode 100644 index 0000000..481ba6c --- /dev/null +++ b/packages/core/src/runner.ts @@ -0,0 +1,76 @@ +// runner.ts +import fs from "fs"; +import path from "path"; +import chalk from "chalk"; +import { onyxGlobalContext } from "./context"; +import { clearContext, rootSuite } from "./suite"; +import { fileURLToPath, pathToFileURL } from "url"; + +interface RunnerOptions { + testDir?: string; + pattern?: RegExp; +} + +async function runTestsCLI(options: RunnerOptions = {}) { + // Always use the source test directory relative to the package root + const packageRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", + ); + const testDir = path.resolve(packageRoot, "test"); + + // discover test files + let files = fs + .readdirSync(testDir) + .filter((f) => f.endsWith(".spec.ts")) + .map((f) => path.join(testDir, f)); + + if (options.pattern) files = files.filter((f) => options.pattern?.test(f)); + + for (const file of files) { + clearContext(); + + onyxGlobalContext.currentSuite = rootSuite; + + // Run file within currentSuite context + await (async function () { + const previousSuite = onyxGlobalContext.currentSuite; + onyxGlobalContext.currentSuite = rootSuite; + + try { + await import(pathToFileURL(file).href); + } finally { + onyxGlobalContext.currentSuite = previousSuite; + } + })(); + } + + // Run all tests + await rootSuite.run(); + + // Collect and report results + const results = rootSuite.getResults(); + + // reporting + let total = 0, + passed = 0, + failed = 0; + + for (const r of results) { + total++; + if (r.status === "pass") { + passed++; + console.log(chalk.green("✅"), r.description, `(${r.durationMs}ms)`); + } else { + failed++; + console.log(chalk.red("❌"), r.description, `(${r.durationMs}ms)`); + if (r.error) console.error(chalk.red(r.error)); + } + } + + console.log( + chalk.bold(`\nTotal: ${total}, Passed: ${passed}, Failed: ${failed}`), + ); +} + +export { runTestsCLI }; diff --git a/packages/core/src/suite.ts b/packages/core/src/suite.ts new file mode 100644 index 0000000..2365980 --- /dev/null +++ b/packages/core/src/suite.ts @@ -0,0 +1,125 @@ +import { onyxGlobalContext } from "./context"; +import { Test } from "./test"; + +import type { PromisableFn, TaskStatus } from "./types"; + +interface SuiteTask { + description: string; + parent?: Suite; + suites: Suite[]; + tests: Test[]; + + addSuite(suite: Suite): void; + addTest(test: Test): void; + + run(): Promise; +} + +class Suite implements SuiteTask { + description: string; + parent?: Suite; + root: boolean = false; + suites: Suite[] = []; + tests: Test[] = []; + + // hooks + beforeAllHooks: PromisableFn[] = []; + afterAllHooks: PromisableFn[] = []; + beforeEachHooks: PromisableFn[] = []; + afterEachHooks: PromisableFn[] = []; + + constructor(description: string, parent?: Suite) { + this.description = description; + this.parent = parent; + } + + addSuite(suite: Suite) { + this.suites.push(suite); + } + + addTest(test: Test) { + this.tests.push(test); + } + + async run() { + for (const hook of this.beforeAllHooks) { + await hook(); + } + + for (const test of this.tests) { + for (const hook of this.beforeEachHooks) { + await hook(); + } + + await test.run(); + + for (const hook of this.afterEachHooks) { + await hook(); + } + } + + for (const childSuite of this.suites) { + await childSuite.run(); + } + + for (const afterAllHook of this.afterAllHooks) { + await afterAllHook(); + } + } + + getFullDescription(): string { + if (this.parent && !this.parent.root) { + return `${this.parent.getFullDescription()} -> ${this.description}`; + } + return this.description; + } + + reset() { + this.tests = []; + this.suites = []; + this.beforeAllHooks = []; + this.afterAllHooks = []; + this.beforeEachHooks = []; + this.afterEachHooks = []; + } + + getResults(): { + description: string; + status: TaskStatus; + error?: Error; + durationMs: number; + }[] { + let results: Array<{ + description: string; + status: TaskStatus; + error?: Error; + durationMs: number; + }> = []; + + for (const test of this.tests) { + results.push({ + description: `${this.getFullDescription()} > ${test.description}`, + status: test.status, + error: test.error, + durationMs: test.durationMs ?? 0, + }); + } + + for (const child of this.suites) + results = results.concat(child.getResults()); + return results; + } +} + +export const rootSuite = new Suite("root"); + +export function getCurrentSuite() { + return onyxGlobalContext.currentSuite || rootSuite; +} + +export function clearContext() { + rootSuite.reset(); + onyxGlobalContext.currentSuite = rootSuite; +} + +export { Suite }; diff --git a/packages/core/src/test.ts b/packages/core/src/test.ts new file mode 100644 index 0000000..f9187b2 --- /dev/null +++ b/packages/core/src/test.ts @@ -0,0 +1,46 @@ +import { TaskStatus, type PromisableFn } from "./types"; + +interface TestTask { + description: string; + fn: PromisableFn; + result?: TestResult; + run(): Promise; +} + +interface TestResult { + status: Extract; + error?: Error; + durationMs?: number; +} + +class Test implements TestTask { + description: string; + durationMs: number = 0; + fn: PromisableFn; + status: TaskStatus = TaskStatus.Pending; + + error?: Error; + + constructor(description: string, fn: PromisableFn) { + this.description = description; + this.fn = fn; + } + + async run() { + const start = performance.now(); + + try { + this.status = TaskStatus.Running; + await this.fn(); + + this.status = TaskStatus.Pass; + } catch (error) { + this.error = error instanceof Error ? error : new Error(String(error)); + this.status = TaskStatus.Fail; + } finally { + this.durationMs = performance.now() - start; + } + } +} + +export { Test, type TestResult, type TestTask, TaskStatus }; diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts new file mode 100644 index 0000000..01840b7 --- /dev/null +++ b/packages/core/src/types.ts @@ -0,0 +1,15 @@ +type Promisable = Promise | T; +type PromisableFn = () => Promisable; + +enum TaskStatus { + Pending = "pending", + Running = "running", + Pass = "pass", + Fail = "fail", + Only = "only", + Skipped = "skipped", + Todo = "todo", +} + +export type { Promisable, PromisableFn }; +export { TaskStatus }; diff --git a/packages/core/src/utils/deepEqual.ts b/packages/core/src/utils/deepEqual.ts new file mode 100644 index 0000000..75e3c9a --- /dev/null +++ b/packages/core/src/utils/deepEqual.ts @@ -0,0 +1,132 @@ +function isTypedArray( + obj: unknown, +): obj is + | Uint8Array + | Int8Array + | Uint16Array + | Int16Array + | Uint32Array + | Int32Array + | Float32Array + | Float64Array { + return ArrayBuffer.isView(obj) && !(obj instanceof DataView); +} + +function isObject(obj: unknown): obj is Record { + return typeof obj === "object" && obj !== null; +} + +function isIndexable(obj: unknown): obj is Record { + return typeof obj === "object" && obj !== null; +} + +export function deepEqual(a: unknown, b: unknown): boolean { + if (a === b) return true; + if (a !== a && b !== b) return true; // NaN + + if (!isObject(a) || !isObject(b)) return false; + + const seen = new WeakMap(); + const stack: Array<[unknown, unknown]> = [[a, b]]; + + while (stack.length) { + const [x, y] = stack.pop()!; + + if (x === y) continue; + if (x !== x && y !== y) continue; // NaN + + if (!isObject(x) || !isObject(y)) return false; + + if (seen.has(x)) { + if (seen.get(x) !== y) return false; + continue; + } + seen.set(x, y); + + // Fast path for arrays + if (Array.isArray(x) && Array.isArray(y)) { + if (x.length !== y.length) return false; + for (let i = 0; i < x.length; i++) stack.push([x[i], y[i]]); + + continue; + } + + // Typed arrays + if (isTypedArray(x) && isTypedArray(y)) { + if (x.constructor !== y.constructor || x.length !== y.length) + return false; + for (let i = 0; i < x.length; i++) if (x[i] !== y[i]) return false; + + continue; + } + + // Dates + if (x instanceof Date && y instanceof Date) { + if (x.getTime() !== y.getTime()) return false; + + continue; + } + + // RegExps + if (x instanceof RegExp && y instanceof RegExp) { + if (x.source !== y.source || x.flags !== y.flags) return false; + + continue; + } + + // Sets + if (x instanceof Set && y instanceof Set) { + if (x.size !== y.size) return false; + + const yItems = Array.from(y); + + outer: for (const xv of x) { + for (let i = 0; i < yItems.length; i++) { + if (deepEqual(xv, yItems[i])) { + yItems.splice(i, 1); + continue outer; + } + } + + return false; + } + + continue; + } + + // Maps + if (x instanceof Map && y instanceof Map) { + if (x.size !== y.size) return false; + + const yEntries = Array.from(y.entries()); + + outer: for (const [xk, xv] of x.entries()) { + for (let i = 0; i < yEntries.length; i++) { + const [yk, yv] = yEntries[i]; + + if (deepEqual(xk, yk) && deepEqual(xv, yv)) { + yEntries.splice(i, 1); + continue outer; + } + } + return false; + } + continue; + } + + // Plain objects + const xKeys = Object.keys(x); + const yKeys = Object.keys(y); + + if (xKeys.length !== yKeys.length) return false; + + if (isIndexable(x) && isIndexable(y)) { + for (let i = 0; i < xKeys.length; i++) { + if (!Object.prototype.hasOwnProperty.call(y, xKeys[i])) return false; + stack.push([x[xKeys[i]], y[xKeys[i]]]); + } + } + } + + return true; +} diff --git a/packages/core/src/utils/defineConfig.ts b/packages/core/src/utils/defineConfig.ts new file mode 100644 index 0000000..f0d585c --- /dev/null +++ b/packages/core/src/utils/defineConfig.ts @@ -0,0 +1,14 @@ +interface OnyxConfigOptions { + testDir?: string; + rootDir?: string; + timeoutMs?: number; + bail?: boolean; + includes?: string[]; + excludes?: string[]; +} + +function defineConfig(options: OnyxConfigOptions): OnyxConfigOptions { + return options; +} + +export { defineConfig, type OnyxConfigOptions }; diff --git a/packages/core/test/index.test.ts b/packages/core/test/index.test.ts deleted file mode 100644 index 91aa0c4..0000000 --- a/packages/core/test/index.test.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { expect, test } from "vitest"; - -test("3 to equal 3", () => { - expect(3).toBe(3); -}); diff --git a/packages/core/test/test.spec.ts b/packages/core/test/test.spec.ts new file mode 100644 index 0000000..7d32275 --- /dev/null +++ b/packages/core/test/test.spec.ts @@ -0,0 +1,59 @@ +import { describe, it, expect, beforeEach } from "@onyxjs/core"; + +describe("Sample Test Suite", () => { + let value: number = 0; + + beforeEach(() => { + value = 42; + }); + + it("should pass this test", () => { + expect(1 + 1).not.toBe(value); + }); + + it("should have value set to 42", () => { + expect(value).toBe(42); + }); +}); + +describe("Failing Test Suite", () => { + it("should fail this test", () => { + expect(1 + 1).toBe(3); + }); +}); + +describe("toStrictEqual", () => { + it("should correctly compare complex objects", () => { + const obj1 = { + name: "Test", + data: [1, 2, 3], + nested: { + flag: true, + regex: /test/i, + }, + map: new Map([ + ["key1", "value1"], + ["key2", "value2"], + ]), + set: new Set([1, 2, 3]), + typedArray: new Uint8Array([1, 2, 3]), + }; + + const obj2 = { + name: "Test", + data: [1, 2, 3], + nested: { + flag: true, + regex: /test/i, + }, + map: new Map([ + ["key1", "value1"], + ["key2", "value2"], + ]), + set: new Set([1, 2, 3]), + typedArray: new Uint8Array([1, 2, 3]), + }; + + expect(obj1).toStrictEqual(obj2); + }); +}); diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json index 10a78f1..19784f1 100644 --- a/packages/core/tsconfig.build.json +++ b/packages/core/tsconfig.build.json @@ -2,7 +2,7 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { - "outDir": "./dist" + "outDir": "./dist", }, "include": [ diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts deleted file mode 100644 index 9c39f0a..0000000 --- a/packages/core/vitest.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineProject } from "vitest/config"; - -export default defineProject({ - root: ".", - test: { - name: "core", - environment: "node", - include: ["test/**/*.test.{ts,tsx}"], - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e859660..06a3b14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,12 @@ importers: '@eslint/js': specifier: ~9.38.0 version: 9.38.0 - '@vitest/coverage-v8': - specifier: ^4.0.9 - version: 4.0.9(vitest@4.0.9(yaml@2.8.1)) + '@types/node': + specifier: ^24.10.1 + version: 24.10.1 + esbuild: + specifier: ^0.27.0 + version: 0.27.0 eslint: specifier: ~9.38.0 version: 9.38.0 @@ -31,7 +34,7 @@ importers: version: 9.1.7 lerna: specifier: ^9.0.1 - version: 9.0.1 + version: 9.0.1(@types/node@24.10.1) prettier: specifier: ~3.6.0 version: 3.6.2 @@ -41,12 +44,18 @@ importers: typescript-eslint: specifier: ~8.46.0 version: 8.46.4(eslint@9.38.0)(typescript@5.9.3) - vitest: - specifier: ^4.0.9 - version: 4.0.9(yaml@2.8.1) packages/core: devDependencies: + chalk: + specifier: ^5.6.2 + version: 5.6.2 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@24.10.1)(typescript@5.9.3) + tsc-esm-fix: + specifier: ^3.1.2 + version: 3.1.2 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -57,26 +66,13 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} - engines: {node: '>=18'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} '@emnapi/core@1.7.1': resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} @@ -87,158 +83,158 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + '@esbuild/aix-ppc64@0.27.0': + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/android-arm64@0.27.0': + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/android-arm@0.27.0': + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + '@esbuild/android-x64@0.27.0': + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + '@esbuild/darwin-arm64@0.27.0': + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + '@esbuild/darwin-x64@0.27.0': + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + '@esbuild/freebsd-arm64@0.27.0': + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + '@esbuild/freebsd-x64@0.27.0': + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + '@esbuild/linux-arm64@0.27.0': + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + '@esbuild/linux-arm@0.27.0': + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + '@esbuild/linux-ia32@0.27.0': + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + '@esbuild/linux-loong64@0.27.0': + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + '@esbuild/linux-mips64el@0.27.0': + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + '@esbuild/linux-ppc64@0.27.0': + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + '@esbuild/linux-riscv64@0.27.0': + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + '@esbuild/linux-s390x@0.27.0': + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + '@esbuild/linux-x64@0.27.0': + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + '@esbuild/netbsd-arm64@0.27.0': + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + '@esbuild/netbsd-x64@0.27.0': + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + '@esbuild/openbsd-arm64@0.27.0': + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + '@esbuild/openbsd-x64@0.27.0': + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + '@esbuild/openharmony-arm64@0.27.0': + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + '@esbuild/sunos-x64@0.27.0': + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + '@esbuild/win32-arm64@0.27.0': + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + '@esbuild/win32-ia32@0.27.0': + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + '@esbuild/win32-x64@0.27.0': + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -477,8 +473,8 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@lerna/create@9.0.1': resolution: {integrity: sha512-xkZhQ+d7IsLzL5+1G+rKtH3b9aKRyBQ9yaz1VwPTfkD2nUAyaco97BRN9YRJgJrSHY/SI265RaD1D2rt00Jjkg==} @@ -700,116 +696,6 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@rollup/rollup-android-arm-eabi@4.53.2': - resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.53.2': - resolution: {integrity: sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.53.2': - resolution: {integrity: sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.53.2': - resolution: {integrity: sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.53.2': - resolution: {integrity: sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.53.2': - resolution: {integrity: sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - resolution: {integrity: sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - resolution: {integrity: sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.53.2': - resolution: {integrity: sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.53.2': - resolution: {integrity: sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loong64-gnu@4.53.2': - resolution: {integrity: sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - resolution: {integrity: sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - resolution: {integrity: sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.53.2': - resolution: {integrity: sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.53.2': - resolution: {integrity: sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.53.2': - resolution: {integrity: sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.53.2': - resolution: {integrity: sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-openharmony-arm64@4.53.2': - resolution: {integrity: sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.53.2': - resolution: {integrity: sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.53.2': - resolution: {integrity: sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.53.2': - resolution: {integrity: sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.53.2': - resolution: {integrity: sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==} - cpu: [x64] - os: [win32] - '@sigstore/bundle@4.0.0': resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} engines: {node: ^20.17.0 || >=22.9.0} @@ -837,8 +723,21 @@ packages: '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@topoconfig/extends@0.16.2': + resolution: {integrity: sha512-sTF+qpWakr5jf1Hn/kkFSi833xPW15s/loMAiKSYSSVv4vDonxf6hwCGzMXjLq+7HZoaK6BgaV72wXr1eY7FcQ==} + hasBin: true + + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} '@tufjs/canonical-json@2.0.0': resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} @@ -851,12 +750,6 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -869,6 +762,9 @@ packages: '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -931,44 +827,6 @@ packages: resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/coverage-v8@4.0.9': - resolution: {integrity: sha512-70oyhP+Q0HlWBIeGSP74YBw5KSjYhNgSCQjvmuQFciMqnyF36WL2cIkcT7XD85G4JPmBQitEMUsx+XMFv2AzQA==} - peerDependencies: - '@vitest/browser': 4.0.9 - vitest: 4.0.9 - peerDependenciesMeta: - '@vitest/browser': - optional: true - - '@vitest/expect@4.0.9': - resolution: {integrity: sha512-C2vyXf5/Jfj1vl4DQYxjib3jzyuswMi/KHHVN2z+H4v16hdJ7jMZ0OGe3uOVIt6LyJsAofDdaJNIFEpQcrSTFw==} - - '@vitest/mocker@4.0.9': - resolution: {integrity: sha512-PUyaowQFHW+9FKb4dsvvBM4o025rWMlEDXdWRxIOilGaHREYTi5Q2Rt9VCgXgPy/hHZu1LeuXtrA/GdzOatP2g==} - peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@4.0.9': - resolution: {integrity: sha512-Hor0IBTwEi/uZqB7pvGepyElaM8J75pYjrrqbC8ZYMB9/4n5QA63KC15xhT+sqHpdGWfdnPo96E8lQUxs2YzSQ==} - - '@vitest/runner@4.0.9': - resolution: {integrity: sha512-aF77tsXdEvIJRkj9uJZnHtovsVIx22Ambft9HudC+XuG/on1NY/bf5dlDti1N35eJT+QZLb4RF/5dTIG18s98w==} - - '@vitest/snapshot@4.0.9': - resolution: {integrity: sha512-r1qR4oYstPbnOjg0Vgd3E8ADJbi4ditCzqr+Z9foUrRhIy778BleNyZMeAJ2EjV+r4ASAaDsdciC9ryMy8xMMg==} - - '@vitest/spy@4.0.9': - resolution: {integrity: sha512-J9Ttsq0hDXmxmT8CUOWUr1cqqAj2FJRGTdyEjSR+NjoOGKEqkEWj+09yC0HhI8t1W6t4Ctqawl1onHgipJve1A==} - - '@vitest/utils@4.0.9': - resolution: {integrity: sha512-cEol6ygTzY4rUPvNZM19sDf7zGa35IYTm9wfzkHoT/f5jX10IOY7QleWSOh5T0e3I3WVozwK5Asom79qW8DiuQ==} - '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -993,6 +851,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1039,6 +901,9 @@ packages: aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1064,13 +929,6 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - ast-v8-to-istanbul@0.3.8: - resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} - async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -1140,10 +998,6 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} - engines: {node: '>=18'} - chalk@4.1.0: resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} engines: {node: '>=10'} @@ -1152,6 +1006,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -1284,6 +1142,9 @@ packages: typescript: optional: true + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1342,10 +1203,17 @@ packages: deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + depseek@0.4.3: + resolution: {integrity: sha512-0Ex/Uoz9Y9oipbqvgSc7FoV2q4GTDGORkg8TGgM9Pd3RyvRzrDYScKplWiqHU7WqckbKN5kukqD0opEayu2bXg==} + detect-indent@5.0.0: resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} engines: {node: '>=4'} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -1409,9 +1277,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1420,8 +1285,8 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} engines: {node: '>=18'} hasBin: true @@ -1500,9 +1365,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1514,10 +1376,6 @@ packages: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} - engines: {node: '>=12.0.0'} - exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} @@ -1625,11 +1483,6 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1763,9 +1616,6 @@ packages: resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} engines: {node: ^20.17.0 || >=22.9.0} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -1930,22 +1780,6 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -1965,9 +1799,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -2102,12 +1933,6 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - - magicast@0.5.1: - resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} - make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -2116,6 +1941,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-fetch-happen@14.0.3: resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2264,11 +2092,6 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2512,9 +2335,6 @@ packages: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2550,10 +2370,6 @@ packages: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2701,11 +2517,6 @@ packages: engines: {node: '>=14'} hasBin: true - rollup@4.53.2: - resolution: {integrity: sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - run-async@4.0.6: resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==} engines: {node: '>=0.12.0'} @@ -2750,9 +2561,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2784,10 +2592,6 @@ packages: resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} engines: {node: '>=4'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -2821,12 +2625,6 @@ packages: resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} engines: {node: ^20.17.0 || >=22.9.0} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2907,12 +2705,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} @@ -2921,10 +2713,6 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinyrainbow@3.0.3: - resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} - engines: {node: '>=14.0.0'} - tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -2951,6 +2739,25 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsc-esm-fix@3.1.2: + resolution: {integrity: sha512-1/OpZssMcEp2ae6DyZV+yvDviofuCdDf7dEWEaBvm/ac8vtS04lFyl0LVs8LQE56vjKHytgzVjPIL9udM4QuNg==} + engines: {node: '>=18.0.0'} + hasBin: true + tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -2982,6 +2789,9 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-flag@3.0.0: + resolution: {integrity: sha512-3YaYwMseXCAhBB14RXW5cRQfJQlEknS6i4C8fCfeUdS3ihG9EdccdR9kt3vP73ZdeTGmPb4bZtkDn5XMIn1DLA==} + typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -3002,6 +2812,9 @@ packages: engines: {node: '>=0.8.0'} hasBin: true + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + unique-filename@4.0.0: resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -3031,6 +2844,9 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3038,80 +2854,6 @@ packages: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} - vite@7.2.2: - resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vitest@4.0.9: - resolution: {integrity: sha512-E0Ja2AX4th+CG33yAFRC+d1wFx2pzU5r6HtG6LiPSE04flaE0qB6YyjSw9ZcpJAtVPfsvZGtJlKWZpuW7EHRxg==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.9 - '@vitest/browser-preview': 4.0.9 - '@vitest/browser-webdriverio': 4.0.9 - '@vitest/ui': 4.0.9 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/debug': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - walk-up-path@4.0.0: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} @@ -3134,11 +2876,6 @@ packages: engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -3219,6 +2956,10 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -3235,20 +2976,11 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.5 - - '@babel/types@7.28.5': + '@cspotcode/source-map-support@0.8.1': dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@bcoe/v8-coverage@1.0.2': {} + '@jridgewell/trace-mapping': 0.3.9 '@emnapi/core@1.7.1': dependencies: @@ -3263,82 +2995,82 @@ snapshots: dependencies: tslib: 2.8.1 - '@esbuild/aix-ppc64@0.25.12': + '@esbuild/aix-ppc64@0.27.0': optional: true - '@esbuild/android-arm64@0.25.12': + '@esbuild/android-arm64@0.27.0': optional: true - '@esbuild/android-arm@0.25.12': + '@esbuild/android-arm@0.27.0': optional: true - '@esbuild/android-x64@0.25.12': + '@esbuild/android-x64@0.27.0': optional: true - '@esbuild/darwin-arm64@0.25.12': + '@esbuild/darwin-arm64@0.27.0': optional: true - '@esbuild/darwin-x64@0.25.12': + '@esbuild/darwin-x64@0.27.0': optional: true - '@esbuild/freebsd-arm64@0.25.12': + '@esbuild/freebsd-arm64@0.27.0': optional: true - '@esbuild/freebsd-x64@0.25.12': + '@esbuild/freebsd-x64@0.27.0': optional: true - '@esbuild/linux-arm64@0.25.12': + '@esbuild/linux-arm64@0.27.0': optional: true - '@esbuild/linux-arm@0.25.12': + '@esbuild/linux-arm@0.27.0': optional: true - '@esbuild/linux-ia32@0.25.12': + '@esbuild/linux-ia32@0.27.0': optional: true - '@esbuild/linux-loong64@0.25.12': + '@esbuild/linux-loong64@0.27.0': optional: true - '@esbuild/linux-mips64el@0.25.12': + '@esbuild/linux-mips64el@0.27.0': optional: true - '@esbuild/linux-ppc64@0.25.12': + '@esbuild/linux-ppc64@0.27.0': optional: true - '@esbuild/linux-riscv64@0.25.12': + '@esbuild/linux-riscv64@0.27.0': optional: true - '@esbuild/linux-s390x@0.25.12': + '@esbuild/linux-s390x@0.27.0': optional: true - '@esbuild/linux-x64@0.25.12': + '@esbuild/linux-x64@0.27.0': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@esbuild/netbsd-arm64@0.27.0': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@esbuild/netbsd-x64@0.27.0': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@esbuild/openbsd-arm64@0.27.0': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@esbuild/openbsd-x64@0.27.0': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@esbuild/openharmony-arm64@0.27.0': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/sunos-x64@0.27.0': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/win32-arm64@0.27.0': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/win32-ia32@0.27.0': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-x64@0.27.0': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)': @@ -3406,100 +3138,128 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.2': + '@inquirer/checkbox@4.3.2(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2 + '@inquirer/core': 10.3.2(@types/node@24.10.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10 + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/confirm@5.1.21': + '@inquirer/confirm@5.1.21(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/core@10.3.2': + '@inquirer/core@10.3.2(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10 + '@inquirer/type': 3.0.10(@types/node@24.10.1) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/editor@4.2.23': + '@inquirer/editor@4.2.23(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 - '@inquirer/external-editor': 1.0.3 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/expand@4.0.23': + '@inquirer/expand@4.0.23(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/external-editor@1.0.3': + '@inquirer/external-editor@1.0.3(@types/node@24.10.1)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 24.10.1 '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.3.1': + '@inquirer/input@4.3.1(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/number@3.0.23': + '@inquirer/number@3.0.23(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/password@4.0.23': + '@inquirer/password@4.0.23(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2 - '@inquirer/type': 3.0.10 - - '@inquirer/prompts@7.10.1': - dependencies: - '@inquirer/checkbox': 4.3.2 - '@inquirer/confirm': 5.1.21 - '@inquirer/editor': 4.2.23 - '@inquirer/expand': 4.0.23 - '@inquirer/input': 4.3.1 - '@inquirer/number': 3.0.23 - '@inquirer/password': 4.0.23 - '@inquirer/rawlist': 4.1.11 - '@inquirer/search': 3.2.2 - '@inquirer/select': 4.4.2 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 + + '@inquirer/prompts@7.10.1(@types/node@24.10.1)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@24.10.1) + '@inquirer/confirm': 5.1.21(@types/node@24.10.1) + '@inquirer/editor': 4.2.23(@types/node@24.10.1) + '@inquirer/expand': 4.0.23(@types/node@24.10.1) + '@inquirer/input': 4.3.1(@types/node@24.10.1) + '@inquirer/number': 3.0.23(@types/node@24.10.1) + '@inquirer/password': 4.0.23(@types/node@24.10.1) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.1) + '@inquirer/search': 3.2.2(@types/node@24.10.1) + '@inquirer/select': 4.4.2(@types/node@24.10.1) + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/rawlist@4.1.11': + '@inquirer/rawlist@4.1.11(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/search@3.2.2': + '@inquirer/search@3.2.2(@types/node@24.10.1)': dependencies: - '@inquirer/core': 10.3.2 + '@inquirer/core': 10.3.2(@types/node@24.10.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10 + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/select@4.4.2': + '@inquirer/select@4.4.2(@types/node@24.10.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2 + '@inquirer/core': 10.3.2(@types/node@24.10.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10 + '@inquirer/type': 3.0.10(@types/node@24.10.1) yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 24.10.1 - '@inquirer/type@3.0.10': {} + '@inquirer/type@3.0.10(@types/node@24.10.1)': + optionalDependencies: + '@types/node': 24.10.1 '@isaacs/balanced-match@4.0.1': {} @@ -3534,12 +3294,12 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.31': + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lerna/create@9.0.1(typescript@5.9.3)': + '@lerna/create@9.0.1(@types/node@24.10.1)(typescript@5.9.3)': dependencies: '@npmcli/arborist': 9.1.6 '@npmcli/package-json': 7.0.2 @@ -3566,7 +3326,7 @@ snapshots: has-unicode: 2.0.1 ini: 1.3.8 init-package-json: 8.2.2 - inquirer: 12.9.6 + inquirer: 12.9.6(@types/node@24.10.1) is-ci: 3.0.1 is-stream: 2.0.0 js-yaml: 4.1.0 @@ -3900,72 +3660,6 @@ snapshots: '@pkgr/core@0.2.9': {} - '@rollup/rollup-android-arm-eabi@4.53.2': - optional: true - - '@rollup/rollup-android-arm64@4.53.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.53.2': - optional: true - - '@rollup/rollup-darwin-x64@4.53.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.53.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.53.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.53.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.53.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.53.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.53.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.53.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.53.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.53.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.53.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.53.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.53.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.53.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.53.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.53.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.53.2': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.53.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.53.2': - optional: true - '@sigstore/bundle@4.0.0': dependencies: '@sigstore/protobuf-specs': 0.5.0 @@ -4000,7 +3694,15 @@ snapshots: '@sinclair/typebox@0.34.41': {} - '@standard-schema/spec@1.0.0': {} + '@topoconfig/extends@0.16.2': {} + + '@tsconfig/node10@1.0.12': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} '@tufjs/canonical-json@2.0.0': {} @@ -4013,13 +3715,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@types/chai@5.2.3': - dependencies: - '@types/deep-eql': 4.0.2 - assertion-error: 2.0.1 - - '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.8': {} '@types/json-schema@7.0.15': {} @@ -4028,6 +3723,10 @@ snapshots: '@types/minimist@1.2.5': {} + '@types/node@24.10.1': + dependencies: + undici-types: 7.16.0 + '@types/normalize-package-data@2.4.4': {} '@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)': @@ -4123,62 +3822,6 @@ snapshots: '@typescript-eslint/types': 8.46.4 eslint-visitor-keys: 4.2.1 - '@vitest/coverage-v8@4.0.9(vitest@4.0.9(yaml@2.8.1))': - dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.9 - ast-v8-to-istanbul: 0.3.8 - debug: 4.4.3 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.2.0 - magicast: 0.5.1 - std-env: 3.10.0 - tinyrainbow: 3.0.3 - vitest: 4.0.9(yaml@2.8.1) - transitivePeerDependencies: - - supports-color - - '@vitest/expect@4.0.9': - dependencies: - '@standard-schema/spec': 1.0.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.0.9 - '@vitest/utils': 4.0.9 - chai: 6.2.1 - tinyrainbow: 3.0.3 - - '@vitest/mocker@4.0.9(vite@7.2.2(yaml@2.8.1))': - dependencies: - '@vitest/spy': 4.0.9 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 7.2.2(yaml@2.8.1) - - '@vitest/pretty-format@4.0.9': - dependencies: - tinyrainbow: 3.0.3 - - '@vitest/runner@4.0.9': - dependencies: - '@vitest/utils': 4.0.9 - pathe: 2.0.3 - - '@vitest/snapshot@4.0.9': - dependencies: - '@vitest/pretty-format': 4.0.9 - magic-string: 0.30.21 - pathe: 2.0.3 - - '@vitest/spy@4.0.9': {} - - '@vitest/utils@4.0.9': - dependencies: - '@vitest/pretty-format': 4.0.9 - tinyrainbow: 3.0.3 - '@yarnpkg/lockfile@1.1.0': {} '@yarnpkg/parsers@3.0.2': @@ -4201,6 +3844,10 @@ snapshots: dependencies: acorn: 8.15.0 + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 + acorn@8.15.0: {} add-stream@1.0.0: {} @@ -4235,6 +3882,8 @@ snapshots: aproba@2.0.0: {} + arg@4.1.3: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -4251,14 +3900,6 @@ snapshots: arrify@2.0.1: {} - assertion-error@2.0.1: {} - - ast-v8-to-istanbul@0.3.8: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - estree-walker: 3.0.3 - js-tokens: 9.0.1 - async@3.2.6: {} asynckit@0.4.0: {} @@ -4357,8 +3998,6 @@ snapshots: camelcase@5.3.1: {} - chai@6.2.1: {} - chalk@4.1.0: dependencies: ansi-styles: 4.3.0 @@ -4369,6 +4008,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + chardet@2.1.1: {} chownr@2.0.0: {} @@ -4505,6 +4146,8 @@ snapshots: optionalDependencies: typescript: 5.9.3 + create-require@1.1.1: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -4542,8 +4185,12 @@ snapshots: deprecation@2.3.1: {} + depseek@0.4.3: {} + detect-indent@5.0.0: {} + diff@4.0.2: {} + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -4597,8 +4244,6 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} - es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -4610,34 +4255,34 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - esbuild@0.25.12: + esbuild@0.27.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 + '@esbuild/aix-ppc64': 0.27.0 + '@esbuild/android-arm': 0.27.0 + '@esbuild/android-arm64': 0.27.0 + '@esbuild/android-x64': 0.27.0 + '@esbuild/darwin-arm64': 0.27.0 + '@esbuild/darwin-x64': 0.27.0 + '@esbuild/freebsd-arm64': 0.27.0 + '@esbuild/freebsd-x64': 0.27.0 + '@esbuild/linux-arm': 0.27.0 + '@esbuild/linux-arm64': 0.27.0 + '@esbuild/linux-ia32': 0.27.0 + '@esbuild/linux-loong64': 0.27.0 + '@esbuild/linux-mips64el': 0.27.0 + '@esbuild/linux-ppc64': 0.27.0 + '@esbuild/linux-riscv64': 0.27.0 + '@esbuild/linux-s390x': 0.27.0 + '@esbuild/linux-x64': 0.27.0 + '@esbuild/netbsd-arm64': 0.27.0 + '@esbuild/netbsd-x64': 0.27.0 + '@esbuild/openbsd-arm64': 0.27.0 + '@esbuild/openbsd-x64': 0.27.0 + '@esbuild/openharmony-arm64': 0.27.0 + '@esbuild/sunos-x64': 0.27.0 + '@esbuild/win32-arm64': 0.27.0 + '@esbuild/win32-ia32': 0.27.0 + '@esbuild/win32-x64': 0.27.0 escalade@3.2.0: {} @@ -4724,10 +4369,6 @@ snapshots: estraverse@5.3.0: {} - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.8 - esutils@2.0.3: {} eventemitter3@4.0.7: {} @@ -4744,8 +4385,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expect-type@1.2.2: {} - exponential-backoff@3.1.3: {} fast-deep-equal@3.1.3: {} @@ -4848,9 +4487,6 @@ snapshots: fs.realpath@1.0.0: {} - fsevents@2.3.3: - optional: true - function-bind@1.1.2: {} get-caller-file@2.0.5: {} @@ -4995,8 +4631,6 @@ snapshots: dependencies: lru-cache: 11.2.2 - html-escaper@2.0.2: {} - http-cache-semantics@4.2.0: {} http-proxy-agent@7.0.2: @@ -5068,15 +4702,17 @@ snapshots: validate-npm-package-license: 3.0.4 validate-npm-package-name: 6.0.2 - inquirer@12.9.6: + inquirer@12.9.6(@types/node@24.10.1): dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2 - '@inquirer/prompts': 7.10.1 - '@inquirer/type': 3.0.10 + '@inquirer/core': 10.3.2(@types/node@24.10.1) + '@inquirer/prompts': 7.10.1(@types/node@24.10.1) + '@inquirer/type': 3.0.10(@types/node@24.10.1) mute-stream: 2.0.0 run-async: 4.0.6 rxjs: 7.8.2 + optionalDependencies: + '@types/node': 24.10.1 ip-address@10.1.0: {} @@ -5130,27 +4766,6 @@ snapshots: isexe@3.1.1: {} - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.2.0: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -5176,8 +4791,6 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -5231,9 +4844,9 @@ snapshots: kind-of@6.0.3: {} - lerna@9.0.1: + lerna@9.0.1(@types/node@24.10.1): dependencies: - '@lerna/create': 9.0.1(typescript@5.9.3) + '@lerna/create': 9.0.1(@types/node@24.10.1)(typescript@5.9.3) '@npmcli/arborist': 9.1.6 '@npmcli/package-json': 7.0.2 '@npmcli/run-script': 10.0.2 @@ -5263,7 +4876,7 @@ snapshots: import-local: 3.1.0 ini: 1.3.8 init-package-json: 8.2.2 - inquirer: 12.9.6 + inquirer: 12.9.6(@types/node@24.10.1) is-ci: 3.0.1 is-stream: 2.0.0 jest-diff: 30.2.0 @@ -5391,16 +5004,6 @@ snapshots: dependencies: yallist: 4.0.0 - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - magicast@0.5.1: - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - source-map-js: 1.2.1 - make-dir@2.1.0: dependencies: pify: 4.0.1 @@ -5410,6 +5013,8 @@ snapshots: dependencies: semver: 7.7.3 + make-error@1.3.6: {} + make-fetch-happen@14.0.3: dependencies: '@npmcli/agent': 3.0.0 @@ -5576,8 +5181,6 @@ snapshots: mute-stream@2.0.0: {} - nanoid@3.3.11: {} - natural-compare@1.4.0: {} negotiator@1.0.0: {} @@ -5927,8 +5530,6 @@ snapshots: dependencies: pify: 3.0.0 - pathe@2.0.3: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5952,12 +5553,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -6089,34 +5684,6 @@ snapshots: dependencies: glob: 9.3.5 - rollup@4.53.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.2 - '@rollup/rollup-android-arm64': 4.53.2 - '@rollup/rollup-darwin-arm64': 4.53.2 - '@rollup/rollup-darwin-x64': 4.53.2 - '@rollup/rollup-freebsd-arm64': 4.53.2 - '@rollup/rollup-freebsd-x64': 4.53.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.2 - '@rollup/rollup-linux-arm-musleabihf': 4.53.2 - '@rollup/rollup-linux-arm64-gnu': 4.53.2 - '@rollup/rollup-linux-arm64-musl': 4.53.2 - '@rollup/rollup-linux-loong64-gnu': 4.53.2 - '@rollup/rollup-linux-ppc64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-gnu': 4.53.2 - '@rollup/rollup-linux-riscv64-musl': 4.53.2 - '@rollup/rollup-linux-s390x-gnu': 4.53.2 - '@rollup/rollup-linux-x64-gnu': 4.53.2 - '@rollup/rollup-linux-x64-musl': 4.53.2 - '@rollup/rollup-openharmony-arm64': 4.53.2 - '@rollup/rollup-win32-arm64-msvc': 4.53.2 - '@rollup/rollup-win32-ia32-msvc': 4.53.2 - '@rollup/rollup-win32-x64-gnu': 4.53.2 - '@rollup/rollup-win32-x64-msvc': 4.53.2 - fsevents: 2.3.3 - run-async@4.0.6: {} run-parallel@1.2.0: @@ -6147,8 +5714,6 @@ snapshots: shebang-regex@3.0.0: {} - siginfo@2.0.0: {} - signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -6185,8 +5750,6 @@ snapshots: dependencies: is-plain-obj: 1.1.0 - source-map-js@1.2.1: {} - source-map@0.6.1: {} spdx-correct@3.2.0: @@ -6221,10 +5784,6 @@ snapshots: dependencies: minipass: 7.1.2 - stackback@0.0.2: {} - - std-env@3.10.0: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -6311,10 +5870,6 @@ snapshots: through@2.3.8: {} - tinybench@2.9.0: {} - - tinyexec@0.3.2: {} - tinyglobby@0.2.12: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -6325,8 +5880,6 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinyrainbow@3.0.3: {} - tmp@0.2.5: {} to-regex-range@5.0.1: @@ -6343,6 +5896,33 @@ snapshots: dependencies: typescript: 5.9.3 + ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 24.10.1 + acorn: 8.15.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tsc-esm-fix@3.1.2: + dependencies: + '@topoconfig/extends': 0.16.2 + depseek: 0.4.3 + fast-glob: 3.3.3 + fs-extra: 11.3.2 + json5: 2.2.3 + type-flag: 3.0.0 + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -6371,6 +5951,8 @@ snapshots: type-fest@0.8.1: {} + type-flag@3.0.0: {} + typedarray@0.0.6: {} typescript-eslint@8.46.4(eslint@9.38.0)(typescript@5.9.3): @@ -6389,6 +5971,8 @@ snapshots: uglify-js@3.19.3: optional: true + undici-types@7.16.0: {} + unique-filename@4.0.0: dependencies: unique-slug: 5.0.0 @@ -6411,6 +5995,8 @@ snapshots: uuid@11.1.0: {} + v8-compile-cache-lib@3.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -6418,54 +6004,6 @@ snapshots: validate-npm-package-name@6.0.2: {} - vite@7.2.2(yaml@2.8.1): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.53.2 - tinyglobby: 0.2.15 - optionalDependencies: - fsevents: 2.3.3 - yaml: 2.8.1 - - vitest@4.0.9(yaml@2.8.1): - dependencies: - '@vitest/expect': 4.0.9 - '@vitest/mocker': 4.0.9(vite@7.2.2(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.9 - '@vitest/runner': 4.0.9 - '@vitest/snapshot': 4.0.9 - '@vitest/spy': 4.0.9 - '@vitest/utils': 4.0.9 - debug: 4.4.3 - es-module-lexer: 1.7.0 - expect-type: 1.2.2 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.10.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 7.2.2(yaml@2.8.1) - why-is-node-running: 2.3.0 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - walk-up-path@4.0.0: {} wcwidth@1.0.1: @@ -6484,11 +6022,6 @@ snapshots: dependencies: isexe: 3.1.1 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - wide-align@1.1.5: dependencies: string-width: 4.2.3 @@ -6582,6 +6115,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yn@3.1.1: {} + yocto-queue@0.1.0: {} yoctocolors-cjs@2.1.3: {} diff --git a/tsconfig.base.json b/tsconfig.base.json index c071b18..7fa6885 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,21 +1,33 @@ { "compilerOptions": { - "target": "ESNext", - "module": "commonjs", + "baseUrl": ".", + "target": "esnext", + "module": "esnext", + "lib": ["esnext"], + "moduleResolution": "node", "strict": true, - // "moduleResolution": "NodeNext", // Use NodeNext for better ESM support "resolveJsonModule": true, - "sourceMap": true, + // "sourceMap": true, "declaration": true, "declarationMap": true, "noEmitOnError": true, - "skipLibCheck": false, // Set to false to enable type checking of declaration files + "skipLibCheck": true, "esModuleInterop": true, - "types": [], - "jsx": "react", - "noEmit": false + "types": ["@types/node"], + "noEmit": false, + "strictNullChecks": true, + "skipDefaultLibCheck": true, + "paths": { + "@onyx/*": ["packages/*/src"] + }, + // "moduleDetection": "force", + // "isolatedModules": false, }, - "exclude": [ + "ts-node": { + // Tell ts-node CLI to install the --loader automatically, explained below + "esm": true + }, + "exclude": [ "node_modules", "dist" ] diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index b1518c7..0000000 --- a/vitest.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - projects: ["packages/*"], - reporters: ["json"], - coverage: { - provider: "v8", - include: ["packages/**/src/**/*.{ts}"], - }, - }, -});