diff --git a/example/pong/src/index.ts b/example/pong/src/index.ts index e853ee5..1b97b6c 100644 --- a/example/pong/src/index.ts +++ b/example/pong/src/index.ts @@ -31,7 +31,7 @@ export const main = async (options: IRunOptions) => { await app.init(options); - const ball = ecsLibrary.createEntity(); + const ball = ecsLibrary.spawnEntity(); ecsLibrary.addComponent(ball, new Velocity(0.04, 0)); ecsLibrary.addComponent(ball, new Position(0.5, 0)); ecsLibrary.addComponent(ball, new Bounce()); @@ -45,7 +45,7 @@ export const main = async (options: IRunOptions) => { ), ); - const bg = ecsLibrary.createEntity(); + const bg = ecsLibrary.spawnEntity(); ecsLibrary.addComponent( bg, new RectangleComponent( @@ -57,7 +57,7 @@ export const main = async (options: IRunOptions) => { ), ); - const topWall = ecsLibrary.createEntity(); + const topWall = ecsLibrary.spawnEntity(); ecsLibrary.addComponent( topWall, new RectangleComponent( @@ -69,7 +69,7 @@ export const main = async (options: IRunOptions) => { ecsLibrary.addComponent(topWall, new Position(-1.8, 0.91)); ecsLibrary.addComponent(topWall, new Hitbox(3.6, 0.1)); - const botWall = ecsLibrary.createEntity(); + const botWall = ecsLibrary.spawnEntity(); ecsLibrary.addComponent( botWall, new RectangleComponent( @@ -81,7 +81,7 @@ export const main = async (options: IRunOptions) => { ecsLibrary.addComponent(botWall, new Position(-1.8, -1)); ecsLibrary.addComponent(botWall, new Hitbox(3.6, 0.1)); - const player1 = ecsLibrary.createEntity(); + const player1 = ecsLibrary.spawnEntity(); ecsLibrary.addComponent(player1, new Position(-1.8, -0.3)); ecsLibrary.addComponent(player1, new Velocity(0, 0.1)); ecsLibrary.addComponent(player1, new Hitbox(0.1, 0.5)); @@ -95,7 +95,7 @@ export const main = async (options: IRunOptions) => { ), ); - const player2 = ecsLibrary.createEntity(); + const player2 = ecsLibrary.spawnEntity(); ecsLibrary.addComponent(player2, new Position(1.7, -0.3)); ecsLibrary.addComponent(player2, new Velocity(0, 0.1)); ecsLibrary.addComponent(player2, new Hitbox(0.1, 0.5)); diff --git a/package.json b/package.json index 5102cbd..f63bb8c 100644 --- a/package.json +++ b/package.json @@ -36,26 +36,27 @@ "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^22.13.10", - "eslint": "^9.22.0", + "@types/node": "^22.13.13", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", "husky": "^9.1.7", "lerna": "^8.2.1", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", + "taze": "^19.0.2", "typescript": "^5.8.2", - "typescript-eslint": "^8.26.0" + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, - "packageManager": "pnpm@10.6.2", + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/packages/asset-manager/package.json b/packages/asset-manager/package.json index d5082b1..d928238 100644 --- a/packages/asset-manager/package.json +++ b/packages/asset-manager/package.json @@ -38,27 +38,29 @@ "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/jest": "^29.5.14", - "@types/node": "^22.13.10", - "eslint": "^9.22.0", + "@types/node": "^22.13.13", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", "jest": "^29.7.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", - "ts-jest": "^29.2.6", + "taze": "^19.0.2", + "ts-jest": "^29.3.0", "typescript": "^5.8.2", - "typescript-eslint": "^8.26.0" + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/packages/common/package.json b/packages/common/package.json index c152718..f61d8a2 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -34,21 +34,23 @@ "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "eslint": "^9.22.0", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", - "typescript-eslint": "^8.26.0" + "taze": "^19.0.2", + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/packages/common/src/library/libraries/consts/library-options-default.const.ts b/packages/common/src/library/libraries/consts/library-options-default.const.ts new file mode 100644 index 0000000..01698c1 --- /dev/null +++ b/packages/common/src/library/libraries/consts/library-options-default.const.ts @@ -0,0 +1,7 @@ +import { type ILibraryOptions } from "../library.type"; + +export const DEFAULT_LIBRARY_OPTIONS: ILibraryOptions = { + dependencies: [], + runBefore: [], + runAfter: [], +}; diff --git a/packages/common/src/library/libraries/library.ts b/packages/common/src/library/libraries/library.ts index 744094a..0d65660 100644 --- a/packages/common/src/library/libraries/library.ts +++ b/packages/common/src/library/libraries/library.ts @@ -1,7 +1,28 @@ import { type ClearContext, type InitContext } from "../../context"; -import { type ILibrary } from "./library.type"; +import { RelationshipHandler } from "../relationship/relationship-handler"; +import { DEFAULT_LIBRARY_OPTIONS } from "./consts/library-options-default.const"; +import { type ILibrary, type ILibraryOptions } from "./library.type"; export abstract class Library implements ILibrary { + protected _relationship: RelationshipHandler; + + constructor(rawOptions?: Partial) { + const options = { + ...DEFAULT_LIBRARY_OPTIONS, + ...rawOptions, + }; + + this._relationship = new RelationshipHandler( + options.dependencies, + options.runBefore, + options.runAfter, + ); + } + + get relationship(): RelationshipHandler { + return this._relationship; + } + abstract get name(): string; // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/common/src/library/libraries/library.type.ts b/packages/common/src/library/libraries/library.type.ts index c9913bc..477040c 100644 --- a/packages/common/src/library/libraries/library.type.ts +++ b/packages/common/src/library/libraries/library.type.ts @@ -1,9 +1,18 @@ import { type ApplicationContext, type ClearContext } from "../../context"; +import { type RelationshipHandler } from "../relationship/relationship-handler"; export interface ILibrary { get name(): string; + get relationship(): RelationshipHandler; + init(context: ApplicationContext): Promise; clear(context: ClearContext): Promise; } + +export interface ILibraryOptions { + dependencies: symbol[]; + runBefore: symbol[]; + runAfter: symbol[]; +} diff --git a/packages/common/src/library/manager/handle/library.handle.ts b/packages/common/src/library/manager/handle/library.handle.ts index ee24361..f9fee46 100644 --- a/packages/common/src/library/manager/handle/library.handle.ts +++ b/packages/common/src/library/manager/handle/library.handle.ts @@ -1,5 +1,5 @@ import { type LibraryContext } from "../../../context"; -import { type ILibrary } from "../../libraries/library.type"; +import { type ILibrary } from "../../libraries"; export class LibraryHandle { private readonly _symbol: symbol; diff --git a/packages/common/src/library/manager/managers/library.manager.ts b/packages/common/src/library/manager/managers/library.manager.ts index 2aa8f01..7939a48 100644 --- a/packages/common/src/library/manager/managers/library.manager.ts +++ b/packages/common/src/library/manager/managers/library.manager.ts @@ -14,17 +14,17 @@ import { BaseLibraryManager } from "./base-library.manager"; export enum DefaultLibrariesEnum { ASSET_MANAGER, - INPUT, COMPONENT_SYSTEM, - NETWORK, GRAPHICS, + INPUT, + NETWORK, } const DEFAULT_LIBRARIES: { index: DefaultLibrariesEnum; sym: symbol }[] = [ { index: DefaultLibrariesEnum.ASSET_MANAGER, sym: ASSET_MANAGER_LIBRARY }, { index: DefaultLibrariesEnum.COMPONENT_SYSTEM, sym: COMPONENT_SYSTEM_LIBRARY }, - { index: DefaultLibrariesEnum.NETWORK, sym: NETWORK_LIBRARY }, { index: DefaultLibrariesEnum.GRAPHICS, sym: GRAPHICS_LIBRARY }, + { index: DefaultLibrariesEnum.NETWORK, sym: NETWORK_LIBRARY }, ]; export class LibraryManager extends BaseLibraryManager { diff --git a/packages/common/src/library/relationship/relationship-handler.ts b/packages/common/src/library/relationship/relationship-handler.ts new file mode 100644 index 0000000..4c5ae31 --- /dev/null +++ b/packages/common/src/library/relationship/relationship-handler.ts @@ -0,0 +1,30 @@ +export class RelationshipHandler { + private readonly _dependencies: symbol[]; + private readonly _runBefore: symbol[]; + private readonly _runAfter: symbol[]; + + /** + * Constructor for RelationshipHandler + * + * @param dependencies - Dependencies of the library + * @param runBefore - Libraries needed to run before this one + * @param runAfter - Libraries needed to run after this one + */ + constructor(dependencies: symbol[], runBefore: symbol[], runAfter: symbol[]) { + this._dependencies = dependencies; + this._runBefore = runBefore; + this._runAfter = runAfter; + } + + get dependencies(): symbol[] { + return this._dependencies; + } + + get runBefore(): symbol[] { + return this._runBefore; + } + + get runAfter(): symbol[] { + return this._runAfter; + } +} diff --git a/packages/core/package.json b/packages/core/package.json index 33895a6..75b55af 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -31,24 +31,31 @@ "taze": "taze major -w", "lint-staged": "lint-staged" }, + "dependencies": { + "@nanoforge/asset-manager": "workspace:^", + "@nanoforge/common": "workspace:^", + "@nanoforge/input": "workspace:^" + }, "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "eslint": "^9.22.0", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", - "typescript-eslint": "^8.26.0" + "taze": "^19.0.2", + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/packages/core/src/application/nanoforge-application.ts b/packages/core/src/application/nanoforge-application.ts index 4684380..0ab3b19 100644 --- a/packages/core/src/application/nanoforge-application.ts +++ b/packages/core/src/application/nanoforge-application.ts @@ -47,8 +47,6 @@ export abstract class NanoforgeApplication { } public run() { - this._core.run().then(() => { - console.info("Game ended successfully."); - }); + this._core.run(); } } diff --git a/packages/core/src/application/nanoforge-factory.ts b/packages/core/src/application/nanoforge-factory.ts index 84711a6..807ec2f 100644 --- a/packages/core/src/application/nanoforge-factory.ts +++ b/packages/core/src/application/nanoforge-factory.ts @@ -1,14 +1,22 @@ +import { AssetManagerLibrary } from "@nanoforge/asset-manager"; +import { InputLibrary } from "@nanoforge/input"; + import { type IApplicationOptions } from "./application-options.type"; import { NanoforgeClient } from "./nanoforge-client"; import { NanoforgeServer } from "./nanoforge-server"; class NanoforgeFactoryStatic { createClient(options?: Partial): NanoforgeClient { - return new NanoforgeClient(options); + const app = new NanoforgeClient(options); + app.useAssetManager(new AssetManagerLibrary()); + app.useInput(new InputLibrary()); + return app; } createServer(options?: Partial): NanoforgeServer { - return new NanoforgeServer(options); + const app = new NanoforgeServer(options); + app.useAssetManager(new AssetManagerLibrary()); + return app; } } diff --git a/packages/core/src/common/library/manager/library.manager.ts b/packages/core/src/common/library/manager/library.manager.ts index 8f6090e..b07e281 100644 --- a/packages/core/src/common/library/manager/library.manager.ts +++ b/packages/core/src/common/library/manager/library.manager.ts @@ -17,6 +17,7 @@ import { } from "@nanoforge/common"; import { EditableLibraryContext } from "../../context/contexts/library.editable-context"; +import { Relationship } from "../relationship-functions"; export class EditableLibraryManager extends LibraryManager { public set(sym: symbol, library: ILibrary) { @@ -58,11 +59,23 @@ export class EditableLibraryManager extends LibraryManager { this._set(DefaultLibrariesEnum.INPUT, INPUT_LIBRARY, library, new EditableLibraryContext()); } - public getLibraries(): LibraryHandle[] { + public getLibraries(): LibraryHandle[] { return this._libraries; } - public getRunnerLibraries(): LibraryHandle[] { + public getInitLibraries(): LibraryHandle[] { + return Relationship.getLibrariesByDependencies(this._libraries); + } + + public getExecutionLibraries(): LibraryHandle[] { + return Relationship.getLibrariesByRun(this._getRunnerLibraries()); + } + + public getClearLibraries(): LibraryHandle[] { + return Relationship.getLibrariesByDependencies(this._libraries, true); + } + + private _getRunnerLibraries(): LibraryHandle[] { return this._libraries.filter( (handle) => handle && typeof handle.library["run"] === "function", ) as LibraryHandle[]; diff --git a/packages/core/src/common/library/relationship-functions.ts b/packages/core/src/common/library/relationship-functions.ts new file mode 100644 index 0000000..1bf1332 --- /dev/null +++ b/packages/core/src/common/library/relationship-functions.ts @@ -0,0 +1,122 @@ +import { type ILibrary, type LibraryHandle } from "@nanoforge/common"; + +class RelationshipStatic { + getLibrariesByDependencies(libraries: LibraryHandle[], reverse: boolean = false) { + let response: LibraryHandle[] = []; + for (const library of libraries) { + if (!library) continue; + response = this._pushLibraryWithDependencies(library, response, [], libraries); + } + + if (reverse) return response.reverse(); + return response; + } + + getLibrariesByRun(libraries: LibraryHandle[]) { + let response: LibraryHandle[] = []; + const dependencies = new Map>( + libraries.map((library) => [library.symbol, new Set()]), + ); + + for (const handle of libraries) { + const key = handle.symbol; + + for (const before of handle.library.relationship.runBefore) { + this._pushToDependencies(key, before, dependencies); + } + for (const after of handle.library.relationship.runAfter) { + this._pushToDependencies(after, key, dependencies); + } + } + + for (const library of libraries) { + response = this._pushLibraryWithDependenciesRun( + library, + dependencies, + response, + [], + libraries, + ); + } + return response; + } + + private _pushToDependencies( + key: symbol, + value: symbol, + dependencies: Map>, + ): void { + let curr = dependencies.get(key); + if (!curr) curr = new Set(); + curr.add(value); + dependencies.set(key, curr); + } + + private _pushLibraryWithDependenciesRun( + handle: LibraryHandle, + dependencies: Map>, + response: LibraryHandle[], + cache: symbol[], + libraries: LibraryHandle[], + ): LibraryHandle[] { + const key = handle.symbol; + if (this._symbolIsInList(key, response)) return response; + + if (cache.includes(key)) throw new Error("Circular dependencies !"); + + cache.push(key); + + const deps = dependencies.get(key); + if (!deps) throw new Error("Dependencies not found"); + + for (const dep of deps) { + if (this._symbolIsInList(dep, response)) continue; + + const depHandle = libraries.find((lib) => lib?.symbol === dep) as LibraryHandle; + if (!depHandle) throw new Error(`Cannot find library ${dep.toString()}`); + + response = this._pushLibraryWithDependenciesRun( + depHandle, + dependencies, + response, + cache, + libraries, + ); + } + cache.pop(); + + response.push(handle); + return response; + } + + private _pushLibraryWithDependencies( + handle: LibraryHandle, + response: LibraryHandle[], + cache: symbol[], + libraries: LibraryHandle[], + ): LibraryHandle[] { + if (this._symbolIsInList(handle.symbol, response)) return response; + + if (cache.includes(handle.symbol)) throw new Error("Circular dependencies !"); + + cache.push(handle.symbol); + for (const dep of handle.library.relationship.dependencies) { + if (this._symbolIsInList(dep, response)) continue; + + const depHandle = libraries.find((lib) => lib?.symbol === dep) as LibraryHandle; + if (!depHandle) throw new Error(`Cannot find library ${dep.toString()}`); + + response = this._pushLibraryWithDependencies(depHandle, response, cache, libraries); + } + cache.pop(); + + response.push(handle); + return response; + } + + private _symbolIsInList(sym: symbol, libraries: LibraryHandle[]): boolean { + return libraries.some((lib) => lib.symbol === sym); + } +} + +export const Relationship = new RelationshipStatic(); diff --git a/packages/core/src/core/core.ts b/packages/core/src/core/core.ts index 6196cd1..a0013a3 100644 --- a/packages/core/src/core/core.ts +++ b/packages/core/src/core/core.ts @@ -6,10 +6,12 @@ import { type IRunnerLibrary, InitContext, type LibraryHandle, + LibraryStatusEnum, } from "@nanoforge/common"; import { type ApplicationConfig } from "../application/application-config"; import type { IApplicationOptions } from "../application/application-options.type"; +import { type EditableLibraryContext } from "../common/context/contexts/library.editable-context"; export class Core { private readonly config: ApplicationConfig; @@ -28,7 +30,7 @@ export class Core { public async run(): Promise { const context = this.getExecutionContext(); - const libraries = this.config.libraryManager.getRunnerLibraries(); + const libraries = this.config.libraryManager.getExecutionLibraries(); let requestAnimationFrameHandle: number; const runner = async () => { @@ -38,6 +40,7 @@ export class Core { const render = () => { if (!context.isRunning) { clearInterval(intervalHandle); + this.runClear(this.getClearContext()); return; } cancelAnimationFrame(requestAnimationFrameHandle); @@ -60,20 +63,22 @@ export class Core { } private async runInit(context: InitContext): Promise { - for (const handle of this.config.libraryManager.getLibraries()) { - if (handle) await handle.library.init(context); + for (const handle of this.config.libraryManager.getInitLibraries()) { + await handle.library.init(context); + (handle.context as EditableLibraryContext).setStatus(LibraryStatusEnum.LOADED); } } private async runExecute(context: ExecutionContext, libraries: LibraryHandle[]) { for (const handle of libraries) { - if (handle) await handle.library.run(context); + await handle.library.run(context); } } - private runClear(context: ClearContext) { - for (const handle of this.config.libraryManager.getLibraries()) { - if (handle) handle.library.clear(context); + private async runClear(context: ClearContext) { + for (const handle of this.config.libraryManager.getClearLibraries()) { + await handle.library.clear(context); + (handle.context as EditableLibraryContext).setStatus(LibraryStatusEnum.CLEAR); } } } diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json index a7e09c7..08c7f1d 100644 --- a/packages/core/tsconfig.build.json +++ b/packages/core/tsconfig.build.json @@ -11,6 +11,12 @@ "references": [ { "path": "../common/tsconfig.build.json" + }, + { + "path": "../asset-manager/tsconfig.build.json" + }, + { + "path": "../input/tsconfig.build.json" } ] } diff --git a/packages/ecs/package.json b/packages/ecs/package.json index 78e749d..e542284 100644 --- a/packages/ecs/package.json +++ b/packages/ecs/package.json @@ -42,27 +42,29 @@ "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/jest": "^29.5.14", - "@types/node": "^22.13.10", - "eslint": "^9.22.0", + "@types/node": "^22.13.13", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", "jest": "^29.7.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", - "ts-jest": "^29.2.6", + "taze": "^19.0.2", + "ts-jest": "^29.3.0", "typescript": "^5.8.2", - "typescript-eslint": "^8.26.0" + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/packages/ecs/src/ecs-library.ts b/packages/ecs/src/ecs-library.ts index f38588c..cee7384 100644 --- a/packages/ecs/src/ecs-library.ts +++ b/packages/ecs/src/ecs-library.ts @@ -1,5 +1,10 @@ import { type AssetManagerLibrary } from "@nanoforge/asset-manager"; -import { BaseComponentSystemLibrary, type InitContext } from "@nanoforge/common"; +import { + ASSET_MANAGER_LIBRARY, + BaseComponentSystemLibrary, + GRAPHICS_LIBRARY, + type InitContext, +} from "@nanoforge/common"; import type { Entity, MainModule, Registry, SparseArray } from "../lib"; import { Module } from "../lib"; @@ -12,6 +17,13 @@ export class ECSLibrary extends BaseComponentSystemLibrary { private registry: Registry; private readonly path: string = "libecs.wasm"; + constructor() { + super({ + dependencies: [ASSET_MANAGER_LIBRARY], + runAfter: [GRAPHICS_LIBRARY], + }); + } + get name(): string { return "ECSLibrary"; } @@ -28,15 +40,11 @@ export class ECSLibrary extends BaseComponentSystemLibrary { this.runSystems(); } - clear(): Promise { - return Promise.resolve(); - } - addComponent(entity: Entity, component: Component): void { this.registry.addComponent(entity, component); } - createEntity(): Entity { + spawnEntity(): Entity { return this.registry.spawnEntity(); } diff --git a/packages/ecs/test/ecs-library.spec.ts b/packages/ecs/test/ecs-library.spec.ts index daf7b53..ecc8440 100644 --- a/packages/ecs/test/ecs-library.spec.ts +++ b/packages/ecs/test/ecs-library.spec.ts @@ -1,5 +1,5 @@ import { AssetManagerLibrary } from "@nanoforge/asset-manager"; -import { ApplicationContext, InitContext } from "@nanoforge/common"; +import { ApplicationContext, ClearContext, InitContext } from "@nanoforge/common"; import { EditableLibraryManager } from "@nanoforge/core/src/common/library/manager/library.manager"; import { ECSLibrary } from "@nanoforge/ecs/src/ecs-library"; @@ -19,7 +19,7 @@ describe("ECSLibrary", () => { const assetManager = new AssetManagerLibrary(); const appContext = new ApplicationContext(); const libraryManager = new EditableLibraryManager(); - const context = new InitContext(appContext, libraryManager, { + const initContext = new InitContext(appContext, libraryManager, { // @ts-ignore canvas: null, files: { @@ -28,25 +28,27 @@ describe("ECSLibrary", () => { wgsl: new Map(), }, }); + + const clearContext = new ClearContext(appContext, libraryManager); libraryManager.setAssetManager(assetManager); beforeAll(async () => { - await assetManager.init(context); + await assetManager.init(initContext); }); beforeEach(async () => { ecs = new ECSLibrary(); - await ecs.init(context); + await ecs.init(initContext); }); test("init and spawn entity", async () => { - const entity = ecs.createEntity(); + const entity = ecs.spawnEntity(); expect(entity).toBeDefined(); expect(entity.getId()).toBe(0); }); test("add component to entity", async () => { - const entity = ecs.createEntity(); + const entity = ecs.spawnEntity(); const pos = new Position(1, 2); ecs.addComponent(entity, pos); const components = ecs.getComponents(Position); @@ -55,6 +57,6 @@ describe("ECSLibrary", () => { }); test("clear", async () => { - await ecs.clear(); + await ecs.clear(clearContext); }); }); diff --git a/packages/graphics-2d/package.json b/packages/graphics-2d/package.json index d637e56..e2e38d9 100644 --- a/packages/graphics-2d/package.json +++ b/packages/graphics-2d/package.json @@ -39,28 +39,30 @@ "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/jest": "^29.5.14", - "@types/node": "^22.13.10", - "@webgpu/types": "^0.1.56", - "eslint": "^9.22.0", + "@types/node": "^22.13.13", + "@webgpu/types": "^0.1.59", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", "jest": "^29.7.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", - "ts-jest": "^29.2.6", + "taze": "^19.0.2", + "ts-jest": "^29.3.0", "typescript": "^5.8.2", - "typescript-eslint": "^8.26.0" + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/packages/graphics-2d/src/components/component.ts b/packages/graphics-2d/src/components/component.ts index 23e4f97..6c06698 100644 --- a/packages/graphics-2d/src/components/component.ts +++ b/packages/graphics-2d/src/components/component.ts @@ -63,7 +63,7 @@ export abstract class NfgComponent { this._core.initContext.canvas.width, this._core.initContext.canvas.height, ]); - console.log(this._core.initContext.canvas.width, this._core.initContext.canvas.height); + if (!this._uniformBuffer) this._uniformBuffer = this._core.device.createBuffer({ label: "View Uniforms", diff --git a/packages/graphics-2d/src/graphics-2d.library.ts b/packages/graphics-2d/src/graphics-2d.library.ts index 7be4d75..8406d88 100644 --- a/packages/graphics-2d/src/graphics-2d.library.ts +++ b/packages/graphics-2d/src/graphics-2d.library.ts @@ -1,4 +1,4 @@ -import { BaseGraphicsLibrary, type InitContext } from "@nanoforge/common"; +import { ASSET_MANAGER_LIBRARY, BaseGraphicsLibrary, type InitContext } from "@nanoforge/common"; import { GraphicsCore } from "./core"; import { GraphicsFactory } from "./factory"; @@ -8,6 +8,12 @@ export class Graphics2DLibrary extends BaseGraphicsLibrary { private _core: GraphicsCore; private _factory: GraphicsFactory; + constructor() { + super({ + dependencies: [ASSET_MANAGER_LIBRARY], + }); + } + get name(): string { return "Graphics2DLibrary"; } diff --git a/packages/input/package.json b/packages/input/package.json index 087a986..da66f51 100644 --- a/packages/input/package.json +++ b/packages/input/package.json @@ -37,24 +37,26 @@ "devDependencies": { "@commitlint/cli": "^19.8.0", "@commitlint/config-conventional": "^19.8.0", - "@eslint/js": "^9.22.0", + "@eslint/js": "^9.23.0", "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^22.13.10", - "eslint": "^9.22.0", + "@types/node": "^22.13.13", + "eslint": "^9.23.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-format": "^1.0.1", "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.5", "globals": "^16.0.0", - "lint-staged": "^15.4.3", + "lint-staged": "^15.5.0", "prettier": "^3.5.3", + "taze": "^19.0.2", "typescript": "^5.8.2", - "typescript-eslint": "^8.26.0" + "typescript-eslint": "^8.28.0" }, "engines": { "node": "23.6.0", - "pnpm": "10.6.2" + "pnpm": "10.6.5" }, + "packageManager": "pnpm@10.6.5", "lint-staged": { "**/*.{js,ts}": [ "eslint --fix", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8624570..fb382d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,31 +14,31 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.13 + version: 22.13.13 eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 @@ -49,17 +49,20 @@ importers: specifier: ^8.2.1 version: 8.2.1(encoding@0.1.13) lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 typescript: specifier: ^5.8.2 version: 5.8.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages/asset-manager: dependencies: @@ -69,13 +72,13 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) @@ -83,122 +86,141 @@ importers: specifier: ^29.5.14 version: 29.5.14 '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.13 + version: 22.13.13 eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-jest: specifier: ^28.11.0 - version: 28.11.0(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + version: 28.11.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.13.10) + version: 29.7.0(@types/node@22.13.13) lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 ts-jest: - specifier: ^29.2.6 - version: 29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + specifier: ^29.3.0 + version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) typescript: specifier: ^5.8.2 version: 5.8.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages/common: devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages/core: + dependencies: + '@nanoforge/asset-manager': + specifier: workspace:^ + version: link:../asset-manager + '@nanoforge/common': + specifier: workspace:^ + version: link:../common + '@nanoforge/input': + specifier: workspace:^ + version: link:../input devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages/ecs: dependencies: @@ -208,13 +230,13 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) @@ -222,44 +244,47 @@ importers: specifier: ^29.5.14 version: 29.5.14 '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.13 + version: 22.13.13 eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-jest: specifier: ^28.11.0 - version: 28.11.0(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + version: 28.11.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.13.10) + version: 29.7.0(@types/node@22.13.13) lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 ts-jest: - specifier: ^29.2.6 - version: 29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + specifier: ^29.3.0 + version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) typescript: specifier: ^5.8.2 version: 5.8.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages/graphics-2d: dependencies: @@ -272,13 +297,13 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) @@ -286,47 +311,50 @@ importers: specifier: ^29.5.14 version: 29.5.14 '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.13 + version: 22.13.13 '@webgpu/types': - specifier: ^0.1.56 - version: 0.1.56 + specifier: ^0.1.59 + version: 0.1.59 eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-jest: specifier: ^28.11.0 - version: 28.11.0(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + version: 28.11.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.13.10) + version: 29.7.0(@types/node@22.13.13) lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 ts-jest: - specifier: ^29.2.6 - version: 29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + specifier: ^29.3.0 + version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) typescript: specifier: ^5.8.2 version: 5.8.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages/input: dependencies: @@ -336,49 +364,52 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.8.0 - version: 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + version: 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/config-conventional': specifier: ^19.8.0 version: 19.8.0 '@eslint/js': - specifier: ^9.22.0 - version: 9.22.0 + specifier: ^9.23.0 + version: 9.23.0 '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.5.3) '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.13 + version: 22.13.13 eslint: - specifier: ^9.22.0 - version: 9.22.0(jiti@2.4.2) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-format: specifier: ^1.0.1 - version: 1.0.1(eslint@9.22.0(jiti@2.4.2)) + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-jest: specifier: ^28.11.0 - version: 28.11.0(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2) + version: 28.11.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2) eslint-plugin-prettier: - specifier: ^5.2.3 - version: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.2.5 + version: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) globals: specifier: ^16.0.0 version: 16.0.0 lint-staged: - specifier: ^15.4.3 - version: 15.4.3 + specifier: ^15.5.0 + version: 15.5.0 prettier: specifier: ^3.5.3 version: 3.5.3 + taze: + specifier: ^19.0.2 + version: 19.0.2 typescript: specifier: ^5.8.2 version: 5.8.2 typescript-eslint: - specifier: ^8.26.0 - version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^8.28.0 + version: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) packages: @@ -386,6 +417,10 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/ni@24.3.0': + resolution: {integrity: sha512-wBSav4mBxvHEW9RbdSo1SWLQ6MAlT0Dc423weC58yOWqW4OcMvtnNDdDrxOZeJ88fEIyPK93gDUWIelBxzSf8g==} + hasBin: true + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -665,20 +700,20 @@ packages: resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.1.0': - resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==} + '@eslint/config-helpers@0.2.0': + resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.12.0': resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.0': - resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.22.0': - resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==} + '@eslint/js@9.23.0': + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -1017,6 +1052,14 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pkgr/core@0.2.0': + resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@quansync/fs@0.1.1': + resolution: {integrity: sha512-sx8J1O/+j2lqs8MvsEz6rs/6UAUpCb4fu7C6EqtMqzbS3CmqLkTDTOMK+DrWukvyUuHzl8DhMjfNJzQDTqfGJg==} + engines: {node: '>=20.18.0'} + '@sigstore/bundle@2.3.2': resolution: {integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -1119,8 +1162,8 @@ packages: '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/node@22.13.10': - resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + '@types/node@22.13.13': + resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1134,16 +1177,16 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.26.1': - resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==} + '@typescript-eslint/eslint-plugin@8.28.0': + resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.26.1': - resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==} + '@typescript-eslint/parser@8.28.0': + resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1153,8 +1196,12 @@ packages: resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.26.1': - resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==} + '@typescript-eslint/scope-manager@8.28.0': + resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.28.0': + resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1164,12 +1211,22 @@ packages: resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.28.0': + resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.26.1': resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/typescript-estree@8.28.0': + resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.26.1': resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1177,12 +1234,23 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/utils@8.28.0': + resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + '@typescript-eslint/visitor-keys@8.26.1': resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@webgpu/types@0.1.56': - resolution: {integrity: sha512-JkT4ngqwk4gKAFoWtXCcC1+TGhSStVtauS9z27slOGSFYr+QqjS0CoawiAxP7Gq9xkT4Pw9uouvWPT44HwbUiw==} + '@typescript-eslint/visitor-keys@8.28.0': + resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@webgpu/types@0.1.59': + resolution: {integrity: sha512-jZJ6ipNli+rn++/GAPqsZXfsgjx951wlCW7vNAg+oGdp0ZYidTOkbVTVeK2frzowuD5ch7MRz7leOEX1PMv43A==} '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -1262,6 +1330,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1376,6 +1448,10 @@ packages: resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} engines: {node: '>=12.17'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + cacache@18.0.4: resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} engines: {node: ^16.14.0 || >=18.0.0} @@ -1660,6 +1736,9 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1667,6 +1746,9 @@ packages: deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + detect-indent@5.0.0: resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} engines: {node: '>=4'} @@ -1819,13 +1901,13 @@ packages: jest: optional: true - eslint-plugin-prettier@5.2.3: - resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} + eslint-plugin-prettier@5.2.5: + resolution: {integrity: sha512-IKKP8R87pJyMl7WWamLgPkloB16dagPIdd2FjBDbyRYPKo93wS/NbCOPh6gH+ieNLC+XZrhJt/kWj0PS/DFdmg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' - eslint-config-prettier: '*' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' prettier: '>=3.0.0' peerDependenciesMeta: '@types/eslint': @@ -1845,8 +1927,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.22.0: - resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==} + eslint@9.23.0: + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1934,6 +2016,14 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -1949,6 +2039,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -2022,6 +2116,9 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + fzf@0.5.2: + resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2659,8 +2756,8 @@ packages: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@15.4.3: - resolution: {integrity: sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==} + lint-staged@15.5.0: + resolution: {integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==} engines: {node: '>=18.12.0'} hasBin: true @@ -2921,6 +3018,9 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -3012,6 +3112,9 @@ packages: '@swc/core': optional: true + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3122,6 +3225,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.1.0: + resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} + pacote@18.0.6: resolution: {integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==} engines: {node: ^16.14.0 || >=18.0.0} @@ -3188,6 +3294,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3195,6 +3304,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -3224,6 +3337,9 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + pnpm-workspace-yaml@0.1.2: + resolution: {integrity: sha512-FaSo51Psz+jHV8YtnuIVemTheOIO5EnMtw0HSPTUsASEdOf3ppM5OBxKO5Dpvx4fWKNZF44vEEMFKc5YZG4qjA==} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -3295,6 +3411,9 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3604,6 +3723,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + synckit@0.10.3: + resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==} + engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.9.2: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3616,6 +3739,10 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + taze@19.0.2: + resolution: {integrity: sha512-SEFTzn2Armn0nsHt4tVoVEOGLb8mxnrYfgOItBfayCbaDHi9DrRkH7UP7wqra3b04kf6dW6KYdroIQCnCAzQOA==} + hasBin: true + temp-dir@1.0.0: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} engines: {node: '>=4'} @@ -3641,6 +3768,13 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.0: + resolution: {integrity: sha512-djtKaAR3lnRo0uMT/IKYwj3s4E86IE/SdwCE3XXIJcozbDFKsfgAmi8IBIpIDmTd0Y6YKyfqo3vQ33OloPJPaQ==} + + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -3673,8 +3807,8 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-jest@29.2.6: - resolution: {integrity: sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==} + ts-jest@29.3.0: + resolution: {integrity: sha512-4bfGBX7Gd1Aqz3SyeDS9O276wEU/BInZxskPrbhZLyv+c1wskDCqDFMJQJLWrIr/fKoAH4GE5dKUlrdyvo+39A==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3736,11 +3870,15 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@4.38.0: + resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} + engines: {node: '>=16'} + typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.26.1: - resolution: {integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==} + typescript-eslint@8.28.0: + resolution: {integrity: sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3751,11 +3889,17 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true + unconfig@7.3.1: + resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==} + undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -3932,6 +4076,13 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/ni@24.3.0': + dependencies: + ansis: 3.17.0 + fzf: 0.5.2 + package-manager-detector: 1.1.0 + tinyexec: 1.0.0 + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -4148,11 +4299,11 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@commitlint/cli@19.8.0(@types/node@22.13.10)(typescript@5.8.2)': + '@commitlint/cli@19.8.0(@types/node@22.13.13)(typescript@5.8.2)': dependencies: '@commitlint/format': 19.8.0 '@commitlint/lint': 19.8.0 - '@commitlint/load': 19.8.0(@types/node@22.13.10)(typescript@5.8.2) + '@commitlint/load': 19.8.0(@types/node@22.13.13)(typescript@5.8.2) '@commitlint/read': 19.8.0 '@commitlint/types': 19.8.0 tinyexec: 0.3.2 @@ -4199,7 +4350,7 @@ snapshots: '@commitlint/rules': 19.8.0 '@commitlint/types': 19.8.0 - '@commitlint/load@19.8.0(@types/node@22.13.10)(typescript@5.8.2)': + '@commitlint/load@19.8.0(@types/node@22.13.13)(typescript@5.8.2)': dependencies: '@commitlint/config-validator': 19.8.0 '@commitlint/execute-rule': 19.8.0 @@ -4207,7 +4358,7 @@ snapshots: '@commitlint/types': 19.8.0 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.8.2) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.10)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.13)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -4277,9 +4428,9 @@ snapshots: dependencies: tslib: 2.8.1 - '@eslint-community/eslint-utils@4.5.0(eslint@9.22.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.5.0(eslint@9.23.0(jiti@2.4.2))': dependencies: - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -4292,13 +4443,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.1.0': {} + '@eslint/config-helpers@0.2.0': {} '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.0': + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 debug: 4.4.0 @@ -4312,7 +4463,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.22.0': {} + '@eslint/js@9.23.0': {} '@eslint/object-schema@2.1.6': {} @@ -4360,7 +4511,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -4373,14 +4524,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.13.10) + jest-config: 29.7.0(@types/node@22.13.13) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -4405,7 +4556,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -4423,7 +4574,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.13.10 + '@types/node': 22.13.13 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -4445,7 +4596,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.13.10 + '@types/node': 22.13.13 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -4515,7 +4666,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.10 + '@types/node': 22.13.13 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -4878,6 +5029,12 @@ snapshots: '@pkgr/core@0.1.1': {} + '@pkgr/core@0.2.0': {} + + '@quansync/fs@0.1.1': + dependencies: + quansync: 0.2.10 + '@sigstore/bundle@2.3.2': dependencies: '@sigstore/protobuf-specs': 0.3.3 @@ -4966,13 +5123,13 @@ snapshots: '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.13 '@types/estree@1.0.6': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.13 '@types/istanbul-lib-coverage@2.0.6': {} @@ -4995,7 +5152,7 @@ snapshots: '@types/minimist@1.2.5': {} - '@types/node@22.13.10': + '@types/node@22.13.13': dependencies: undici-types: 6.20.0 @@ -5009,15 +5166,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.26.1 - eslint: 9.22.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 + eslint: 9.23.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -5026,14 +5183,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': + '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 debug: 4.4.0 - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -5043,12 +5200,17 @@ snapshots: '@typescript-eslint/types': 8.26.1 '@typescript-eslint/visitor-keys': 8.26.1 - '@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': + '@typescript-eslint/scope-manager@8.28.0': dependencies: - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + + '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) debug: 4.4.0 - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) ts-api-utils: 2.0.1(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: @@ -5056,6 +5218,8 @@ snapshots: '@typescript-eslint/types@8.26.1': {} + '@typescript-eslint/types@8.28.0': {} + '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.26.1 @@ -5070,13 +5234,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.26.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.0(eslint@9.23.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.26.1 '@typescript-eslint/types': 8.26.1 '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': + dependencies: + '@eslint-community/eslint-utils': 4.5.0(eslint@9.23.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -5086,7 +5275,12 @@ snapshots: '@typescript-eslint/types': 8.26.1 eslint-visitor-keys: 4.2.0 - '@webgpu/types@0.1.56': {} + '@typescript-eslint/visitor-keys@8.28.0': + dependencies: + '@typescript-eslint/types': 8.28.0 + eslint-visitor-keys: 4.2.0 + + '@webgpu/types@0.1.59': {} '@yarnpkg/lockfile@1.1.0': {} @@ -5157,6 +5351,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.17.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -5303,6 +5499,8 @@ snapshots: byte-size@8.1.1: {} + cac@6.7.14: {} + cacache@18.0.4: dependencies: '@npmcli/fs': 3.1.1 @@ -5514,9 +5712,9 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.10)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.13)(cosmiconfig@9.0.0(typescript@5.8.2))(typescript@5.8.2): dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.13 cosmiconfig: 9.0.0(typescript@5.8.2) jiti: 2.4.2 typescript: 5.8.2 @@ -5530,13 +5728,13 @@ snapshots: optionalDependencies: typescript: 5.8.2 - create-jest@29.7.0(@types/node@22.13.10): + create-jest@29.7.0(@types/node@22.13.13): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.13.10) + jest-config: 29.7.0(@types/node@22.13.13) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -5582,10 +5780,14 @@ snapshots: define-lazy-prop@2.0.0: {} + defu@6.1.4: {} + delayed-stream@1.0.0: {} deprecation@2.3.1: {} + destr@2.0.3: {} + detect-indent@5.0.0: {} detect-newline@3.1.0: {} @@ -5678,47 +5880,47 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)): + eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)): dependencies: - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) - eslint-formatting-reporter@0.0.0(eslint@9.22.0(jiti@2.4.2)): + eslint-formatting-reporter@0.0.0(eslint@9.23.0(jiti@2.4.2)): dependencies: - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) prettier-linter-helpers: 1.0.0 eslint-parser-plain@0.1.1: {} - eslint-plugin-format@1.0.1(eslint@9.22.0(jiti@2.4.2)): + eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)): dependencies: '@dprint/formatter': 0.3.0 '@dprint/markdown': 0.17.8 '@dprint/toml': 0.6.4 - eslint: 9.22.0(jiti@2.4.2) - eslint-formatting-reporter: 0.0.0(eslint@9.22.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + eslint-formatting-reporter: 0.0.0(eslint@9.23.0(jiti@2.4.2)) eslint-parser-plain: 0.1.1 prettier: 3.5.3 synckit: 0.9.2 - eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2): + eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2): dependencies: - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - eslint: 9.22.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.26.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - jest: 29.7.0(@types/node@22.13.10) + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + jest: 29.7.0(@types/node@22.13.13) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3): + eslint-plugin-prettier@5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3): dependencies: - eslint: 9.22.0(jiti@2.4.2) + eslint: 9.23.0(jiti@2.4.2) prettier: 3.5.3 prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 + synckit: 0.10.3 optionalDependencies: - eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.4.2)) + eslint-config-prettier: 10.1.1(eslint@9.23.0(jiti@2.4.2)) eslint-scope@8.3.0: dependencies: @@ -5729,15 +5931,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.22.0(jiti@2.4.2): + eslint@9.23.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.0(eslint@9.23.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 - '@eslint/config-helpers': 0.1.0 + '@eslint/config-helpers': 0.2.0 '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.0 - '@eslint/js': 9.22.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.23.0 '@eslint/plugin-kit': 0.2.7 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -5863,6 +6065,10 @@ snapshots: dependencies: bser: 2.1.1 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -5879,6 +6085,8 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up-simple@1.0.1: {} + find-up@2.1.0: dependencies: locate-path: 2.0.0 @@ -5949,6 +6157,8 @@ snapshots: function-bind@1.1.2: {} + fzf@0.5.2: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -6361,7 +6571,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -6381,16 +6591,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.13.10): + jest-cli@29.7.0(@types/node@22.13.13): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.13.10) + create-jest: 29.7.0(@types/node@22.13.13) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.13.10) + jest-config: 29.7.0(@types/node@22.13.13) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -6400,7 +6610,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.13.10): + jest-config@29.7.0(@types/node@22.13.13): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 @@ -6425,7 +6635,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.13 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -6454,7 +6664,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -6464,7 +6674,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.13.10 + '@types/node': 22.13.13 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -6503,7 +6713,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -6538,7 +6748,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -6566,7 +6776,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -6612,7 +6822,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -6631,7 +6841,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.13.10 + '@types/node': 22.13.13 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -6640,17 +6850,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.13 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.13.10): + jest@29.7.0(@types/node@22.13.13): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.13.10) + jest-cli: 29.7.0(@types/node@22.13.13) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -6840,7 +7050,7 @@ snapshots: lines-and-columns@2.0.3: {} - lint-staged@15.4.3: + lint-staged@15.5.0: dependencies: chalk: 5.4.1 commander: 13.1.0 @@ -7114,6 +7324,8 @@ snapshots: neo-async@2.6.2: {} + node-fetch-native@1.6.6: {} + node-fetch@2.6.7(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -7266,6 +7478,12 @@ snapshots: transitivePeerDependencies: - debug + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.6 + ufo: 1.5.4 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7385,6 +7603,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.1.0: {} + pacote@18.0.6: dependencies: '@npmcli/git': 5.0.8 @@ -7463,10 +7683,14 @@ snapshots: path-type@4.0.0: {} + pathe@2.0.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} + picomatch@4.0.2: {} + pidtree@0.6.0: {} pify@2.3.0: {} @@ -7483,6 +7707,10 @@ snapshots: dependencies: find-up: 4.1.0 + pnpm-workspace-yaml@0.1.2: + dependencies: + yaml: 2.7.0 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -7536,6 +7764,8 @@ snapshots: pure-rand@6.1.0: {} + quansync@0.2.10: {} + queue-microtask@1.2.3: {} quick-lru@4.0.1: {} @@ -7834,6 +8064,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + synckit@0.10.3: + dependencies: + '@pkgr/core': 0.2.0 + tslib: 2.8.1 + synckit@0.9.2: dependencies: '@pkgr/core': 0.1.1 @@ -7856,6 +8091,21 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + taze@19.0.2: + dependencies: + '@antfu/ni': 24.3.0 + cac: 6.7.14 + find-up-simple: 1.0.1 + ofetch: 1.4.1 + package-manager-detector: 1.1.0 + pathe: 2.0.3 + pnpm-workspace-yaml: 0.1.2 + restore-cursor: 5.1.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.12 + unconfig: 7.3.1 + yaml: 2.7.0 + temp-dir@1.0.0: {} test-exclude@6.0.0: @@ -7877,6 +8127,13 @@ snapshots: tinyexec@0.3.2: {} + tinyexec@1.0.0: {} + + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -7899,17 +8156,18 @@ snapshots: dependencies: typescript: 5.8.2 - ts-jest@29.2.6(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.10))(typescript@5.8.2): + ts-jest@29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.13))(typescript@5.8.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.13.10) + jest: 29.7.0(@types/node@22.13.13) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.7.1 + type-fest: 4.38.0 typescript: 5.8.2 yargs-parser: 21.1.1 optionalDependencies: @@ -7950,23 +8208,34 @@ snapshots: type-fest@0.8.1: {} + type-fest@4.38.0: {} + typedarray@0.0.6: {} - typescript-eslint@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2): + typescript-eslint@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) - eslint: 9.22.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color typescript@5.8.2: {} + ufo@1.5.4: {} + uglify-js@3.19.3: optional: true + unconfig@7.3.1: + dependencies: + '@quansync/fs': 0.1.1 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.10 + undici-types@6.20.0: {} unicorn-magic@0.1.0: {}