@replicast/vite-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ import ts from 'typescript';
2
+ export declare function parseSource(source: string): ts.SourceFile;
3
+ export declare function printFile(sourceFile: ts.SourceFile): string;
4
+ export declare function getDecoratorName(decorator: ts.Decorator): string | null;
5
+ export declare function hasDecorator(node: ts.ClassDeclaration | ts.PropertyDeclaration | ts.MethodDeclaration, name: string): boolean;
6
+ //# sourceMappingURL=ast-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-helpers.d.ts","sourceRoot":"","sources":["../src/ast-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAEzD;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,CAG3D;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,IAAI,CAKvE;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,iBAAiB,EACzE,IAAI,EAAE,MAAM,GACX,OAAO,CAET"}
@@ -0,0 +1,20 @@
1
+ import ts from 'typescript';
2
+ export function parseSource(source) {
3
+ return ts.createSourceFile('input.ts', source, ts.ScriptTarget.ESNext, true);
4
+ }
5
+ export function printFile(sourceFile) {
6
+ const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
7
+ return printer.printFile(sourceFile);
8
+ }
9
+ export function getDecoratorName(decorator) {
10
+ const expr = decorator.expression;
11
+ if (ts.isIdentifier(expr))
12
+ return expr.text;
13
+ if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression))
14
+ return expr.expression.text;
15
+ return null;
16
+ }
17
+ export function hasDecorator(node, name) {
18
+ return ts.getDecorators(node)?.some(d => getDecoratorName(d) === name) ?? false;
19
+ }
20
+ //# sourceMappingURL=ast-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-helpers.js","sourceRoot":"","sources":["../src/ast-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,UAAyB;IACjD,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtE,OAAO,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAuB;IACtD,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAA;IACjC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAA;IAC3C,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IAC9F,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAyE,EACzE,IAAY;IAEZ,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAA;AACjF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Plugin } from 'vite';
2
+ type BuildTarget = 'server' | 'client';
3
+ export declare function replicastPlugin(target: BuildTarget): Plugin;
4
+ export default replicastPlugin;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAKlC,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AActC,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAW3D;AAED,eAAe,eAAe,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,30 @@
1
+ import { transformStoreFile } from './transforms/store.js';
2
+ import { transformSystemFile } from './transforms/system.js';
3
+ import { transformLifecycleFile } from './transforms/lifecycle.js';
4
+ function isStoreFile(id) {
5
+ return id.endsWith('.store.ts') || id.endsWith('.store.js');
6
+ }
7
+ function isSystemFile(id) {
8
+ return id.endsWith('.system.ts') || id.endsWith('.system.js');
9
+ }
10
+ function isLifecycleFile(id) {
11
+ return id.endsWith('.lifecycle.ts') || id.endsWith('.lifecycle.js');
12
+ }
13
+ export function replicastPlugin(target) {
14
+ return {
15
+ name: 'replicast',
16
+ transform(code, id) {
17
+ if (!id.endsWith('.ts') && !id.endsWith('.js'))
18
+ return null;
19
+ if (isStoreFile(id))
20
+ return transformStoreFile(code, target);
21
+ if (isSystemFile(id))
22
+ return transformSystemFile(code, target);
23
+ if (isLifecycleFile(id))
24
+ return transformLifecycleFile(code, target);
25
+ return null;
26
+ }
27
+ };
28
+ }
29
+ export default replicastPlugin;
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAIlE,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC3D,IAAI,WAAW,CAAC,EAAE,CAAC;gBAAE,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAC5D,IAAI,YAAY,CAAC,EAAE,CAAC;gBAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAC9D,IAAI,eAAe,CAAC,EAAE,CAAC;gBAAE,OAAO,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACpE,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAA;AACH,CAAC;AAED,eAAe,eAAe,CAAA"}
@@ -0,0 +1,4 @@
1
+ type BuildTarget = 'server' | 'client';
2
+ export declare function transformLifecycleFile(source: string, target: BuildTarget): string;
3
+ export {};
4
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/transforms/lifecycle.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAclF"}
@@ -0,0 +1,20 @@
1
+ import ts from 'typescript';
2
+ import { parseSource, printFile, hasDecorator } from '../ast-helpers.js';
3
+ export function transformLifecycleFile(source, target) {
4
+ const sourceFile = parseSource(source);
5
+ const transformer = (_context) => (sf) => {
6
+ const newStatements = sf.statements.filter(stmt => {
7
+ if (ts.isClassDeclaration(stmt)) {
8
+ if (target === 'client' && hasDecorator(stmt, 'Server'))
9
+ return false;
10
+ if (target === 'server' && hasDecorator(stmt, 'Client'))
11
+ return false;
12
+ }
13
+ return true;
14
+ });
15
+ return ts.factory.updateSourceFile(sf, newStatements);
16
+ };
17
+ const result = ts.transform(sourceFile, [transformer]);
18
+ return printFile(result.transformed[0]);
19
+ }
20
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/transforms/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIxE,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,MAAmB;IACxE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,WAAW,GAAyC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;QAC7E,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACrE,IAAI,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;oBAAE,OAAO,KAAK,CAAA;YACvE,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;IACvD,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IACtD,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ type BuildTarget = 'server' | 'client';
2
+ export declare function transformStoreFile(source: string, target: BuildTarget): string;
3
+ export {};
4
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/transforms/store.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CA6B9E"}
@@ -0,0 +1,25 @@
1
+ import ts from 'typescript';
2
+ import { parseSource, printFile, hasDecorator } from '../ast-helpers.js';
3
+ export function transformStoreFile(source, target) {
4
+ if (target === 'server')
5
+ return source;
6
+ const sourceFile = parseSource(source);
7
+ const transformer = (context) => (sf) => {
8
+ function visit(node) {
9
+ if (ts.isClassDeclaration(node)) {
10
+ const newMembers = node.members.filter(member => {
11
+ if (ts.isPropertyDeclaration(member)) {
12
+ return !hasDecorator(member, 'ServerOnly');
13
+ }
14
+ return true;
15
+ });
16
+ return ts.factory.updateClassDeclaration(node, node.modifiers, node.name, node.typeParameters, node.heritageClauses, ts.factory.createNodeArray(newMembers));
17
+ }
18
+ return ts.visitEachChild(node, visit, context);
19
+ }
20
+ return ts.visitNode(sf, visit);
21
+ };
22
+ const result = ts.transform(sourceFile, [transformer]);
23
+ return printFile(result.transformed[0]);
24
+ }
25
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/transforms/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIxE,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,MAAmB;IACpE,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IAEtC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,WAAW,GAAyC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;QAC5E,SAAS,KAAK,CAAC,IAAa;YAC1B,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBAC9C,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;wBACrC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;oBAC5C,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC,CAAC,CAAA;gBACF,OAAO,EAAE,CAAC,OAAO,CAAC,sBAAsB,CACtC,IAAI,EACJ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CACvC,CAAA;YACH,CAAC;YACD,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAkB,CAAA;IACjD,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IACtD,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ type BuildTarget = 'server' | 'client';
2
+ export declare function transformSystemFile(source: string, target: BuildTarget): string;
3
+ export {};
4
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/transforms/system.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAqGtC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CA8D/E"}
@@ -0,0 +1,88 @@
1
+ import ts from 'typescript';
2
+ import { parseSource, printFile, hasDecorator, getDecoratorName } from '../ast-helpers.js';
3
+ function makeClientStub(className, methodName, params) {
4
+ // Skip ctx (first param) — server-side parameter not sent over the wire
5
+ const argParams = Array.from(params).slice(1);
6
+ const argNames = argParams
7
+ .filter(p => ts.isIdentifier(p.name))
8
+ .map(p => p.name.text);
9
+ const argsArray = ts.factory.createArrayLiteralExpression(argNames.map(n => ts.factory.createIdentifier(n)));
10
+ return [
11
+ ts.factory.createReturnStatement(ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('wsClient'), 'call'), undefined, [
12
+ ts.factory.createStringLiteral(`${className}.${methodName}`),
13
+ argsArray
14
+ ]))
15
+ ];
16
+ }
17
+ function makeSendToClientDispatch(className, methodName, params) {
18
+ const argNames = Array.from(params)
19
+ .filter(p => ts.isIdentifier(p.name))
20
+ .map(p => p.name.text);
21
+ if (argNames.length === 0) {
22
+ throw new Error(`@Client method '${className}.${methodName}' must declare a targetId as its first parameter`);
23
+ }
24
+ const targetId = argNames[0];
25
+ const restArgs = argNames.slice(1);
26
+ return [
27
+ ts.factory.createExpressionStatement(ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ctx'), 'sendToClient'), undefined, [
28
+ ts.factory.createIdentifier(targetId),
29
+ ts.factory.createStringLiteral(`${className}.${methodName}`),
30
+ ...restArgs.map(n => ts.factory.createIdentifier(n))
31
+ ]))
32
+ ];
33
+ }
34
+ function makeBroadcastDispatch(className, methodName, params) {
35
+ const argNames = Array.from(params)
36
+ .filter(p => ts.isIdentifier(p.name))
37
+ .map(p => p.name.text)
38
+ .slice(1); // drop ctx (first param), same as makeClientStub
39
+ return [
40
+ ts.factory.createForOfStatement(undefined, ts.factory.createVariableDeclarationList([ts.factory.createVariableDeclaration('_pid')], ts.NodeFlags.Const), ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ctx'), 'players'), ts.factory.createExpressionStatement(ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('ctx'), 'sendToClient'), undefined, [
41
+ ts.factory.createIdentifier('_pid'),
42
+ ts.factory.createStringLiteral(`${className}.${methodName}`),
43
+ ...argNames.map(n => ts.factory.createIdentifier(n))
44
+ ])))
45
+ ];
46
+ }
47
+ export function transformSystemFile(source, target) {
48
+ const sourceFile = parseSource(source);
49
+ const transformer = (context) => (sf) => {
50
+ function visitClass(classNode) {
51
+ const className = classNode.name?.text ?? 'UnknownSystem';
52
+ const newMembers = classNode.members.map(member => {
53
+ if (!ts.isMethodDeclaration(member))
54
+ return member;
55
+ const methodName = member.name.text;
56
+ const decorators = ts.getDecorators(member) ?? [];
57
+ const role = decorators.map(getDecoratorName).find(n => n === 'Server' || n === 'Client' || n === 'Multicast');
58
+ if (!role)
59
+ return member;
60
+ let newStatements;
61
+ if (target === 'client' && role === 'Server') {
62
+ newStatements = makeClientStub(className, methodName, member.parameters);
63
+ }
64
+ else if (target === 'server' && role === 'Client') {
65
+ newStatements = makeSendToClientDispatch(className, methodName, member.parameters);
66
+ }
67
+ else if (target === 'server' && role === 'Multicast') {
68
+ newStatements = makeBroadcastDispatch(className, methodName, member.parameters);
69
+ }
70
+ else {
71
+ return member;
72
+ }
73
+ return ts.factory.updateMethodDeclaration(member, member.modifiers, member.asteriskToken, member.name, member.questionToken, member.typeParameters, member.parameters, member.type, ts.factory.createBlock(newStatements, true));
74
+ });
75
+ return ts.factory.updateClassDeclaration(classNode, classNode.modifiers, classNode.name, classNode.typeParameters, classNode.heritageClauses, ts.factory.createNodeArray(newMembers));
76
+ }
77
+ function visit(node) {
78
+ if (ts.isClassDeclaration(node) && hasDecorator(node, 'System')) {
79
+ return visitClass(node);
80
+ }
81
+ return ts.visitEachChild(node, visit, context);
82
+ }
83
+ return ts.visitNode(sf, visit);
84
+ };
85
+ const result = ts.transform(sourceFile, [transformer]);
86
+ return printFile(result.transformed[0]);
87
+ }
88
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/transforms/system.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@replicast/vite-plugin",
3
+ "version": "0.1.0",
4
+ "description": "Vite plugin for replicast — transforms store, system, and lifecycle files per build target",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "files": ["dist"],
10
+ "scripts": {
11
+ "build": "tsc -p tsconfig.build.json",
12
+ "test": "vitest run"
13
+ },
14
+ "dependencies": {
15
+ "typescript": "^5.5.0"
16
+ },
17
+ "peerDependencies": {
18
+ "vite": "^5.0.0"
19
+ },
20
+ "devDependencies": {
21
+ "vite": "^5.3.0",
22
+ "vitest": "^1.6.0"
23
+ }
24
+ }