From 4cfd5191e93d2f93e9f434139d285e11607ad7df Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 11:22:46 +0200 Subject: [PATCH 01/39] Update transpile api --- packages/tinyest-for-wgsl/src/parsers.ts | 3 +++ packages/tinyest-for-wgsl/src/types.ts | 10 ++++++++++ packages/unplugin-typegpu/src/core/obfuscate.ts | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/tinyest-for-wgsl/src/parsers.ts b/packages/tinyest-for-wgsl/src/parsers.ts index c98bd0a545..9dddbdc69a 100644 --- a/packages/tinyest-for-wgsl/src/parsers.ts +++ b/packages/tinyest-for-wgsl/src/parsers.ts @@ -34,6 +34,7 @@ function createContext(params: tinyest.FuncParameter[], opts: TranspilationOptio ), }, ], + generatedSourceMap: new Map(), opts, }; } @@ -124,6 +125,7 @@ function createParser(kind: 'acorn' | 'babel' | 'legacy') { params, body: tinyestBody as tinyest.Block, externalNames: ctx.externalNames, + sourceMap: ctx.generatedSourceMap, }; } @@ -131,6 +133,7 @@ function createParser(kind: 'acorn' | 'babel' | 'legacy') { params, body: [NODE.block, [[NODE.return, tinyestBody as tinyest.Expression]]], externalNames: ctx.externalNames, + sourceMap: ctx.generatedSourceMap, }; }, diff --git a/packages/tinyest-for-wgsl/src/types.ts b/packages/tinyest-for-wgsl/src/types.ts index 3ec2ad0d11..0601758255 100644 --- a/packages/tinyest-for-wgsl/src/types.ts +++ b/packages/tinyest-for-wgsl/src/types.ts @@ -22,6 +22,7 @@ export type Context = { */ visitedNodes: Set; stack: Scope[]; + generatedSourceMap: tinyest.SourceMap; opts: TranspilationOptions; }; @@ -33,6 +34,10 @@ export type TranspilationResult = { * Included identifiers are already flattened, so this array may contain identifiers like `EXT.vec.x`. */ externalNames: Externals; + /** + * Source map will only be populated by data provided in {@link TranspilationOptions}. + */ + sourceMap: tinyest.SourceMap; }; export type JsNode = babel.Node | acorn.AnyNode; @@ -55,4 +60,9 @@ export type TranspilationOptions = { * @default false */ verboseNodes?: boolean; + /** + * If provided, this source map will be used to populate the sourceMap + * in resulting {@link TranspilationResult}. + */ + sourceMap?: (node: JsNode) => [line: number, column: number] | undefined; }; diff --git a/packages/unplugin-typegpu/src/core/obfuscate.ts b/packages/unplugin-typegpu/src/core/obfuscate.ts index 8d7c8421a7..462dd5233d 100644 --- a/packages/unplugin-typegpu/src/core/obfuscate.ts +++ b/packages/unplugin-typegpu/src/core/obfuscate.ts @@ -79,7 +79,7 @@ export function obfuscate(fn: TranspilationResult): TranspilationResult { const externalNames = new Map(); fn.externalNames.forEach((value, key) => externalNames.set(ctx.obfuscator.obfuscate(key), value)); - return { params, body, externalNames }; + return { ...fn, params, body, externalNames }; } // Nodes like 'continue' and 'break' are still listed From 9d9b1bfcf76142ee4ef0dbdd3bfcaafe9fb24e31 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 11:28:48 +0200 Subject: [PATCH 02/39] Add tests stub --- .../tinyest-for-wgsl/tests/sourceMap.test.ts | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 packages/tinyest-for-wgsl/tests/sourceMap.test.ts diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts new file mode 100644 index 0000000000..b20ca49436 --- /dev/null +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -0,0 +1,53 @@ +import type { ClassDeclaration, ClassProperty, Expression, Node } from '@babel/types'; +import * as acorn from 'acorn'; +import { describe, expect, it } from 'vitest'; +import { dualTest, parseBabel } from './helpers.ts'; + +describe('source map', () => { + it( + 'leaves source map empty when not provided', + dualTest((p, transpileFn) => { + const { params, externalNames, body, sourceMap } = transpileFn( + p(`() => { + const x = 2 + 2 * 2; + }`), + ); + + expect(params).toStrictEqual([]); + expect(JSON.stringify(body)).toMatchInlineSnapshot( + `"[0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]]"`, + ); + expect(externalNames).toMatchInlineSnapshot(`Map {}`); + expect(sourceMap).toMatchInlineSnapshot(`Map {}`); + }), + ); + + it( + 'assigns proper sourcemap', + dualTest((p, transpileFn) => { + const typeToNum = { + BlockStatement: 10, + VariableDeclaration: 11, + Identifier: 12, + BinaryExpression: 13, + NumericLiteral: 14, + Literal: 14, + }; + + let index = 0; + const { params, externalNames, body, sourceMap } = transpileFn( + p(`() => { + const x = 2 + 2 * 2; + }`), + { sourceMap: (node) => [++index, typeToNum[node.type as keyof typeof typeToNum]] }, + ); + + expect(params).toStrictEqual([]); + expect(JSON.stringify(body)).toMatchInlineSnapshot( + `"[0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]]"`, + ); + expect(externalNames).toMatchInlineSnapshot(`Map {}`); + expect(sourceMap).toMatchInlineSnapshot(`Map {}`); + }), + ); +}); From 3a4a6ab0b41d82f694f3fba22f8b403fd8686766 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 11:41:08 +0200 Subject: [PATCH 03/39] Assign source map in parsers --- packages/tinyest-for-wgsl/src/parsers.ts | 18 ++- .../tinyest-for-wgsl/tests/sourceMap.test.ts | 127 +++++++++++++++++- 2 files changed, 135 insertions(+), 10 deletions(-) diff --git a/packages/tinyest-for-wgsl/src/parsers.ts b/packages/tinyest-for-wgsl/src/parsers.ts index 9dddbdc69a..4a9c9a6471 100644 --- a/packages/tinyest-for-wgsl/src/parsers.ts +++ b/packages/tinyest-for-wgsl/src/parsers.ts @@ -96,21 +96,27 @@ function createParser(kind: 'acorn' | 'babel' | 'legacy') { throw new Error(`Unsupported JS functionality: ${node.type}`); } + let result: tinyest.AnyNode; if (ctx.ignoreExternalDepth === 0) { // Check if the node is an external prop access chain, and if so, // add it to externals and swap the AST node for an identifier. const externalChain = tryFindExternalChain(ctx, node); if (externalChain) { ctx.externalNames.set(externalChain, externalChain); - if (ctx.opts.verboseNodes) { - return [NODE.identifier, externalChain]; - } - return externalChain; + result = ctx.opts.verboseNodes ? [NODE.identifier, externalChain] : externalChain; } } - // @ts-ignore - return transpiler(ctx, node, transpile); + result ??= transpiler(ctx, node, transpile); + + if (Array.isArray(result)) { + const maybeSource = ctx.opts.sourceMap?.(node); + if (maybeSource) { + ctx.generatedSourceMap.set(result, maybeSource); + } + } + + return result; }; return { diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts index b20ca49436..b85120011e 100644 --- a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -1,7 +1,5 @@ -import type { ClassDeclaration, ClassProperty, Expression, Node } from '@babel/types'; -import * as acorn from 'acorn'; import { describe, expect, it } from 'vitest'; -import { dualTest, parseBabel } from './helpers.ts'; +import { dualTest } from './helpers.ts'; describe('source map', () => { it( @@ -47,7 +45,128 @@ describe('source map', () => { `"[0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]]"`, ); expect(externalNames).toMatchInlineSnapshot(`Map {}`); - expect(sourceMap).toMatchInlineSnapshot(`Map {}`); + expect(sourceMap).toMatchInlineSnapshot(` + Map { + [ + 5, + "2", + ] => [ + 1, + 14, + ], + [ + 5, + "2", + ] => [ + 2, + 14, + ], + [ + 5, + "2", + ] => [ + 3, + 14, + ], + [ + 1, + [ + 5, + "2", + ], + "*", + [ + 5, + "2", + ], + ] => [ + 4, + 13, + ], + [ + 1, + [ + 5, + "2", + ], + "+", + [ + 1, + [ + 5, + "2", + ], + "*", + [ + 5, + "2", + ], + ], + ] => [ + 5, + 13, + ], + [ + 13, + "x", + [ + 1, + [ + 5, + "2", + ], + "+", + [ + 1, + [ + 5, + "2", + ], + "*", + [ + 5, + "2", + ], + ], + ], + ] => [ + 6, + 11, + ], + [ + 0, + [ + [ + 13, + "x", + [ + 1, + [ + 5, + "2", + ], + "+", + [ + 1, + [ + 5, + "2", + ], + "*", + [ + 5, + "2", + ], + ], + ], + ], + ], + ] => [ + 7, + 10, + ], + } + `); }), ); }); From 1796f6cd73d26e6c0d0b4dd86aedab3ef63c9534 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 11:49:10 +0200 Subject: [PATCH 04/39] Add stringifyMap --- .../tinyest-for-wgsl/tests/sourceMap.test.ts | 136 ++---------------- 1 file changed, 14 insertions(+), 122 deletions(-) diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts index b85120011e..1ae12d41c0 100644 --- a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -1,5 +1,10 @@ import { describe, expect, it } from 'vitest'; import { dualTest } from './helpers.ts'; +import type { SourceMap } from 'tinyest'; + +function stringifyMap(map: SourceMap) { + return [...map.entries()].map(([key, value]) => `${JSON.stringify(key)} => ${value} `).join('\n'); +} describe('source map', () => { it( @@ -16,7 +21,7 @@ describe('source map', () => { `"[0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]]"`, ); expect(externalNames).toMatchInlineSnapshot(`Map {}`); - expect(sourceMap).toMatchInlineSnapshot(`Map {}`); + expect(sourceMap.size).toBe(0); }), ); @@ -45,127 +50,14 @@ describe('source map', () => { `"[0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]]"`, ); expect(externalNames).toMatchInlineSnapshot(`Map {}`); - expect(sourceMap).toMatchInlineSnapshot(` - Map { - [ - 5, - "2", - ] => [ - 1, - 14, - ], - [ - 5, - "2", - ] => [ - 2, - 14, - ], - [ - 5, - "2", - ] => [ - 3, - 14, - ], - [ - 1, - [ - 5, - "2", - ], - "*", - [ - 5, - "2", - ], - ] => [ - 4, - 13, - ], - [ - 1, - [ - 5, - "2", - ], - "+", - [ - 1, - [ - 5, - "2", - ], - "*", - [ - 5, - "2", - ], - ], - ] => [ - 5, - 13, - ], - [ - 13, - "x", - [ - 1, - [ - 5, - "2", - ], - "+", - [ - 1, - [ - 5, - "2", - ], - "*", - [ - 5, - "2", - ], - ], - ], - ] => [ - 6, - 11, - ], - [ - 0, - [ - [ - 13, - "x", - [ - 1, - [ - 5, - "2", - ], - "+", - [ - 1, - [ - 5, - "2", - ], - "*", - [ - 5, - "2", - ], - ], - ], - ], - ], - ] => [ - 7, - 10, - ], - } + expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(` + "[5,"2"] => 1,14 + [5,"2"] => 2,14 + [5,"2"] => 3,14 + [1,[5,"2"],"*",[5,"2"]] => 4,13 + [1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]] => 5,13 + [13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]] => 6,11 + [0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]] => 7,10 " `); }), ); From ccfa3576f2d650d543435546e433f4f126e3b83a Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:10:54 +0200 Subject: [PATCH 05/39] Add more tests --- .../tinyest-for-wgsl/tests/sourceMap.test.ts | 70 +++++++++++++++++-- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts index 1ae12d41c0..eff396358c 100644 --- a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -10,23 +10,41 @@ describe('source map', () => { it( 'leaves source map empty when not provided', dualTest((p, transpileFn) => { - const { params, externalNames, body, sourceMap } = transpileFn( + const { sourceMap } = transpileFn( p(`() => { const x = 2 + 2 * 2; }`), ); - expect(params).toStrictEqual([]); - expect(JSON.stringify(body)).toMatchInlineSnapshot( - `"[0,[[13,"x",[1,[5,"2"],"+",[1,[5,"2"],"*",[5,"2"]]]]]]"`, + expect(sourceMap.size).toBe(0); + }), + ); + + it( + 'leaves source map empty when provided map returns undefined', + dualTest((p, transpileFn) => { + const { sourceMap } = transpileFn( + p(`() => { + const x = 2 + 2 * 2; + }`), + { sourceMap: () => undefined }, ); - expect(externalNames).toMatchInlineSnapshot(`Map {}`); + expect(sourceMap.size).toBe(0); }), ); it( - 'assigns proper sourcemap', + 'uses provided values', + dualTest((p, transpileFn) => { + const { sourceMap } = transpileFn(p(`() => { }`), { sourceMap: () => [6, 7] }); + + expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(`"[0,[]] => 6,7 "`); + }), + ); + + it( + 'properly passes nodes', dualTest((p, transpileFn) => { const typeToNum = { BlockStatement: 10, @@ -61,4 +79,44 @@ describe('source map', () => { `); }), ); + + it( + 'maps body-less functions', + dualTest((p, transpileFn) => { + const { sourceMap } = transpileFn(p(`() => 1 + 2;`), { + verboseNodes: true, + sourceMap: () => [4, 2], + }); + + expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(` + "[5,"1"] => 4,2 + [5,"2"] => 4,2 + [1,[5,"1"],"+",[5,"2"]] => 4,2 " + `); + }), + ); + + it( + 'maps array identifiers', + dualTest((p, transpileFn) => { + const { sourceMap } = transpileFn(p(`() => { let a; }`), { + verboseNodes: true, + sourceMap: (node) => (node.type === 'Identifier' ? [4, 2] : undefined), + }); + + expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(`"[9,"a"] => 4,2 "`); + }), + ); + + it( + 'maps external chains', + dualTest((p, transpileFn) => { + const { sourceMap } = transpileFn(p(`() => { ext.p; }`), { + verboseNodes: true, + sourceMap: (node) => (node.type === 'MemberExpression' ? [4, 2] : undefined), + }); + + expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(`"[9,"ext.p"] => 4,2 "`); + }), + ); }); From 374c1c3e6c771fa315350b4c8464c979c381d04b Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:22:41 +0200 Subject: [PATCH 06/39] Reject source maps from transpile node --- packages/tinyest-for-wgsl/src/parsers.ts | 4 ++-- .../tinyest-for-wgsl/tests/sourceMap.test.ts | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/tinyest-for-wgsl/src/parsers.ts b/packages/tinyest-for-wgsl/src/parsers.ts index 4a9c9a6471..f8331b1fb0 100644 --- a/packages/tinyest-for-wgsl/src/parsers.ts +++ b/packages/tinyest-for-wgsl/src/parsers.ts @@ -165,7 +165,7 @@ export function transpileAcornFn( export function transpileAcornNode( rootNode: acorn.AnyNode, - options: TranspilationOptions = {}, + options: Omit = {}, ): tinyest.AnyNode { return parsers.acorn.transpileNode(rootNode, options); } @@ -179,7 +179,7 @@ export function transpileBabelFn( export function transpileBabelNode( rootNode: babel.Node, - options: TranspilationOptions = {}, + options: Omit = {}, ): tinyest.AnyNode { return parsers.babel.transpileNode(rootNode, options); } diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts index eff396358c..50daabed6f 100644 --- a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { dualTest } from './helpers.ts'; -import type { SourceMap } from 'tinyest'; +import { dualTest, parseBabel, parseRollup } from './helpers.ts'; +import type { AnyNode, SourceMap } from 'tinyest'; +import { transpileAcornNode, transpileBabelNode } from '../src/parsers.ts'; function stringifyMap(map: SourceMap) { return [...map.entries()].map(([key, value]) => `${JSON.stringify(key)} => ${value} `).join('\n'); @@ -119,4 +120,18 @@ describe('source map', () => { expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(`"[9,"ext.p"] => 4,2 "`); }), ); + + it('does not accept source map in transpileBabelNode', () => { + const node = parseBabel('() => {}'); + + // @ts-expect-error + () => transpileBabelNode(node, { sourceMap: () => undefined }); + }); + + it('does not accept source map in transpileAcornNode', () => { + const node = parseRollup('() => {}'); + + // @ts-expect-error + () => transpileAcornNode(node, { sourceMap: () => undefined }); + }); }); From 9a4fef0f8767466cccc74f9f5c6811f29b1c454d Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:36:16 +0200 Subject: [PATCH 07/39] Don't override source map after a fallthrough node --- packages/tinyest-for-wgsl/src/parsers.ts | 2 +- .../tinyest-for-wgsl/tests/sourceMap.test.ts | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/tinyest-for-wgsl/src/parsers.ts b/packages/tinyest-for-wgsl/src/parsers.ts index f8331b1fb0..99d1037ec5 100644 --- a/packages/tinyest-for-wgsl/src/parsers.ts +++ b/packages/tinyest-for-wgsl/src/parsers.ts @@ -109,7 +109,7 @@ function createParser(kind: 'acorn' | 'babel' | 'legacy') { // @ts-ignore result ??= transpiler(ctx, node, transpile); - if (Array.isArray(result)) { + if (Array.isArray(result) && !ctx.generatedSourceMap.has(result)) { const maybeSource = ctx.opts.sourceMap?.(node); if (maybeSource) { ctx.generatedSourceMap.set(result, maybeSource); diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts index 50daabed6f..27f4ec1bf9 100644 --- a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; import { dualTest, parseBabel, parseRollup } from './helpers.ts'; import type { AnyNode, SourceMap } from 'tinyest'; -import { transpileAcornNode, transpileBabelNode } from '../src/parsers.ts'; +import { transpileAcornNode, transpileBabelFn, transpileBabelNode } from '../src/parsers.ts'; function stringifyMap(map: SourceMap) { return [...map.entries()].map(([key, value]) => `${JSON.stringify(key)} => ${value} `).join('\n'); @@ -120,7 +120,6 @@ describe('source map', () => { expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(`"[9,"ext.p"] => 4,2 "`); }), ); - it('does not accept source map in transpileBabelNode', () => { const node = parseBabel('() => {}'); @@ -134,4 +133,19 @@ describe('source map', () => { // @ts-expect-error () => transpileAcornNode(node, { sourceMap: () => undefined }); }); + + it('assigns correct source map when ts types are present', () => { + const node = parseBabel('() => (ext as T1);'); + const { sourceMap } = transpileBabelFn(node, { + verboseNodes: true, + sourceMap: (node) => { + if (node.type === 'Identifier') { + return [1, 1]; + } + return [2, 2]; + }, + }); + + expect(stringifyMap(sourceMap)).toMatchInlineSnapshot(`"[9,"ext"] => 1,1 "`); + }); }); From fcd8ec0e7d9d0a102b4adbded1fe7ccc0497a850 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:52:20 +0200 Subject: [PATCH 08/39] Update js doc --- packages/tinyest-for-wgsl/src/types.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/tinyest-for-wgsl/src/types.ts b/packages/tinyest-for-wgsl/src/types.ts index 0601758255..8fecb34f40 100644 --- a/packages/tinyest-for-wgsl/src/types.ts +++ b/packages/tinyest-for-wgsl/src/types.ts @@ -63,6 +63,9 @@ export type TranspilationOptions = { /** * If provided, this source map will be used to populate the sourceMap * in resulting {@link TranspilationResult}. + * + * When source-mapping, it is recommended to set `verboseNodes` to true as well; + * otherwise, identifier and boolean nodes, as well as external chains, will not be mapped. */ sourceMap?: (node: JsNode) => [line: number, column: number] | undefined; }; From 40c3ff9508563d53c2edaa33fe5ccc7f099cd60f Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 12:20:24 +0200 Subject: [PATCH 09/39] Update types --- packages/tinyest-for-wgsl/src/parsers.ts | 8 ++++---- packages/tinyest-for-wgsl/src/types.ts | 4 ++-- packages/tinyest-for-wgsl/tests/sourceMap.test.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/tinyest-for-wgsl/src/parsers.ts b/packages/tinyest-for-wgsl/src/parsers.ts index 99d1037ec5..9d13f948d7 100644 --- a/packages/tinyest-for-wgsl/src/parsers.ts +++ b/packages/tinyest-for-wgsl/src/parsers.ts @@ -158,9 +158,9 @@ let legacyParser: ReturnType | undefined = undefined; export function transpileAcornFn( rootNode: acorn.AnyNode, - options: TranspilationOptions = {}, + options: TranspilationOptions = {}, ): TranspilationResult { - return parsers.acorn.transpileFn(rootNode, options); + return parsers.acorn.transpileFn(rootNode, options as TranspilationOptions); } export function transpileAcornNode( @@ -172,9 +172,9 @@ export function transpileAcornNode( export function transpileBabelFn( rootNode: babel.Node, - options: TranspilationOptions = {}, + options: TranspilationOptions = {}, ): TranspilationResult { - return parsers.babel.transpileFn(rootNode, options); + return parsers.babel.transpileFn(rootNode, options as TranspilationOptions); } export function transpileBabelNode( diff --git a/packages/tinyest-for-wgsl/src/types.ts b/packages/tinyest-for-wgsl/src/types.ts index 8fecb34f40..3cce4d86a7 100644 --- a/packages/tinyest-for-wgsl/src/types.ts +++ b/packages/tinyest-for-wgsl/src/types.ts @@ -52,7 +52,7 @@ export type Transpilers = Partial<{ ) => tinyest.AnyNode; }>; -export type TranspilationOptions = { +export type TranspilationOptions = { /** * With this option enabled, identifiers and boolean literals will be wrapped * in dedicated nodes, instead of being transpiled as string/boolean. @@ -67,5 +67,5 @@ export type TranspilationOptions = { * When source-mapping, it is recommended to set `verboseNodes` to true as well; * otherwise, identifier and boolean nodes, as well as external chains, will not be mapped. */ - sourceMap?: (node: JsNode) => [line: number, column: number] | undefined; + sourceMap?: (node: TNode) => [line: number, column: number] | undefined; }; diff --git a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts index 27f4ec1bf9..d7cefa0fa3 100644 --- a/packages/tinyest-for-wgsl/tests/sourceMap.test.ts +++ b/packages/tinyest-for-wgsl/tests/sourceMap.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; import { dualTest, parseBabel, parseRollup } from './helpers.ts'; -import type { AnyNode, SourceMap } from 'tinyest'; +import type { SourceMap } from 'tinyest'; import { transpileAcornNode, transpileBabelFn, transpileBabelNode } from '../src/parsers.ts'; function stringifyMap(map: SourceMap) { From a4507810f64a1989b550d7d465e0d84258b888b2 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Mon, 21 Sep 2026 10:38:07 +0200 Subject: [PATCH 10/39] Remove direct tinyest imports --- packages/typegpu/tests/internal/tseynit.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/typegpu/tests/internal/tseynit.test.ts b/packages/typegpu/tests/internal/tseynit.test.ts index eb601256e1..bf6f17dc8b 100644 --- a/packages/typegpu/tests/internal/tseynit.test.ts +++ b/packages/typegpu/tests/internal/tseynit.test.ts @@ -3,8 +3,6 @@ import * as tinyest from 'tinyest'; import { getFunctionMetadata } from '../../src/shared/meta.ts'; import { stringifyNode } from '../../src/shared/tseynit.ts'; import { tgpu, d } from '../../src/index.js'; -import type { BinaryExpression } from 'tinyest'; -import type { LogicalExpression } from 'tinyest'; function getBodyAst(fn: () => void) { const meta = getFunctionMetadata(fn); @@ -435,7 +433,7 @@ describe('ast to JS transformation', () => { }); it('handles boolean node', () => { - const ast: LogicalExpression = [ + const ast: tinyest.LogicalExpression = [ N.logicalExpr, [N.booleanLiteral, true], '||', From 5525ca86a8bde5fccce13515bcfb35a68d95a980 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 27 Aug 2026 14:51:52 +0200 Subject: [PATCH 11/39] Add unstable_sourceMaps option to unplugin --- packages/unplugin-typegpu/src/core/common.ts | 12 ++++++ .../unplugin-typegpu/test/obfuscation.test.ts | 37 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index e829e84fed..742eacf235 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -36,6 +36,13 @@ export interface Options { */ unstable_obfuscate?: boolean; + /** + * Keep the source map info so that resolve errors link to an appropriate source. + * + * @default false + */ + unstable_sourceMaps?: boolean; + /** * Skipping files that don't contain "typegpu", "tgpu" or "use gpu". * In case this early pruning hinders transformation, you @@ -52,6 +59,11 @@ export function checkOpts(opts: T): T { `Options 'unstable_obfuscate' and 'autoNamingEnabled' cannot be enabled at the same time.`, ); } + if (opts.unstable_obfuscate && opts.unstable_sourceMaps) { + throw new Error( + `Options 'unstable_obfuscate' and 'unstable_sourceMaps' cannot be enabled at the same time.`, + ); + } return opts; } diff --git a/packages/unplugin-typegpu/test/obfuscation.test.ts b/packages/unplugin-typegpu/test/obfuscation.test.ts index aa69082b59..bffe9694f4 100644 --- a/packages/unplugin-typegpu/test/obfuscation.test.ts +++ b/packages/unplugin-typegpu/test/obfuscation.test.ts @@ -151,6 +151,43 @@ describe('plugin obfuscation', () => { `[Error: Options 'unstable_obfuscate' and 'autoNamingEnabled' cannot be enabled at the same time.]`, ); }); + + test('[BABEL]', () => { + expect(() => + babelTransform('', { + autoNamingEnabled: false, + unstable_obfuscate: true, + unstable_sourceMaps: true, + }), + ).toThrowErrorMatchingInlineSnapshot( + `[Error: unknown file: Options 'unstable_obfuscate' and 'unstable_sourceMaps' cannot be enabled at the same time.]`, + ); + }); + + test('[ROLLUP]', async () => { + expect(() => + rollupPlugin({ + ...defaultOptions, + autoNamingEnabled: false, + unstable_obfuscate: true, + unstable_sourceMaps: true, + }), + ).toThrowErrorMatchingInlineSnapshot( + `[Error: Options 'unstable_obfuscate' and 'unstable_sourceMaps' cannot be enabled at the same time.]`, + ); + }); + + test('[BUN]', async () => { + expect(() => + bunPlugin({ + autoNamingEnabled: false, + unstable_sourceMaps: true, + unstable_obfuscate: true, + }), + ).toThrowErrorMatchingInlineSnapshot( + `[Error: Options 'unstable_obfuscate' and 'unstable_sourceMaps' cannot be enabled at the same time.]`, + ); + }); }); }); From f60e56ccae48a8deb598334b62c033d79a7ce883 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:08:35 +0200 Subject: [PATCH 12/39] Emit sourceMap to metadata --- packages/unplugin-typegpu/src/babel.ts | 3 + packages/unplugin-typegpu/src/core/common.ts | 1 + packages/unplugin-typegpu/src/core/factory.ts | 6 +- .../unplugin-typegpu/test/sourceMaps.test.ts | 72 +++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 packages/unplugin-typegpu/test/sourceMaps.test.ts diff --git a/packages/unplugin-typegpu/src/babel.ts b/packages/unplugin-typegpu/src/babel.ts index e6529dd1b4..6107e52dd1 100644 --- a/packages/unplugin-typegpu/src/babel.ts +++ b/packages/unplugin-typegpu/src/babel.ts @@ -49,6 +49,9 @@ function assignMetadata( t.objectProperty(i('name'), t.valueToNode(name)), t.objectProperty(i('ast'), t.valueToNode({ params: ast.params, body: ast.body })), t.objectProperty(i('externals'), externalsToNode(ast.externalNames)), + ...(this.opts.unstable_sourceMaps + ? [t.objectProperty(i('sourceMap'), t.valueToNode(ast.sourceMap))] + : []), ]); let expression: t.Expression; diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index 742eacf235..9fcf981449 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -167,6 +167,7 @@ export const defaultOptions = { autoNamingEnabled: true, earlyPruning: true, unstable_obfuscate: false, + unstable_sourceMaps: false, } satisfies Partial; /** diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index 8c1a424dfa..bfcbf1884d 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -44,11 +44,15 @@ function assignMetadata( name: string | undefined, ast: TranspilationResult, ): void { + const sourceMap = this.opts.unstable_sourceMaps + ? `,\n sourceMap: ${embedJSON(ast.sourceMap)}` + : ''; + const metadata = `{ v: ${METADATA_FORMAT_VERSION}, name: ${name ? `"${name}"` : 'undefined'}, ast: ${embedJSON({ params: ast.params, body: ast.body })}, - externals: ${externalsToString(ast.externalNames)} + externals: ${externalsToString(ast.externalNames)}${sourceMap} }`; const visibility = t.isFunctionDeclaration(path.node) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts new file mode 100644 index 0000000000..4f4f756768 --- /dev/null +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -0,0 +1,72 @@ +import { describe, expect, test } from 'vitest'; +import { babelTransform, rollupTransform } from './transform.ts'; + +describe('source maps', () => { + describe('assigns source maps metadata', () => { + const code = `\ + import { tgpu } from 'typegpu'; + + const external = { n: 1 } + + export const fn = (argument) => { + 'use gpu'; + const variable = 3; + return external.n + argument + variable; + };`; + + test('[BABEL]', () => { + expect(babelTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` + "import { tgpu } from 'typegpu'; + const external = { + n: 1 + }; + export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = argument => { + 'use gpu'; + + const variable = 3; + return __tsover_add(__tsover_add(external.n, argument), variable); + }, { + v: 2, + name: "fn", + ast: { + params: [{ + type: "i", + name: "argument" + }], + body: [0, [[13, "variable", [5, "3"]], [10, [1, [1, "external.n", "+", "argument"], "+", "variable"]]]] + }, + externals: { + "external.n": () => external.n + }, + sourceMap: { + path: "TODO", + entries: [] + } + }) && $.f)({});" + `); + }); + + test('[ROLLUP]', async () => { + expect(await rollupTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` + "import 'typegpu'; + + const external = { n: 1 }; + + const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = ((argument) => { + 'use gpu'; + const variable = 3; + return __tsover_add(__tsover_add(external.n, argument), variable); + }), { + v: 2, + name: "fn", + ast: {"params":[{"type":"i","name":"argument"}],"body":[0,[[13,"variable",[5,"3"]],[10,[1,[1,"external.n","+","argument"],"+","variable"]]]]}, + externals: {"external.n":() => external.n}, + sourceMap: {"path":"TODO","entries":[]} + }) && $.f)({})); + + export { fn }; + " + `); + }); + }); +}); From d3f5147f49faf2a8b6dae3905c98f3a8d13577f3 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 28 Aug 2026 12:21:02 +0200 Subject: [PATCH 13/39] Add tests for multiple plugins --- .../test/embedded-metadata.test.ts | 4 +- .../unplugin-typegpu/test/sourceMaps.test.ts | 174 +++++++++++++++++- packages/unplugin-typegpu/test/transform.ts | 11 +- 3 files changed, 182 insertions(+), 7 deletions(-) diff --git a/packages/unplugin-typegpu/test/embedded-metadata.test.ts b/packages/unplugin-typegpu/test/embedded-metadata.test.ts index 1cf8487cf8..8bb8872655 100644 --- a/packages/unplugin-typegpu/test/embedded-metadata.test.ts +++ b/packages/unplugin-typegpu/test/embedded-metadata.test.ts @@ -86,7 +86,7 @@ describe('collects embedded TypeGPU metadata', () => { test('babel', () => { const metadata: EmbeddedTypegpuMetadata[] = []; - babelTransform(code, undefined, [createBabelMetadataCollector(metadata)]); + babelTransform(code, undefined, [], [createBabelMetadataCollector(metadata)]); expect(JSON.stringify(metadata)).toMatchInlineSnapshot( `"[{"v":2,"name":"fn1"},{"v":2,"name":"fn2"},{"v":2,"name":"fn3"}]"`, @@ -96,7 +96,7 @@ describe('collects embedded TypeGPU metadata', () => { test('rollup', async () => { const metadata: EmbeddedTypegpuMetadata[] = []; - await rollupTransform(code, undefined, [createRollupMetadataCollector(metadata)]); + await rollupTransform(code, undefined, [], [createRollupMetadataCollector(metadata)]); expect(JSON.stringify(metadata)).toMatchInlineSnapshot( `"[{"v":2,"name":"fn1"},{"v":2,"name":"fn2"},{"v":2,"name":"fn3"}]"`, diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 4f4f756768..0a1dcc5073 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -1,5 +1,11 @@ import { describe, expect, test } from 'vitest'; -import { babelTransform, rollupTransform } from './transform.ts'; +import { babelTransform, rollupTransform, type BabelTestPlugin } from './transform.ts'; +import * as t from '@babel/types'; +import type { Plugin } from 'rollup'; +import * as parser from '@babel/parser'; +import traverse, { type TraverseOptions } from '@babel/traverse'; +import MagicString from 'magic-string'; +import { getBabelParserOptions, getLang } from 'ast-kit'; describe('source maps', () => { describe('assigns source maps metadata', () => { @@ -69,4 +75,170 @@ describe('source maps', () => { `); }); }); + + describe('multiple plugins', () => { + const code = `\ + export const fn = () => { + 'use gpu'; + return 1; + };`; + + // Both plugins inject a `console.log()` in the first line. + const babelPlugin: BabelTestPlugin = { + name: 'add-log', + visitor: { + Program(path) { + const logCall = t.expressionStatement( + t.callExpression(t.memberExpression(t.identifier('console'), t.identifier('log')), []), + ); + + path.unshiftContainer('body', [logCall]); + }, + }, + }; + + const rollupPlugin: Plugin = { + name: 'unplugin-typegpu', + transform: { + handler(this, code: string, id: string) { + const functionVisitor: TraverseOptions<{ magicString: MagicString }> = { + Program(_, state) { + state.magicString.prependLeft(0, 'console.log()\n'); + }, + }; + + const ast = parser.parse( + code, + getBabelParserOptions(getLang(id), { + sourceType: 'module', + allowReturnOutsideFunction: true, + }), + ); + + const magicString = new MagicString(code); + const state = { magicString }; + traverse(ast, functionVisitor, undefined, state); + + return { + code: magicString.toString(), + map: magicString.generateMap({ + source: id, + includeContent: true, + hires: 'boundary', + }), + }; + }, + }, + }; + + describe('retains original source maps when run second', () => { + test('[BABEL]', () => { + expect(babelTransform(code, { unstable_sourceMaps: true }, [babelPlugin])) + .toMatchInlineSnapshot(` + "console.log(); + export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { + 'use gpu'; + + return 1; + }, { + v: 2, + name: "fn", + ast: { + params: [], + body: [0, [[10, [5, "1"]]]] + }, + externals: {}, + sourceMap: { + path: "TODO", + entries: [[1, 30], [3, 8], [3, 15]] + } + }) && $.f)({});" + `); + }); + + test('[ROLLUP]', async () => { + expect(await rollupTransform(code, { unstable_sourceMaps: true }, [rollupPlugin])) + .toMatchInlineSnapshot(` + "console.log(); + const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { + 'use gpu'; + return 1; + }), { + v: 2, + name: "fn", + ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, + externals: {}, + sourceMap: {"path":"TODO","entries":[[1,30],[3,8],[3,15]]} + }) && $.f)({})); + + export { fn }; + " + `); + }); + }); + + describe('retains original source maps when multiple plugins run before', () => { + test('[BABEL]', () => { + expect( + babelTransform( + code, + { unstable_sourceMaps: true }, + [babelPlugin, babelPlugin, babelPlugin], + [babelPlugin], + ), + ).toMatchInlineSnapshot(` + "console.log(); + console.log(); + console.log(); + console.log(); + export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { + 'use gpu'; + + return 1; + }, { + v: 2, + name: "fn", + ast: { + params: [], + body: [0, [[10, [5, "1"]]]] + }, + externals: {}, + sourceMap: { + path: "TODO", + entries: [[1, 30], [3, 8], [3, 15]] + } + }) && $.f)({});" + `); + }); + + test('[ROLLUP]', async () => { + expect( + await rollupTransform( + code, + { unstable_sourceMaps: true }, + [rollupPlugin, rollupPlugin, rollupPlugin], + [rollupPlugin], + ), + ).toMatchInlineSnapshot(` + "console.log(); + console.log(); + console.log(); + console.log(); + const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { + 'use gpu'; + return 1; + }), { + v: 2, + name: "fn", + ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, + externals: {}, + sourceMap: {"path":"TODO","entries":[[1,30],[3,8],[3,15]]} + }) && $.f)({})); + + export { fn }; + " + `); + }); + }); + }); }); diff --git a/packages/unplugin-typegpu/test/transform.ts b/packages/unplugin-typegpu/test/transform.ts index 773253def3..323c5757d6 100644 --- a/packages/unplugin-typegpu/test/transform.ts +++ b/packages/unplugin-typegpu/test/transform.ts @@ -16,24 +16,27 @@ export type BabelTestPlugin = NonNullable[numb export const babelTransform = ( code: string, options?: Options, - additionalPlugins: BabelTestPlugin[] = [], + prePlugins: BabelTestPlugin[] = [], + postPlugins: BabelTestPlugin[] = [], ) => Babel.transform(code, { - plugins: [[babelPlugin, { ...defaultOptions, ...options }], ...additionalPlugins], + plugins: [...prePlugins, [babelPlugin, { ...defaultOptions, ...options }], ...postPlugins], parserOpts: { plugins: ['typescript'] }, }).code; export const rollupTransform = ( code: string, options?: Options, - additionalPlugins: Plugin[] = [], + prePlugins: Plugin[] = [], + postPlugins: Plugin[] = [], ) => rollup({ input: 'code', plugins: [ virtual({ code }), + ...prePlugins, rollupPlugin({ ...defaultOptions, ...options }), - ...additionalPlugins, + ...postPlugins, ], external: ['typegpu', /^typegpu\/.*$/], }) From 56620c2ec761c545e0bbfd147e902d5069097422 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 28 Aug 2026 14:57:06 +0200 Subject: [PATCH 14/39] Add more tests --- .../unplugin-typegpu/test/sourceMaps.test.ts | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 0a1dcc5073..09c289ce88 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -76,6 +76,106 @@ describe('source maps', () => { }); }); + describe('assigns source maps for object expressions and bools', () => { + const code = `\ + export const fn = () => { + 'use gpu'; + const a = 1; + const b = true; + const c = { p: 1, q: 1 }; + };`; + + test('[BABEL]', () => { + expect(babelTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` + "export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { + 'use gpu'; + + const a = 1; + const b = true; + const c = { + p: 1, + q: 1 + }; + }, { + v: 2, + name: "fn", + ast: { + params: [], + body: [0, [[13, "a", [5, "1"]], [13, "b", true], [13, "c", [104, { + p: [5, "1"], + q: [5, "1"] + }]]]] + }, + externals: {}, + sourceMap: { + path: "TODO", + entries: [[1, 30], [3, 8], [3, 14], [3, 18], [4, 8], [4, 14], [4, 18], [5, 8], [5, 14], [5, 18], [5, 20], [5, 23], [5, 26], [5, 29]] + } + }) && $.f)({});" + `); + }); + + test('[ROLLUP]', async () => { + expect(await rollupTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` + "const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { + 'use gpu'; + }), { + v: 2, + name: "fn", + ast: {"params":[],"body":[0,[[13,"a",[5,"1"]],[13,"b",true],[13,"c",[104,{"p":[5,"1"],"q":[5,"1"]}]]]]}, + externals: {}, + sourceMap: {"path":"TODO","entries":[[1,30],[3,8],[3,14],[3,18],[4,8],[4,14],[4,18],[5,8],[5,14],[5,18],[5,20],[5,23],[5,26],[5,29]]} + }) && $.f)({})); + + export { fn }; + " + `); + }); + }); + + describe('assigns source maps for body-less functions', () => { + const code = `\ + import { tgpu, d } from 'typegpu'; + + export const fn = tgpu.fn([], d.u32)(() => 42)`; + + test('[BABEL]', () => { + expect(babelTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` + "import { tgpu, d } from 'typegpu'; + export const fn = tgpu.fn([], d.u32)(/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => 42, { + v: 2, + name: undefined, + ast: { + params: [], + body: [0, [[10, [5, "42"]]]] + }, + externals: {}, + sourceMap: { + path: "TODO", + entries: [[3, 49]] + } + }) && $.f)({}));" + `); + }); + + test('[ROLLUP]', async () => { + expect(await rollupTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` + "import { tgpu, d } from 'typegpu'; + + const fn = tgpu.fn([], d.u32)((/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => 42), { + v: 2, + name: undefined, + ast: {"params":[],"body":[0,[[10,[5,"42"]]]]}, + externals: {}, + sourceMap: {"path":"TODO","entries":[[3,49]]} + }) && $.f)({}))); + + export { fn }; + " + `); + }); + }); + describe('multiple plugins', () => { const code = `\ export const fn = () => { From cac68d0c1b4356c34ee124db0732d5f0589f717c Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 28 Aug 2026 16:27:31 +0200 Subject: [PATCH 15/39] Pass correct sourcemap getters in unplugin --- packages/unplugin-typegpu/package.json | 2 + packages/unplugin-typegpu/src/core/common.ts | 30 ++++++++---- packages/unplugin-typegpu/src/core/factory.ts | 19 +++++++- pnpm-lock.yaml | 47 +++++++------------ 4 files changed, 58 insertions(+), 40 deletions(-) diff --git a/packages/unplugin-typegpu/package.json b/packages/unplugin-typegpu/package.json index 3d8ffaafc9..67e6f2b929 100644 --- a/packages/unplugin-typegpu/package.json +++ b/packages/unplugin-typegpu/package.json @@ -290,6 +290,7 @@ "@babel/parser": "^7.29.0", "@babel/traverse": "^7.29.0", "@babel/types": "catalog:", + "@jridgewell/trace-mapping": "^0.3.31", "ast-kit": "^2.2.0", "defu": "^6.1.4", "magic-string": "^0.30.21", @@ -307,6 +308,7 @@ "@types/babel__traverse": "^7.20.7", "@types/bun": "^1.3.11", "@types/picomatch": "^4.0.1", + "acorn": "^8.16.0", "rollup": "catalog:build", "tsdown": "catalog:build", "typescript": "catalog:types" diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index 9fcf981449..ef43a663b9 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -5,6 +5,7 @@ import MagicString from 'magic-string'; import { transpileBabelFn, type TranspilationResult } from 'tinyest-for-wgsl'; import { getEmbeddedTypegpuMetadata } from './embeddedMetadata.ts'; import { obfuscate } from './obfuscate.ts'; +import type * as acorn from 'acorn'; /** * Each breaking change to the metadata format requires a bump to this number. @@ -138,6 +139,10 @@ export interface PluginState extends TransformMethods { opts: Required; inUseGpuScope: boolean; + + originalPositionFor: ( + node: acorn.AnyNode | babel.Node, + ) => [start: number, end: number] | undefined; } export interface NodeLocation { @@ -156,6 +161,13 @@ export function initPluginState(state: PluginState, methods: TransformMethods): state.tgpuAliases = new Set(state.opts.forceTgpuAlias ? [state.opts.forceTgpuAlias] : []); state.autoNamingEnabled = state.opts.autoNamingEnabled ?? true; state.inUseGpuScope = false; + // Unless a plugin provides this function, we default to returning info contained in node. + state.originalPositionFor ??= (node) => { + if (!node.loc) { + return undefined; + } + return [node.loc.start.line, node.loc.start.column]; + }; Object.assign(state, methods); } @@ -503,11 +515,11 @@ function functionOnExit( } function transpile( - rootNode: Parameters[0], - obf: boolean, -): TranspilationResult { - const result = transpileBabelFn(rootNode); - if (obf) { + ctx: PluginState, + rootNode: Parameters[0], +): ReturnType { + const result = transpileFn(rootNode, ctx.originalPositionFor); + if (ctx.opts.unstable_obfuscate) { return obfuscate(result); } return result; @@ -571,7 +583,7 @@ export const functionVisitor: TraverseOptions = { ArrowFunctionExpression: { enter(path, state) { if (containsUseGpuDirective(path.node) && getEmbeddedTypegpuMetadata(path) === undefined) { - fnNodeToTranspiledMap.set(path.node, transpile(path.node, this.opts.unstable_obfuscate)); + fnNodeToTranspiledMap.set(path.node, transpile(this, path.node)); if (state.inUseGpuScope) { throw new Error(`Nesting 'use gpu' functions is not allowed`); } @@ -584,7 +596,7 @@ export const functionVisitor: TraverseOptions = { FunctionExpression: { enter(path, state) { if (containsUseGpuDirective(path.node) && getEmbeddedTypegpuMetadata(path) === undefined) { - fnNodeToTranspiledMap.set(path.node, transpile(path.node, this.opts.unstable_obfuscate)); + fnNodeToTranspiledMap.set(path.node, transpile(this, path.node)); if (state.inUseGpuScope) { throw new Error(`Nesting 'use gpu' functions is not allowed`); } @@ -597,7 +609,7 @@ export const functionVisitor: TraverseOptions = { FunctionDeclaration: { enter(path, state) { if (containsUseGpuDirective(path.node) && getEmbeddedTypegpuMetadata(path) === undefined) { - fnNodeToTranspiledMap.set(path.node, transpile(path.node, this.opts.unstable_obfuscate)); + fnNodeToTranspiledMap.set(path.node, transpile(this, path.node)); if (state.inUseGpuScope) { throw new Error(`Nesting 'use gpu' functions is not allowed`); } @@ -626,7 +638,7 @@ export const functionVisitor: TraverseOptions = { t.ArrowFunctionExpression | t.FunctionDeclaration | t.FunctionExpression >, getFunctionName(path.get('arguments.0')), - transpile(implementation, this.opts.unstable_obfuscate), + transpile(this, implementation), ); } } diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index bfcbf1884d..a850e62f31 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -17,6 +17,8 @@ import { } from './common.ts'; import type { Options, UnpluginPluginState, MetadatableFunction, NodeLocation } from './common.ts'; +import type { TransformPluginContext } from 'rollup'; +import { TraceMap, originalPositionFor, type SourceMapInput } from '@jridgewell/trace-mapping'; // I love CommonJS 💔 let traverse = _traverse; @@ -181,12 +183,27 @@ export const unpluginFactory = ((rawOptions, _meta) => { } const magicString = new MagicString(code); + const combinedSourcemap = (this as TransformPluginContext).getCombinedSourcemap(); + const tracer = new TraceMap(combinedSourcemap as SourceMapInput); const state = { filename: id, magicString, opts: options, ...NodeUtils, + originalPositionFor: (node) => { + if (!node.loc) { + return undefined; + } + const result = originalPositionFor(tracer, { + line: node.loc?.start.line, + column: node.loc?.start.column, + }); + if (result.line === null || result.column === null) { + return undefined; + } + return [result.line, result.column]; + }, } as UnpluginPluginState; initPluginState(state, { @@ -206,7 +223,7 @@ export const unpluginFactory = ((rawOptions, _meta) => { return magicString.generateMap({ source: id, includeContent: true, - hires: 'boundary', + hires: options.unstable_sourceMaps ? true : 'boundary', }); }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ff5db3c9d..f03f5f0fed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1048,6 +1048,9 @@ importers: '@babel/types': specifier: ^7.29.0 version: 7.29.0 + '@jridgewell/trace-mapping': + specifier: ^0.3.31 + version: 0.3.31 ast-kit: specifier: ^2.2.0 version: 2.2.0 @@ -1097,6 +1100,9 @@ importers: '@types/picomatch': specifier: ^4.0.1 version: 4.0.1 + acorn: + specifier: ^8.16.0 + version: 8.16.0 rollup: specifier: ^4.60.0 version: 4.60.1 @@ -1250,10 +1256,6 @@ packages: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.29.7': resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} @@ -5049,11 +5051,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} @@ -10339,7 +10336,7 @@ snapshots: '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.7 '@babel/template': 7.28.6 '@babel/traverse': 7.29.7 '@babel/types': 7.29.0 @@ -10352,14 +10349,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - '@babel/generator@7.29.7': dependencies: '@babel/parser': 7.29.7 @@ -10867,7 +10856,7 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.7 '@babel/types': 7.29.0 '@babel/template@7.29.7': @@ -10879,7 +10868,7 @@ snapshots: '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 + '@babel/generator': 7.29.7 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.29.0 '@babel/template': 7.28.6 @@ -12434,7 +12423,7 @@ snapshots: '@react-native/codegen@0.84.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.7 hermes-parser: 0.32.0 invariant: 2.2.4 nullthrows: 1.1.1 @@ -13769,9 +13758,9 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn-import-phases@1.0.4(acorn@8.15.0): + acorn-import-phases@1.0.4(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn-jsx@5.3.2(acorn@8.16.0): dependencies: @@ -13779,8 +13768,6 @@ snapshots: acorn@8.14.1: {} - acorn@8.15.0: {} - acorn@8.16.0: {} agent-base@7.1.4: {} @@ -16196,7 +16183,7 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.7 '@babel/types': 7.29.0 source-map-js: 1.2.1 @@ -16743,7 +16730,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/core': 7.29.0 '@babel/generator': 7.29.7 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.7 '@babel/template': 7.28.6 '@babel/traverse': 7.29.7 '@babel/types': 7.29.0 @@ -18259,7 +18246,7 @@ snapshots: rolldown-plugin-dts@0.17.8(rolldown@1.0.0-beta.45(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(tsover@6.0.2): dependencies: - '@babel/generator': 7.29.1 + '@babel/generator': 7.29.7 '@babel/parser': 7.29.0 '@babel/types': 7.29.0 ast-kit: 2.2.0 @@ -19604,8 +19591,8 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 From e1905d16b4cdcdf2cb184dd6bc94f37837aa5c75 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 14:21:52 +0200 Subject: [PATCH 16/39] Fix types --- packages/unplugin-typegpu/src/core/common.ts | 30 ++++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index ef43a663b9..5b57bd0277 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -5,7 +5,7 @@ import MagicString from 'magic-string'; import { transpileBabelFn, type TranspilationResult } from 'tinyest-for-wgsl'; import { getEmbeddedTypegpuMetadata } from './embeddedMetadata.ts'; import { obfuscate } from './obfuscate.ts'; -import type * as acorn from 'acorn'; +import { embedSourceMap, type Block, type SourceMappedNode } from 'tinyest'; /** * Each breaking change to the metadata format requires a bump to this number. @@ -73,6 +73,10 @@ export type MetadatableFunction = | t.FunctionExpression | t.ArrowFunctionExpression; +export type PluginTranspilationResult = Omit & { + body: Block | SourceMappedNode; +}; + export interface TransformMethods { warn(message: string): void; @@ -109,7 +113,7 @@ export interface TransformMethods { this: PluginState, path: NodePath, name: string | undefined, - ast: TranspilationResult, + ast: PluginTranspilationResult, ): void; wrapInAutoName(this: PluginState, path: NodePath, name: string): void; @@ -140,9 +144,7 @@ export interface PluginState extends TransformMethods { inUseGpuScope: boolean; - originalPositionFor: ( - node: acorn.AnyNode | babel.Node, - ) => [start: number, end: number] | undefined; + originalPositionFor: (node: t.Node) => [line: number, column: number] | undefined; } export interface NodeLocation { @@ -491,7 +493,7 @@ function containsUseGpuDirective( const fnNodeToTranspiledMap = new WeakMap< t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression, - TranspilationResult + PluginTranspilationResult >(); function functionOnExit( @@ -516,9 +518,19 @@ function functionOnExit( function transpile( ctx: PluginState, - rootNode: Parameters[0], -): ReturnType { - const result = transpileFn(rootNode, ctx.originalPositionFor); + rootNode: Parameters[0], +): PluginTranspilationResult { + if (ctx.opts.unstable_sourceMaps) { + const result = transpileBabelFn(rootNode, { + verboseNodes: true, + // oxlint-disable-next-line typescript/no-explicit-any -- TODO: better type here + sourceMap: ctx.originalPositionFor as any, + }); + const mappedResult: PluginTranspilationResult = result; + mappedResult.body = embedSourceMap(result.body, result.sourceMap); + return mappedResult; + } + const result = transpileBabelFn(rootNode); if (ctx.opts.unstable_obfuscate) { return obfuscate(result); } From e6254cb49ff177e217d411dd8d1c8b763837f346 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 14:30:30 +0200 Subject: [PATCH 17/39] Fix source map in metadata --- packages/unplugin-typegpu/src/babel.ts | 8 +- packages/unplugin-typegpu/src/core/factory.ts | 16 ++-- .../unplugin-typegpu/test/sourceMaps.test.ts | 93 +++++++------------ 3 files changed, 46 insertions(+), 71 deletions(-) diff --git a/packages/unplugin-typegpu/src/babel.ts b/packages/unplugin-typegpu/src/babel.ts index 6107e52dd1..c39879cf1f 100644 --- a/packages/unplugin-typegpu/src/babel.ts +++ b/packages/unplugin-typegpu/src/babel.ts @@ -1,10 +1,11 @@ import type { NodePath, TraverseOptions } from '@babel/traverse'; import defu from 'defu'; -import type { Externals, TranspilationResult } from 'tinyest-for-wgsl'; +import type { Externals } from 'tinyest-for-wgsl'; import * as t from '@babel/types'; import { METADATA_FORMAT_VERSION, type PluginState, + type PluginTranspilationResult, checkOpts, defaultOptions, functionVisitor, @@ -42,16 +43,13 @@ function assignMetadata( this: PluginState, path: NodePath, name: string | undefined, - ast: TranspilationResult, + ast: PluginTranspilationResult, ): void { const metadata = t.objectExpression([ t.objectProperty(i('v'), t.numericLiteral(METADATA_FORMAT_VERSION)), t.objectProperty(i('name'), t.valueToNode(name)), t.objectProperty(i('ast'), t.valueToNode({ params: ast.params, body: ast.body })), t.objectProperty(i('externals'), externalsToNode(ast.externalNames)), - ...(this.opts.unstable_sourceMaps - ? [t.objectProperty(i('sourceMap'), t.valueToNode(ast.sourceMap))] - : []), ]); let expression: t.Expression; diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index a850e62f31..fcdb3be218 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -16,7 +16,13 @@ import { checkOpts, } from './common.ts'; -import type { Options, UnpluginPluginState, MetadatableFunction, NodeLocation } from './common.ts'; +import type { + Options, + UnpluginPluginState, + MetadatableFunction, + NodeLocation, + PluginTranspilationResult, +} from './common.ts'; import type { TransformPluginContext } from 'rollup'; import { TraceMap, originalPositionFor, type SourceMapInput } from '@jridgewell/trace-mapping'; @@ -44,17 +50,13 @@ function assignMetadata( this: UnpluginPluginState, path: NodePath, name: string | undefined, - ast: TranspilationResult, + ast: PluginTranspilationResult, ): void { - const sourceMap = this.opts.unstable_sourceMaps - ? `,\n sourceMap: ${embedJSON(ast.sourceMap)}` - : ''; - const metadata = `{ v: ${METADATA_FORMAT_VERSION}, name: ${name ? `"${name}"` : 'undefined'}, ast: ${embedJSON({ params: ast.params, body: ast.body })}, - externals: ${externalsToString(ast.externalNames)}${sourceMap} + externals: ${externalsToString(ast.externalNames)} }`; const visibility = t.isFunctionDeclaration(path.node) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 09c289ce88..ed1b29d29f 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -39,14 +39,10 @@ describe('source maps', () => { type: "i", name: "argument" }], - body: [0, [[13, "variable", [5, "3"]], [10, [1, [1, "external.n", "+", "argument"], "+", "variable"]]]] + body: [-1, 5, 38, [0, [[-1, 7, 8, [13, [-1, 7, 14, [9, "variable"]], [-1, 7, 25, [5, "3"]]]], [-1, 8, 8, [10, [-1, 8, 15, [1, [-1, 8, 15, [1, [-1, 8, 15, [9, "external.n"]], "+", [-1, 8, 28, [9, "argument"]]]], "+", [-1, 8, 39, [9, "variable"]]]]]]]]] }, externals: { "external.n": () => external.n - }, - sourceMap: { - path: "TODO", - entries: [] } }) && $.f)({});" `); @@ -65,9 +61,8 @@ describe('source maps', () => { }), { v: 2, name: "fn", - ast: {"params":[{"type":"i","name":"argument"}],"body":[0,[[13,"variable",[5,"3"]],[10,[1,[1,"external.n","+","argument"],"+","variable"]]]]}, - externals: {"external.n":() => external.n}, - sourceMap: {"path":"TODO","entries":[]} + ast: {"params":[{"type":"i","name":"argument"}],"body":[-1,5,38,[0,[[-1,7,8,[13,[-1,7,14,[9,"variable"]],[-1,7,25,[5,"3"]]]],[-1,8,8,[10,[-1,8,15,[1,[-1,8,15,[1,[-1,8,15,[9,"external.n"]],"+",[-1,8,28,[9,"argument"]]]],"+",[-1,8,39,[9,"variable"]]]]]]]]]}, + externals: {"external.n":() => external.n} }) && $.f)({})); export { fn }; @@ -101,16 +96,12 @@ describe('source maps', () => { name: "fn", ast: { params: [], - body: [0, [[13, "a", [5, "1"]], [13, "b", true], [13, "c", [104, { - p: [5, "1"], - q: [5, "1"] - }]]]] + body: [-1, 1, 30, [0, [[-1, 3, 8, [13, [-1, 3, 14, [9, "a"]], [-1, 3, 18, [5, "1"]]]], [-1, 4, 8, [13, [-1, 4, 14, [9, "b"]], [-1, 4, 18, [107, true]]]], [-1, 5, 8, [13, [-1, 5, 14, [9, "c"]], [-1, 5, 18, [104, { + p: [-1, 5, 23, [5, "1"]], + q: [-1, 5, 29, [5, "1"]] + }]]]]]]] }, - externals: {}, - sourceMap: { - path: "TODO", - entries: [[1, 30], [3, 8], [3, 14], [3, 18], [4, 8], [4, 14], [4, 18], [5, 8], [5, 14], [5, 18], [5, 20], [5, 23], [5, 26], [5, 29]] - } + externals: {} }) && $.f)({});" `); }); @@ -122,9 +113,8 @@ describe('source maps', () => { }), { v: 2, name: "fn", - ast: {"params":[],"body":[0,[[13,"a",[5,"1"]],[13,"b",true],[13,"c",[104,{"p":[5,"1"],"q":[5,"1"]}]]]]}, - externals: {}, - sourceMap: {"path":"TODO","entries":[[1,30],[3,8],[3,14],[3,18],[4,8],[4,14],[4,18],[5,8],[5,14],[5,18],[5,20],[5,23],[5,26],[5,29]]} + ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[13,[-1,3,14,[9,"a"]],[-1,3,18,[5,"1"]]]],[-1,4,8,[13,[-1,4,14,[9,"b"]],[-1,4,18,[107,true]]]],[-1,5,8,[13,[-1,5,14,[9,"c"]],[-1,5,18,[104,{"p":[-1,5,23,[5,"1"]],"q":[-1,5,29,[5,"1"]]}]]]]]]]}, + externals: {} }) && $.f)({})); export { fn }; @@ -147,13 +137,9 @@ describe('source maps', () => { name: undefined, ast: { params: [], - body: [0, [[10, [5, "42"]]]] + body: [0, [[10, [-1, 3, 49, [5, "42"]]]]] }, - externals: {}, - sourceMap: { - path: "TODO", - entries: [[3, 49]] - } + externals: {} }) && $.f)({}));" `); }); @@ -165,9 +151,8 @@ describe('source maps', () => { const fn = tgpu.fn([], d.u32)((/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => 42), { v: 2, name: undefined, - ast: {"params":[],"body":[0,[[10,[5,"42"]]]]}, - externals: {}, - sourceMap: {"path":"TODO","entries":[[3,49]]} + ast: {"params":[],"body":[0,[[10,[-1,3,49,[5,"42"]]]]]}, + externals: {} }) && $.f)({}))); export { fn }; @@ -235,25 +220,21 @@ describe('source maps', () => { test('[BABEL]', () => { expect(babelTransform(code, { unstable_sourceMaps: true }, [babelPlugin])) .toMatchInlineSnapshot(` - "console.log(); - export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { - 'use gpu'; + "console.log(); + export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { + 'use gpu'; - return 1; - }, { - v: 2, - name: "fn", - ast: { - params: [], - body: [0, [[10, [5, "1"]]]] - }, - externals: {}, - sourceMap: { - path: "TODO", - entries: [[1, 30], [3, 8], [3, 15]] - } - }) && $.f)({});" - `); + return 1; + }, { + v: 2, + name: "fn", + ast: { + params: [], + body: [-1, 1, 30, [0, [[-1, 3, 8, [10, [-1, 3, 15, [5, "1"]]]]]]] + }, + externals: {} + }) && $.f)({});" + `); }); test('[ROLLUP]', async () => { @@ -266,9 +247,8 @@ describe('source maps', () => { }), { v: 2, name: "fn", - ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, - externals: {}, - sourceMap: {"path":"TODO","entries":[[1,30],[3,8],[3,15]]} + ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]}, + externals: {} }) && $.f)({})); export { fn }; @@ -300,13 +280,9 @@ describe('source maps', () => { name: "fn", ast: { params: [], - body: [0, [[10, [5, "1"]]]] + body: [-1, 1, 30, [0, [[-1, 3, 8, [10, [-1, 3, 15, [5, "1"]]]]]]] }, - externals: {}, - sourceMap: { - path: "TODO", - entries: [[1, 30], [3, 8], [3, 15]] - } + externals: {} }) && $.f)({});" `); }); @@ -330,9 +306,8 @@ describe('source maps', () => { }), { v: 2, name: "fn", - ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, - externals: {}, - sourceMap: {"path":"TODO","entries":[[1,30],[3,8],[3,15]]} + ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]}, + externals: {} }) && $.f)({})); export { fn }; From 251e71bfe34e56c0449328750f7ceb34818dbe9a Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 16 Sep 2026 14:50:26 +0200 Subject: [PATCH 18/39] Handle source mapped metadata in typegpu --- packages/typegpu/src/core/function/fnCore.ts | 4 ++- .../typegpu/src/shared/normalizeMetadata.ts | 6 ++--- .../typegpu/tests/internal/metadata.test.ts | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/packages/typegpu/src/core/function/fnCore.ts b/packages/typegpu/src/core/function/fnCore.ts index 020207d21d..726fbac559 100644 --- a/packages/typegpu/src/core/function/fnCore.ts +++ b/packages/typegpu/src/core/function/fnCore.ts @@ -1,3 +1,4 @@ +import { stripSourceMap, type Block, type SourceMap } from 'tinyest'; import { getAttributesString } from '../../data/attributes.ts'; import { undecorate } from '../../data/dataTypes.ts'; import { type ResolvedSnippet, snip } from '../../data/snippet.ts'; @@ -221,6 +222,7 @@ export function createFnCore( "Missing metadata for tgpu.fn function body (either missing 'use gpu' directive, or misconfigured `unplugin-typegpu`)", ); } + const [body, _] = stripSourceMap(ast.body) as [Block, SourceMap]; // If an entrypoint implementation has a second argument, it represents the output schema. // We look at the identifier chosen by the user and add it to externals. @@ -242,7 +244,7 @@ export function createFnCore( entryInput, params: ast.params, returnType, - body: ast.body, + body, externalMap: mergeFunctionExternals(externals), }); diff --git a/packages/typegpu/src/shared/normalizeMetadata.ts b/packages/typegpu/src/shared/normalizeMetadata.ts index 0d821064f6..3ef2fe0456 100644 --- a/packages/typegpu/src/shared/normalizeMetadata.ts +++ b/packages/typegpu/src/shared/normalizeMetadata.ts @@ -1,4 +1,4 @@ -import type { Block, FuncParameter } from 'tinyest'; +import type { Block, FuncParameter, SourceMappedNode } from 'tinyest'; import { safeStringify } from './stringify.ts'; export interface RawMetadataV1 { @@ -13,7 +13,7 @@ export interface RawMetadataV1 { export interface RawMetadataV2 { v: 2; name: string; - ast: { params: FuncParameter[]; body: Block }; + ast: { params: FuncParameter[]; body: Block | SourceMappedNode }; externals: { [key: string]: () => unknown }; } @@ -26,7 +26,7 @@ export type RawMetadata = RawMetadataV1 | RawMetadataV2; * Holds normalized function metadata required for WGSL generation */ export interface Metadata { - ast: { params: FuncParameter[]; body: Block }; + ast: { params: FuncParameter[]; body: Block | SourceMappedNode }; externals: () => Record; } diff --git a/packages/typegpu/tests/internal/metadata.test.ts b/packages/typegpu/tests/internal/metadata.test.ts index 6cbd5f9885..52c712614f 100644 --- a/packages/typegpu/tests/internal/metadata.test.ts +++ b/packages/typegpu/tests/internal/metadata.test.ts @@ -9,6 +9,7 @@ import type { RawMetadataV1, RawMetadataV2, } from '../../src/shared/normalizeMetadata.ts'; +import type { Block, SourceMap } from 'tinyest'; // functions in this file intentionally have no 'use gpu' directive describe('meta', () => { @@ -311,4 +312,30 @@ describe('meta', () => { }" `); }); + + it('correctly strips source-mapped functions', () => { + const fn = () => {}; + const ast: Block = [ + NODE.block, + [[NODE.const, [NODE.identifier, 'a'], [NODE.numericLiteral, '1']]], + ]; + const sourceMap: SourceMap = new Map(); + sourceMap.get = () => [1, 1]; + const meta: RawMetadataV2 = { + v: 2, + name: 'fn', + externals: {}, + ast: { + params: [], + body: tinyest.embedSourceMap(ast, sourceMap), + }, + }; + assignMetadata(fn, meta); + + expect(tgpu.resolve([fn])).toMatchInlineSnapshot(` + "fn fn_1() { + const a = 1; + }" + `); + }); }); From fc210728dc86d58175a3438505b146d5a9013762 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 12:36:00 +0200 Subject: [PATCH 19/39] Simplify map type --- packages/unplugin-typegpu/src/core/common.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index 5b57bd0277..6f11864c46 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -523,8 +523,7 @@ function transpile( if (ctx.opts.unstable_sourceMaps) { const result = transpileBabelFn(rootNode, { verboseNodes: true, - // oxlint-disable-next-line typescript/no-explicit-any -- TODO: better type here - sourceMap: ctx.originalPositionFor as any, + sourceMap: ctx.originalPositionFor, }); const mappedResult: PluginTranspilationResult = result; mappedResult.body = embedSourceMap(result.body, result.sourceMap); From 37f8f00efec63f5ab6baa70af56d9ad2ee594b70 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 12:37:21 +0200 Subject: [PATCH 20/39] Remove acorn dep --- packages/unplugin-typegpu/package.json | 1 - pnpm-lock.yaml | 3 --- 2 files changed, 4 deletions(-) diff --git a/packages/unplugin-typegpu/package.json b/packages/unplugin-typegpu/package.json index 67e6f2b929..53090cf4f4 100644 --- a/packages/unplugin-typegpu/package.json +++ b/packages/unplugin-typegpu/package.json @@ -308,7 +308,6 @@ "@types/babel__traverse": "^7.20.7", "@types/bun": "^1.3.11", "@types/picomatch": "^4.0.1", - "acorn": "^8.16.0", "rollup": "catalog:build", "tsdown": "catalog:build", "typescript": "catalog:types" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f03f5f0fed..994280433d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1100,9 +1100,6 @@ importers: '@types/picomatch': specifier: ^4.0.1 version: 4.0.1 - acorn: - specifier: ^8.16.0 - version: 8.16.0 rollup: specifier: ^4.60.0 version: 4.60.1 From 4def6162eb4e5a507972543b3bb3b17b7e649d90 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:29:52 +0200 Subject: [PATCH 21/39] Fix tseynit tests --- packages/typegpu/tests/internal/tseynit.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typegpu/tests/internal/tseynit.test.ts b/packages/typegpu/tests/internal/tseynit.test.ts index bf6f17dc8b..6645840bdc 100644 --- a/packages/typegpu/tests/internal/tseynit.test.ts +++ b/packages/typegpu/tests/internal/tseynit.test.ts @@ -9,7 +9,7 @@ function getBodyAst(fn: () => void) { if (!meta) { throw new Error('Expected ast to be defined'); } - return meta.ast.body; + return meta.ast.body as tinyest.Block; } describe('ast to JS transformation', () => { From d78d9a5b53612c8be31da2d4c460c41b49dec986 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:30:03 +0200 Subject: [PATCH 22/39] Simplify state initialization --- packages/unplugin-typegpu/src/babel.ts | 6 ++++++ packages/unplugin-typegpu/src/core/common.ts | 12 +++++------- packages/unplugin-typegpu/src/core/factory.ts | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/unplugin-typegpu/src/babel.ts b/packages/unplugin-typegpu/src/babel.ts index c39879cf1f..d4720b3434 100644 --- a/packages/unplugin-typegpu/src/babel.ts +++ b/packages/unplugin-typegpu/src/babel.ts @@ -167,6 +167,12 @@ export default function TypeGPUPlugin() { name: 'typegpu', pre(this: PluginState) { this.opts = checkOpts(defu(this.opts, defaultOptions)); + this.originalPositionFor = (node) => { + if (!node.loc) { + return undefined; + } + return [node.loc.start.line, node.loc.start.column]; + }; initPluginState(this, { warn: (message) => console.warn(message), assignMetadata, diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index 6f11864c46..47a1fe2b54 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -144,6 +144,11 @@ export interface PluginState extends TransformMethods { inUseGpuScope: boolean; + /** + * Used for source mapping. + * Babel keeps the correct combined source map on the node, + * but for rollup we need to calculate it ourself. + */ originalPositionFor: (node: t.Node) => [line: number, column: number] | undefined; } @@ -163,13 +168,6 @@ export function initPluginState(state: PluginState, methods: TransformMethods): state.tgpuAliases = new Set(state.opts.forceTgpuAlias ? [state.opts.forceTgpuAlias] : []); state.autoNamingEnabled = state.opts.autoNamingEnabled ?? true; state.inUseGpuScope = false; - // Unless a plugin provides this function, we default to returning info contained in node. - state.originalPositionFor ??= (node) => { - if (!node.loc) { - return undefined; - } - return [node.loc.start.line, node.loc.start.column]; - }; Object.assign(state, methods); } diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index fcdb3be218..3275b3a934 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -3,7 +3,7 @@ import MagicString from 'magic-string'; import { getBabelParserOptions, getLang } from 'ast-kit'; import type { UnpluginBuildContext, UnpluginContext, UnpluginFactory } from 'unplugin'; import _traverse, { type NodePath } from '@babel/traverse'; -import type { Externals, TranspilationResult } from 'tinyest-for-wgsl'; +import type { Externals } from 'tinyest-for-wgsl'; import * as parser from '@babel/parser'; import * as t from '@babel/types'; import { From 44ab18002f4cde13e9e3a6158fa1303b206d28f7 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:40:29 +0200 Subject: [PATCH 23/39] Fix tseynit tests --- packages/typegpu/tests/internal/tseynit.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typegpu/tests/internal/tseynit.test.ts b/packages/typegpu/tests/internal/tseynit.test.ts index 6645840bdc..1e9e6ae578 100644 --- a/packages/typegpu/tests/internal/tseynit.test.ts +++ b/packages/typegpu/tests/internal/tseynit.test.ts @@ -9,7 +9,7 @@ function getBodyAst(fn: () => void) { if (!meta) { throw new Error('Expected ast to be defined'); } - return meta.ast.body as tinyest.Block; + return tinyest.stripSourceMap(meta.ast.body)[0]; } describe('ast to JS transformation', () => { From 7cffb579c2440dec9fbe3d885c3fb0160713dc88 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 14:14:31 +0200 Subject: [PATCH 24/39] Move plugins to top of the file --- .../unplugin-typegpu/test/sourceMaps.test.ts | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index ed1b29d29f..b959b8a607 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -7,6 +7,54 @@ import traverse, { type TraverseOptions } from '@babel/traverse'; import MagicString from 'magic-string'; import { getBabelParserOptions, getLang } from 'ast-kit'; +// Both plugins inject a `console.log()` in the first line. +const babelPlugin: BabelTestPlugin = { + name: 'add-log', + visitor: { + Program(path) { + const logCall = t.expressionStatement( + t.callExpression(t.memberExpression(t.identifier('console'), t.identifier('log')), []), + ); + + path.unshiftContainer('body', [logCall]); + }, + }, +}; + +const rollupPlugin: Plugin = { + name: 'add-log', + transform: { + handler(this, code: string, id: string) { + const functionVisitor: TraverseOptions<{ magicString: MagicString }> = { + Program(_, state) { + state.magicString.prependLeft(0, 'console.log()\n'); + }, + }; + + const ast = parser.parse( + code, + getBabelParserOptions(getLang(id), { + sourceType: 'module', + allowReturnOutsideFunction: true, + }), + ); + + const magicString = new MagicString(code); + const state = { magicString }; + traverse(ast, functionVisitor, undefined, state); + + return { + code: magicString.toString(), + map: magicString.generateMap({ + source: id, + includeContent: true, + hires: 'boundary', + }), + }; + }, + }, +}; + describe('source maps', () => { describe('assigns source maps metadata', () => { const code = `\ @@ -168,54 +216,6 @@ describe('source maps', () => { return 1; };`; - // Both plugins inject a `console.log()` in the first line. - const babelPlugin: BabelTestPlugin = { - name: 'add-log', - visitor: { - Program(path) { - const logCall = t.expressionStatement( - t.callExpression(t.memberExpression(t.identifier('console'), t.identifier('log')), []), - ); - - path.unshiftContainer('body', [logCall]); - }, - }, - }; - - const rollupPlugin: Plugin = { - name: 'unplugin-typegpu', - transform: { - handler(this, code: string, id: string) { - const functionVisitor: TraverseOptions<{ magicString: MagicString }> = { - Program(_, state) { - state.magicString.prependLeft(0, 'console.log()\n'); - }, - }; - - const ast = parser.parse( - code, - getBabelParserOptions(getLang(id), { - sourceType: 'module', - allowReturnOutsideFunction: true, - }), - ); - - const magicString = new MagicString(code); - const state = { magicString }; - traverse(ast, functionVisitor, undefined, state); - - return { - code: magicString.toString(), - map: magicString.generateMap({ - source: id, - includeContent: true, - hires: 'boundary', - }), - }; - }, - }, - }; - describe('retains original source maps when run second', () => { test('[BABEL]', () => { expect(babelTransform(code, { unstable_sourceMaps: true }, [babelPlugin])) From 21be5465a72b175fbbab89cb1c2b1b4d305d9794 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 14:24:25 +0200 Subject: [PATCH 25/39] Change rollup plugin to unplugin factory --- .../unplugin-typegpu/test/sourceMaps.test.ts | 67 ++++++++++--------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index b959b8a607..0c4e84b99e 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -6,6 +6,7 @@ import * as parser from '@babel/parser'; import traverse, { type TraverseOptions } from '@babel/traverse'; import MagicString from 'magic-string'; import { getBabelParserOptions, getLang } from 'ast-kit'; +import { createUnplugin, type UnpluginFactory } from 'unplugin'; // Both plugins inject a `console.log()` in the first line. const babelPlugin: BabelTestPlugin = { @@ -21,39 +22,43 @@ const babelPlugin: BabelTestPlugin = { }, }; -const rollupPlugin: Plugin = { - name: 'add-log', - transform: { - handler(this, code: string, id: string) { - const functionVisitor: TraverseOptions<{ magicString: MagicString }> = { - Program(_, state) { - state.magicString.prependLeft(0, 'console.log()\n'); - }, - }; - - const ast = parser.parse( - code, - getBabelParserOptions(getLang(id), { - sourceType: 'module', - allowReturnOutsideFunction: true, - }), - ); +const unpluginFactory = (() => { + return { + name: 'add-log', + transform: { + handler(this, code: string, id: string) { + const functionVisitor: TraverseOptions<{ magicString: MagicString }> = { + Program(_, state) { + state.magicString.prependLeft(0, 'console.log()\n'); + }, + }; - const magicString = new MagicString(code); - const state = { magicString }; - traverse(ast, functionVisitor, undefined, state); - - return { - code: magicString.toString(), - map: magicString.generateMap({ - source: id, - includeContent: true, - hires: 'boundary', - }), - }; + const ast = parser.parse( + code, + getBabelParserOptions(getLang(id), { + sourceType: 'module', + allowReturnOutsideFunction: true, + }), + ); + + const magicString = new MagicString(code); + const state = { magicString }; + traverse(ast, functionVisitor, undefined, state); + + return { + code: magicString.toString(), + map: magicString.generateMap({ + source: id, + includeContent: true, + hires: 'boundary', + }), + }; + }, }, - }, -}; + }; +}) satisfies UnpluginFactory; +const unpluginPlugin = createUnplugin(unpluginFactory); +const rollupPlugin = unpluginPlugin.rollup() as Plugin; describe('source maps', () => { describe('assigns source maps metadata', () => { From 0c82e303022f886ab702aafe4c297303619cd932 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:00:10 +0200 Subject: [PATCH 26/39] Add webpack tests --- packages/unplugin-typegpu/package.json | 3 +- .../unplugin-typegpu/test/sourceMaps.test.ts | 50 ++++++++++++- packages/unplugin-typegpu/test/transform.ts | 56 +++++++++++++++ pnpm-lock.yaml | 71 +++++++++++++------ 4 files changed, 157 insertions(+), 23 deletions(-) diff --git a/packages/unplugin-typegpu/package.json b/packages/unplugin-typegpu/package.json index 53090cf4f4..e4a02cecf5 100644 --- a/packages/unplugin-typegpu/package.json +++ b/packages/unplugin-typegpu/package.json @@ -310,7 +310,8 @@ "@types/picomatch": "^4.0.1", "rollup": "catalog:build", "tsdown": "catalog:build", - "typescript": "catalog:types" + "typescript": "catalog:types", + "webpack": "^5.104.1" }, "peerDependencies": { "typegpu": "workspace:^" diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 0c4e84b99e..4bf8393b3a 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -1,5 +1,10 @@ import { describe, expect, test } from 'vitest'; -import { babelTransform, rollupTransform, type BabelTestPlugin } from './transform.ts'; +import { + babelTransform, + rollupTransform, + webpackTransform, + type BabelTestPlugin, +} from './transform.ts'; import * as t from '@babel/types'; import type { Plugin } from 'rollup'; import * as parser from '@babel/parser'; @@ -59,6 +64,13 @@ const unpluginFactory = (() => { }) satisfies UnpluginFactory; const unpluginPlugin = createUnplugin(unpluginFactory); const rollupPlugin = unpluginPlugin.rollup() as Plugin; +const webpackPlugin = unpluginPlugin.webpack(); + +// The result includes many irrelevant comments, +// including the path that is different with each test execution. +function stripWebpackResult(res: string) { + return res.split('/* harmony export */ });\n').at(-1)?.split('/******/ })()').at(0); +} describe('source maps', () => { describe('assigns source maps metadata', () => { @@ -262,6 +274,42 @@ describe('source maps', () => { }); }); + test('works when plugin does not expose `getCombinedSourcemap`', async () => { + expect(stripWebpackResult(await webpackTransform(code, { unstable_sourceMaps: true }))) + .toMatchInlineSnapshot(` + " const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { + 'use gpu'; + return 1; + }), { + v: 2, + name: "fn", + ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, + externals: {} + }) && $.f)({})); + " + `); + }); + + test('falls back to original source maps when run second and plugin does not expose `getCombinedSourcemap`', async () => { + expect( + stripWebpackResult( + await webpackTransform(code, { unstable_sourceMaps: true }, [webpackPlugin]), + ), + ).toMatchInlineSnapshot(` + "console.log() + const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { + 'use gpu'; + return 1; + }), { + v: 2, + name: "fn", + ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, + externals: {} + }) && $.f)({})); + " + `); + }); + describe('retains original source maps when multiple plugins run before', () => { test('[BABEL]', () => { expect( diff --git a/packages/unplugin-typegpu/test/transform.ts b/packages/unplugin-typegpu/test/transform.ts index 323c5757d6..acd2959a3a 100644 --- a/packages/unplugin-typegpu/test/transform.ts +++ b/packages/unplugin-typegpu/test/transform.ts @@ -1,9 +1,16 @@ import Babel from '@babel/standalone'; import virtual from '@rollup/plugin-virtual'; +import { readFile, rm, writeFile } from 'node:fs/promises'; +import { join } from 'node:path'; import { type Plugin, rollup } from 'rollup'; +import { type Configuration, type Stats, webpack } from 'webpack'; import babelPlugin from '../src/babel.ts'; import type { Options } from '../src/core/common.ts'; import rollupPlugin from '../src/rollup.ts'; +import webpackPlugin from '../src/webpack.ts'; +import fs from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; const defaultOptions: Options = { include: [/\.m?[jt]sx?$/, /virtual:/], @@ -42,3 +49,52 @@ export const rollupTransform = ( }) .then((build) => build.generate({})) .then((generated) => generated.output[0].code); + +export type WebpackTestPlugin = NonNullable[number]; + +async function createTempDir() { + const ostmpdir = os.tmpdir(); + const tmpdir = path.join(ostmpdir, 'unplugin-typegpu-test-'); + return await fs.mkdtemp(tmpdir); +} + +export const webpackTransform = async ( + code: string, + options?: Options, + prePlugins: WebpackTestPlugin[] = [], + postPlugins: WebpackTestPlugin[] = [], +) => { + const dir = await createTempDir(); + try { + const input = join(dir, 'input.js'); + await writeFile(input, code); + + await new Promise((resolve, reject) => { + webpack( + { + entry: input, + mode: 'development', + devtool: 'source-map', + output: { path: join(dir, 'dist'), filename: 'output.js' }, + plugins: [ + ...prePlugins, + webpackPlugin({ ...defaultOptions, ...options }), + ...postPlugins, + ], + }, + (err, stats) => { + if (err || stats?.hasErrors()) { + console.error(stats?.toString()); + reject(err || new Error('Webpack bundling failed')); + } else { + resolve(); + } + }, + ); + }); + + return await readFile(join(dir, 'dist', 'output.js'), 'utf-8'); + } finally { + await rm(dir, { recursive: true, force: true }); + } +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 994280433d..ba57d68e52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1109,6 +1109,9 @@ importers: typescript: specifier: npm:tsover@^6.0.2 version: tsover@6.0.2 + webpack: + specifier: ^5.104.1 + version: 5.104.1(esbuild@0.27.5) publishDirectory: dist packages: @@ -4583,9 +4586,6 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -5264,10 +5264,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - baseline-browser-mapping@2.9.11: - resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} - hasBin: true - bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} @@ -9017,10 +9013,6 @@ packages: tailwindcss@4.1.18: resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} - tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} - engines: {node: '>=6'} - tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} @@ -13156,8 +13148,6 @@ snapshots: dependencies: '@types/estree': 1.0.8 - '@types/estree@1.0.6': {} - '@types/estree@1.0.8': {} '@types/geojson@7946.0.16': {} @@ -14104,8 +14094,6 @@ snapshots: baseline-browser-mapping@2.10.38: {} - baseline-browser-mapping@2.9.11: {} - bcp-47-match@2.0.3: {} bcp-47@2.1.0: @@ -14160,7 +14148,7 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.11 + baseline-browser-mapping: 2.10.38 caniuse-lite: 1.0.30001762 electron-to-chromium: 1.5.267 node-releases: 2.0.27 @@ -14814,7 +14802,7 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.3 + tapable: 2.3.0 enhanced-resolve@5.18.4: dependencies: @@ -15095,7 +15083,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -18818,8 +18806,6 @@ snapshots: tailwindcss@4.1.18: {} - tapable@2.2.3: {} - tapable@2.3.0: {} terser-webpack-plugin@5.3.16(esbuild@0.25.12)(webpack@5.104.1): @@ -18833,6 +18819,17 @@ snapshots: optionalDependencies: esbuild: 0.25.12 + terser-webpack-plugin@5.3.16(esbuild@0.27.5)(webpack@5.104.1(esbuild@0.27.5)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + terser: 5.44.1 + webpack: 5.104.1(esbuild@0.27.5) + optionalDependencies: + esbuild: 0.27.5 + terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.11 @@ -19592,7 +19589,7 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.18.4 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -19614,6 +19611,38 @@ snapshots: - esbuild - uglify-js + webpack@5.104.1(esbuild@0.27.5): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.16.0 + acorn-import-phases: 1.0.4(acorn@8.16.0) + browserslist: 4.28.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.4 + es-module-lexer: 2.0.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.16(esbuild@0.27.5)(webpack@5.104.1(esbuild@0.27.5)) + watchpack: 2.5.0 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + wgpu-matrix@3.4.0: {} wgsl-wasm-transpiler-bundler@0.0.1: {} From 16311ea7664031175ecbb9fbcae12d63536329c2 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:12:48 +0200 Subject: [PATCH 27/39] Add a proper fallback for webpack --- packages/unplugin-typegpu/src/babel.ts | 8 +--- packages/unplugin-typegpu/src/core/common.ts | 7 ++++ packages/unplugin-typegpu/src/core/factory.ts | 42 ++++++++++++------- .../unplugin-typegpu/test/sourceMaps.test.ts | 6 +-- 4 files changed, 39 insertions(+), 24 deletions(-) diff --git a/packages/unplugin-typegpu/src/babel.ts b/packages/unplugin-typegpu/src/babel.ts index d4720b3434..606cfd4bd1 100644 --- a/packages/unplugin-typegpu/src/babel.ts +++ b/packages/unplugin-typegpu/src/babel.ts @@ -11,6 +11,7 @@ import { functionVisitor, getBlockScope, initPluginState, + nodePosition, } from './core/common.ts'; import { createFilterForId } from './core/filter.ts'; @@ -167,12 +168,7 @@ export default function TypeGPUPlugin() { name: 'typegpu', pre(this: PluginState) { this.opts = checkOpts(defu(this.opts, defaultOptions)); - this.originalPositionFor = (node) => { - if (!node.loc) { - return undefined; - } - return [node.loc.start.line, node.loc.start.column]; - }; + this.originalPositionFor = nodePosition; initPluginState(this, { warn: (message) => console.warn(message), assignMetadata, diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index 47a1fe2b54..f26cff3ad6 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -481,6 +481,13 @@ const operators = { '%=': '__tsover_mod', }; +export function nodePosition(node: t.Node): [line: number, column: number] | undefined { + if (!node.loc) { + return undefined; + } + return [node.loc.start.line, node.loc.start.column]; +} + function containsUseGpuDirective( node: t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression, ): boolean { diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index 3275b3a934..4125dbfaad 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -14,6 +14,7 @@ import { getBlockScope, METADATA_FORMAT_VERSION, checkOpts, + nodePosition, } from './common.ts'; import type { @@ -150,6 +151,31 @@ const NodeUtils = { }, }; +function tryGetCombinedSourceMap(ctx: UnpluginBuildContext & UnpluginContext) { + try { + const combinedSourcemap = (ctx as TransformPluginContext).getCombinedSourcemap(); + const tracer = new TraceMap(combinedSourcemap as SourceMapInput); + return (node: t.Node) => { + if (!node.loc) { + return undefined; + } + const result = originalPositionFor(tracer, { + line: node.loc?.start.line, + column: node.loc?.start.column, + }); + if (result.line === null || result.column === null) { + return undefined; + } + return [result.line, result.column]; + }; + } catch { + console.warn(`\ +This version of unplugin-typegpu does not support combined source maps. +If another plugin modifies the code, source maps may point to modified locations.`); + return nodePosition; + } +} + export const unpluginFactory = ((rawOptions, _meta) => { const options = checkOpts(defu(rawOptions, defaultOptions)); @@ -185,27 +211,13 @@ export const unpluginFactory = ((rawOptions, _meta) => { } const magicString = new MagicString(code); - const combinedSourcemap = (this as TransformPluginContext).getCombinedSourcemap(); - const tracer = new TraceMap(combinedSourcemap as SourceMapInput); const state = { filename: id, magicString, opts: options, ...NodeUtils, - originalPositionFor: (node) => { - if (!node.loc) { - return undefined; - } - const result = originalPositionFor(tracer, { - line: node.loc?.start.line, - column: node.loc?.start.column, - }); - if (result.line === null || result.column === null) { - return undefined; - } - return [result.line, result.column]; - }, + originalPositionFor: tryGetCombinedSourceMap(this), } as UnpluginPluginState; initPluginState(state, { diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 4bf8393b3a..fdac30ce0a 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -283,14 +283,14 @@ describe('source maps', () => { }), { v: 2, name: "fn", - ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, + ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]}, externals: {} }) && $.f)({})); " `); }); - test('falls back to original source maps when run second and plugin does not expose `getCombinedSourcemap`', async () => { + test('falls back to node position when run second and plugin does not expose `getCombinedSourcemap`', async () => { expect( stripWebpackResult( await webpackTransform(code, { unstable_sourceMaps: true }, [webpackPlugin]), @@ -303,7 +303,7 @@ describe('source maps', () => { }), { v: 2, name: "fn", - ast: {"params":[],"body":[0,[[10,[5,"1"]]]]}, + ast: {"params":[],"body":[-1,2,30,[0,[[-1,4,8,[10,[-1,4,15,[5,"1"]]]]]]]}, externals: {} }) && $.f)({})); " From 65c15f541013bd86af9a6e0a8befd400be5bccf2 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:22:31 +0200 Subject: [PATCH 28/39] Update tests --- .../unplugin-typegpu/test/sourceMaps.test.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index fdac30ce0a..ee92a1d68a 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, test } from 'vitest'; +import { describe, expect, test, vi } from 'vitest'; import { babelTransform, rollupTransform, @@ -274,7 +274,7 @@ describe('source maps', () => { }); }); - test('works when plugin does not expose `getCombinedSourcemap`', async () => { + test('[WEBPACK] works when plugin does not expose `getCombinedSourcemap`', async () => { expect(stripWebpackResult(await webpackTransform(code, { unstable_sourceMaps: true }))) .toMatchInlineSnapshot(` " const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { @@ -290,7 +290,9 @@ describe('source maps', () => { `); }); - test('falls back to node position when run second and plugin does not expose `getCombinedSourcemap`', async () => { + test('[WEBPACK] warns and falls back to node position when run second and plugin does not expose `getCombinedSourcemap`', async () => { + using consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); + expect( stripWebpackResult( await webpackTransform(code, { unstable_sourceMaps: true }, [webpackPlugin]), @@ -308,6 +310,14 @@ describe('source maps', () => { }) && $.f)({})); " `); + + expect(consoleWarnSpy).toHaveBeenCalledTimes(1); + expect(consoleWarnSpy.mock.calls[0]).toMatchInlineSnapshot(` + [ + "This version of unplugin-typegpu does not support combined source maps. + If another plugin modifies the code, source maps may point to modified locations.", + ] + `); }); describe('retains original source maps when multiple plugins run before', () => { From 6df9e08e5a6a9d35c34e213822ae0f2948783b97 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:31:20 +0200 Subject: [PATCH 29/39] nr fix --- packages/unplugin-typegpu/test/transform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/unplugin-typegpu/test/transform.ts b/packages/unplugin-typegpu/test/transform.ts index acd2959a3a..97dadf0093 100644 --- a/packages/unplugin-typegpu/test/transform.ts +++ b/packages/unplugin-typegpu/test/transform.ts @@ -3,7 +3,7 @@ import virtual from '@rollup/plugin-virtual'; import { readFile, rm, writeFile } from 'node:fs/promises'; import { join } from 'node:path'; import { type Plugin, rollup } from 'rollup'; -import { type Configuration, type Stats, webpack } from 'webpack'; +import { type Configuration, webpack } from 'webpack'; import babelPlugin from '../src/babel.ts'; import type { Options } from '../src/core/common.ts'; import rollupPlugin from '../src/rollup.ts'; From 818f3598f649d010d325942d5b88dde25c30626f Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:50:04 +0200 Subject: [PATCH 30/39] Sanify types --- packages/unplugin-typegpu/src/core/common.ts | 12 +++- packages/unplugin-typegpu/src/core/factory.ts | 63 +++++++++++++------ 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index f26cff3ad6..75f4803024 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -149,9 +149,15 @@ export interface PluginState extends TransformMethods { * Babel keeps the correct combined source map on the node, * but for rollup we need to calculate it ourself. */ - originalPositionFor: (node: t.Node) => [line: number, column: number] | undefined; + originalPositionFor: NodePositionProvider; } +/** + * Resolves the position of a node in the file the user actually authored, + * or `undefined` if it cannot be mapped back. + */ +export type NodePositionProvider = (node: t.Node) => [line: number, column: number] | undefined; + export interface NodeLocation { start?: number | null; end?: number | null; @@ -481,12 +487,12 @@ const operators = { '%=': '__tsover_mod', }; -export function nodePosition(node: t.Node): [line: number, column: number] | undefined { +export const nodePosition: NodePositionProvider = (node) => { if (!node.loc) { return undefined; } return [node.loc.start.line, node.loc.start.column]; -} +}; function containsUseGpuDirective( node: t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression, diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index 4125dbfaad..a1305348d1 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -22,10 +22,11 @@ import type { UnpluginPluginState, MetadatableFunction, NodeLocation, + NodePositionProvider, PluginTranspilationResult, } from './common.ts'; -import type { TransformPluginContext } from 'rollup'; -import { TraceMap, originalPositionFor, type SourceMapInput } from '@jridgewell/trace-mapping'; +import type { SourceMap } from 'rollup'; +import { TraceMap, originalPositionFor } from '@jridgewell/trace-mapping'; // I love CommonJS 💔 let traverse = _traverse; @@ -151,29 +152,51 @@ const NodeUtils = { }, }; -function tryGetCombinedSourceMap(ctx: UnpluginBuildContext & UnpluginContext) { - try { - const combinedSourcemap = (ctx as TransformPluginContext).getCombinedSourcemap(); - const tracer = new TraceMap(combinedSourcemap as SourceMapInput); - return (node: t.Node) => { - if (!node.loc) { - return undefined; - } - const result = originalPositionFor(tracer, { - line: node.loc?.start.line, - column: node.loc?.start.column, - }); - if (result.line === null || result.column === null) { - return undefined; - } - return [result.line, result.column]; - }; - } catch { +interface CombinedSourcemapContext { + getCombinedSourcemap(): SourceMap; +} + +function supportsCombinedSourcemap( + ctx: UnpluginBuildContext & UnpluginContext, +): ctx is UnpluginBuildContext & UnpluginContext & CombinedSourcemapContext { + return typeof (ctx as Partial).getCombinedSourcemap === 'function'; +} + +function tryGetCombinedSourceMap( + ctx: UnpluginBuildContext & UnpluginContext, +): NodePositionProvider { + if (!supportsCombinedSourcemap(ctx)) { console.warn(`\ This version of unplugin-typegpu does not support combined source maps. If another plugin modifies the code, source maps may point to modified locations.`); return nodePosition; } + + const combinedMap = ctx.getCombinedSourcemap(); + // Rollup doesn't type the map properly. + if (combinedMap.version !== 3) { + console.warn(`Incompatible combined map version: ${combinedMap.version} and 3.`); + return nodePosition; + } + const tracer = new TraceMap({ + ...combinedMap, + version: 3, + sourcesContent: combinedMap.sourcesContent ?? [], + }); + + return (node) => { + if (!node.loc) { + return undefined; + } + const { line, column } = originalPositionFor(tracer, { + line: node.loc.start.line, + column: node.loc.start.column, + }); + if (line === null || column === null) { + return undefined; + } + return [line, column]; + }; } export const unpluginFactory = ((rawOptions, _meta) => { From 7b4faa7571d58cbd3d4b435e214b6b7efa89a9a2 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 18 Sep 2026 12:28:42 +0200 Subject: [PATCH 31/39] Simplify tests to only AST --- .../unplugin-typegpu/test/sourceMaps.test.ts | 306 ++++++------------ 1 file changed, 92 insertions(+), 214 deletions(-) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index ee92a1d68a..3135373d92 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -1,9 +1,9 @@ import { describe, expect, test, vi } from 'vitest'; import { + type BabelTestPlugin, babelTransform, rollupTransform, webpackTransform, - type BabelTestPlugin, } from './transform.ts'; import * as t from '@babel/types'; import type { Plugin } from 'rollup'; @@ -72,6 +72,17 @@ function stripWebpackResult(res: string) { return res.split('/* harmony export */ });\n').at(-1)?.split('/******/ })()').at(0); } +function stripAstBody(res: string | null | undefined) { + if (!res) { + return res; + } + return res + .split(/body: |"body":/) + .at(-1) + ?.split('},\n') + .at(0); +} + describe('source maps', () => { describe('assigns source maps metadata', () => { const code = `\ @@ -86,53 +97,24 @@ describe('source maps', () => { };`; test('[BABEL]', () => { - expect(babelTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` - "import { tgpu } from 'typegpu'; - const external = { - n: 1 - }; - export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = argument => { - 'use gpu'; - - const variable = 3; - return __tsover_add(__tsover_add(external.n, argument), variable); - }, { - v: 2, - name: "fn", - ast: { - params: [{ - type: "i", - name: "argument" - }], - body: [-1, 5, 38, [0, [[-1, 7, 8, [13, [-1, 7, 14, [9, "variable"]], [-1, 7, 25, [5, "3"]]]], [-1, 8, 8, [10, [-1, 8, 15, [1, [-1, 8, 15, [1, [-1, 8, 15, [9, "external.n"]], "+", [-1, 8, 28, [9, "argument"]]]], "+", [-1, 8, 39, [9, "variable"]]]]]]]]] - }, - externals: { - "external.n": () => external.n - } - }) && $.f)({});" - `); + const transformed = babelTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot( + ` + "[-1, 5, 38, [0, [[-1, 7, 8, [13, [-1, 7, 14, [9, "variable"]], [-1, 7, 25, [5, "3"]]]], [-1, 8, 8, [10, [-1, 8, 15, [1, [-1, 8, 15, [1, [-1, 8, 15, [9, "external.n"]], "+", [-1, 8, 28, [9, "argument"]]]], "+", [-1, 8, 39, [9, "variable"]]]]]]]]] + " + `, + ); }); test('[ROLLUP]', async () => { - expect(await rollupTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` - "import 'typegpu'; - - const external = { n: 1 }; - - const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = ((argument) => { - 'use gpu'; - const variable = 3; - return __tsover_add(__tsover_add(external.n, argument), variable); - }), { - v: 2, - name: "fn", - ast: {"params":[{"type":"i","name":"argument"}],"body":[-1,5,38,[0,[[-1,7,8,[13,[-1,7,14,[9,"variable"]],[-1,7,25,[5,"3"]]]],[-1,8,8,[10,[-1,8,15,[1,[-1,8,15,[1,[-1,8,15,[9,"external.n"]],"+",[-1,8,28,[9,"argument"]]]],"+",[-1,8,39,[9,"variable"]]]]]]]]]}, - externals: {"external.n":() => external.n} - }) && $.f)({})); - - export { fn }; - " - `); + const transformed = await rollupTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot( + `"[-1,5,38,[0,[[-1,7,8,[13,[-1,7,14,[9,"variable"]],[-1,7,25,[5,"3"]]]],[-1,8,8,[10,[-1,8,15,[1,[-1,8,15,[1,[-1,8,15,[9,"external.n"]],"+",[-1,8,28,[9,"argument"]]]],"+",[-1,8,39,[9,"variable"]]]]]]]]]"`, + ); }); }); @@ -146,45 +128,25 @@ describe('source maps', () => { };`; test('[BABEL]', () => { - expect(babelTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` - "export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { - 'use gpu'; - - const a = 1; - const b = true; - const c = { - p: 1, - q: 1 - }; - }, { - v: 2, - name: "fn", - ast: { - params: [], - body: [-1, 1, 30, [0, [[-1, 3, 8, [13, [-1, 3, 14, [9, "a"]], [-1, 3, 18, [5, "1"]]]], [-1, 4, 8, [13, [-1, 4, 14, [9, "b"]], [-1, 4, 18, [107, true]]]], [-1, 5, 8, [13, [-1, 5, 14, [9, "c"]], [-1, 5, 18, [104, { + const transformed = babelTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(` + "[-1, 1, 30, [0, [[-1, 3, 8, [13, [-1, 3, 14, [9, "a"]], [-1, 3, 18, [5, "1"]]]], [-1, 4, 8, [13, [-1, 4, 14, [9, "b"]], [-1, 4, 18, [107, true]]]], [-1, 5, 8, [13, [-1, 5, 14, [9, "c"]], [-1, 5, 18, [104, { p: [-1, 5, 23, [5, "1"]], q: [-1, 5, 29, [5, "1"]] }]]]]]]] - }, - externals: {} - }) && $.f)({});" + " `); }); test('[ROLLUP]', async () => { - expect(await rollupTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` - "const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { - 'use gpu'; - }), { - v: 2, - name: "fn", - ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[13,[-1,3,14,[9,"a"]],[-1,3,18,[5,"1"]]]],[-1,4,8,[13,[-1,4,14,[9,"b"]],[-1,4,18,[107,true]]]],[-1,5,8,[13,[-1,5,14,[9,"c"]],[-1,5,18,[104,{"p":[-1,5,23,[5,"1"]],"q":[-1,5,29,[5,"1"]]}]]]]]]]}, - externals: {} - }) && $.f)({})); - - export { fn }; - " - `); + const transformed = await rollupTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot( + `"[-1,1,30,[0,[[-1,3,8,[13,[-1,3,14,[9,"a"]],[-1,3,18,[5,"1"]]]],[-1,4,8,[13,[-1,4,14,[9,"b"]],[-1,4,18,[107,true]]]],[-1,5,8,[13,[-1,5,14,[9,"c"]],[-1,5,18,[104,{"p":[-1,5,23,[5,"1"]],"q":[-1,5,29,[5,"1"]]}]]]]]]]"`, + ); }); }); @@ -195,34 +157,20 @@ describe('source maps', () => { export const fn = tgpu.fn([], d.u32)(() => 42)`; test('[BABEL]', () => { - expect(babelTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` - "import { tgpu, d } from 'typegpu'; - export const fn = tgpu.fn([], d.u32)(/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => 42, { - v: 2, - name: undefined, - ast: { - params: [], - body: [0, [[10, [-1, 3, 49, [5, "42"]]]]] - }, - externals: {} - }) && $.f)({}));" + const transformed = babelTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(` + "[0, [[10, [-1, 3, 49, [5, "42"]]]]] + " `); }); test('[ROLLUP]', async () => { - expect(await rollupTransform(code, { unstable_sourceMaps: true })).toMatchInlineSnapshot(` - "import { tgpu, d } from 'typegpu'; - - const fn = tgpu.fn([], d.u32)((/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => 42), { - v: 2, - name: undefined, - ast: {"params":[],"body":[0,[[10,[-1,3,49,[5,"42"]]]]]}, - externals: {} - }) && $.f)({}))); - - export { fn }; - " - `); + const transformed = await rollupTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(`"[0,[[10,[-1,3,49,[5,"42"]]]]]"`); }); }); @@ -235,81 +183,41 @@ describe('source maps', () => { describe('retains original source maps when run second', () => { test('[BABEL]', () => { - expect(babelTransform(code, { unstable_sourceMaps: true }, [babelPlugin])) - .toMatchInlineSnapshot(` - "console.log(); - export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { - 'use gpu'; - - return 1; - }, { - v: 2, - name: "fn", - ast: { - params: [], - body: [-1, 1, 30, [0, [[-1, 3, 8, [10, [-1, 3, 15, [5, "1"]]]]]]] - }, - externals: {} - }) && $.f)({});" - `); + const transformed = babelTransform(code, { unstable_sourceMaps: true }, [babelPlugin]); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(` + "[-1, 1, 30, [0, [[-1, 3, 8, [10, [-1, 3, 15, [5, "1"]]]]]]] + " + `); }); test('[ROLLUP]', async () => { - expect(await rollupTransform(code, { unstable_sourceMaps: true }, [rollupPlugin])) - .toMatchInlineSnapshot(` - "console.log(); - const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { - 'use gpu'; - return 1; - }), { - v: 2, - name: "fn", - ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]}, - externals: {} - }) && $.f)({})); - - export { fn }; - " - `); + const transformed = await rollupTransform(code, { unstable_sourceMaps: true }, [ + rollupPlugin, + ]); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(`"[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]"`); }); }); test('[WEBPACK] works when plugin does not expose `getCombinedSourcemap`', async () => { - expect(stripWebpackResult(await webpackTransform(code, { unstable_sourceMaps: true }))) - .toMatchInlineSnapshot(` - " const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { - 'use gpu'; - return 1; - }), { - v: 2, - name: "fn", - ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]}, - externals: {} - }) && $.f)({})); - " - `); + const transformed = await webpackTransform(code, { unstable_sourceMaps: true }); + const stripped = stripAstBody(stripWebpackResult(transformed)); + + expect(stripped).toMatchInlineSnapshot(`"[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]"`); }); test('[WEBPACK] warns and falls back to node position when run second and plugin does not expose `getCombinedSourcemap`', async () => { using consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); - expect( - stripWebpackResult( - await webpackTransform(code, { unstable_sourceMaps: true }, [webpackPlugin]), - ), - ).toMatchInlineSnapshot(` - "console.log() - const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { - 'use gpu'; - return 1; - }), { - v: 2, - name: "fn", - ast: {"params":[],"body":[-1,2,30,[0,[[-1,4,8,[10,[-1,4,15,[5,"1"]]]]]]]}, - externals: {} - }) && $.f)({})); - " - `); + const transformed = await webpackTransform(code, { unstable_sourceMaps: true }, [ + webpackPlugin, + ]); + const stripped = stripAstBody(stripWebpackResult(transformed)); + + expect(stripped).toMatchInlineSnapshot(`"[-1,2,30,[0,[[-1,4,8,[10,[-1,4,15,[5,"1"]]]]]]]"`); expect(consoleWarnSpy).toHaveBeenCalledTimes(1); expect(consoleWarnSpy.mock.calls[0]).toMatchInlineSnapshot(` @@ -322,60 +230,30 @@ describe('source maps', () => { describe('retains original source maps when multiple plugins run before', () => { test('[BABEL]', () => { - expect( - babelTransform( - code, - { unstable_sourceMaps: true }, - [babelPlugin, babelPlugin, babelPlugin], - [babelPlugin], - ), - ).toMatchInlineSnapshot(` - "console.log(); - console.log(); - console.log(); - console.log(); - export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = () => { - 'use gpu'; - - return 1; - }, { - v: 2, - name: "fn", - ast: { - params: [], - body: [-1, 1, 30, [0, [[-1, 3, 8, [10, [-1, 3, 15, [5, "1"]]]]]]] - }, - externals: {} - }) && $.f)({});" + const transformed = babelTransform( + code, + { unstable_sourceMaps: true }, + [babelPlugin, babelPlugin, babelPlugin], + [babelPlugin], + ); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(` + "[-1, 1, 30, [0, [[-1, 3, 8, [10, [-1, 3, 15, [5, "1"]]]]]]] + " `); }); test('[ROLLUP]', async () => { - expect( - await rollupTransform( - code, - { unstable_sourceMaps: true }, - [rollupPlugin, rollupPlugin, rollupPlugin], - [rollupPlugin], - ), - ).toMatchInlineSnapshot(` - "console.log(); - console.log(); - console.log(); - console.log(); - const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = (() => { - 'use gpu'; - return 1; - }), { - v: 2, - name: "fn", - ast: {"params":[],"body":[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]}, - externals: {} - }) && $.f)({})); - - export { fn }; - " - `); + const transformed = await rollupTransform( + code, + { unstable_sourceMaps: true }, + [rollupPlugin, rollupPlugin, rollupPlugin], + [rollupPlugin], + ); + const stripped = stripAstBody(transformed); + + expect(stripped).toMatchInlineSnapshot(`"[-1,1,30,[0,[[-1,3,8,[10,[-1,3,15,[5,"1"]]]]]]]"`); }); }); }); From 933366c6f1fddda92de00f4a98b1ef5f65389780 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 18 Sep 2026 12:32:51 +0200 Subject: [PATCH 32/39] Revert two tests --- .../unplugin-typegpu/test/sourceMaps.test.ts | 51 ++++++++++++++++--- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 3135373d92..626623d0a7 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -98,22 +98,59 @@ describe('source maps', () => { test('[BABEL]', () => { const transformed = babelTransform(code, { unstable_sourceMaps: true }); - const stripped = stripAstBody(transformed); - expect(stripped).toMatchInlineSnapshot( + expect(transformed).toMatchInlineSnapshot( ` - "[-1, 5, 38, [0, [[-1, 7, 8, [13, [-1, 7, 14, [9, "variable"]], [-1, 7, 25, [5, "3"]]]], [-1, 8, 8, [10, [-1, 8, 15, [1, [-1, 8, 15, [1, [-1, 8, 15, [9, "external.n"]], "+", [-1, 8, 28, [9, "argument"]]]], "+", [-1, 8, 39, [9, "variable"]]]]]]]]] - " + "import { tgpu } from 'typegpu'; + const external = { + n: 1 + }; + export const fn = /*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = argument => { + 'use gpu'; + + const variable = 3; + return __tsover_add(__tsover_add(external.n, argument), variable); + }, { + v: 2, + name: "fn", + ast: { + params: [{ + type: "i", + name: "argument" + }], + body: [-1, 5, 38, [0, [[-1, 7, 8, [13, [-1, 7, 14, [9, "variable"]], [-1, 7, 25, [5, "3"]]]], [-1, 8, 8, [10, [-1, 8, 15, [1, [-1, 8, 15, [1, [-1, 8, 15, [9, "external.n"]], "+", [-1, 8, 28, [9, "argument"]]]], "+", [-1, 8, 39, [9, "variable"]]]]]]]]] + }, + externals: { + "external.n": () => external.n + } + }) && $.f)({});" `, ); }); test('[ROLLUP]', async () => { const transformed = await rollupTransform(code, { unstable_sourceMaps: true }); - const stripped = stripAstBody(transformed); - expect(stripped).toMatchInlineSnapshot( - `"[-1,5,38,[0,[[-1,7,8,[13,[-1,7,14,[9,"variable"]],[-1,7,25,[5,"3"]]]],[-1,8,8,[10,[-1,8,15,[1,[-1,8,15,[1,[-1,8,15,[9,"external.n"]],"+",[-1,8,28,[9,"argument"]]]],"+",[-1,8,39,[9,"variable"]]]]]]]]]"`, + expect(transformed).toMatchInlineSnapshot( + ` + "import 'typegpu'; + + const external = { n: 1 }; + + const fn = (/*#__PURE__*/($ => (globalThis.__TYPEGPU_META__ ??= new WeakMap()).set($.f = ((argument) => { + 'use gpu'; + const variable = 3; + return __tsover_add(__tsover_add(external.n, argument), variable); + }), { + v: 2, + name: "fn", + ast: {"params":[{"type":"i","name":"argument"}],"body":[-1,5,38,[0,[[-1,7,8,[13,[-1,7,14,[9,"variable"]],[-1,7,25,[5,"3"]]]],[-1,8,8,[10,[-1,8,15,[1,[-1,8,15,[1,[-1,8,15,[9,"external.n"]],"+",[-1,8,28,[9,"argument"]]]],"+",[-1,8,39,[9,"variable"]]]]]]]]]}, + externals: {"external.n":() => external.n} + }) && $.f)({})); + + export { fn }; + " + `, ); }); }); From 0348bc474926890774e6b44ab612247ac83a0ea2 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 18 Sep 2026 13:00:53 +0200 Subject: [PATCH 33/39] Don't warn when source maps are disabled --- packages/unplugin-typegpu/src/core/factory.ts | 4 +++- packages/unplugin-typegpu/test/sourceMaps.test.ts | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index a1305348d1..5ef3a0c593 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -240,7 +240,9 @@ export const unpluginFactory = ((rawOptions, _meta) => { magicString, opts: options, ...NodeUtils, - originalPositionFor: tryGetCombinedSourceMap(this), + originalPositionFor: options.unstable_sourceMaps + ? tryGetCombinedSourceMap(this) + : nodePosition, } as UnpluginPluginState; initPluginState(state, { diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 626623d0a7..7b02a747c3 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -265,6 +265,14 @@ describe('source maps', () => { `); }); + test('[WEBPACK] does not warn when source maps are disabled', async () => { + using consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); + + await webpackTransform(code, { unstable_sourceMaps: false }, [webpackPlugin]); + + expect(consoleWarnSpy).toHaveBeenCalledTimes(0); + }); + describe('retains original source maps when multiple plugins run before', () => { test('[BABEL]', () => { const transformed = babelTransform( From 7ca77f7378086db612a458fb9133964fe771f8b9 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 18 Sep 2026 13:01:06 +0200 Subject: [PATCH 34/39] Tidy up transpile --- packages/unplugin-typegpu/src/core/common.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/unplugin-typegpu/src/core/common.ts b/packages/unplugin-typegpu/src/core/common.ts index 75f4803024..a2e0f147b4 100644 --- a/packages/unplugin-typegpu/src/core/common.ts +++ b/packages/unplugin-typegpu/src/core/common.ts @@ -536,9 +536,7 @@ function transpile( verboseNodes: true, sourceMap: ctx.originalPositionFor, }); - const mappedResult: PluginTranspilationResult = result; - mappedResult.body = embedSourceMap(result.body, result.sourceMap); - return mappedResult; + return { ...result, body: embedSourceMap(result.body, result.sourceMap) }; } const result = transpileBabelFn(rootNode); if (ctx.opts.unstable_obfuscate) { From c80b81a353d88bdb7de97cbb03bb4ac143442fca Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 18 Sep 2026 16:50:17 +0200 Subject: [PATCH 35/39] Remove unnecessary option --- packages/unplugin-typegpu/src/core/factory.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index 5ef3a0c593..31ef899013 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -262,7 +262,7 @@ export const unpluginFactory = ((rawOptions, _meta) => { return magicString.generateMap({ source: id, includeContent: true, - hires: options.unstable_sourceMaps ? true : 'boundary', + hires: 'boundary', }); }, }; From 73f20b0f47213e29e4640d7feb5317f82ea8237e Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 22 Oct 2026 16:50:33 +0200 Subject: [PATCH 36/39] impr: webpackTransform signature --- packages/unplugin-typegpu/test/transform.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/unplugin-typegpu/test/transform.ts b/packages/unplugin-typegpu/test/transform.ts index 97dadf0093..3808fffc01 100644 --- a/packages/unplugin-typegpu/test/transform.ts +++ b/packages/unplugin-typegpu/test/transform.ts @@ -58,12 +58,12 @@ async function createTempDir() { return await fs.mkdtemp(tmpdir); } -export const webpackTransform = async ( +export async function webpackTransform( code: string, options?: Options, prePlugins: WebpackTestPlugin[] = [], postPlugins: WebpackTestPlugin[] = [], -) => { +) { const dir = await createTempDir(); try { const input = join(dir, 'input.js'); @@ -97,4 +97,4 @@ export const webpackTransform = async ( } finally { await rm(dir, { recursive: true, force: true }); } -}; +} From 891b4acb01ec5087a08e4596c6f505ececb90ec3 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Thu, 22 Oct 2026 17:38:35 +0200 Subject: [PATCH 37/39] impr: warn only once --- packages/unplugin-typegpu/src/core/factory.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/unplugin-typegpu/src/core/factory.ts b/packages/unplugin-typegpu/src/core/factory.ts index 31ef899013..4d18af17ff 100644 --- a/packages/unplugin-typegpu/src/core/factory.ts +++ b/packages/unplugin-typegpu/src/core/factory.ts @@ -162,13 +162,23 @@ function supportsCombinedSourcemap( return typeof (ctx as Partial).getCombinedSourcemap === 'function'; } +const warnAboutSourceMapsOnce = (() => { + let warned = false; + return () => { + if (!warned) { + console.warn(`\ +[unplugin-typegpu] The current bundler does not provide combined source maps (getCombinedSourcemap). +If another plugin modifies the code, source maps may point to modified locations.`); + warned = true; + } + }; +})(); + function tryGetCombinedSourceMap( ctx: UnpluginBuildContext & UnpluginContext, ): NodePositionProvider { if (!supportsCombinedSourcemap(ctx)) { - console.warn(`\ -This version of unplugin-typegpu does not support combined source maps. -If another plugin modifies the code, source maps may point to modified locations.`); + warnAboutSourceMapsOnce(); return nodePosition; } From 3159b8cffcc57646230ca88e25dc536e71d9375a Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Fri, 23 Oct 2026 10:25:00 +0200 Subject: [PATCH 38/39] fix: tests --- .../unplugin-typegpu/test/sourceMaps.test.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/unplugin-typegpu/test/sourceMaps.test.ts b/packages/unplugin-typegpu/test/sourceMaps.test.ts index 7b02a747c3..111aa862b3 100644 --- a/packages/unplugin-typegpu/test/sourceMaps.test.ts +++ b/packages/unplugin-typegpu/test/sourceMaps.test.ts @@ -247,6 +247,9 @@ describe('source maps', () => { }); test('[WEBPACK] warns and falls back to node position when run second and plugin does not expose `getCombinedSourcemap`', async () => { + // The warn is module-scoped, so we need to reset the module before testing it. + vi.resetModules(); + const { webpackTransform } = await import('./transform.ts'); using consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); const transformed = await webpackTransform(code, { unstable_sourceMaps: true }, [ @@ -259,13 +262,26 @@ describe('source maps', () => { expect(consoleWarnSpy).toHaveBeenCalledTimes(1); expect(consoleWarnSpy.mock.calls[0]).toMatchInlineSnapshot(` [ - "This version of unplugin-typegpu does not support combined source maps. + "[unplugin-typegpu] The current bundler does not provide combined source maps (getCombinedSourcemap). If another plugin modifies the code, source maps may point to modified locations.", ] `); }); + test('[WEBPACK] warns only once', async () => { + vi.resetModules(); + const { webpackTransform } = await import('./transform.ts'); + using consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); + + await webpackTransform(code, { unstable_sourceMaps: true }, [webpackPlugin]); + await webpackTransform(code, { unstable_sourceMaps: true }, [webpackPlugin]); + + expect(consoleWarnSpy).toHaveBeenCalledTimes(1); + }); + test('[WEBPACK] does not warn when source maps are disabled', async () => { + vi.resetModules(); + const { webpackTransform } = await import('./transform.ts'); using consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); await webpackTransform(code, { unstable_sourceMaps: false }, [webpackPlugin]); From f6db49856d546944f22875b60e4686ed56091c62 Mon Sep 17 00:00:00 2001 From: Aleksander Katan <56294622+aleksanderkatan@users.noreply.github.com> Date: Wed, 28 Oct 2026 12:07:54 +0100 Subject: [PATCH 39/39] fix: pnpm-lock.yaml --- pnpm-lock.yaml | 2905 ++++++++++++++---------------------------------- 1 file changed, 806 insertions(+), 2099 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca0d395954..f721b51181 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,7 +84,7 @@ importers: version: link:packages/tgpu-dev-cli '@types/bun': specifier: ^1.3.12 - version: 1.3.12 + version: 1.4.3 '@vitest/browser': specifier: catalog:test version: 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(vitest@4.1.11) @@ -271,22 +271,22 @@ importers: dependencies: '@astrojs/check': specifier: ^0.9.9 - version: 0.9.12(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2) + version: 0.9.10(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2) '@astrojs/markdown-remark': specifier: ^7.3.2 - version: 7.3.4 + version: 7.3.3 '@astrojs/react': specifier: ^6.0.0 - version: 6.0.6(@types/node@24.10.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + version: 6.0.6(@types/node@24.10.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(jiti@2.6.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) '@astrojs/sitemap': specifier: ^3.7.3 version: 3.7.4 '@astrojs/starlight': specifier: ^0.42.6 - version: 0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2) + version: 0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2) '@astrojs/starlight-tailwind': specifier: ^5.0.0 - version: 5.0.0(@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2))(tailwindcss@4.1.11) + version: 5.0.0(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2))(tailwindcss@4.1.18) '@babel/standalone': specifier: ^7.28.6 version: 7.28.6 @@ -307,19 +307,19 @@ importers: version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@radix-ui/react-select': specifier: ^2.2.6 - version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@radix-ui/react-slider': specifier: ^1.3.5 - version: 1.3.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 1.3.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@rolldown/browser': specifier: 1.0.0-rc.10 - version: 1.0.0-rc.10 + version: 1.0.0-rc.10(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) '@stackblitz/sdk': specifier: ^1.11.0 version: 1.11.0 '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + version: 4.1.18(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) '@typegpu/algorithm': specifier: workspace:* version: link:../../packages/typegpu-algorithm @@ -349,31 +349,31 @@ importers: version: link:../../packages/typegpu-three '@types/react': specifier: ^19.2.14 - version: 19.2.14 + version: 19.2.17 '@types/react-dom': specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.14) + version: 19.2.3(@types/react@19.2.17) arktype: specifier: 'catalog:' version: 2.1.28 astro: specifier: ^7.0.2 - version: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + version: 7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) classnames: specifier: ^2.5.1 version: 2.5.1 expressive-code-twoslash: specifier: ^0.6.1 - version: 0.6.1(@expressive-code/core@0.44.3)(eslint@9.39.2(jiti@2.6.1))(expressive-code@0.44.3)(tsover@6.0.2) + version: 0.6.1(@expressive-code/core@0.44.2)(eslint@9.39.2(jiti@2.6.1))(expressive-code@0.44.2)(tsover@6.0.2) fuse.js: specifier: catalog:frontend version: 7.1.0 jotai: specifier: ^2.15.0 - version: 2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.14)(react@19.2.6) + version: 2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.6) jotai-location: specifier: ^0.6.2 - version: 0.6.2(jotai@2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.14)(react@19.2.6)) + version: 0.6.2(jotai@2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.6)) lodash: specifier: ^4.18.1 version: 4.18.1 @@ -412,13 +412,13 @@ importers: version: 2.21.2 sharp: specifier: ^0.34.2 - version: 0.34.2 + version: 0.34.5 starlight-blog: specifier: ^0.30.0 - version: 0.30.2(@astrojs/markdown-satteri@0.4.5)(@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2))(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + version: 0.30.2(@astrojs/markdown-satteri@0.4.4)(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2))(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) starlight-typedoc: specifier: ^0.23.0 - version: 0.23.1(@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2))(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(typedoc-plugin-markdown@4.10.0(typedoc@0.28.17(tsover@6.0.2)))(typedoc@0.28.17(tsover@6.0.2)) + version: 0.23.1(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2))(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(typedoc-plugin-markdown@4.10.0(typedoc@0.28.17(tsover@6.0.2)))(typedoc@0.28.17(tsover@6.0.2)) three: specifier: ^0.181.0 version: 0.181.2 @@ -458,7 +458,7 @@ importers: version: 0.6.17 '@shikijs/themes': specifier: ^4.0.0 - version: 4.0.2 + version: 4.5.0 '@types/babel__standalone': specifier: ^7.1.9 version: 7.1.9 @@ -476,10 +476,10 @@ importers: version: 0.181.0 '@vitejs/plugin-basic-ssl': specifier: ^2.1.0 - version: 2.1.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + version: 2.1.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) '@vitest/browser-preview': specifier: ^4.1.2 - version: 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(vitest@4.1.11) + version: 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(vitest@4.1.11) '@webgpu/types': specifier: catalog:types version: 0.1.71 @@ -491,16 +491,16 @@ importers: version: 10.4.21(postcss@8.5.31) comptime: specifier: ^0.1.0 - version: 0.1.0(patch_hash=25f674816463552a18b4f0ceda95d2537c0fb2b492de70f80330641bf9e20bf4)(rolldown@1.2.15)(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + version: 0.1.0(patch_hash=25f674816463552a18b4f0ceda95d2537c0fb2b492de70f80330641bf9e20bf4)(rolldown@1.2.14)(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) magic-string: specifier: ^0.30.21 version: 0.30.21 tailwindcss: specifier: ^4.1.11 - version: 4.1.11 + version: 4.1.18 tailwindcss-motion: specifier: ^1.1.1 - version: 1.1.1(tailwindcss@4.1.11) + version: 1.1.1(tailwindcss@4.1.18) typegpu-testing-utility: specifier: workspace:* version: link:../../packages/typegpu-testing-utility @@ -509,10 +509,10 @@ importers: version: 9.0.0(rollup@4.60.1) vite-plugin-wasm: specifier: ^3.5.0 - version: 3.5.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + version: 3.5.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) yaml: specifier: ^2.8.3 - version: 2.8.3 + version: 2.9.1 packages/create-typegpu: devDependencies: @@ -650,16 +650,16 @@ importers: devDependencies: '@babel/parser': specifier: ^7.27.0 - version: 7.27.0 + version: 7.29.9 '@babel/types': specifier: ^7.29.0 - version: 7.29.0 + version: 7.29.8 '@typegpu/tgpu-dev-cli': specifier: workspace:* version: link:../tgpu-dev-cli acorn: specifier: ^8.14.1 - version: 8.14.1 + version: 8.19.0 tsdown: specifier: catalog:build version: 0.15.12(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(tsover@6.0.2)(unrun@0.2.31(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)) @@ -750,7 +750,7 @@ importers: dependencies: '@clack/prompts': specifier: ^1.5.0 - version: 1.5.0 + version: 1.8.1 arktype: specifier: 'catalog:' version: 2.1.28 @@ -762,13 +762,13 @@ importers: version: 7.0.6 magicast: specifier: ^0.5.2 - version: 0.5.2 + version: 0.5.5 mri: specifier: ^1.2.0 version: 1.2.0 package-manager-detector: specifier: ^1.3.0 - version: 1.6.0 + version: 1.9.0 devDependencies: '@types/cross-spawn': specifier: ^6.0.6 @@ -910,23 +910,23 @@ importers: dependencies: react-native-webgpu: specifier: '*' - version: 0.5.15(react-native-worklets@0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6) + version: 0.5.15(react-native-worklets@0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6) devDependencies: '@testing-library/dom': specifier: ^10.4.1 version: 10.4.1 '@testing-library/react': specifier: ^16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@typegpu/tgpu-dev-cli': specifier: workspace:* version: link:../tgpu-dev-cli '@types/react': specifier: ^19.0.0 - version: 19.1.8 + version: 19.2.17 '@types/react-dom': specifier: ^19.0.0 - version: 19.1.6(@types/react@19.1.8) + version: 19.2.3(@types/react@19.2.17) '@webgpu/types': specifier: catalog:types version: 0.1.71 @@ -950,10 +950,10 @@ importers: version: 19.2.6(react@19.2.6) react-native: specifier: 0.84.1 - version: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6) + version: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6) react-native-worklets: specifier: 0.11.3 - version: 0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6) + version: 0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6) typegpu: specifier: workspace:* version: link:../typegpu @@ -1060,13 +1060,13 @@ importers: dependencies: '@babel/parser': specifier: ^7.29.0 - version: 7.29.0 + version: 7.29.9 '@babel/traverse': specifier: ^7.29.0 - version: 7.29.0 + version: 7.29.8 '@babel/types': specifier: ^7.29.0 - version: 7.29.0 + version: 7.29.8 '@jridgewell/remapping': specifier: ^2.3.5 version: 2.3.5 @@ -1078,7 +1078,7 @@ importers: version: 2.2.0 defu: specifier: ^6.1.4 - version: 6.1.4 + version: 6.1.7 magic-string: specifier: ^0.30.21 version: 0.30.21 @@ -1087,7 +1087,7 @@ importers: version: 2.0.3 picomatch: specifier: ^4.0.4 - version: 4.0.4 + version: 4.0.7 tinyest: specifier: workspace:~ version: link:../tinyest @@ -1118,7 +1118,7 @@ importers: version: 7.20.7 '@types/bun': specifier: ^1.3.11 - version: 1.3.11 + version: 1.4.3 '@types/picomatch': specifier: ^4.0.1 version: 4.0.1 @@ -1178,8 +1178,8 @@ packages: resolution: {integrity: sha512-GMDC7Eo0myBUA/QLBl0u+OcegJ8LiBhccmNZR34KmprQNP8gQUJlWlOOZWUsxNA2rNS6GuPYcGDyLoPnjmn4/Q==} engines: {node: ^20.19.0 || >=22.12.0} - '@astrojs/check@0.9.12': - resolution: {integrity: sha512-hazpqxIfZWj2VhyPyR0pOEQ/IhFDM/2nIApL96zMXABdD8NrUKYDmhxTy7h+drTDl9MQG/Sd1ET/4amadVJUUA==} + '@astrojs/check@0.9.10': + resolution: {integrity: sha512-zgx/UQMozdjOa3bOxjgeCFdtpE3c9rRX6xHwa+2QXvy8z8Akifu2AtubHyv/zzC2znO8dl8fFWL4K+Ba9kS8HQ==} hasBin: true peerDependencies: typescript: ^5.0.0 || ^6.0.0 @@ -1264,8 +1264,8 @@ packages: '@astrojs/internal-helpers@0.13.0': resolution: {integrity: sha512-20jxQqnSmpskcGyad7N5l6Xf1gz0UCa6lNde44bEBdaXGpncEYfAZJ142r2ZgzBaG4dUyzGmhqZWv1INU2eiHQ==} - '@astrojs/language-server@2.17.3': - resolution: {integrity: sha512-QIAFu1e/4quJMTPdmBOm+ZPXc5NDGZE4/YQjgR3EgjhGLl/tdidaWJDr5WmO2lesVc+BW1qN/xNBURmuePDG2A==} + '@astrojs/language-server@2.17.2': + resolution: {integrity: sha512-WzqCBYo0RtKrkPLPMnTz2+UOQPosaFhoG/PvoSyPIgBU0BKeS6qeaYv7Rscq7P1LxJdoN0VosQF2h2TZTsIGHg==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -1276,15 +1276,15 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@7.3.4': - resolution: {integrity: sha512-AB8S4EQKSryzH624iMDtvC+1AD5nSPzYpCXxc7e1H5ydXhv9B5Td2QfCPA0JyEwqsJpsIsPlW0iOqiy1imdqYw==} + '@astrojs/markdown-remark@7.3.3': + resolution: {integrity: sha512-yC7XCJtRztiR3GiP8e0WwUAGJeKm5goMDDzcZykfbOOpQUDztBWG66fBeIOfl1uVxvhdI0iLzkeaHgqPhaRfUg==} - '@astrojs/markdown-satteri@0.4.5': - resolution: {integrity: sha512-0IeGdoFbv0f+442KJhYS44Wg8F3MuHmRsxIEYuFyqkjRubc6dPBFZ7azor5t4AeXLQoT5A5h9HyViKpd70Dl9w==} + '@astrojs/markdown-satteri@0.4.4': + resolution: {integrity: sha512-Byhe9CAiGFJrhMACKpgN/FPf4lcwapqwFQAB7E1sPELTEJINfBIpgnEYOBTXzr//fvSSNhfp/X3AqN4mUV9p+A==} - '@astrojs/mdx@8.1.1': - resolution: {integrity: sha512-jEJUJsO2KqmKfBXaKeDHDCCj+Kerj1Fj+XndHznF9wxahvs+1onYCBeKmieM28N2+uA6mW57DOQQw5YaDLdBnA==} - engines: {node: '>=22.23.4'} + '@astrojs/mdx@8.1.0': + resolution: {integrity: sha512-xzrlXrjpBYvC27MTkP+2NMiJG4Jjl2DcoNc/EF9RNxAp0dwhvXC3b22+7OO4kHJQKfISk2uy38HYp1UxX7JfSg==} + engines: {node: '>=22.22.0'} peerDependencies: '@astrojs/markdown-remark': ^7.3.0 '@astrojs/markdown-satteri': ^0.4.0 @@ -1293,9 +1293,9 @@ packages: '@astrojs/markdown-remark': optional: true - '@astrojs/prism@4.1.1': - resolution: {integrity: sha512-sXlAXJX6t4QfuLg+CuCDzpg7NoxWcyb4paFprgtFppLeisCBmh935h+tJ5CWXfsXEoW2IDy/ihbRMtiu28Chjw==} - engines: {node: '>=22.23.4'} + '@astrojs/prism@4.1.0': + resolution: {integrity: sha512-zvRaL3MKTAXWfVQrHAlYtocRZWXBM6ruF3Bl7Lc7QgFHLRTfwMKo33KczlkvkXDY+qcytKhAWOT9dwUUYLUxAw==} + engines: {node: '>=22.22.0'} '@astrojs/react@6.0.6': resolution: {integrity: sha512-TQ9G2m2tIx9c105GmvjRAcTk+kV0QER5MsEPKUbK1Jm8SBYKzIzR89xh4L2vXAxI2zMfTMmsR7vln1TOLZpckw==} @@ -1318,8 +1318,8 @@ packages: '@astrojs/starlight': '>=0.38.0' tailwindcss: ^4.0.0 - '@astrojs/starlight@0.42.7': - resolution: {integrity: sha512-mlbit5iRjLx5eIcLf84Q2CwkrrsEgZrQwKKBK+vRf+ZGiSrwy1UGdT1hUfAIaHrMfcvkDpL+gw3aua7HobiKFg==} + '@astrojs/starlight@0.42.6': + resolution: {integrity: sha512-Cfs7GdgzgNRCauDxQVsFUVL1thrGHK/rQdbv/SURv/xhGBXx+j5ypOHW9ENPraQxbIzUC8KAnJV7L9mvEVRuyQ==} peerDependencies: '@astrojs/markdown-remark': ^7.3.0 astro: ^7.2.10 @@ -1327,17 +1327,13 @@ packages: '@astrojs/markdown-remark': optional: true - '@astrojs/telemetry@3.4.1': - resolution: {integrity: sha512-SMkvMsGOpM0FMAoT5pzhgI3LZC0JSPWf7Evwop+fZ3N6UkusPM7lI+sOJjMNI5OJrVoiei1/AGo1cY7sikTc5A==} - engines: {node: '>=22.23.4'} + '@astrojs/telemetry@3.4.0': + resolution: {integrity: sha512-Qt2T6RGtYacyV8OZU3IcyFbsp69s6qIcnWvQvn7/p9MKebPCpEswP5Ji4RhifG3DfeBX7e07Pjj5smkd+Tfp7Q==} + engines: {node: '>=22.22.0'} '@astrojs/yaml2ts@0.2.4': resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -1350,14 +1346,6 @@ packages: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.29.8': resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} engines: {node: '>=6.9.0'} @@ -1391,10 +1379,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - '@babel/helper-globals@7.29.7': resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} @@ -1417,10 +1401,6 @@ packages: resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.29.7': resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} engines: {node: '>=6.9.0'} @@ -1441,18 +1421,10 @@ packages: resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.29.7': resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} @@ -1473,26 +1445,6 @@ packages: resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.9': resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} engines: {node: '>=6.0.0'} @@ -1766,12 +1718,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.29.7': - resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.29.9': resolution: {integrity: sha512-FFwIwzU+7SCOuxxV4YtJql6T9981ZVTm+FHO5GhVsRqCTdy0WwrEZh3l42ARpXruJUDGOptdduHW6Zr7pNPLNg==} engines: {node: '>=6.9.0'} @@ -1790,10 +1736,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.26.9': - resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.29.7': resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} @@ -1802,30 +1744,14 @@ packages: resolution: {integrity: sha512-l/vUUfIKWdKHbHLqISTekuOaMuxNrnk7qlxFmhAKCayRXhkbBMB6zaJW+9oo0eLFgZLQEpG43LH4sxcEuy1M5g==} engines: {node: '>=6.9.0'} - '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} - '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.8': resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.8': resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} @@ -1890,18 +1816,10 @@ packages: resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} engines: {node: '>=18'} - '@clack/core@1.4.0': - resolution: {integrity: sha512-7Wctjq6f7c1CPz8sPpkwUnz8yRgVANkpNupb81q432FjcJg4l+Sw7XANdNSdWfAKq0IHI0JTcUeK5dxs/HrGPw==} - engines: {node: '>= 20.12.0'} - '@clack/core@1.5.1': resolution: {integrity: sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.5.0': - resolution: {integrity: sha512-wKh+wTjmrUoUdkZg8KpJO5X+p9PWV+KE9mePseq9UYWkukgTKsGS47RRL2HstwVcvDQH+PenrPJWII8+MfiiyA==} - engines: {node: '>= 20.12.0'} - '@clack/prompts@1.8.1': resolution: {integrity: sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==} engines: {node: '>= 20.12.0'} @@ -1996,27 +1914,12 @@ packages: '@emnapi/core@1.11.3': resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - '@emnapi/core@1.8.1': - resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} '@emnapi/runtime@1.11.3': resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - - '@emnapi/runtime@1.8.1': - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} - - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} - - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} @@ -2367,17 +2270,17 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@expressive-code/core@0.44.3': - resolution: {integrity: sha512-pffktF0TJoxC08dgNcutl/0LcSnTrjF6vXR39qVpwZ0EyxpwO9zjI7dbni6sO7w3yHpRBO0voLFvhzB+EPJRsA==} + '@expressive-code/core@0.44.2': + resolution: {integrity: sha512-Yw5KonQCD1HoOO2P89y4wifqS9qrJcGVY0LkVMUsVZjhi++bhz4WwQ37inenKFNOEVo50P7cjoVsCdaVnUbq8w==} - '@expressive-code/plugin-frames@0.44.3': - resolution: {integrity: sha512-ysW4VXk9vXEliA99Ur6ApUepVtx74sPolp6o/j45BRjZQoL5O6kXKMhSP4koQLih8HbC5B3ImIvO+HKKhkv/oA==} + '@expressive-code/plugin-frames@0.44.2': + resolution: {integrity: sha512-gVLm6TQMNIRWIaM7o+mCtxkGNjLZY5/2faSTLoXeo9wv/Pkj/0QAtZyXPVPrRsPARqiipATNFmfvQFLJudxPHQ==} - '@expressive-code/plugin-shiki@0.44.3': - resolution: {integrity: sha512-jAibAZPG7lDmi61EFJADZjoSZzjHiwZZdbbgR/mTlWXM4ON/Pyo/9tB2vrqQNKylsci6jqtCi6idrwqQXF53xA==} + '@expressive-code/plugin-shiki@0.44.2': + resolution: {integrity: sha512-ebWIvCDzXvjyD8rH6T6DfytYJw1GoArLR4nusIAE4VxXrCQf3d+owytiv010KU/dUg+SRLZskDn0N+HaFXeuSg==} - '@expressive-code/plugin-text-markers@0.44.3': - resolution: {integrity: sha512-4Ae2xRSDV5kdWPsi40xWbOtoihbzM0zLVjQKkDAnD5KzFXl+6/kd+VhuWOlTRVaJ5cqGk++vCbAaf0MR1XbZlw==} + '@expressive-code/plugin-text-markers@0.44.2': + resolution: {integrity: sha512-SNI7EgUSiADqbqUzzMbj1ZeC/r2pa5eg3KyFOGAd3a7EsIA4qzjXQLp+ODWQtHVDKFCdGs4J3ovSJUqvKIK96g==} '@floating-ui/core@1.7.1': resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} @@ -2417,12 +2320,6 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.2': - resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.34.5': resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2435,12 +2332,6 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.2': - resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2458,11 +2349,6 @@ packages: engines: {node: '>=20.9.0'} os: [freebsd] - '@img/sharp-libvips-darwin-arm64@1.1.0': - resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] @@ -2473,11 +2359,6 @@ packages: cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.1.0': - resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] @@ -2488,12 +2369,6 @@ packages: cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.1.0': - resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] @@ -2506,12 +2381,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.1.0': - resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] @@ -2524,12 +2393,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.1.0': - resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] @@ -2554,12 +2417,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.1.0': - resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] @@ -2572,12 +2429,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.1.0': - resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] @@ -2590,12 +2441,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': - resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] @@ -2608,12 +2453,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.1.0': - resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] @@ -2626,13 +2465,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.2': - resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2647,13 +2479,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.2': - resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2696,13 +2521,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.2': - resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2717,13 +2535,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.2': - resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2738,13 +2549,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.2': - resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2759,13 +2563,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.2': - resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2780,11 +2577,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.2': - resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2799,12 +2591,6 @@ packages: engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.2': - resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - '@img/sharp-win32-arm64@0.34.5': resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2817,12 +2603,6 @@ packages: cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.2': - resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2835,12 +2615,6 @@ packages: cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.2': - resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2853,14 +2627,6 @@ packages: cpu: [x64] os: [win32] - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2926,9 +2692,6 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/sourcemap-codec@1.6.0': resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} @@ -3001,15 +2764,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - - '@napi-rs/wasm-runtime@1.1.3': - resolution: {integrity: sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.2.4': resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -3017,12 +2771,12 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@napi-rs/wasm-runtime@1.2.6': - resolution: {integrity: sha512-mRyDmEw9/fCDXCGfL1sbgIw/GUK0PVxRW4YwgPN61F3LQ+fSyoBFarJVzgGyhF6kRzEQZ0FejDqm4WLXSeqQmw==} + '@napi-rs/wasm-runtime@1.2.5': + resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^1.7.1 || 2.0.0-beta.2 - '@emnapi/runtime': ^1.7.1 || 2.0.0-beta.2 + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 '@next/env@16.2.9': resolution: {integrity: sha512-ki5VxxXfzD/9TDe13wyeTKIjQTAwBVpnr8KhRDUr8ltMUq1/NBpWNT5tiPoxiGl+PHM4X2ahSOiPk6iAimIzPg==} @@ -3217,8 +2971,8 @@ packages: '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} - '@oxc-project/types@0.155.0': - resolution: {integrity: sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==} + '@oxc-project/types@0.154.0': + resolution: {integrity: sha512-KYOUGQFlLWR+s4QMV2Q9ko38TZm7EdO87Qm7rvZLqk/webse/cDjtyxKhg/47l0byCbs/k46LT8qc4PKjAikzA==} '@oxc-project/types@0.95.0': resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} @@ -3943,8 +3697,8 @@ packages: '@types/react': optional: true - '@rolldown/binding-android-arm-eabi@1.2.15': - resolution: {integrity: sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==} + '@rolldown/binding-android-arm-eabi@1.2.14': + resolution: {integrity: sha512-aWR+XKH9+rW7m5fWq/5360J3mHycrx/o6xZM2DQFdJnTMdyP7/WzxPjhtLbVWdKo2y612/4U1bWqb3HQhiF7vg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] @@ -3973,8 +3727,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.2.15': - resolution: {integrity: sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==} + '@rolldown/binding-android-arm64@1.2.14': + resolution: {integrity: sha512-QiVxHofl6A8lQU7WAtOUY4QMVZXohxwz7WJJoeh8NBEUyKfIkMRKhYyq8az/1RypNiIXzNTtiS6KwHz0erxYRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -4003,8 +3757,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.2.15': - resolution: {integrity: sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==} + '@rolldown/binding-darwin-arm64@1.2.14': + resolution: {integrity: sha512-lTQOzHuBIooh3jIr5XINQkjPGEuGy+Dsy0meXDr6Sjty0b99kYgGh4uBC/8mJX1T0kC8d6S0aPP1Y+bHkh6aBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -4033,8 +3787,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.15': - resolution: {integrity: sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==} + '@rolldown/binding-darwin-x64@1.2.14': + resolution: {integrity: sha512-hyMKEGatjmBYCs/Q4sbIcL/GqpFEqsX3wc+HYVQ/85A4rxc1o7rPm4DUI4GV4k/h0ITddwFSGpqQunI14GXjTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -4063,8 +3817,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.2.15': - resolution: {integrity: sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==} + '@rolldown/binding-freebsd-x64@1.2.14': + resolution: {integrity: sha512-u371GbXoVXrEgP20PwzoGNOdAOqAMhzo19JzzY+V4YmmnC+DTOoqdbMu+O+54emM59Mik/UdrtWgcuEDKWRPKA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -4093,8 +3847,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.2.15': - resolution: {integrity: sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': + resolution: {integrity: sha512-BqwKsdZQf6EqVWr8fv2MrDYzAvOZ7+NYFSJESRGs87fkseEhs0TU9TXgRJTkZoRRkxTizyEg1LKUXfU3/78uqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -4127,8 +3881,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.2.15': - resolution: {integrity: sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==} + '@rolldown/binding-linux-arm64-gnu@1.2.14': + resolution: {integrity: sha512-SD9kY8M009x/7s57Z1dgUVlP5+uYBgKQK0Tkr1WIWngrtUJmRCW1RJFMY7QDla2khXhmg2i5Io7MUjcmZNZ/KQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4162,8 +3916,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.2.15': - resolution: {integrity: sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==} + '@rolldown/binding-linux-arm64-musl@1.2.14': + resolution: {integrity: sha512-BJ2CL19M6uuWesMgnqJzgxoI+N+eV7b0A9O9vLV42y+gitC41fNa8KElau1tHVzuLWX5GzEuxMPhAO0tQXQMkg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -4183,8 +3937,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.2.15': - resolution: {integrity: sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==} + '@rolldown/binding-linux-ppc64-gnu@1.2.14': + resolution: {integrity: sha512-4+Kl8daPV8NDHaD7mfCcc1pRM+Qg7ab8DyMm5FG5WoZgv4h2i3KFN1CybYBNbQqmuYm7ftJLvmMI1eHYJ22S/Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] @@ -4204,8 +3958,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.15': - resolution: {integrity: sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==} + '@rolldown/binding-linux-s390x-gnu@1.2.14': + resolution: {integrity: sha512-V/h8ePq1fKDrmtFMz6xcCN3DKvuvMRrwwD1q0PkBeeo4DpK64biaKvqWGVxqCeYKqeRk7gE7/iKPxLCn08O97A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -4239,8 +3993,8 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.15': - resolution: {integrity: sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==} + '@rolldown/binding-linux-x64-gnu@1.2.14': + resolution: {integrity: sha512-WxalXzgrLVpKC93xfpaJ3gCXUWzeCr+FRCbDVD2mUAy4L6Vo3lNVz0epUEUpxPWJkLNYUwM4OSIikv36OJ9mLg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4274,8 +4028,8 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.2.15': - resolution: {integrity: sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==} + '@rolldown/binding-linux-x64-musl@1.2.14': + resolution: {integrity: sha512-3G3tnAmTpdk9jO3GQtyHXqeFD2SlecfTws/Y3M2mmj9nMBwwuLT4kur8sZKeu7ENUHSpVO3cIsm5A52LEWWwlg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -4305,8 +4059,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.2.15': - resolution: {integrity: sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==} + '@rolldown/binding-openharmony-arm64@1.2.14': + resolution: {integrity: sha512-qyr5XiNGxm2ytx17vvtcJ9nXn6v1gENETi503bJx3OGwZ1tSonj7BosxbMa/xeAfSl5iS9X6KjEWYXLu6v1L7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -4355,8 +4109,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.2.15': - resolution: {integrity: sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==} + '@rolldown/binding-win32-arm64-msvc@1.2.14': + resolution: {integrity: sha512-oA4o5o0S2yB199YyYXDzKUv1Z56Rc+mgOjwm7Z/vJ9Z8igiDPYvoOuDyo6g7AK/ZaF09nPhDKVnGBcYHO11GXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -4391,8 +4145,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.15': - resolution: {integrity: sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==} + '@rolldown/binding-win32-x64-msvc@1.2.14': + resolution: {integrity: sha512-9mE94bf2GZUaR/fUSXCMpBoWkctu421Mi0ORpm4zqfbkjKep7RxzPFa5etcGs5h+2KApoWBOA/hAJa/7saGgEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4617,18 +4371,10 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@4.0.2': - resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} - engines: {node: '>=20'} - '@shikijs/core@4.5.0': resolution: {integrity: sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.0.2': - resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} - engines: {node: '>=20'} - '@shikijs/engine-javascript@4.5.0': resolution: {integrity: sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==} engines: {node: '>=20'} @@ -4636,10 +4382,6 @@ packages: '@shikijs/engine-oniguruma@3.23.0': resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - '@shikijs/engine-oniguruma@4.0.2': - resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} - engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.5.0': resolution: {integrity: sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==} engines: {node: '>=20'} @@ -4647,18 +4389,10 @@ packages: '@shikijs/langs@3.23.0': resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - '@shikijs/langs@4.0.2': - resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} - engines: {node: '>=20'} - '@shikijs/langs@4.5.0': resolution: {integrity: sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==} engines: {node: '>=20'} - '@shikijs/primitive@4.0.2': - resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} - engines: {node: '>=20'} - '@shikijs/primitive@4.5.0': resolution: {integrity: sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==} engines: {node: '>=20'} @@ -4666,10 +4400,6 @@ packages: '@shikijs/themes@3.23.0': resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - '@shikijs/themes@4.0.2': - resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} - engines: {node: '>=20'} - '@shikijs/themes@4.5.0': resolution: {integrity: sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==} engines: {node: '>=20'} @@ -4677,10 +4407,6 @@ packages: '@shikijs/types@3.23.0': resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} - '@shikijs/types@4.0.2': - resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} - engines: {node: '>=20'} - '@shikijs/types@4.5.0': resolution: {integrity: sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==} engines: {node: '>=20'} @@ -4843,9 +4569,6 @@ packages: '@tweenjs/tween.js@23.1.3': resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@tybys/wasm-util@0.10.4': resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} @@ -4870,11 +4593,8 @@ packages: '@types/babel__traverse@7.20.7': resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} - '@types/bun@1.3.11': - resolution: {integrity: sha512-5vPne5QvtpjGpsGYXiFyycfpDF2ECyPcTSsFBMa0fraoxiQyMJ3SmuQIGhzPg2WJuWxVBoxWJ2kClYTcw/4fAg==} - - '@types/bun@1.3.12': - resolution: {integrity: sha512-DBv81elK+/VSwXHDlnH3Qduw+KxkTIWi7TXkAeh24zpi5l0B2kUg9Ga3tb4nJaPcOFswflgi/yAvMVBPrxMB+A==} + '@types/bun@1.4.3': + resolution: {integrity: sha512-N67Pqy8JXbAY/j0tNraS3V5mubGvc6rrrNDmDCtZLlFzccbUJPDb0tvgUBC5q4m8ybkP93Jcn1QB+RYQ6PvBhw==} '@types/bun@1.4.4': resolution: {integrity: sha512-9wkRDXUXK124pEnAutE6n/l18j+i9GC5IAHK8TmX/2nlySETmky0OU6yL5U8pW1AoKh++AN9auDCr647BfurjQ==} @@ -4909,9 +4629,6 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/hast@3.0.5': resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} @@ -4957,22 +4674,11 @@ packages: '@types/picomatch@4.0.1': resolution: {integrity: sha512-dLqxmi5VJRC9XTvc/oaTtk+bDb4RRqxLZPZ3jIpYBHEnDXX8lu02w2yWI6NsPPsELuVK298Z2iR8jgoWKRdUVQ==} - '@types/react-dom@19.1.6': - resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} - peerDependencies: - '@types/react': ^19.0.0 - '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.1.8': - resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} - - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - '@types/react@19.2.17': resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} @@ -5134,46 +4840,25 @@ packages: '@vitest/utils@4.1.11': resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} - '@volar/kit@2.4.30': - resolution: {integrity: sha512-VocLtumfXnqnPQEWc9Yx7uC1uOh9gyjVNlrn2+6Zx/z9aM6yTLhPK8lSqM9Ilu81XRa48I00lcYJWLi2BLxx8Q==} + '@volar/kit@2.4.28': + resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} peerDependencies: - typescript: <7 + typescript: '*' '@volar/language-core@2.4.28': resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - '@volar/language-core@2.4.30': - resolution: {integrity: sha512-73fjwEV8wat6aOZ6U/y/hqtE30ocrIWECg67b0txGczOMNw+MffLmvJ5fnFfN9drVUEYZzLdaNo6VAy6G6avMw==} - - '@volar/language-server@2.4.30': - resolution: {integrity: sha512-tcP9fzzUBbsLIFHhgnRU4ncQjMn9G9Vax0ffkQmdCrXVEYqRroUepmyC5AVgiju5bCiLD6a55qen5iOTQHkb3g==} - peerDependencies: - typescript: <7 - peerDependenciesMeta: - typescript: - optional: true + '@volar/language-server@2.4.28': + resolution: {integrity: sha512-NqcLnE5gERKuS4PUFwlhMxf6vqYo7hXtbMFbViXcbVkbZ905AIVWhnSo0ZNBC2V127H1/2zP7RvVOVnyITFfBw==} - '@volar/language-service@2.4.30': - resolution: {integrity: sha512-w/xDsASiqC71ggCOm7sTDXDNk/l72XEptodeRC68tgZ0e5QM4hM3zAqBGC7mBctvhrpYwKfMG+t9xcUo2hEFtA==} - peerDependencies: - typescript: <7 - peerDependenciesMeta: - typescript: - optional: true + '@volar/language-service@2.4.28': + resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==} '@volar/source-map@2.4.28': resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - '@volar/source-map@2.4.30': - resolution: {integrity: sha512-zym1ob/KwDDyN+0jGVtxwbxJSRRnUvv5HspCtz3yEfVVdCG4/dzxJktMGPAgemqRuVs81O0o/y0q3qOUErR8kg==} - - '@volar/typescript@2.4.30': - resolution: {integrity: sha512-/DgA5tgYFPfrLFuSjIMXMGHk1LQv2+P8eny6+BhGNzFJELWIW7UZlc56ZLIRFhLsPpMfIFxM8/HvOPBggrjTZg==} - peerDependencies: - typescript: <7 - peerDependenciesMeta: - typescript: - optional: true + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} '@vscode/emmet-helper@2.11.0': resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} @@ -5314,26 +4999,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.19.0: resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} engines: {node: '>=0.4.0'} @@ -5474,17 +5139,17 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-expressive-code@0.44.3: - resolution: {integrity: sha512-LUpQmmvzr90JXP5QIAopgdjlOKLuT3x0wlPAUpc4OZtPtFS8sbflPcGPpL/lG3pQuUCQV2CXUFgYNBYNu9tphA==} + astro-expressive-code@0.44.2: + resolution: {integrity: sha512-avop7nZcRwC7quvIxVguhwEZ9Tp6IoTzKUCLwP30Fb7+er+pWQgcysP01dcuzRIJo81kLGg30q/YAI2Yb1Sdzg==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 astro-vtbot@3.1.0: resolution: {integrity: sha512-YZX+Sv3EHRaAryyEJ28N9ausnAG4JxM9ivY+BeRJEa/neWBHmZaQ3onMcdxBFg/u7e+8+YOepuQC8Bt2lx8fKg==} - astro@7.4.2: - resolution: {integrity: sha512-FAH4cdDlFaVnQGjazLTEIC5vJqGlo5XANc1wIbzQHIqAjJTll/RWTUs+SPNW1JdezG4YGxMZllaE5A41T2kzhA==} - engines: {node: '>=22.23.4', npm: '>=9.6.5', pnpm: '>=7.1.0'} + astro@7.4.0: + resolution: {integrity: sha512-6ThZU2bp7asGSceVcnh3r23dE88HpYN5vxtnCWYYrjr8lpQjx4eDW6/W8WgNlcc+T/b8zHmQ/EcS4DpQG4ZoOg==} + engines: {node: '>=22.22.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: '@astrojs/markdown-remark': ^7.3.0 @@ -5565,20 +5230,11 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.38: - resolution: {integrity: sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==} - engines: {node: '>=6.0.0'} - hasBin: true - baseline-browser-mapping@2.11.25: resolution: {integrity: sha512-gMmEShwwq7FJqMwvfRwvCl00v4kN+KOfJqXn+f4nrufak5gNHJOksd/60Dvjuz7sI8Y5WiSFBa8FEYr+zoyqCw==} engines: {node: '>=6.0.0'} hasBin: true - baseline-browser-mapping@2.9.11: - resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} - hasBin: true - bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} @@ -5620,16 +5276,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.29.0: resolution: {integrity: sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5644,11 +5290,8 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bun-types@1.3.11: - resolution: {integrity: sha512-1KGPpoxQWl9f6wcZh57LvrPIInQMn2TQ7jsgxqpRzg+l0QPOFvJVH7HmvHo/AiPgwXy+/Thf6Ov3EdVn1vOabg==} - - bun-types@1.3.12: - resolution: {integrity: sha512-HqOLj5PoFajAQciOMRiIZGNoKxDJSr6qigAttOX40vJuSp6DN/CxWp9s3C1Xwm4oH7ybueITwiaOcWXoYVoRkA==} + bun-types@1.4.3: + resolution: {integrity: sha512-tinRJNGOmUN+tEAsn2y2e942n9JHRHR42iUYzDH75NmhJqVBokGSQkkfSFdNWwsANIdrK6ACH9t01M452YyTwg==} bun-types@1.4.4: resolution: {integrity: sha512-yjrJh5oGX7mMPKGd19YXyIjmEuj4G4zNC30bs7PM9Az7NQ3ndF3j6hbeRdvJTRQEhJ/FYQwW0a2moweEi2hMxQ==} @@ -5681,12 +5324,6 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001723: - resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} - - caniuse-lite@1.0.30001762: - resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==} - caniuse-lite@1.0.30001810: resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} @@ -5801,13 +5438,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -5980,9 +5610,6 @@ packages: resolution: {integrity: sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==} engines: {node: '>=20'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -6154,9 +5781,6 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} @@ -6181,10 +5805,6 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -6192,9 +5812,6 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - devalue@5.6.4: - resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} - devalue@5.9.4: resolution: {integrity: sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==} @@ -6271,12 +5888,6 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.168: - resolution: {integrity: sha512-RUNQmFLNIWVW6+z32EJQ5+qx8ci6RGvdtDC0Ls+F89wz6I2AthpXF0w0DIrn2jpLX0/PU9ZCo+Qp7bg/EckJmA==} - - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} - electron-to-chromium@1.5.438: resolution: {integrity: sha512-AN9xMU1hJiT65LkCUPL1DZm5TCbOPb2Qsm5pYwFLEXp6/qj9SdT4yMiqs7Qqstwvkn1zF7l36SRGt+s6XcJ0FA==} @@ -6307,10 +5918,6 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} - engines: {node: '>=10.13.0'} - enhanced-resolve@5.18.4: resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} engines: {node: '>=10.13.0'} @@ -6529,8 +6136,8 @@ packages: expressive-code: ^0.41.7 typescript: ^5.5.0 - expressive-code@0.44.3: - resolution: {integrity: sha512-7RGslhJTNt01pdn5I3QmVh5C8ZIiSm0A+ORQ9j9r39oOgJVKjn/7dXl9rMT/SqmFLE6pJkTYI7UjW0BxJnW7OQ==} + expressive-code@0.44.2: + resolution: {integrity: sha512-MLNghkvhyFgVW4oCD5DxBuYnnTXIf0PygzGmfT6OZeOOYWh/D4sH1j931biElkA5RG/J9wY/iuSMGAPF5vzHOg==} exsolve@1.0.4: resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==} @@ -6772,10 +6379,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -6908,8 +6511,8 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} - i18next@26.5.11: - resolution: {integrity: sha512-Wc0klBPKxqZ2tL2qdAnF8xvvnWgr1IMGSY2ikTiAvaFVbz7xiFARtkoU4RidBDw1SyziGROp0qxu6qnJ7l2Wug==} + i18next@26.5.2: + resolution: {integrity: sha512-6fIXt//2MZNok3tULyjnypxe3vbsy3pV1bVg8p2x3yKrzZvp7z3T+wXx/88LQsATRdhyJeAUAvUxEtxsHdJ29w==} peerDependencies: typescript: ^5 || ^6 || ^7 peerDependenciesMeta: @@ -6994,13 +6597,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - is-core-module@2.17.0: resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} engines: {node: '>= 0.4'} @@ -7199,10 +6795,6 @@ packages: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - js-yaml@4.3.2: resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true @@ -7509,14 +7101,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} - engines: {node: 20 || >=22} - - lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} - engines: {node: 20 || >=22} - lru-cache@11.5.3: resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==} engines: {node: 20 || >=22} @@ -7539,11 +7123,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magic-string@1.4.4: - resolution: {integrity: sha512-jQz9sVhrZuphH4NrAIHSgkDJCluQO7Ioi4KGRLa7aTUjAODQ13hENX0YIytqYE/rIkO485gQG2LeBxJaW53kkQ==} - - magicast@0.5.2: - resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} + magic-string@1.4.3: + resolution: {integrity: sha512-z12OxmaPGE0F4xlpGdjuAUckipLpQlTAuAmyGhNoD7ODpYUzvDfvtxUbjM/jwznyP178oju/KDdyi220wNJ0RQ==} magicast@0.5.5: resolution: {integrity: sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==} @@ -7590,9 +7171,6 @@ packages: mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - mdast-util-from-markdown@2.0.3: resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} @@ -7921,10 +7499,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} @@ -8012,11 +7586,6 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - nanoid@3.3.20: resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -8073,12 +7642,6 @@ packages: node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - node-releases@2.0.57: resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==} engines: {node: '>=18'} @@ -8134,15 +7697,9 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - oniguruma-parser@0.12.1: - resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-parser@0.12.2: resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} - oniguruma-to-es@4.3.4: - resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} - oniguruma-to-es@4.3.6: resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} @@ -8218,9 +7775,6 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.6.0: - resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - package-manager-detector@1.9.0: resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} @@ -8303,14 +7857,6 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - picomatch@4.0.7: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} @@ -8418,6 +7964,12 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + postcss-nested@7.0.2: resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} engines: {node: '>=18.0'} @@ -8527,10 +8079,6 @@ packages: resolution: {integrity: sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} - engines: {node: ^10 || ^12 || >=14} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -8599,11 +8147,6 @@ packages: engines: {node: '>=14'} hasBin: true - prettier@3.8.0: - resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} - engines: {node: '>=14'} - hasBin: true - prettier@3.9.5: resolution: {integrity: sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==} engines: {node: '>=14'} @@ -8809,9 +8352,6 @@ packages: regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -8832,8 +8372,8 @@ packages: resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} hasBin: true - rehype-expressive-code@0.44.3: - resolution: {integrity: sha512-vaVuQPobFXvmtcHXQ5uqXZlzuuPnLyIuZcX/03sX1U/Qfj9fZrPYI9w66OSr/PUx6alzRYmreEwgYBbsVx8HsA==} + rehype-expressive-code@0.44.2: + resolution: {integrity: sha512-jvjQpsfWKBquDrEl5YQA3CJybRRIuDOYsui1BJTs5oKDUK8pPkJSSxY8FjxNlIFIdtgrTjC1zuahuY4Cc1j9SQ==} rehype-mathjax@7.1.0: resolution: {integrity: sha512-mJHNpoqCC5UZ24OKx0wNjlzV18qeJz/Q/LtEjxXzt8vqrZ1Z3GxQnVrHcF5/PogcXUK8cWwJ4U/LWOQWEiABHw==} @@ -8904,16 +8444,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} - engines: {node: '>= 0.4'} - hasBin: true - resolve@1.22.12: resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} @@ -9001,8 +8531,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.2.15: - resolution: {integrity: sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==} + rolldown@1.2.14: + resolution: {integrity: sha512-eTBTTqMR6uHKLgcUqpJP8ntzDI6V4LYA8negAMBEI7gkgVvOdrx6VsvS2Ym+83KhOPdLCHWJu0w7UQFJZhHKNw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -9039,10 +8569,6 @@ packages: satteri@0.10.5: resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} - sax@1.5.0: - resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} - engines: {node: '>=11.0.0'} - sax@1.6.1: resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} engines: {node: '>=11.0.0'} @@ -9072,21 +8598,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -9114,10 +8625,6 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.34.2: - resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -9143,10 +8650,6 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shiki@4.0.2: - resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} - engines: {node: '>=20'} - shiki@4.5.0: resolution: {integrity: sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==} engines: {node: '>=20'} @@ -9161,9 +8664,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} @@ -9188,18 +8688,10 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - smol-toml@1.6.0: - resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} - engines: {node: '>= 18'} - smol-toml@1.9.1: resolution: {integrity: sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ==} engines: {node: '>= 18'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - source-map-js@1.2.2: resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} @@ -9215,10 +8707,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -9283,9 +8771,6 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@4.0.0: - resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} - std-env@4.3.0: resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} @@ -9400,16 +8885,9 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@4.1.11: - resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} - tailwindcss@4.1.18: resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} - tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} - engines: {node: '>=6'} - tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} @@ -9430,11 +8908,6 @@ packages: uglify-js: optional: true - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} - engines: {node: '>=10'} - hasBin: true - terser@5.51.2: resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} engines: {node: '>=10'} @@ -9471,26 +8944,10 @@ packages: resolution: {integrity: sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==} engines: {node: ^16.14.0 || >= 17.3.0} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} - - tinyexec@1.1.1: - resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} - engines: {node: '>=18'} - tinyexec@1.3.1: resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -9499,8 +8956,8 @@ packages: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} engines: {node: ^20.0.0 || >=22.0.0} - tinyps@0.5.1: - resolution: {integrity: sha512-B6Ykif5HflC3AdDkS4Zst/2muYVfeXoVMy+KorqH80s/1x4vunIORpNySH681X7fjj+dFM9MDKD6/Hsccjb87Q==} + tinyps@0.5.0: + resolution: {integrity: sha512-Llu7nEtVOGHh7jok32l6+udlu+4Np5vsYVB7zeTK614coSsro2qjwte7MFt/ouLM/h4kXqbGXktSMMvMsttSDw==} tinyrainbow@3.1.1: resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} @@ -9692,15 +9149,9 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} - ultrahtml@1.6.0: - resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} - ultrahtml@1.7.0: resolution: {integrity: sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==} @@ -9732,8 +9183,8 @@ packages: resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} engines: {node: '>=18.17'} - undici@8.12.3: - resolution: {integrity: sha512-+fdndUTwBP86cVjihTp21hZHo7d6oj1c/47XPA3lL8mM0XHs+C4EkcjmgRsFnFk2f/UONGDy9ItBItmXsLOQHw==} + undici@8.12.2: + resolution: {integrity: sha512-XtuDWVdqTLr3NAxm2ly9/hU6kUsJOgGh1RASzMBbsw6aWCOaQzHdW+QQDfdERjfJ2V5vL5pRPa4RetO9UfivDg==} engines: {node: '>=22.19.0'} unicode-canonical-property-names-ecmascript@2.0.1: @@ -9769,9 +9220,6 @@ packages: unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} @@ -9796,9 +9244,6 @@ packages: unist-util-visit-children@3.0.0: resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} @@ -9900,18 +9345,6 @@ packages: resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} hasBin: true - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.3.3: resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} hasBin: true @@ -10139,9 +9572,6 @@ packages: vscode-css-languageservice@6.3.9: resolution: {integrity: sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA==} - vscode-html-languageservice@5.6.1: - resolution: {integrity: sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==} - vscode-html-languageservice@5.6.2: resolution: {integrity: sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==} @@ -10169,9 +9599,6 @@ packages: vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vscode-uri@3.2.0: resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} @@ -10241,7 +9668,7 @@ packages: resolution: {integrity: sha512-xYys/sgYuqk1CmIGfsIBCI9gG9Or48qk5TFtlGby5qx+hn+FvCMC8SBC0EkQ/wCDxjTORDb8d/6B27U/BX7qMQ==} wgsl_reflect@https://codeload.github.com/mhawryluk/wgsl_reflect/tar.gz/85994fdc8d8a3abbb4f79baf3891e54eed0c1c63: - resolution: {gitHosted: true, integrity: sha512-sZRE7LutVUd2gNH/H/5FkYiY5Fd/BEwrOoEO3A8VvRsRcp4HX1eDEPEVJ2a8Vt79DXEMMEj6ocYGuhYsuZcw9w==, tarball: https://codeload.github.com/mhawryluk/wgsl_reflect/tar.gz/85994fdc8d8a3abbb4f79baf3891e54eed0c1c63} + resolution: {gitHosted: true, tarball: https://codeload.github.com/mhawryluk/wgsl_reflect/tar.gz/85994fdc8d8a3abbb4f79baf3891e54eed0c1c63} version: 1.0.14 whatwg-encoding@3.1.1: @@ -10299,18 +9726,6 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@7.5.13: resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} engines: {node: '>=8.3.0'} @@ -10323,18 +9738,6 @@ packages: utf-8-validate: optional: true - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.21.3: resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} engines: {node: '>=10.0.0'} @@ -10398,10 +9801,6 @@ packages: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yargs@17.7.3: resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} engines: {node: '>=12'} @@ -10429,9 +9828,6 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - zod@4.6.7: resolution: {integrity: sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==} @@ -10483,7 +9879,7 @@ snapshots: '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - lru-cache: 11.2.4 + lru-cache: 11.5.3 '@asamuzakjp/dom-selector@6.5.6': dependencies: @@ -10491,7 +9887,7 @@ snapshots: bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.2.2 + lru-cache: 11.5.3 '@asamuzakjp/nwsapi@2.3.9': {} @@ -10502,10 +9898,10 @@ snapshots: transitivePeerDependencies: - '@emnapi/runtime' - '@astrojs/check@0.9.12(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2)': + '@astrojs/check@0.9.10(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2)': dependencies: - '@astrojs/language-server': 2.17.3(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2) - chokidar: 5.0.0 + '@astrojs/language-server': 2.17.2(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2) + chokidar: 4.0.3 kleur: 4.1.5 typescript: tsover@6.0.2 yargs: 18.2.0 @@ -10539,7 +9935,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 - '@napi-rs/wasm-runtime': 1.2.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) optional: true '@astrojs/compiler-binding-win32-arm64-msvc@0.5.2': @@ -10569,13 +9965,13 @@ snapshots: '@astrojs/internal-helpers@0.11.0': dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 js-yaml: 4.3.2 picomatch: 4.0.7 retext-smartypants: 6.2.0 - shiki: 4.0.2 - smol-toml: 1.6.0 + shiki: 4.5.0 + smol-toml: 1.9.1 unified: 11.0.5 '@astrojs/internal-helpers@0.13.0': @@ -10589,23 +9985,23 @@ snapshots: unified: 11.0.5 yaml: 2.9.1 - '@astrojs/language-server@2.17.3(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2)': + '@astrojs/language-server@2.17.2(@emnapi/runtime@1.11.3)(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(tsover@6.0.2)': dependencies: '@astrojs/astro2tsx': 0.1.3(@emnapi/runtime@1.11.3) '@astrojs/yaml2ts': 0.2.4 - '@volar/kit': 2.4.30(tsover@6.0.2) + '@volar/kit': 2.4.28(tsover@6.0.2) '@volar/language-core': 2.4.28 - '@volar/language-server': 2.4.30(tsover@6.0.2) - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-server': 2.4.28 + '@volar/language-service': 2.4.28 muggle-string: 0.4.1 tinyglobby: 0.2.17 - volar-service-css: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)) - volar-service-emmet: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)) - volar-service-html: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)) - volar-service-prettier: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2))(prettier@3.9.5) - volar-service-typescript: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)) - volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)) - volar-service-yaml: 0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)) + volar-service-css: 0.0.71(@volar/language-service@2.4.28) + volar-service-emmet: 0.0.71(@volar/language-service@2.4.28) + volar-service-html: 0.0.71(@volar/language-service@2.4.28) + volar-service-prettier: 0.0.71(@volar/language-service@2.4.28)(prettier@3.9.5) + volar-service-typescript: 0.0.71(@volar/language-service@2.4.28) + volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.28) + volar-service-yaml: 0.0.71(@volar/language-service@2.4.28) vscode-html-languageservice: 5.6.2 vscode-uri: 3.2.0 optionalDependencies: @@ -10615,10 +10011,10 @@ snapshots: - '@emnapi/runtime' - typescript - '@astrojs/markdown-remark@7.3.4': + '@astrojs/markdown-remark@7.3.3': dependencies: '@astrojs/internal-helpers': 0.13.0 - '@astrojs/prism': 4.1.1 + '@astrojs/prism': 4.1.0 '@mdx-js/mdx': 3.1.1 acorn: 8.19.0 estree-util-visit: 2.0.0 @@ -10642,37 +10038,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/markdown-satteri@0.4.5': + '@astrojs/markdown-satteri@0.4.4': dependencies: '@astrojs/internal-helpers': 0.13.0 - '@astrojs/prism': 4.1.1 + '@astrojs/prism': 4.1.0 github-slugger: 2.0.0 satteri: 0.10.5 - '@astrojs/mdx@8.1.1(@astrojs/markdown-remark@7.3.4)(@astrojs/markdown-satteri@0.4.5)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))': + '@astrojs/mdx@8.1.0(@astrojs/markdown-remark@7.3.3)(@astrojs/markdown-satteri@0.4.4)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))': dependencies: '@astrojs/internal-helpers': 0.13.0 - '@astrojs/markdown-satteri': 0.4.5 - astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + '@astrojs/markdown-satteri': 0.4.4 + astro: 7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) es-module-lexer: 3.0.4 optionalDependencies: - '@astrojs/markdown-remark': 7.3.4 + '@astrojs/markdown-remark': 7.3.3 - '@astrojs/prism@4.1.1': + '@astrojs/prism@4.1.0': dependencies: prismjs: 1.30.0 - '@astrojs/react@6.0.6(@types/node@24.10.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(jiti@2.6.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)': + '@astrojs/react@6.0.6(@types/node@24.10.0)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(jiti@2.6.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)': dependencies: '@astrojs/internal-helpers': 0.11.0 - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@vitejs/plugin-react': 5.2.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@vitejs/plugin-react': 5.2.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) devalue: 5.9.4 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - ultrahtml: 1.6.0 - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + ultrahtml: 1.7.0 + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -10692,56 +10088,56 @@ snapshots: dependencies: fast-xml-parser: 5.11.2 piccolore: 0.1.3 - zod: 4.3.6 + zod: 4.6.7 '@astrojs/sitemap@3.7.4': dependencies: sitemap: 9.0.1 - zod: 4.3.6 + zod: 4.6.7 - '@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2))(tailwindcss@4.1.11)': + '@astrojs/starlight-tailwind@5.0.0(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2))(tailwindcss@4.1.18)': dependencies: - '@astrojs/starlight': 0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2) - tailwindcss: 4.1.11 + '@astrojs/starlight': 0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2) + tailwindcss: 4.1.18 - '@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2)': + '@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2)': dependencies: - '@astrojs/markdown-satteri': 0.4.5 - '@astrojs/mdx': 8.1.1(@astrojs/markdown-remark@7.3.4)(@astrojs/markdown-satteri@0.4.5)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + '@astrojs/markdown-satteri': 0.4.4 + '@astrojs/mdx': 8.1.0(@astrojs/markdown-remark@7.3.3)(@astrojs/markdown-satteri@0.4.4)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) '@astrojs/sitemap': 3.7.4 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - astro-expressive-code: 0.44.3(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + astro: 7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) + astro-expressive-code: 0.44.2(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) bcp-47: 2.1.0 hast-util-format: 1.1.0 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 hast-util-to-string: 3.0.1 hastscript: 9.0.1 - i18next: 26.5.11(tsover@6.0.2) - js-yaml: 4.1.1 + i18next: 26.5.2(tsover@6.0.2) + js-yaml: 4.3.2 klona: 2.0.6 - magic-string: 1.4.4 + magic-string: 1.4.3 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 pagefind: 1.5.2 remark-directive: 4.0.0 satteri: 0.10.5 - ultrahtml: 1.6.0 + ultrahtml: 1.7.0 unified: 11.0.5 unist-util-visit: 5.1.0 vfile: 6.0.3 optionalDependencies: - '@astrojs/markdown-remark': 7.3.4 + '@astrojs/markdown-remark': 7.3.3 transitivePeerDependencies: - supports-color - typescript - '@astrojs/telemetry@3.4.1': + '@astrojs/telemetry@3.4.0': dependencies: ci-info: 4.4.0 dset: 3.1.4 @@ -10752,12 +10148,6 @@ snapshots: dependencies: yaml: 2.9.1 - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -10786,22 +10176,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/generator@7.29.7': - dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - '@babel/generator@7.29.8': dependencies: '@babel/parser': 7.29.9 @@ -10813,7 +10187,7 @@ snapshots: '@babel/generator@8.0.0-rc.2': dependencies: '@babel/parser': 8.0.0-rc.3 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@types/jsesc': 2.5.1 @@ -10821,13 +10195,13 @@ snapshots: '@babel/helper-annotate-as-pure@7.29.7': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@babel/helper-compilation-targets@7.29.7': dependencies: '@babel/compat-data': 7.29.7 '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.1 + browserslist: 4.29.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -10839,7 +10213,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0) '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10862,20 +10236,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-globals@7.28.0': {} - '@babel/helper-globals@7.29.7': {} '@babel/helper-member-expression-to-functions@7.29.7': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.29.7': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color @@ -10885,7 +10257,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -10893,8 +10265,6 @@ snapshots: dependencies: '@babel/types': 7.29.8 - '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-plugin-utils@7.29.7': {} '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.0)': @@ -10911,23 +10281,19 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.29.7': dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.0 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-string-parser@7.29.7': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/helper-validator-identifier@7.29.7': {} '@babel/helper-validator-identifier@8.0.0-rc.2': {} @@ -10947,29 +10313,13 @@ snapshots: '@babel/template': 7.29.7 '@babel/types': 7.29.8 - '@babel/parser@7.26.9': - dependencies: - '@babel/types': 7.29.0 - - '@babel/parser@7.27.0': - dependencies: - '@babel/types': 7.29.0 - - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 - - '@babel/parser@7.29.7': - dependencies: - '@babel/types': 7.29.0 - '@babel/parser@7.29.9': dependencies: '@babel/types': 7.29.8 '@babel/parser@8.0.0-rc.2': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@babel/parser@8.0.0-rc.3': dependencies: @@ -11124,7 +10474,7 @@ snapshots: '@babel/helper-globals': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 transitivePeerDependencies: - supports-color @@ -11252,17 +10602,6 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-typescript@7.29.9(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -11287,53 +10626,19 @@ snapshots: '@babel/helper-validator-option': 7.29.7 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0) '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.29.9(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - '@babel/runtime@7.26.9': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.29.7': {} '@babel/standalone@7.28.6': {} - '@babel/template@7.28.6': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.0 - - '@babel/traverse@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 '@babel/traverse@7.29.8': dependencies: @@ -11347,11 +10652,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@7.29.8': dependencies: '@babel/helper-string-parser': 7.29.7 @@ -11383,7 +10683,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.2.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@bruits/satteri-win32-arm64-msvc@0.10.5': @@ -11396,23 +10696,11 @@ snapshots: dependencies: fontkitten: 1.0.3 - '@clack/core@1.4.0': - dependencies: - fast-wrap-ansi: 0.2.2 - sisteransi: 1.0.5 - '@clack/core@1.5.1': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.5.0': - dependencies: - '@clack/core': 1.4.0 - fast-string-width: 3.0.2 - fast-wrap-ansi: 0.2.2 - sisteransi: 1.0.5 - '@clack/prompts@1.8.1': dependencies: '@clack/core': 1.5.1 @@ -11503,11 +10791,6 @@ snapshots: '@emnapi/wasi-threads': 1.2.3 tslib: 2.8.1 - '@emnapi/core@1.8.1': - dependencies: - '@emnapi/wasi-threads': 1.1.0 - tslib: 2.8.1 - '@emnapi/runtime@1.11.1': dependencies: tslib: 2.8.1 @@ -11517,24 +10800,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@emnapi/runtime@1.4.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.8.1': - dependencies: - tslib: 2.8.1 - - '@emnapi/runtime@1.9.2': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.1.0': - dependencies: - tslib: 2.8.1 - '@emnapi/wasi-threads@1.2.2': dependencies: tslib: 2.8.1 @@ -11728,7 +10993,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.3.2 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -11743,30 +11008,30 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@expressive-code/core@0.44.3': + '@expressive-code/core@0.44.2': dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 hastscript: 9.0.1 - postcss: 8.5.8 - postcss-nested: 7.0.2(postcss@8.5.8) + postcss: 8.5.31 + postcss-nested: 6.2.0(postcss@8.5.31) unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 - '@expressive-code/plugin-frames@0.44.3': + '@expressive-code/plugin-frames@0.44.2': dependencies: - '@expressive-code/core': 0.44.3 + '@expressive-code/core': 0.44.2 - '@expressive-code/plugin-shiki@0.44.3': + '@expressive-code/plugin-shiki@0.44.2': dependencies: - '@expressive-code/core': 0.44.3 - shiki: 4.0.2 + '@expressive-code/core': 0.44.2 + shiki: 4.5.0 - '@expressive-code/plugin-text-markers@0.44.3': + '@expressive-code/plugin-text-markers@0.44.2': dependencies: - '@expressive-code/core': 0.44.3 + '@expressive-code/core': 0.44.2 '@floating-ui/core@1.7.1': dependencies: @@ -11806,11 +11071,6 @@ snapshots: '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.34.2': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.1.0 - optional: true - '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.4 @@ -11821,11 +11081,6 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.3.4 optional: true - '@img/sharp-darwin-x64@0.34.2': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.1.0 - optional: true - '@img/sharp-darwin-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.4 @@ -11841,45 +11096,30 @@ snapshots: '@img/sharp-wasm32': 0.35.5 optional: true - '@img/sharp-libvips-darwin-arm64@1.1.0': - optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true '@img/sharp-libvips-darwin-arm64@1.3.4': optional: true - '@img/sharp-libvips-darwin-x64@1.1.0': - optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': optional: true '@img/sharp-libvips-darwin-x64@1.3.4': optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': - optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': optional: true '@img/sharp-libvips-linux-arm64@1.3.4': optional: true - '@img/sharp-libvips-linux-arm@1.1.0': - optional: true - '@img/sharp-libvips-linux-arm@1.2.4': optional: true '@img/sharp-libvips-linux-arm@1.3.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.1.0': - optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true @@ -11892,47 +11132,30 @@ snapshots: '@img/sharp-libvips-linux-riscv64@1.3.4': optional: true - '@img/sharp-libvips-linux-s390x@1.1.0': - optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': optional: true '@img/sharp-libvips-linux-s390x@1.3.4': optional: true - '@img/sharp-libvips-linux-x64@1.1.0': - optional: true - '@img/sharp-libvips-linux-x64@1.2.4': optional: true '@img/sharp-libvips-linux-x64@1.3.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true '@img/sharp-libvips-linuxmusl-arm64@1.3.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': - optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true '@img/sharp-libvips-linuxmusl-x64@1.3.4': optional: true - '@img/sharp-linux-arm64@0.34.2': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.1.0 - optional: true - '@img/sharp-linux-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.4 @@ -11943,11 +11166,6 @@ snapshots: '@img/sharp-libvips-linux-arm64': 1.3.4 optional: true - '@img/sharp-linux-arm@0.34.2': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.1.0 - optional: true - '@img/sharp-linux-arm@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.4 @@ -11978,11 +11196,6 @@ snapshots: '@img/sharp-libvips-linux-riscv64': 1.3.4 optional: true - '@img/sharp-linux-s390x@0.34.2': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.1.0 - optional: true - '@img/sharp-linux-s390x@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.4 @@ -11993,11 +11206,6 @@ snapshots: '@img/sharp-libvips-linux-s390x': 1.3.4 optional: true - '@img/sharp-linux-x64@0.34.2': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.1.0 - optional: true - '@img/sharp-linux-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.4 @@ -12008,11 +11216,6 @@ snapshots: '@img/sharp-libvips-linux-x64': 1.3.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.2': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 - optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 @@ -12023,11 +11226,6 @@ snapshots: '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.2': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - optional: true - '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 @@ -12038,14 +11236,9 @@ snapshots: '@img/sharp-libvips-linuxmusl-x64': 1.3.4 optional: true - '@img/sharp-wasm32@0.34.2': - dependencies: - '@emnapi/runtime': 1.4.3 - optional: true - '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.9.2 + '@emnapi/runtime': 1.11.3 optional: true '@img/sharp-wasm32@0.35.5': @@ -12058,39 +11251,24 @@ snapshots: '@img/sharp-wasm32': 0.35.5 optional: true - '@img/sharp-win32-arm64@0.34.2': - optional: true - '@img/sharp-win32-arm64@0.34.5': optional: true '@img/sharp-win32-arm64@0.35.5': optional: true - '@img/sharp-win32-ia32@0.34.2': - optional: true - '@img/sharp-win32-ia32@0.34.5': optional: true '@img/sharp-win32-ia32@0.35.5': optional: true - '@img/sharp-win32-x64@0.34.2': - optional: true - '@img/sharp-win32-x64@0.34.5': optional: true '@img/sharp-win32-x64@0.35.5': optional: true - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -12175,7 +11353,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -12190,14 +11368,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jsdevtools/ez-spawn@3.0.4': dependencies: @@ -12280,9 +11456,9 @@ snapshots: dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdx': 2.0.13 - acorn: 8.18.0 + acorn: 8.19.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -12291,7 +11467,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.18.0) + recma-jsx: 1.0.0(acorn@8.19.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 @@ -12317,38 +11493,24 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - '@napi-rs/wasm-runtime@1.1.1': - dependencies: - '@emnapi/core': 1.8.1 - '@emnapi/runtime': 1.8.1 - '@tybys/wasm-util': 0.10.1 - - '@napi-rs/wasm-runtime@1.1.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 '@tybys/wasm-util': 0.10.4 - '@napi-rs/wasm-runtime@1.2.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@tybys/wasm-util': 0.10.4 optional: true - '@napi-rs/wasm-runtime@1.2.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.3 '@emnapi/runtime': 1.11.3 '@tybys/wasm-util': 0.10.4 - optional: true '@next/env@16.2.9': {} @@ -12502,7 +11664,7 @@ snapshots: '@oxc-project/types@0.139.0': {} - '@oxc-project/types@0.155.0': {} + '@oxc-project/types@0.154.0': {} '@oxc-project/types@0.95.0': {} @@ -12712,236 +11874,236 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@floating-ui/react-dom': 2.1.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.17)(react@19.2.6) '@radix-ui/rect': 1.1.1 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) aria-hidden: 1.2.6 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.6) + react-remove-scroll: 2.7.1(@types/react@19.2.17)(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-slider@1.3.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-slider@1.3.5(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.17)(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.17)(react@19.2.6)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.17)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.17)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: '@radix-ui/rect': 1.1.1 react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.17)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.17)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) '@radix-ui/rect@1.1.1': {} @@ -12996,7 +12158,7 @@ snapshots: '@react-native/codegen@0.84.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.9 hermes-parser: 0.32.0 invariant: 2.2.4 nullthrows: 1.1.1 @@ -13021,7 +12183,7 @@ snapshots: metro: 0.83.5 metro-config: 0.83.5 metro-core: 0.83.5 - semver: 7.7.4 + semver: 7.8.5 optionalDependencies: '@react-native/metro-config': 0.86.0(@babel/core@7.29.0) transitivePeerDependencies: @@ -13087,16 +12249,16 @@ snapshots: '@react-native/normalize-colors@0.84.1': {} - '@react-native/virtualized-lists@0.84.1(@types/react@19.1.8)(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6)': + '@react-native/virtualized-lists@0.84.1(@types/react@19.2.17)(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.6 - react-native: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6) + react-native: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6) optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.17 - '@rolldown/binding-android-arm-eabi@1.2.15': + '@rolldown/binding-android-arm-eabi@1.2.14': optional: true '@rolldown/binding-android-arm64@1.0.0-beta.45': @@ -13111,7 +12273,7 @@ snapshots: '@rolldown/binding-android-arm64@1.1.5': optional: true - '@rolldown/binding-android-arm64@1.2.15': + '@rolldown/binding-android-arm64@1.2.14': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.45': @@ -13126,7 +12288,7 @@ snapshots: '@rolldown/binding-darwin-arm64@1.1.5': optional: true - '@rolldown/binding-darwin-arm64@1.2.15': + '@rolldown/binding-darwin-arm64@1.2.14': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.45': @@ -13141,7 +12303,7 @@ snapshots: '@rolldown/binding-darwin-x64@1.1.5': optional: true - '@rolldown/binding-darwin-x64@1.2.15': + '@rolldown/binding-darwin-x64@1.2.14': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.45': @@ -13156,7 +12318,7 @@ snapshots: '@rolldown/binding-freebsd-x64@1.1.5': optional: true - '@rolldown/binding-freebsd-x64@1.2.15': + '@rolldown/binding-freebsd-x64@1.2.14': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': @@ -13171,7 +12333,7 @@ snapshots: '@rolldown/binding-linux-arm-gnueabihf@1.1.5': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.15': + '@rolldown/binding-linux-arm-gnueabihf@1.2.14': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': @@ -13186,7 +12348,7 @@ snapshots: '@rolldown/binding-linux-arm64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.15': + '@rolldown/binding-linux-arm64-gnu@1.2.14': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': @@ -13201,7 +12363,7 @@ snapshots: '@rolldown/binding-linux-arm64-musl@1.1.5': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.15': + '@rolldown/binding-linux-arm64-musl@1.2.14': optional: true '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.8': @@ -13210,7 +12372,7 @@ snapshots: '@rolldown/binding-linux-ppc64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.15': + '@rolldown/binding-linux-ppc64-gnu@1.2.14': optional: true '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.8': @@ -13219,7 +12381,7 @@ snapshots: '@rolldown/binding-linux-s390x-gnu@1.1.5': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.15': + '@rolldown/binding-linux-s390x-gnu@1.2.14': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': @@ -13234,7 +12396,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu@1.1.5': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.15': + '@rolldown/binding-linux-x64-gnu@1.2.14': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': @@ -13249,7 +12411,7 @@ snapshots: '@rolldown/binding-linux-x64-musl@1.1.5': optional: true - '@rolldown/binding-linux-x64-musl@1.2.15': + '@rolldown/binding-linux-x64-musl@1.2.14': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': @@ -13264,12 +12426,12 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.1.5': optional: true - '@rolldown/binding-openharmony-arm64@1.2.15': + '@rolldown/binding-openharmony-arm64@1.2.14': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.45(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -13277,7 +12439,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-rc.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -13285,7 +12447,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-rc.8(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -13295,7 +12457,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.2.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': @@ -13310,7 +12472,7 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.1.5': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.15': + '@rolldown/binding-win32-arm64-msvc@1.2.14': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': @@ -13328,12 +12490,15 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.1.5': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.15': + '@rolldown/binding-win32-x64-msvc@1.2.14': optional: true - '@rolldown/browser@1.0.0-rc.10': + '@rolldown/browser@1.0.0-rc.10(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' '@rolldown/pluginutils@1.0.0-beta.45': {} @@ -13371,7 +12536,7 @@ snapshots: '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.11 + resolve: 1.22.12 optionalDependencies: rollup: 4.60.1 @@ -13390,7 +12555,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.7 optionalDependencies: rollup: 4.60.1 @@ -13471,14 +12636,6 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@4.0.2': - dependencies: - '@shikijs/primitive': 4.0.2 - '@shikijs/types': 4.0.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 - '@shikijs/core@4.5.0': dependencies: '@shikijs/primitive': 4.5.0 @@ -13487,12 +12644,6 @@ snapshots: '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.0.2': - dependencies: - '@shikijs/types': 4.0.2 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 - '@shikijs/engine-javascript@4.5.0': dependencies: '@shikijs/types': 4.5.0 @@ -13504,11 +12655,6 @@ snapshots: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@4.0.2': - dependencies: - '@shikijs/types': 4.0.2 - '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@4.5.0': dependencies: '@shikijs/types': 4.5.0 @@ -13518,20 +12664,10 @@ snapshots: dependencies: '@shikijs/types': 3.23.0 - '@shikijs/langs@4.0.2': - dependencies: - '@shikijs/types': 4.0.2 - '@shikijs/langs@4.5.0': dependencies: '@shikijs/types': 4.5.0 - '@shikijs/primitive@4.0.2': - dependencies: - '@shikijs/types': 4.0.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - '@shikijs/primitive@4.5.0': dependencies: '@shikijs/types': 4.5.0 @@ -13542,10 +12678,6 @@ snapshots: dependencies: '@shikijs/types': 3.23.0 - '@shikijs/themes@4.0.2': - dependencies: - '@shikijs/types': 4.0.2 - '@shikijs/themes@4.5.0': dependencies: '@shikijs/types': 4.5.0 @@ -13553,12 +12685,7 @@ snapshots: '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - - '@shikijs/types@4.0.2': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@shikijs/types@4.5.0': dependencies: @@ -13598,7 +12725,7 @@ snapshots: jiti: 2.6.1 lightningcss: 1.30.2 magic-string: 0.30.21 - source-map-js: 1.2.1 + source-map-js: 1.2.2 tailwindcss: 4.1.18 '@tailwindcss/oxide-android-arm64@4.1.18': @@ -13652,17 +12779,17 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - '@tailwindcss/vite@4.1.18(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))': + '@tailwindcss/vite@4.1.18(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) '@testing-library/dom@10.4.1': dependencies: - '@babel/code-frame': 7.29.0 - '@babel/runtime': 7.26.9 + '@babel/code-frame': 7.29.7 + '@babel/runtime': 7.29.7 '@types/aria-query': 5.0.4 aria-query: 5.3.0 dom-accessibility-api: 0.5.16 @@ -13670,15 +12797,15 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.29.7 '@testing-library/dom': 10.4.1 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: @@ -13688,10 +12815,6 @@ snapshots: '@tweenjs/tween.js@23.1.3': {} - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - '@tybys/wasm-util@0.10.4': dependencies: tslib: 2.8.1 @@ -13704,20 +12827,20 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 '@types/babel__standalone@7.1.9': dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 '@types/babel__core': 7.20.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -13725,20 +12848,16 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.29.0 - - '@types/bun@1.3.11': - dependencies: - bun-types: 1.3.11 + '@babel/types': 7.29.8 - '@types/bun@1.3.12': + '@types/bun@1.4.3': dependencies: - bun-types: 1.3.12 + bun-types: 1.4.3 '@types/bun@1.4.4': dependencies: @@ -13781,10 +12900,6 @@ snapshots: dependencies: '@types/node': 24.10.0 - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - '@types/hast@3.0.5': dependencies: '@types/unist': 3.0.3 @@ -13827,26 +12942,10 @@ snapshots: '@types/picomatch@4.0.1': {} - '@types/react-dom@19.1.6(@types/react@19.1.8)': - dependencies: - '@types/react': 19.1.8 - - '@types/react-dom@19.2.3(@types/react@19.2.14)': - dependencies: - '@types/react': 19.2.14 - '@types/react-dom@19.2.3(@types/react@19.2.17)': dependencies: '@types/react': 19.2.17 - '@types/react@19.1.8': - dependencies: - csstype: 3.1.3 - - '@types/react@19.2.14': - dependencies: - csstype: 3.2.3 - '@types/react@19.2.17': dependencies: csstype: 3.2.3 @@ -13918,7 +13017,7 @@ snapshots: eslint: 9.39.2(jiti@2.6.1) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - semver: 7.7.4 + semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript @@ -13942,7 +13041,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.57.2 debug: 4.4.3 minimatch: 10.2.4 - semver: 7.7.4 + semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.4.0(tsover@6.0.2) typescript: tsover@6.0.2 @@ -13985,11 +13084,11 @@ snapshots: '@ungap/structured-clone@1.3.1': {} - '@vitejs/plugin-basic-ssl@2.1.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))': dependencies: - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) - '@vitejs/plugin-react@5.2.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))': + '@vitejs/plugin-react@5.2.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.0) @@ -13997,22 +13096,10 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) transitivePeerDependencies: - supports-color - '@vitest/browser-preview@4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(vitest@4.1.11)': - dependencies: - '@testing-library/dom': 10.4.1 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) - '@vitest/browser': 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(vitest@4.1.11) - vitest: 4.1.11(@types/node@24.10.0)(@vitest/browser-preview@4.1.11)(@vitest/coverage-v8@4.1.11)(jsdom@27.0.0(postcss@8.5.31))(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - '@vitest/browser-preview@4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(vitest@4.1.11)': dependencies: '@testing-library/dom': 10.4.1 @@ -14024,24 +13111,6 @@ snapshots: - msw - utf-8-validate - vite - optional: true - - '@vitest/browser@4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(vitest@4.1.11)': - dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.1.1 - vitest: 4.1.11(@types/node@24.10.0)(@vitest/browser-preview@4.1.11)(@vitest/coverage-v8@4.1.11)(jsdom@27.0.0(postcss@8.5.31))(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) - ws: 8.21.3 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite '@vitest/browser@4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(vitest@4.1.11)': dependencies: @@ -14068,9 +13137,9 @@ snapshots: istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 - magicast: 0.5.2 + magicast: 0.5.5 obug: 2.1.1 - std-env: 4.0.0 + std-env: 4.3.0 tinyrainbow: 3.1.1 vitest: 4.1.11(@types/node@24.10.0)(@vitest/browser-preview@4.1.11)(@vitest/coverage-v8@4.1.11)(jsdom@27.0.0(postcss@8.5.31))(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) optionalDependencies: @@ -14085,14 +13154,6 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))': - dependencies: - '@vitest/spy': 4.1.11 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - '@vitest/mocker@4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))': dependencies: '@vitest/spy': 4.1.11 @@ -14125,58 +13186,45 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.1 - '@volar/kit@2.4.30(tsover@6.0.2)': + '@volar/kit@2.4.28(tsover@6.0.2)': dependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) - '@volar/typescript': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 + '@volar/typescript': 2.4.28 typesafe-path: 0.2.2 typescript: tsover@6.0.2 vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 '@volar/language-core@2.4.28': dependencies: '@volar/source-map': 2.4.28 - '@volar/language-core@2.4.30': - dependencies: - '@volar/source-map': 2.4.30 - - '@volar/language-server@2.4.30(tsover@6.0.2)': + '@volar/language-server@2.4.28': dependencies: - '@volar/language-core': 2.4.30 - '@volar/language-service': 2.4.30(tsover@6.0.2) - '@volar/typescript': 2.4.30(tsover@6.0.2) + '@volar/language-core': 2.4.28 + '@volar/language-service': 2.4.28 + '@volar/typescript': 2.4.28 path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 - optionalDependencies: - typescript: tsover@6.0.2 + vscode-uri: 3.2.0 - '@volar/language-service@2.4.30(tsover@6.0.2)': + '@volar/language-service@2.4.28': dependencies: - '@volar/language-core': 2.4.30 + '@volar/language-core': 2.4.28 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 - optionalDependencies: - typescript: tsover@6.0.2 + vscode-uri: 3.2.0 '@volar/source-map@2.4.28': {} - '@volar/source-map@2.4.30': {} - - '@volar/typescript@2.4.30(tsover@6.0.2)': + '@volar/typescript@2.4.28': dependencies: - '@volar/language-core': 2.4.30 - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-core': 2.4.28 path-browserify: 1.0.1 - vscode-uri: 3.1.0 - optionalDependencies: - typescript: tsover@6.0.2 + vscode-uri: 3.2.0 '@vscode/emmet-helper@2.11.0': dependencies: @@ -14184,7 +13232,7 @@ snapshots: jsonc-parser: 2.3.1 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 '@vscode/l10n@0.0.18': {} @@ -14204,7 +13252,7 @@ snapshots: '@vue/shared': 3.5.38 entities: 7.0.1 estree-walker: 2.0.2 - source-map-js: 1.2.1 + source-map-js: 1.2.2 '@vue/compiler-dom@3.5.38': dependencies: @@ -14333,25 +13381,13 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - acorn-import-phases@1.0.4(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-jsx@5.3.2(acorn@8.16.0): + acorn-import-phases@1.0.4(acorn@8.19.0): dependencies: - acorn: 8.16.0 + acorn: 8.19.0 - acorn-jsx@5.3.2(acorn@8.18.0): + acorn-jsx@5.3.2(acorn@8.19.0): dependencies: - acorn: 8.18.0 - - acorn@8.14.1: {} - - acorn@8.15.0: {} - - acorn@8.16.0: {} - - acorn@8.18.0: {} + acorn: 8.19.0 acorn@8.19.0: {} @@ -14455,7 +13491,7 @@ snapshots: ast-kit@2.2.0: dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.9 pathe: 2.0.3 ast-kit@3.0.0-beta.1: @@ -14474,10 +13510,10 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.44.3(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)): + astro-expressive-code@0.44.2(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)): dependencies: - astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - rehype-expressive-code: 0.44.3 + astro: 7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) + rehype-expressive-code: 0.44.2 url-extras: 0.1.0 astro-vtbot@3.1.0: @@ -14488,12 +13524,12 @@ snapshots: '@vtbag/turn-signal': 1.3.1 '@vtbag/utensil-drawer': 1.2.18 - astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3): + astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1): dependencies: '@astrojs/compiler-rs': 0.5.2 '@astrojs/internal-helpers': 0.13.0 - '@astrojs/markdown-satteri': 0.4.5 - '@astrojs/telemetry': 3.4.1 + '@astrojs/markdown-satteri': 0.4.4 + '@astrojs/telemetry': 3.4.0 '@capsizecss/unpack': 4.0.1 '@clack/prompts': 1.8.1 '@oslojs/encoding': 1.1.0 @@ -14515,7 +13551,7 @@ snapshots: html-escaper: 3.0.3 http-cache-semantics: 4.3.0 jsonc-parser: 3.3.1 - magic-string: 1.4.4 + magic-string: 1.4.3 magicast: 0.5.5 mrmime: 2.0.1 neotraverse: 1.0.1 @@ -14525,25 +13561,25 @@ snapshots: package-manager-detector: 1.9.0 piccolore: 0.1.3 picomatch: 4.0.7 - rolldown: 1.2.15 + rolldown: 1.2.14 shiki: 4.5.0 smol-toml: 1.9.1 svgo: 4.1.0 tinyclip: 1.0.3 tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyps: 0.5.1 + tinyps: 0.5.0 ultrahtml: 1.7.0 unifont: 1.0.3 unstorage: 1.17.6 verkit: 0.5.0 - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - vitefu: 1.1.3(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) + vitefu: 1.1.3(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.6.7 optionalDependencies: - '@astrojs/markdown-remark': 7.3.4 + '@astrojs/markdown-remark': 7.3.3 sharp: 0.35.5(@types/node@24.10.0) transitivePeerDependencies: - '@azure/app-configuration' @@ -14580,24 +13616,14 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.31): dependencies: - browserslist: 4.25.0 - caniuse-lite: 1.0.30001723 + browserslist: 4.29.0 + caniuse-lite: 1.0.30001810 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.31 postcss-value-parser: 4.2.0 - autoprefixer@10.4.21(postcss@8.5.8): - dependencies: - browserslist: 4.25.0 - caniuse-lite: 1.0.30001723 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.8 - postcss-value-parser: 4.2.0 - axobject-query@4.1.0: {} babel-jest@29.7.0(@babel/core@7.29.0): @@ -14615,7 +13641,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -14701,12 +13727,8 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.38: {} - baseline-browser-mapping@2.11.25: {} - baseline-browser-mapping@2.9.11: {} - bcp-47-match@2.0.3: {} bcp-47@2.1.0: @@ -14752,21 +13774,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.0: - dependencies: - caniuse-lite: 1.0.30001762 - electron-to-chromium: 1.5.168 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) - - browserslist@4.28.1: - dependencies: - baseline-browser-mapping: 2.9.11 - caniuse-lite: 1.0.30001762 - electron-to-chromium: 1.5.267 - node-releases: 2.0.27 - update-browserslist-db: 1.2.3(browserslist@4.28.1) - browserslist@4.29.0: dependencies: baseline-browser-mapping: 2.11.25 @@ -14786,13 +13793,10 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bun-types@1.3.11: - dependencies: - '@types/node': 24.10.0 - - bun-types@1.3.12: + bun-types@1.4.3: dependencies: '@types/node': 24.10.0 + undici-types: 7.16.0 bun-types@1.4.4: dependencies: @@ -14826,15 +13830,11 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001762 + browserslist: 4.29.0 + caniuse-lite: 1.0.30001810 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001723: {} - - caniuse-lite@1.0.30001762: {} - caniuse-lite@1.0.30001810: {} ccount@2.0.1: {} @@ -14944,16 +13944,6 @@ snapshots: color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - colord@2.9.3: {} colorette@2.0.20: {} @@ -14983,13 +13973,13 @@ snapshots: commondir@1.0.1: {} - comptime@0.1.0(patch_hash=25f674816463552a18b4f0ceda95d2537c0fb2b492de70f80330641bf9e20bf4)(rolldown@1.2.15)(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)): + comptime@0.1.0(patch_hash=25f674816463552a18b4f0ceda95d2537c0fb2b492de70f80330641bf9e20bf4)(rolldown@1.2.14)(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)): dependencies: - devalue: 5.6.4 + devalue: 5.9.4 magic-string: 0.30.21 - rolldown: 1.2.15 + rolldown: 1.2.14 optionalDependencies: - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) concat-map@0.0.1: {} @@ -15022,7 +14012,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.1 + js-yaml: 4.3.2 parse-json: 5.2.0 optionalDependencies: typescript: tsover@6.0.2 @@ -15037,9 +14027,9 @@ snapshots: dependencies: uncrypto: 0.1.3 - css-declaration-sorter@7.2.0(postcss@8.5.8): + css-declaration-sorter@7.2.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 css-js-gen@1.1.0: {} @@ -15064,17 +14054,17 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.1 + source-map-js: 1.2.2 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.1 + source-map-js: 1.2.2 css-tree@3.1.0: dependencies: mdn-data: 2.12.2 - source-map-js: 1.2.1 + source-map-js: 1.2.2 css-what@6.1.0: {} @@ -15082,49 +14072,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.5.8): - dependencies: - browserslist: 4.28.1 - css-declaration-sorter: 7.2.0(postcss@8.5.8) - cssnano-utils: 5.0.0(postcss@8.5.8) - postcss: 8.5.8 - postcss-calc: 10.1.1(postcss@8.5.8) - postcss-colormin: 7.0.2(postcss@8.5.8) - postcss-convert-values: 7.0.4(postcss@8.5.8) - postcss-discard-comments: 7.0.3(postcss@8.5.8) - postcss-discard-duplicates: 7.0.1(postcss@8.5.8) - postcss-discard-empty: 7.0.0(postcss@8.5.8) - postcss-discard-overridden: 7.0.0(postcss@8.5.8) - postcss-merge-longhand: 7.0.4(postcss@8.5.8) - postcss-merge-rules: 7.0.4(postcss@8.5.8) - postcss-minify-font-values: 7.0.0(postcss@8.5.8) - postcss-minify-gradients: 7.0.0(postcss@8.5.8) - postcss-minify-params: 7.0.2(postcss@8.5.8) - postcss-minify-selectors: 7.0.4(postcss@8.5.8) - postcss-normalize-charset: 7.0.0(postcss@8.5.8) - postcss-normalize-display-values: 7.0.0(postcss@8.5.8) - postcss-normalize-positions: 7.0.0(postcss@8.5.8) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.8) - postcss-normalize-string: 7.0.0(postcss@8.5.8) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.8) - postcss-normalize-unicode: 7.0.2(postcss@8.5.8) - postcss-normalize-url: 7.0.0(postcss@8.5.8) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.8) - postcss-ordered-values: 7.0.1(postcss@8.5.8) - postcss-reduce-initial: 7.0.2(postcss@8.5.8) - postcss-reduce-transforms: 7.0.0(postcss@8.5.8) - postcss-svgo: 7.0.1(postcss@8.5.8) - postcss-unique-selectors: 7.0.3(postcss@8.5.8) - - cssnano-utils@5.0.0(postcss@8.5.8): - dependencies: - postcss: 8.5.8 - - cssnano@7.0.6(postcss@8.5.8): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.8) + cssnano-preset-default@7.0.6(postcss@8.5.31): + dependencies: + browserslist: 4.29.0 + css-declaration-sorter: 7.2.0(postcss@8.5.31) + cssnano-utils: 5.0.0(postcss@8.5.31) + postcss: 8.5.31 + postcss-calc: 10.1.1(postcss@8.5.31) + postcss-colormin: 7.0.2(postcss@8.5.31) + postcss-convert-values: 7.0.4(postcss@8.5.31) + postcss-discard-comments: 7.0.3(postcss@8.5.31) + postcss-discard-duplicates: 7.0.1(postcss@8.5.31) + postcss-discard-empty: 7.0.0(postcss@8.5.31) + postcss-discard-overridden: 7.0.0(postcss@8.5.31) + postcss-merge-longhand: 7.0.4(postcss@8.5.31) + postcss-merge-rules: 7.0.4(postcss@8.5.31) + postcss-minify-font-values: 7.0.0(postcss@8.5.31) + postcss-minify-gradients: 7.0.0(postcss@8.5.31) + postcss-minify-params: 7.0.2(postcss@8.5.31) + postcss-minify-selectors: 7.0.4(postcss@8.5.31) + postcss-normalize-charset: 7.0.0(postcss@8.5.31) + postcss-normalize-display-values: 7.0.0(postcss@8.5.31) + postcss-normalize-positions: 7.0.0(postcss@8.5.31) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.31) + postcss-normalize-string: 7.0.0(postcss@8.5.31) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.31) + postcss-normalize-unicode: 7.0.2(postcss@8.5.31) + postcss-normalize-url: 7.0.0(postcss@8.5.31) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.31) + postcss-ordered-values: 7.0.1(postcss@8.5.31) + postcss-reduce-initial: 7.0.2(postcss@8.5.31) + postcss-reduce-transforms: 7.0.0(postcss@8.5.31) + postcss-svgo: 7.0.1(postcss@8.5.31) + postcss-unique-selectors: 7.0.3(postcss@8.5.31) + + cssnano-utils@5.0.0(postcss@8.5.31): + dependencies: + postcss: 8.5.31 + + cssnano@7.0.6(postcss@8.5.31): + dependencies: + cssnano-preset-default: 7.0.6(postcss@8.5.31) lilconfig: 3.1.3 - postcss: 8.5.8 + postcss: 8.5.31 csso@5.0.5: dependencies: @@ -15138,8 +14128,6 @@ snapshots: transitivePeerDependencies: - postcss - csstype@3.1.3: {} - csstype@3.2.3: {} d3-array@3.2.4: @@ -15323,8 +14311,6 @@ snapshots: dependencies: clone: 1.0.4 - defu@6.1.4: {} - defu@6.1.7: {} delaunator@5.0.1: @@ -15341,14 +14327,10 @@ snapshots: destroy@1.2.0: {} - detect-libc@2.0.4: {} - detect-libc@2.1.2: {} detect-node-es@1.1.0: {} - devalue@5.6.4: {} - devalue@5.9.4: {} devalue@6.0.3: {} @@ -15399,7 +14381,7 @@ snapshots: ora: 5.4.1 tslib: 2.8.1 typescript: tsover@6.0.2 - yargs: 17.7.2 + yargs: 17.7.3 draco3d@1.5.7: {} @@ -15414,14 +14396,10 @@ snapshots: '@one-ini/wasm': 0.2.1 commander: 14.0.3 minimatch: 10.2.4 - semver: 7.7.4 + semver: 7.8.5 ee-first@1.1.1: {} - electron-to-chromium@1.5.168: {} - - electron-to-chromium@1.5.267: {} - electron-to-chromium@1.5.438: {} emmet@2.4.11: @@ -15443,11 +14421,6 @@ snapshots: encodeurl@2.0.0: {} - enhanced-resolve@5.18.3: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.3 - enhanced-resolve@5.18.4: dependencies: graceful-fs: 4.2.11 @@ -15487,7 +14460,7 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.18.0 + acorn: 8.19.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 @@ -15649,8 +14622,8 @@ snapshots: espree@10.4.0: dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -15733,14 +14706,14 @@ snapshots: exponential-backoff@3.1.3: {} - expressive-code-twoslash@0.6.1(@expressive-code/core@0.44.3)(eslint@9.39.2(jiti@2.6.1))(expressive-code@0.44.3)(tsover@6.0.2): + expressive-code-twoslash@0.6.1(@expressive-code/core@0.44.2)(eslint@9.39.2(jiti@2.6.1))(expressive-code@0.44.2)(tsover@6.0.2): dependencies: '@ec-ts/twoslash': 1.0.0(tsover@6.0.2) '@ec-ts/twoslash-vue': 1.0.0(tsover@6.0.2) - '@expressive-code/core': 0.44.3 + '@expressive-code/core': 0.44.2 '@typescript-eslint/parser': 8.57.2(eslint@9.39.2(jiti@2.6.1))(tsover@6.0.2) css-js-gen: 1.1.0 - expressive-code: 0.44.3 + expressive-code: 0.44.2 mdast-util-from-markdown: 2.0.3 mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.1 @@ -15750,12 +14723,12 @@ snapshots: - eslint - supports-color - expressive-code@0.44.3: + expressive-code@0.44.2: dependencies: - '@expressive-code/core': 0.44.3 - '@expressive-code/plugin-frames': 0.44.3 - '@expressive-code/plugin-shiki': 0.44.3 - '@expressive-code/plugin-text-markers': 0.44.3 + '@expressive-code/core': 0.44.2 + '@expressive-code/plugin-frames': 0.44.2 + '@expressive-code/plugin-shiki': 0.44.2 + '@expressive-code/plugin-text-markers': 0.44.2 exsolve@1.0.4: {} @@ -15801,10 +14774,6 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.4): - optionalDependencies: - picomatch: 4.0.4 - fdir@6.5.0(picomatch@4.0.7): optionalDependencies: picomatch: 4.0.7 @@ -15957,7 +14926,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 - minimatch: 10.1.1 + minimatch: 10.2.4 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.1 @@ -15986,27 +14955,23 @@ snapshots: iron-webcrypto: 1.2.1 node-mock-http: 1.0.4 radix3: 1.1.2 - ufo: 1.6.3 + ufo: 1.6.4 uncrypto: 0.1.3 has-flag@4.0.0: {} - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - hasown@2.0.4: dependencies: function-bind: 1.1.2 hast-util-embedded@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-is-element: 3.0.0 hast-util-format@1.1.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-embedded: 3.0.0 hast-util-minify-whitespace: 1.0.1 hast-util-phrasing: 3.0.1 @@ -16016,7 +14981,7 @@ snapshots: hast-util-from-html@2.0.3: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 devlop: 1.1.0 hast-util-from-parse5: 8.0.3 parse5: 7.3.0 @@ -16025,7 +14990,7 @@ snapshots: hast-util-from-parse5@8.0.3: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 @@ -16036,19 +15001,19 @@ snapshots: hast-util-has-property@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-is-body-ok-link@3.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-is-element@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-minify-whitespace@1.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-embedded: 3.0.0 hast-util-is-element: 3.0.0 hast-util-whitespace: 3.0.0 @@ -16056,11 +15021,11 @@ snapshots: hast-util-parse-selector@4.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-phrasing@3.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-embedded: 3.0.0 hast-util-has-property: 3.0.0 hast-util-is-body-ok-link: 3.0.1 @@ -16068,7 +15033,7 @@ snapshots: hast-util-raw@9.1.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 '@ungap/structured-clone': 1.3.1 hast-util-from-parse5: 8.0.3 @@ -16084,7 +15049,7 @@ snapshots: hast-util-select@6.0.4: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 @@ -16104,7 +15069,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 @@ -16123,7 +15088,7 @@ snapshots: hast-util-to-html@9.0.5: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 @@ -16138,7 +15103,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: '@types/estree': 1.0.8 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 @@ -16157,7 +15122,7 @@ snapshots: hast-util-to-parse5@8.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 devlop: 1.1.0 property-information: 7.1.0 @@ -16167,22 +15132,22 @@ snapshots: hast-util-to-string@3.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-text@4.0.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/unist': 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 hast-util-whitespace@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hastscript@9.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 property-information: 7.1.0 @@ -16256,7 +15221,7 @@ snapshots: human-signals@8.0.1: {} - i18next@26.5.11(tsover@6.0.2): + i18next@26.5.2(tsover@6.0.2): optionalDependencies: typescript: tsover@6.0.2 @@ -16322,12 +15287,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: {} - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - is-core-module@2.17.0: dependencies: hasown: 2.0.4 @@ -16508,15 +15467,15 @@ snapshots: jiti@2.6.1: {} - jotai-location@0.6.2(jotai@2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.14)(react@19.2.6)): + jotai-location@0.6.2(jotai@2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.6)): dependencies: - jotai: 2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.14)(react@19.2.6) + jotai: 2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.6) - jotai@2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.14)(react@19.2.6): + jotai@2.15.0(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.6): optionalDependencies: '@babel/core': 7.29.0 '@babel/template': 7.29.7 - '@types/react': 19.2.14 + '@types/react': 19.2.17 react: 19.2.6 js-tokens@10.0.0: {} @@ -16528,10 +15487,6 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - js-yaml@4.3.2: dependencies: argparse: 2.0.1 @@ -16558,7 +15513,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 15.1.0 - ws: 8.18.3 + ws: 8.21.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -16776,10 +15731,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.2: {} - - lru-cache@11.2.4: {} - lru-cache@11.5.3: {} lru-cache@5.1.1: @@ -16796,27 +15747,21 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 - magic-string@1.4.4: + magic-string@1.4.3: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 - magicast@0.5.2: - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - source-map-js: 1.2.1 - - magicast@0.5.5: + magicast@0.5.5: dependencies: '@babel/parser': 7.29.9 '@babel/types': 7.29.8 - source-map-js: 1.2.1 + source-map-js: 1.2.2 make-dir@4.0.0: dependencies: - semver: 7.7.4 + semver: 7.8.5 make-synchronized@0.8.0: {} @@ -16875,23 +15820,6 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - mdast-util-from-markdown@2.0.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.1.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - mdast-util-from-markdown@2.0.3: dependencies: '@types/mdast': 4.0.4 @@ -16921,7 +15849,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: @@ -16930,7 +15858,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -16940,7 +15868,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -16949,14 +15877,14 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm@3.1.0: dependencies: - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -16968,11 +15896,11 @@ snapshots: mdast-util-math@3.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 unist-util-remove-position: 5.0.0 transitivePeerDependencies: @@ -16981,7 +15909,7 @@ snapshots: mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.3 @@ -16992,7 +15920,7 @@ snapshots: mdast-util-mdx-jsx@3.2.0: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 ccount: 2.0.1 @@ -17019,7 +15947,7 @@ snapshots: mdast-util-mdxjs-esm@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.3 @@ -17034,7 +15962,7 @@ snapshots: mdast-util-to-hast@13.2.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.3.1 devlop: 1.1.0 @@ -17128,7 +16056,7 @@ snapshots: metro-cache: 0.83.5 metro-core: 0.83.5 metro-runtime: 0.83.5 - yaml: 2.8.3 + yaml: 2.9.1 transitivePeerDependencies: - bufferutil - supports-color @@ -17192,7 +16120,7 @@ snapshots: metro-minify-terser@0.83.5: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.44.1 + terser: 5.51.2 metro-minify-terser@0.84.6: dependencies: @@ -17209,7 +16137,7 @@ snapshots: metro-runtime@0.83.5: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.29.7 flow-enums-runtime: 0.0.6 metro-runtime@0.84.6: @@ -17219,8 +16147,8 @@ snapshots: metro-source-map@0.83.5: dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.83.5 @@ -17270,9 +16198,9 @@ snapshots: metro-transform-plugins@0.83.5: dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.8 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -17292,7 +16220,7 @@ snapshots: metro-transform-worker@0.83.5: dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/parser': 7.29.9 '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 @@ -17331,13 +16259,13 @@ snapshots: metro@0.83.5: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/core': 7.29.0 - '@babel/generator': 7.29.7 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.0 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 accepts: 2.0.0 chalk: 4.1.2 ci-info: 2.0.0 @@ -17563,8 +16491,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -17730,10 +16658,6 @@ snapshots: mimic-fn@2.1.0: {} - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - minimatch@10.2.4: dependencies: brace-expansion: 5.0.5 @@ -17754,28 +16678,28 @@ snapshots: mkdist@2.2.0(tsover@6.0.2): dependencies: - autoprefixer: 10.4.21(postcss@8.5.8) + autoprefixer: 10.4.21(postcss@8.5.31) citty: 0.1.6 - cssnano: 7.0.6(postcss@8.5.8) + cssnano: 7.0.6(postcss@8.5.31) defu: 6.1.7 esbuild: 0.24.2 jiti: 1.21.7 mlly: 1.8.0 pathe: 1.1.2 pkg-types: 1.3.1 - postcss: 8.5.8 - postcss-nested: 7.0.2(postcss@8.5.8) - semver: 7.7.4 + postcss: 8.5.31 + postcss-nested: 7.0.2(postcss@8.5.31) + semver: 7.8.5 tinyglobby: 0.2.17 optionalDependencies: typescript: tsover@6.0.2 mlly@1.8.0: dependencies: - acorn: 8.16.0 + acorn: 8.19.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.3 + ufo: 1.6.4 monaco-editor@0.55.1: dependencies: @@ -17811,8 +16735,6 @@ snapshots: muggle-string@0.4.1: {} - nanoid@3.3.11: {} - nanoid@3.3.20: {} natural-compare@1.4.0: {} @@ -17827,8 +16749,8 @@ snapshots: dependencies: '@next/env': 16.2.9 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.38 - caniuse-lite: 1.0.30001762 + baseline-browser-mapping: 2.11.25 + caniuse-lite: 1.0.30001810 postcss: 8.4.31 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) @@ -17864,10 +16786,6 @@ snapshots: node-mock-http@1.0.4: {} - node-releases@2.0.19: {} - - node-releases@2.0.27: {} - node-releases@2.0.57: {} normalize-path@3.0.0: {} @@ -17901,7 +16819,7 @@ snapshots: dependencies: destr: 2.0.5 node-fetch-native: 1.6.7 - ufo: 1.6.3 + ufo: 1.6.4 on-finished@2.3.0: dependencies: @@ -17919,16 +16837,8 @@ snapshots: dependencies: mimic-fn: 2.1.0 - oniguruma-parser@0.12.1: {} - oniguruma-parser@0.12.2: {} - oniguruma-to-es@4.3.4: - dependencies: - oniguruma-parser: 0.12.1 - regex: 6.1.0 - regex-recursion: 6.0.2 - oniguruma-to-es@4.3.6: dependencies: oniguruma-parser: 0.12.2 @@ -18059,8 +16969,6 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.6.0: {} - package-manager-detector@1.9.0: {} pagefind@1.5.2: @@ -18089,7 +16997,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -18132,7 +17040,7 @@ snapshots: path-scurry@2.0.1: dependencies: - lru-cache: 11.2.4 + lru-cache: 11.5.3 minipass: 7.1.2 pathe@1.1.2: {} @@ -18145,10 +17053,6 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.3: {} - - picomatch@4.0.4: {} - picomatch@4.0.7: {} pirates@4.0.7: {} @@ -18166,7 +17070,7 @@ snapshots: isbinaryfile: 5.0.7 pkg-types: 1.3.1 query-registry: 3.0.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 pkg-types@1.3.1: dependencies: @@ -18184,147 +17088,152 @@ snapshots: pngjs@7.0.0: {} - postcss-calc@10.1.1(postcss@8.5.8): + postcss-calc@10.1.1(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.8): + postcss-colormin@7.0.2(postcss@8.5.31): dependencies: - browserslist: 4.28.1 + browserslist: 4.29.0 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.8): + postcss-convert-values@7.0.4(postcss@8.5.31): dependencies: - browserslist: 4.28.1 - postcss: 8.5.8 + browserslist: 4.29.0 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.5.8): + postcss-discard-comments@7.0.3(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.5.8): + postcss-discard-duplicates@7.0.1(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 - postcss-discard-empty@7.0.0(postcss@8.5.8): + postcss-discard-empty@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 - postcss-discard-overridden@7.0.0(postcss@8.5.8): + postcss-discard-overridden@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 - postcss-merge-longhand@7.0.4(postcss@8.5.8): + postcss-merge-longhand@7.0.4(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.8) + stylehacks: 7.0.4(postcss@8.5.31) - postcss-merge-rules@7.0.4(postcss@8.5.8): + postcss-merge-rules@7.0.4(postcss@8.5.31): dependencies: - browserslist: 4.28.1 + browserslist: 4.29.0 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 5.0.0(postcss@8.5.31) + postcss: 8.5.31 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.5.8): + postcss-minify-font-values@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.8): + postcss-minify-gradients@7.0.0(postcss@8.5.31): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 5.0.0(postcss@8.5.31) + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.8): + postcss-minify-params@7.0.2(postcss@8.5.31): dependencies: - browserslist: 4.28.1 - cssnano-utils: 5.0.0(postcss@8.5.8) - postcss: 8.5.8 + browserslist: 4.29.0 + cssnano-utils: 5.0.0(postcss@8.5.31) + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.5.8): + postcss-minify-selectors@7.0.4(postcss@8.5.31): dependencies: cssesc: 3.0.0 - postcss: 8.5.8 + postcss: 8.5.31 + postcss-selector-parser: 6.1.2 + + postcss-nested@6.2.0(postcss@8.5.31): + dependencies: + postcss: 8.5.31 postcss-selector-parser: 6.1.2 - postcss-nested@7.0.2(postcss@8.5.8): + postcss-nested@7.0.2(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-selector-parser: 7.1.0 - postcss-normalize-charset@7.0.0(postcss@8.5.8): + postcss-normalize-charset@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 - postcss-normalize-display-values@7.0.0(postcss@8.5.8): + postcss-normalize-display-values@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.8): + postcss-normalize-positions@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.8): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.8): + postcss-normalize-string@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.8): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.8): + postcss-normalize-unicode@7.0.2(postcss@8.5.31): dependencies: - browserslist: 4.28.1 - postcss: 8.5.8 + browserslist: 4.29.0 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.8): + postcss-normalize-url@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.8): + postcss-normalize-whitespace@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.8): + postcss-ordered-values@7.0.1(postcss@8.5.31): dependencies: - cssnano-utils: 5.0.0(postcss@8.5.8) - postcss: 8.5.8 + cssnano-utils: 5.0.0(postcss@8.5.31) + postcss: 8.5.31 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.5.8): + postcss-reduce-initial@7.0.2(postcss@8.5.31): dependencies: - browserslist: 4.28.1 + browserslist: 4.29.0 caniuse-api: 3.0.0 - postcss: 8.5.8 + postcss: 8.5.31 - postcss-reduce-transforms@7.0.0(postcss@8.5.8): + postcss-reduce-transforms@7.0.0(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.2: @@ -18337,24 +17246,24 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.5.8): + postcss-svgo@7.0.1(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.5.8): + postcss-unique-selectors@7.0.3(postcss@8.5.31): dependencies: - postcss: 8.5.8 + postcss: 8.5.31 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} postcss@8.4.31: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.20 picocolors: 1.1.1 - source-map-js: 1.2.1 + source-map-js: 1.2.2 postcss@8.5.31: dependencies: @@ -18362,18 +17271,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.2 - postcss@8.5.8: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - prelude-ls@1.2.1: {} prettier-plugin-astro@0.14.1: dependencies: '@astrojs/compiler': 2.13.0 - prettier: 3.8.0 + prettier: 3.9.5 sass-formatter: 0.7.9 prettier-plugin-tailwindcss@0.8.1(prettier-plugin-astro@0.14.1)(prettier@3.9.5): @@ -18384,8 +17287,6 @@ snapshots: prettier@3.6.2: {} - prettier@3.8.0: {} - prettier@3.9.5: {} pretty-bytes@6.1.1: {} @@ -18489,17 +17390,17 @@ snapshots: react-is@18.3.1: {} - react-native-webgpu@0.5.15(react-native-worklets@0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6): + react-native-webgpu@0.5.15(react-native-worklets@0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6): dependencies: react: 19.2.6 - react-native: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6) + react-native: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6) optionalDependencies: - react-native-worklets: 0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6) + react-native-worklets: 0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6) - react-native-worklets@0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6): + react-native-worklets@0.11.3(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6): dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.7 + '@babel/generator': 7.29.8 '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.0) '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.0) '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.0) @@ -18509,17 +17410,17 @@ snapshots: '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.0) '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.0) '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.0 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 '@react-native/metro-config': 0.86.0(@babel/core@7.29.0) convert-source-map: 2.0.0 react: 19.2.6 - react-native: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6) - semver: 7.7.4 + react-native: 0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6) + semver: 7.8.5 transitivePeerDependencies: - supports-color - react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6): + react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.84.1 @@ -18528,7 +17429,7 @@ snapshots: '@react-native/gradle-plugin': 0.84.1 '@react-native/js-polyfills': 0.84.1 '@react-native/normalize-colors': 0.84.1 - '@react-native/virtualized-lists': 0.84.1(@types/react@19.1.8)(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.1.8)(react@19.2.6))(react@19.2.6) + '@react-native/virtualized-lists': 0.84.1(@types/react@19.2.17)(react-native@0.84.1(@babel/core@7.29.0)(@react-native/metro-config@0.86.0(@babel/core@7.29.0))(@types/react@19.2.17)(react@19.2.6))(react@19.2.6) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -18551,14 +17452,14 @@ snapshots: react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.27.0 - semver: 7.7.4 + semver: 7.8.5 stacktrace-parser: 0.1.11 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 whatwg-fetch: 3.6.20 - ws: 7.5.10 - yargs: 17.7.2 + ws: 7.5.13 + yargs: 17.7.3 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.17 transitivePeerDependencies: - '@babel/core' - '@react-native-community/cli' @@ -18571,32 +17472,32 @@ snapshots: react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.6): + react-remove-scroll-bar@2.3.8(@types/react@19.2.17)(react@19.2.6): dependencies: react: 19.2.6 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) + react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.6) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - react-remove-scroll@2.7.1(@types/react@19.2.14)(react@19.2.6): + react-remove-scroll@2.7.1(@types/react@19.2.17)(react@19.2.6): dependencies: react: 19.2.6 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.6) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) + react-remove-scroll-bar: 2.3.8(@types/react@19.2.17)(react@19.2.6) + react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.6) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.6) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.6) + use-callback-ref: 1.3.3(@types/react@19.2.17)(react@19.2.6) + use-sidecar: 1.1.3(@types/react@19.2.17)(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.6): + react-style-singleton@2.2.3(@types/react@19.2.17)(react@19.2.6): dependencies: get-nonce: 1.0.1 react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 react@19.2.6: {} @@ -18612,7 +17513,7 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.12 recma-build-jsx@1.0.0: dependencies: @@ -18620,9 +17521,9 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.18.0): + recma-jsx@1.0.0(acorn@8.19.0): dependencies: - acorn-jsx: 5.3.2(acorn@8.18.0) + acorn-jsx: 5.3.2(acorn@8.19.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -18652,8 +17553,6 @@ snapshots: regenerator-runtime@0.13.11: {} - regenerator-runtime@0.14.1: {} - regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -18679,38 +17578,38 @@ snapshots: dependencies: jsesc: 3.1.0 - rehype-expressive-code@0.44.3: + rehype-expressive-code@0.44.2: dependencies: - expressive-code: 0.44.3 + expressive-code: 0.44.2 rehype-mathjax@7.1.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mathjax': 0.0.40 hast-util-to-text: 4.0.2 hastscript: 9.0.1 mathjax-full: 3.2.2 unified: 11.0.5 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 vfile: 6.0.3 rehype-raw@7.0.0: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-raw: 9.1.0 vfile: 6.0.3 rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.8 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-estree: 3.1.3 transitivePeerDependencies: - supports-color rehype-stringify@10.0.1: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 unified: 11.0.5 @@ -18761,7 +17660,7 @@ snapshots: remark-rehype@11.1.2: dependencies: - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@types/mdast': 4.0.4 mdast-util-to-hast: 13.2.1 unified: 11.0.5 @@ -18802,18 +17701,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.22.11: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.12: dependencies: es-errors: 1.3.0 @@ -18859,9 +17746,9 @@ snapshots: rolldown-plugin-dts@0.17.8(rolldown@1.0.0-beta.45(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3))(tsover@6.0.2): dependencies: - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 ast-kit: 2.2.0 birpc: 2.9.0 dts-resolver: 2.1.3 @@ -18879,7 +17766,7 @@ snapshots: '@babel/generator': 8.0.0-rc.2 '@babel/helper-validator-identifier': 8.0.0-rc.2 '@babel/parser': 8.0.0-rc.2 - '@babel/types': 7.29.0 + '@babel/types': 7.29.8 ast-kit: 3.0.0-beta.1 birpc: 4.0.0 dts-resolver: 2.1.3 @@ -18981,26 +17868,26 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.5 '@rolldown/binding-win32-x64-msvc': 1.1.5 - rolldown@1.2.15: + rolldown@1.2.14: dependencies: - '@oxc-project/types': 0.155.0 + '@oxc-project/types': 0.154.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.15 - '@rolldown/binding-android-arm64': 1.2.15 - '@rolldown/binding-darwin-arm64': 1.2.15 - '@rolldown/binding-darwin-x64': 1.2.15 - '@rolldown/binding-freebsd-x64': 1.2.15 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.15 - '@rolldown/binding-linux-arm64-gnu': 1.2.15 - '@rolldown/binding-linux-arm64-musl': 1.2.15 - '@rolldown/binding-linux-ppc64-gnu': 1.2.15 - '@rolldown/binding-linux-s390x-gnu': 1.2.15 - '@rolldown/binding-linux-x64-gnu': 1.2.15 - '@rolldown/binding-linux-x64-musl': 1.2.15 - '@rolldown/binding-openharmony-arm64': 1.2.15 - '@rolldown/binding-win32-arm64-msvc': 1.2.15 - '@rolldown/binding-win32-x64-msvc': 1.2.15 + '@rolldown/binding-android-arm-eabi': 1.2.14 + '@rolldown/binding-android-arm64': 1.2.14 + '@rolldown/binding-darwin-arm64': 1.2.14 + '@rolldown/binding-darwin-x64': 1.2.14 + '@rolldown/binding-freebsd-x64': 1.2.14 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.14 + '@rolldown/binding-linux-arm64-gnu': 1.2.14 + '@rolldown/binding-linux-arm64-musl': 1.2.14 + '@rolldown/binding-linux-ppc64-gnu': 1.2.14 + '@rolldown/binding-linux-s390x-gnu': 1.2.14 + '@rolldown/binding-linux-x64-gnu': 1.2.14 + '@rolldown/binding-linux-x64-musl': 1.2.14 + '@rolldown/binding-openharmony-arm64': 1.2.14 + '@rolldown/binding-win32-arm64-msvc': 1.2.14 + '@rolldown/binding-win32-x64-msvc': 1.2.14 rollup-plugin-dts@6.1.1(rollup@4.60.1)(tsover@6.0.2): dependencies: @@ -19008,7 +17895,7 @@ snapshots: rollup: 4.60.1 typescript: tsover@6.0.2 optionalDependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 rollup@4.60.1: dependencies: @@ -19072,8 +17959,6 @@ snapshots: '@bruits/satteri-win32-arm64-msvc': 0.10.5 '@bruits/satteri-win32-x64-msvc': 0.10.5 - sax@1.5.0: {} - sax@1.6.1: {} saxes@6.0.0: @@ -19099,14 +17984,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.2: {} - - semver@7.7.3: {} - - semver@7.7.4: {} - - semver@7.8.5: - optional: true + semver@7.8.5: {} send@0.19.2: dependencies: @@ -19147,39 +18025,11 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.34.2: - dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.2 - '@img/sharp-darwin-x64': 0.34.2 - '@img/sharp-libvips-darwin-arm64': 1.1.0 - '@img/sharp-libvips-darwin-x64': 1.1.0 - '@img/sharp-libvips-linux-arm': 1.1.0 - '@img/sharp-libvips-linux-arm64': 1.1.0 - '@img/sharp-libvips-linux-ppc64': 1.1.0 - '@img/sharp-libvips-linux-s390x': 1.1.0 - '@img/sharp-libvips-linux-x64': 1.1.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - '@img/sharp-linux-arm': 0.34.2 - '@img/sharp-linux-arm64': 0.34.2 - '@img/sharp-linux-s390x': 0.34.2 - '@img/sharp-linux-x64': 0.34.2 - '@img/sharp-linuxmusl-arm64': 0.34.2 - '@img/sharp-linuxmusl-x64': 0.34.2 - '@img/sharp-wasm32': 0.34.2 - '@img/sharp-win32-arm64': 0.34.2 - '@img/sharp-win32-ia32': 0.34.2 - '@img/sharp-win32-x64': 0.34.2 - sharp@0.34.5: dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.7.4 + semver: 7.8.5 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.5 '@img/sharp-darwin-x64': 0.34.5 @@ -19248,17 +18098,6 @@ snapshots: shell-quote@1.8.3: {} - shiki@4.0.2: - dependencies: - '@shikijs/core': 4.0.2 - '@shikijs/engine-javascript': 4.0.2 - '@shikijs/engine-oniguruma': 4.0.2 - '@shikijs/langs': 4.0.2 - '@shikijs/themes': 4.0.2 - '@shikijs/types': 4.0.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - shiki@4.5.0: dependencies: '@shikijs/core': 4.5.0 @@ -19276,10 +18115,6 @@ snapshots: signal-exit@4.1.0: {} - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 @@ -19293,7 +18128,7 @@ snapshots: '@types/node': 24.10.0 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.5.0 + sax: 1.6.1 skin-tone@2.0.0: dependencies: @@ -19307,12 +18142,8 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - smol-toml@1.6.0: {} - smol-toml@1.9.1: {} - source-map-js@1.2.1: {} - source-map-js@1.2.2: {} source-map-support@0.5.21: @@ -19324,8 +18155,6 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} - source-map@0.7.6: {} source-map@0.8.0: {} @@ -19358,12 +18187,12 @@ snapshots: dependencies: type-fest: 0.7.1 - starlight-blog@0.30.2(@astrojs/markdown-satteri@0.4.5)(@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2))(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)): + starlight-blog@0.30.2(@astrojs/markdown-satteri@0.4.4)(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2))(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)): dependencies: - '@astrojs/markdown-remark': 7.3.4 - '@astrojs/mdx': 8.1.1(@astrojs/markdown-remark@7.3.4)(@astrojs/markdown-satteri@0.4.5)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) + '@astrojs/markdown-remark': 7.3.3 + '@astrojs/mdx': 8.1.0(@astrojs/markdown-remark@7.3.3)(@astrojs/markdown-satteri@0.4.4)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)) '@astrojs/rss': 4.0.19 - '@astrojs/starlight': 0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2) + '@astrojs/starlight': 0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2) github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-html: 9.0.5 @@ -19379,10 +18208,10 @@ snapshots: - astro - supports-color - starlight-typedoc@0.23.1(@astrojs/starlight@0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2))(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(typedoc-plugin-markdown@4.10.0(typedoc@0.28.17(tsover@6.0.2)))(typedoc@0.28.17(tsover@6.0.2)): + starlight-typedoc@0.23.1(@astrojs/starlight@0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2))(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(typedoc-plugin-markdown@4.10.0(typedoc@0.28.17(tsover@6.0.2)))(typedoc@0.28.17(tsover@6.0.2)): dependencies: - '@astrojs/starlight': 0.42.7(@astrojs/markdown-remark@7.3.4)(astro@7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(tsover@6.0.2) - astro: 7.4.2(@astrojs/markdown-remark@7.3.4)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) + '@astrojs/starlight': 0.42.6(@astrojs/markdown-remark@7.3.3)(astro@7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1))(tsover@6.0.2) + astro: 7.4.0(@astrojs/markdown-remark@7.3.3)(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) github-slugger: 2.0.0 typedoc: 0.28.17(tsover@6.0.2) typedoc-plugin-markdown: 4.10.0(typedoc@0.28.17(tsover@6.0.2)) @@ -19393,8 +18222,6 @@ snapshots: statuses@2.0.2: {} - std-env@4.0.0: {} - std-env@4.3.0: {} string-argv@0.3.2: {} @@ -19460,10 +18287,10 @@ snapshots: client-only: 0.0.1 react: 19.2.6 - stylehacks@7.0.4(postcss@8.5.8): + stylehacks@7.0.4(postcss@8.5.31): dependencies: - browserslist: 4.28.1 - postcss: 8.5.8 + browserslist: 4.29.0 + postcss: 8.5.31 postcss-selector-parser: 6.1.2 suf-log@2.5.3: @@ -19512,16 +18339,12 @@ snapshots: tagged-tag@1.0.0: {} - tailwindcss-motion@1.1.1(tailwindcss@4.1.11): + tailwindcss-motion@1.1.1(tailwindcss@4.1.18): dependencies: - tailwindcss: 4.1.11 - - tailwindcss@4.1.11: {} + tailwindcss: 4.1.18 tailwindcss@4.1.18: {} - tapable@2.2.3: {} - tapable@2.3.0: {} terser-webpack-plugin@5.3.16(esbuild@0.25.12)(webpack@5.104.1): @@ -19530,7 +18353,7 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.1 + terser: 5.51.2 webpack: 5.104.1(esbuild@0.25.12)(webpack-cli@6.0.1) optionalDependencies: esbuild: 0.25.12 @@ -19541,20 +18364,13 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.1 + terser: 5.51.2 webpack: 5.104.1 - terser@5.44.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.18.0 - commander: 2.20.3 - source-map-support: 0.5.21 - terser@5.51.2: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.18.0 + acorn: 8.19.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -19585,22 +18401,8 @@ snapshots: tinyclip@1.0.3: {} - tinyexec@1.0.2: {} - - tinyexec@1.1.1: {} - tinyexec@1.3.1: {} - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - - tinyglobby@0.2.16: - dependencies: - fdir: 6.5.0(picomatch@4.0.7) - picomatch: 4.0.7 - tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.7) @@ -19608,7 +18410,7 @@ snapshots: tinypool@2.1.0: {} - tinyps@0.5.1: {} + tinyps@0.5.0: {} tinyrainbow@3.1.1: {} @@ -19651,10 +18453,10 @@ snapshots: ts-loader@9.5.4(tsover@6.0.2)(webpack@5.104.1): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.18.4 micromatch: 4.0.8 - semver: 7.7.3 - source-map: 0.7.4 + semver: 7.8.5 + source-map: 0.7.6 typescript: tsover@6.0.2 webpack: 5.104.1(esbuild@0.25.12)(webpack-cli@6.0.1) @@ -19669,9 +18471,9 @@ snapshots: hookable: 5.5.3 rolldown: 1.0.0-beta.45(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) rolldown-plugin-dts: 0.17.8(rolldown@1.0.0-beta.45(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3))(tsover@6.0.2) - semver: 7.7.4 - tinyexec: 1.1.1 - tinyglobby: 0.2.16 + semver: 7.8.5 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 tree-kill: 1.2.2 unconfig: 7.4.2 optionalDependencies: @@ -19690,17 +18492,17 @@ snapshots: dependencies: ansis: 4.2.0 cac: 6.7.14 - defu: 6.1.4 + defu: 6.1.7 empathic: 2.0.0 hookable: 6.0.1 import-without-cache: 0.2.5 obug: 2.1.1 - picomatch: 4.0.3 + picomatch: 4.0.7 rolldown: 1.0.0-rc.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) rolldown-plugin-dts: 0.22.4(rolldown@1.0.0-rc.3(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3))(tsover@6.0.2) - semver: 7.7.4 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 + semver: 7.8.5 + tinyexec: 1.3.1 + tinyglobby: 0.2.17 tree-kill: 1.2.2 unconfig-core: 7.5.0 unrun: 0.2.31(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) @@ -19771,22 +18573,18 @@ snapshots: markdown-it: 14.1.0 minimatch: 9.0.5 typescript: tsover@6.0.2 - yaml: 2.8.3 + yaml: 2.9.1 typesafe-path@0.2.2: {} typescript-auto-import-cache@0.3.6: dependencies: - semver: 7.7.4 + semver: 7.8.5 uc.micro@2.1.0: {} - ufo@1.6.3: {} - ufo@1.6.4: {} - ultrahtml@1.6.0: {} - ultrahtml@1.7.0: {} unbuild@3.5.0(tsover@6.0.2): @@ -19813,7 +18611,7 @@ snapshots: rollup: 4.60.1 rollup-plugin-dts: 6.1.1(rollup@4.60.1)(tsover@6.0.2) scule: 1.3.0 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 untyped: 2.0.0 optionalDependencies: typescript: tsover@6.0.2 @@ -19846,7 +18644,7 @@ snapshots: undici@6.23.0: {} - undici@8.12.3: {} + undici@8.12.2: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -19878,17 +18676,13 @@ snapshots: css-tree: 3.1.0 fnv1a-64: 0.1.2 std-env: 4.3.0 - undici: 8.12.3 + undici: 8.12.2 unist-util-find-after@5.0.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -19925,11 +18719,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 @@ -19949,14 +18738,14 @@ snapshots: unplugin@2.3.5: dependencies: - acorn: 8.16.0 - picomatch: 4.0.4 + acorn: 8.19.0 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 unplugin@3.0.0: dependencies: '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.4 + picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 unrun@0.2.31(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3): @@ -19985,18 +18774,6 @@ snapshots: knitwork: 1.2.0 scule: 1.3.0 - update-browserslist-db@1.1.3(browserslist@4.25.0): - dependencies: - browserslist: 4.25.0 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-browserslist-db@1.2.3(browserslist@4.28.1): - dependencies: - browserslist: 4.28.1 - escalade: 3.2.0 - picocolors: 1.1.1 - update-browserslist-db@1.3.3(browserslist@4.29.0): dependencies: browserslist: 4.29.0 @@ -20011,20 +18788,20 @@ snapshots: url-join@5.0.0: {} - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.6): + use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.6): dependencies: react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.6): + use-sidecar@1.1.3(@types/react@19.2.17)(react@19.2.6): dependencies: detect-node-es: 1.1.0 react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.17 util-deprecate@1.0.2: {} @@ -20057,24 +18834,9 @@ snapshots: transitivePeerDependencies: - rollup - vite-plugin-wasm@3.5.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)): - dependencies: - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - - vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3): + vite-plugin-wasm@3.5.0(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.7 - postcss: 8.5.31 - rolldown: 1.1.5 - tinyglobby: 0.2.17 - optionalDependencies: - '@types/node': 24.10.0 - fsevents: 2.3.3 - jiti: 2.6.1 - terser: 5.51.2 - tsx: 4.20.6 - yaml: 2.8.3 + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1): dependencies: @@ -20091,39 +18853,9 @@ snapshots: tsx: 4.20.6 yaml: 2.9.1 - vitefu@1.1.3(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)): - optionalDependencies: - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - - vitest@4.1.11(@types/node@24.10.0)(@vitest/browser-preview@4.1.11)(@vitest/coverage-v8@4.1.11)(jsdom@27.0.0(postcss@8.5.31))(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)): - dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.7 - std-env: 4.0.0 - tinybench: 2.9.0 - tinyexec: 1.1.1 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3) - why-is-node-running: 2.3.0 + vitefu@1.1.3(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)): optionalDependencies: - '@types/node': 24.10.0 - '@vitest/browser-preview': 4.1.11(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.8.3))(vitest@4.1.11) - '@vitest/coverage-v8': 4.1.11(@vitest/browser@4.1.11)(vitest@4.1.11) - jsdom: 27.0.0(postcss@8.5.31) - transitivePeerDependencies: - - msw + vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) vitest@4.1.11(@types/node@24.10.0)(@vitest/browser-preview@4.1.11)(@vitest/coverage-v8@4.1.11)(jsdom@27.0.0(postcss@8.5.31))(vite@8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1)): dependencies: @@ -20140,9 +18872,9 @@ snapshots: obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.7 - std-env: 4.0.0 + std-env: 4.3.0 tinybench: 2.9.0 - tinyexec: 1.1.1 + tinyexec: 1.3.1 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 vite: 8.1.0(@types/node@24.10.0)(jiti@2.6.1)(terser@5.51.2)(tsx@4.20.6)(yaml@2.9.1) @@ -20157,82 +18889,75 @@ snapshots: vlq@1.0.1: {} - volar-service-css@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)): + volar-service-css@0.0.71(@volar/language-service@2.4.28): dependencies: vscode-css-languageservice: 6.3.9 vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 - volar-service-emmet@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)): + volar-service-emmet@0.0.71(@volar/language-service@2.4.28): dependencies: '@emmetio/css-parser': 0.4.1 '@emmetio/html-matcher': 1.3.0 '@vscode/emmet-helper': 2.11.0 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 - volar-service-html@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)): + volar-service-html@0.0.71(@volar/language-service@2.4.28): dependencies: - vscode-html-languageservice: 5.6.1 + vscode-html-languageservice: 5.6.2 vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 - volar-service-prettier@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2))(prettier@3.9.5): + volar-service-prettier@0.0.71(@volar/language-service@2.4.28)(prettier@3.9.5): dependencies: - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 prettier: 3.9.5 - volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)): + volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.28): dependencies: - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 - volar-service-typescript@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)): + volar-service-typescript@0.0.71(@volar/language-service@2.4.28): dependencies: path-browserify: 1.0.1 - semver: 7.7.4 + semver: 7.8.5 typescript-auto-import-cache: 0.3.6 vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 - volar-service-yaml@0.0.71(@volar/language-service@2.4.30(tsover@6.0.2)): + volar-service-yaml@0.0.71(@volar/language-service@2.4.28): dependencies: - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 yaml-language-server: 1.23.0 optionalDependencies: - '@volar/language-service': 2.4.30(tsover@6.0.2) + '@volar/language-service': 2.4.28 vscode-css-languageservice@6.3.9: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 - - vscode-html-languageservice@5.6.1: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 vscode-html-languageservice@5.6.2: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 vscode-json-languageservice@4.1.8: dependencies: @@ -20240,7 +18965,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 vscode-jsonrpc@8.2.0: {} @@ -20259,8 +18984,6 @@ snapshots: vscode-nls@5.2.0: {} - vscode-uri@3.1.0: {} - vscode-uri@3.2.0: {} w3c-xmlserializer@5.0.0: @@ -20326,11 +19049,11 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.28.1 + acorn: 8.19.0 + acorn-import-phases: 1.0.4(acorn@8.19.0) + browserslist: 4.29.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.18.4 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -20358,11 +19081,11 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.28.1 + acorn: 8.19.0 + acorn-import-phases: 1.0.4(acorn@8.19.0) + browserslist: 4.29.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.18.4 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -20443,12 +19166,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@7.5.10: {} - ws@7.5.13: {} - ws@8.18.3: {} - ws@8.21.3: {} xml-name-validator@5.0.0: {} @@ -20475,7 +19194,7 @@ snapshots: vscode-languageserver: 9.0.1 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 - vscode-uri: 3.1.0 + vscode-uri: 3.2.0 yaml: 2.8.3 yaml@2.8.3: {} @@ -20498,16 +19217,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 20.2.9 - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - yargs@17.7.3: dependencies: cliui: 8.0.1 @@ -20539,8 +19248,6 @@ snapshots: zod@3.25.76: {} - zod@4.3.6: {} - zod@4.6.7: {} zwitch@2.0.4: {}