vafast 0.3.1 → 0.3.4

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.
Files changed (136) hide show
  1. package/dist/auth/token.d.ts +13 -11
  2. package/dist/auth/token.js +118 -111
  3. package/dist/auth/token.js.map +1 -0
  4. package/dist/defineRoute.d.ts +5 -2
  5. package/dist/defineRoute.js +7 -2
  6. package/dist/defineRoute.js.map +1 -0
  7. package/dist/index.d.ts +30 -14
  8. package/dist/index.js +2247 -15
  9. package/dist/index.js.map +1 -0
  10. package/dist/middleware/auth.d.ts +8 -6
  11. package/dist/middleware/auth.js +198 -99
  12. package/dist/middleware/auth.js.map +1 -0
  13. package/dist/middleware/authMiddleware.d.ts +5 -2
  14. package/dist/middleware/authMiddleware.js +55 -11
  15. package/dist/middleware/authMiddleware.js.map +1 -0
  16. package/dist/middleware/component-renderer.d.ts +4 -2
  17. package/dist/middleware/component-renderer.js +87 -80
  18. package/dist/middleware/component-renderer.js.map +1 -0
  19. package/dist/middleware/component-router.d.ts +8 -3
  20. package/dist/middleware/component-router.js +33 -39
  21. package/dist/middleware/component-router.js.map +1 -0
  22. package/dist/middleware/cors.d.ts +6 -3
  23. package/dist/middleware/cors.js +42 -29
  24. package/dist/middleware/cors.js.map +1 -0
  25. package/dist/middleware/rateLimit.d.ts +5 -3
  26. package/dist/middleware/rateLimit.js +45 -29
  27. package/dist/middleware/rateLimit.js.map +1 -0
  28. package/dist/middleware.d.ts +6 -3
  29. package/dist/middleware.js +97 -51
  30. package/dist/middleware.js.map +1 -0
  31. package/dist/monitoring/index.d.ts +11 -4
  32. package/dist/monitoring/index.js +1299 -17
  33. package/dist/monitoring/index.js.map +1 -0
  34. package/dist/monitoring/native-monitor.d.ts +12 -6
  35. package/dist/monitoring/native-monitor.js +1258 -161
  36. package/dist/monitoring/native-monitor.js.map +1 -0
  37. package/dist/monitoring/types.d.ts +8 -6
  38. package/dist/monitoring/types.js +1 -1
  39. package/dist/monitoring/types.js.map +1 -0
  40. package/dist/node-server/index.d.ts +4 -22
  41. package/dist/node-server/index.js +254 -21
  42. package/dist/node-server/index.js.map +1 -0
  43. package/dist/node-server/request.d.ts +6 -2
  44. package/dist/node-server/request.js +102 -134
  45. package/dist/node-server/request.js.map +1 -0
  46. package/dist/node-server/response.d.ts +7 -3
  47. package/dist/node-server/response.js +67 -89
  48. package/dist/node-server/response.js.map +1 -0
  49. package/dist/node-server/serve.d.ts +11 -7
  50. package/dist/node-server/serve.js +231 -82
  51. package/dist/node-server/serve.js.map +1 -0
  52. package/dist/router/index.d.ts +3 -5
  53. package/dist/router/index.js +228 -7
  54. package/dist/router/index.js.map +1 -0
  55. package/dist/router/radix-tree.d.ts +7 -4
  56. package/dist/router/radix-tree.js +186 -218
  57. package/dist/router/radix-tree.js.map +1 -0
  58. package/dist/router.d.ts +7 -3
  59. package/dist/router.js +37 -83
  60. package/dist/router.js.map +1 -0
  61. package/dist/serve.d.ts +2 -12
  62. package/dist/serve.js +237 -11
  63. package/dist/serve.js.map +1 -0
  64. package/dist/server/base-server.d.ts +5 -2
  65. package/dist/server/base-server.js +124 -135
  66. package/dist/server/base-server.js.map +1 -0
  67. package/dist/server/component-server.d.ts +9 -4
  68. package/dist/server/component-server.js +481 -139
  69. package/dist/server/component-server.js.map +1 -0
  70. package/dist/server/index.d.ts +8 -7
  71. package/dist/server/index.js +985 -11
  72. package/dist/server/index.js.map +1 -0
  73. package/dist/server/server-factory.d.ts +11 -5
  74. package/dist/server/server-factory.js +979 -67
  75. package/dist/server/server-factory.js.map +1 -0
  76. package/dist/server/server.d.ts +7 -3
  77. package/dist/server/server.js +553 -112
  78. package/dist/server/server.js.map +1 -0
  79. package/dist/types/component-route.d.ts +8 -4
  80. package/dist/types/component-route.js +1 -1
  81. package/dist/types/component-route.js.map +1 -0
  82. package/dist/types/index.d.ts +5 -5
  83. package/dist/types/index.js +21 -4
  84. package/dist/types/index.js.map +1 -0
  85. package/dist/types/route.d.ts +13 -10
  86. package/dist/types/route.js +10 -9
  87. package/dist/types/route.js.map +1 -0
  88. package/dist/types/schema.d.ts +11 -7
  89. package/dist/types/schema.js +1 -1
  90. package/dist/types/schema.js.map +1 -0
  91. package/dist/types/types.d.ts +11 -9
  92. package/dist/types/types.js +1 -1
  93. package/dist/types/types.js.map +1 -0
  94. package/dist/utils/base64url.d.ts +4 -2
  95. package/dist/utils/base64url.js +12 -9
  96. package/dist/utils/base64url.js.map +1 -0
  97. package/dist/utils/create-handler.d.ts +11 -7
  98. package/dist/utils/create-handler.js +393 -217
  99. package/dist/utils/create-handler.js.map +1 -0
  100. package/dist/utils/dependency-manager.d.ts +3 -1
  101. package/dist/utils/dependency-manager.js +67 -69
  102. package/dist/utils/dependency-manager.js.map +1 -0
  103. package/dist/utils/go-await.d.ts +3 -1
  104. package/dist/utils/go-await.js +8 -22
  105. package/dist/utils/go-await.js.map +1 -0
  106. package/dist/utils/handle.d.ts +6 -4
  107. package/dist/utils/handle.js +44 -25
  108. package/dist/utils/handle.js.map +1 -0
  109. package/dist/utils/html-renderer.d.ts +3 -1
  110. package/dist/utils/html-renderer.js +25 -24
  111. package/dist/utils/html-renderer.js.map +1 -0
  112. package/dist/utils/index.d.ts +13 -13
  113. package/dist/utils/index.js +832 -21
  114. package/dist/utils/index.js.map +1 -0
  115. package/dist/utils/parsers.d.ts +15 -13
  116. package/dist/utils/parsers.js +138 -188
  117. package/dist/utils/parsers.js.map +1 -0
  118. package/dist/utils/path-matcher.d.ts +3 -1
  119. package/dist/utils/path-matcher.js +68 -78
  120. package/dist/utils/path-matcher.js.map +1 -0
  121. package/dist/utils/request-validator.d.ts +13 -10
  122. package/dist/utils/request-validator.js +234 -84
  123. package/dist/utils/request-validator.js.map +1 -0
  124. package/dist/utils/response.d.ts +9 -7
  125. package/dist/utils/response.js +93 -102
  126. package/dist/utils/response.js.map +1 -0
  127. package/dist/utils/validators/schema-validator.d.ts +13 -9
  128. package/dist/utils/validators/schema-validator.js +228 -209
  129. package/dist/utils/validators/schema-validator.js.map +1 -0
  130. package/dist/utils/validators/schema-validators-ultra.d.ts +15 -12
  131. package/dist/utils/validators/schema-validators-ultra.js +233 -256
  132. package/dist/utils/validators/schema-validators-ultra.js.map +1 -0
  133. package/dist/utils/validators/validators.d.ts +15 -12
  134. package/dist/utils/validators/validators.js +81 -122
  135. package/dist/utils/validators/validators.js.map +1 -0
  136. package/package.json +5 -4
@@ -1,134 +1,93 @@
1
- // src/utils/validators.ts
2
- /**
3
- * 高性能 Schema 验证器
4
- *
5
- * 使用 TypeBox TypeCompiler 进行 JIT 编译
6
- * 编译后的验证器会被缓存,避免重复编译开销
7
- *
8
- * @version 2.0.0 - 添加预编译缓存
9
- */
1
+ // src/utils/validators/validators.ts
10
2
  import { Type } from "@sinclair/typebox";
11
3
  import { TypeCompiler } from "@sinclair/typebox/compiler";
12
- /**
13
- * 编译器缓存
14
- * 使用 WeakMap 避免内存泄漏(Schema 对象被垃圾回收时,缓存也会自动清理)
15
- */
16
- const compilerCache = new WeakMap();
17
- /**
18
- * 获取或创建编译后的验证器
19
- * @param schema TypeBox Schema
20
- * @returns 编译后的验证器
21
- */
4
+ var compilerCache = /* @__PURE__ */ new WeakMap();
22
5
  function getCompiledValidator(schema) {
23
- let compiler = compilerCache.get(schema);
24
- if (!compiler) {
25
- compiler = TypeCompiler.Compile(schema);
26
- compilerCache.set(schema, compiler);
27
- }
28
- return compiler;
6
+ let compiler = compilerCache.get(schema);
7
+ if (!compiler) {
8
+ compiler = TypeCompiler.Compile(schema);
9
+ compilerCache.set(schema, compiler);
10
+ }
11
+ return compiler;
29
12
  }
30
- /**
31
- * 预编译 Schema(在启动时调用,避免首次请求的编译开销)
32
- * @param schemas 要预编译的 Schema 数组
33
- */
34
- export function precompileSchemas(schemas) {
35
- for (const schema of schemas) {
36
- getCompiledValidator(schema);
37
- }
13
+ function precompileSchemas(schemas) {
14
+ for (const schema of schemas) {
15
+ getCompiledValidator(schema);
16
+ }
38
17
  }
39
- /**
40
- * 使用TypeBox Schema验证数据(带缓存优化)
41
- * @param schema TypeBox Schema
42
- * @param data 要验证的数据
43
- * @returns 验证结果,包含类型安全的数据或详细错误信息
44
- */
45
- export function validateSchema(schema, data) {
46
- try {
47
- // 从缓存获取或编译验证器
48
- const compiler = getCompiledValidator(schema);
49
- if (compiler.Check(data)) {
50
- return {
51
- success: true,
52
- data: data,
53
- };
54
- }
55
- // 验证失败时,使用Errors函数生成详细的错误信息
56
- const errors = [];
57
- const errorIterator = compiler.Errors(data);
58
- // 收集所有错误(可以根据需要限制数量)
59
- for (const error of errorIterator) {
60
- errors.push({
61
- path: error.path,
62
- message: error.message,
63
- code: "VALIDATION_FAILED",
64
- value: error.value,
65
- schema: error.schema,
66
- });
67
- }
68
- return {
69
- success: false,
70
- errors,
71
- };
18
+ function validateSchema(schema, data) {
19
+ try {
20
+ const compiler = getCompiledValidator(schema);
21
+ if (compiler.Check(data)) {
22
+ return {
23
+ success: true,
24
+ data
25
+ };
72
26
  }
73
- catch (error) {
74
- // 处理验证过程中的异常
75
- return {
76
- success: false,
77
- errors: [
78
- {
79
- path: "",
80
- message: error instanceof Error ? error.message : "Unknown validation error",
81
- code: "VALIDATION_EXCEPTION",
82
- value: data,
83
- },
84
- ],
85
- };
27
+ const errors = [];
28
+ const errorIterator = compiler.Errors(data);
29
+ for (const error of errorIterator) {
30
+ errors.push({
31
+ path: error.path,
32
+ message: error.message,
33
+ code: "VALIDATION_FAILED",
34
+ value: error.value,
35
+ schema: error.schema
36
+ });
86
37
  }
87
- }
88
- /**
89
- * 创建类型特化的验证器(最高性能)
90
- * 适用于频繁验证同一 Schema 的场景
91
- * @param schema TypeBox Schema
92
- * @returns 类型安全的验证函数
93
- */
94
- export function createValidator(schema) {
95
- const compiler = getCompiledValidator(schema);
96
- return (data) => {
97
- if (compiler.Check(data)) {
98
- return { success: true, data: data };
99
- }
100
- const errors = [];
101
- for (const error of compiler.Errors(data)) {
102
- errors.push({
103
- path: error.path,
104
- message: error.message,
105
- code: "VALIDATION_FAILED",
106
- value: error.value,
107
- schema: error.schema,
108
- });
38
+ return {
39
+ success: false,
40
+ errors
41
+ };
42
+ } catch (error) {
43
+ return {
44
+ success: false,
45
+ errors: [
46
+ {
47
+ path: "",
48
+ message: error instanceof Error ? error.message : "Unknown validation error",
49
+ code: "VALIDATION_EXCEPTION",
50
+ value: data
109
51
  }
110
- return { success: false, errors };
52
+ ]
111
53
  };
54
+ }
112
55
  }
113
- /**
114
- * 快速验证(只返回布尔值,不收集错误)
115
- * 适用于只需要知道验证结果的场景
116
- * @param schema TypeBox Schema
117
- * @param data 要验证的数据
118
- * @returns 验证是否通过
119
- */
120
- export function validateFast(schema, data) {
121
- const compiler = getCompiledValidator(schema);
122
- return compiler.Check(data);
56
+ function createValidator(schema) {
57
+ const compiler = getCompiledValidator(schema);
58
+ return (data) => {
59
+ if (compiler.Check(data)) {
60
+ return { success: true, data };
61
+ }
62
+ const errors = [];
63
+ for (const error of compiler.Errors(data)) {
64
+ errors.push({
65
+ path: error.path,
66
+ message: error.message,
67
+ code: "VALIDATION_FAILED",
68
+ value: error.value,
69
+ schema: error.schema
70
+ });
71
+ }
72
+ return { success: false, errors };
73
+ };
123
74
  }
124
- /**
125
- * 获取缓存统计信息(用于调试)
126
- */
127
- export function getValidatorCacheStats() {
128
- return {
129
- cacheType: "WeakMap",
130
- note: "WeakMap 不支持 size 属性,缓存会随 Schema 对象自动清理",
131
- };
75
+ function validateFast(schema, data) {
76
+ const compiler = getCompiledValidator(schema);
77
+ return compiler.Check(data);
78
+ }
79
+ function getValidatorCacheStats() {
80
+ return {
81
+ cacheType: "WeakMap",
82
+ note: "WeakMap \u4E0D\u652F\u6301 size \u5C5E\u6027\uFF0C\u7F13\u5B58\u4F1A\u968F Schema \u5BF9\u8C61\u81EA\u52A8\u6E05\u7406"
83
+ };
132
84
  }
133
- // 导出常用的TypeBox类型,方便使用
134
- export { Type };
85
+ export {
86
+ Type,
87
+ createValidator,
88
+ getValidatorCacheStats,
89
+ precompileSchemas,
90
+ validateFast,
91
+ validateSchema
92
+ };
93
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/validators/validators.ts"],"sourcesContent":["// src/utils/validators.ts\n/**\n * 高性能 Schema 验证器\n *\n * 使用 TypeBox TypeCompiler 进行 JIT 编译\n * 编译后的验证器会被缓存,避免重复编译开销\n *\n * @version 2.0.0 - 添加预编译缓存\n */\n\nimport { Type } from \"@sinclair/typebox\";\nimport type { Static, TSchema } from \"@sinclair/typebox\";\nimport { TypeCompiler, type TypeCheck } from \"@sinclair/typebox/compiler\";\n\n/** 验证错误接口 */\nexport interface ValidationError {\n path: string;\n message: string;\n code: string;\n value?: unknown;\n schema?: unknown;\n}\n\n/** 验证失败结果接口 */\nexport interface ValidationFailure {\n success: false;\n errors: ValidationError[];\n}\n\n/** 验证成功结果接口 */\nexport interface ValidationSuccess<T> {\n success: true;\n data: T;\n}\n\n/** 验证结果联合类型 */\nexport type ValidationResult<T = unknown> =\n | ValidationSuccess<T>\n | ValidationFailure;\n\n/**\n * 编译器缓存\n * 使用 WeakMap 避免内存泄漏(Schema 对象被垃圾回收时,缓存也会自动清理)\n */\nconst compilerCache = new WeakMap<TSchema, TypeCheck<TSchema>>();\n\n/**\n * 获取或创建编译后的验证器\n * @param schema TypeBox Schema\n * @returns 编译后的验证器\n */\nfunction getCompiledValidator<T extends TSchema>(schema: T): TypeCheck<T> {\n let compiler = compilerCache.get(schema);\n if (!compiler) {\n compiler = TypeCompiler.Compile(schema);\n compilerCache.set(schema, compiler);\n }\n return compiler as TypeCheck<T>;\n}\n\n/**\n * 预编译 Schema(在启动时调用,避免首次请求的编译开销)\n * @param schemas 要预编译的 Schema 数组\n */\nexport function precompileSchemas(schemas: TSchema[]): void {\n for (const schema of schemas) {\n getCompiledValidator(schema);\n }\n}\n\n/**\n * 使用TypeBox Schema验证数据(带缓存优化)\n * @param schema TypeBox Schema\n * @param data 要验证的数据\n * @returns 验证结果,包含类型安全的数据或详细错误信息\n */\nexport function validateSchema<T extends TSchema>(\n schema: T,\n data: unknown,\n): ValidationResult<Static<T>> {\n try {\n // 从缓存获取或编译验证器\n const compiler = getCompiledValidator(schema);\n\n if (compiler.Check(data)) {\n return {\n success: true,\n data: data as Static<T>,\n };\n }\n\n // 验证失败时,使用Errors函数生成详细的错误信息\n const errors: ValidationError[] = [];\n const errorIterator = compiler.Errors(data);\n\n // 收集所有错误(可以根据需要限制数量)\n for (const error of errorIterator) {\n errors.push({\n path: error.path,\n message: error.message,\n code: \"VALIDATION_FAILED\",\n value: error.value,\n schema: error.schema,\n });\n }\n\n return {\n success: false,\n errors,\n };\n } catch (error) {\n // 处理验证过程中的异常\n return {\n success: false,\n errors: [\n {\n path: \"\",\n message:\n error instanceof Error ? error.message : \"Unknown validation error\",\n code: \"VALIDATION_EXCEPTION\",\n value: data,\n },\n ],\n };\n }\n}\n\n/**\n * 创建类型特化的验证器(最高性能)\n * 适用于频繁验证同一 Schema 的场景\n * @param schema TypeBox Schema\n * @returns 类型安全的验证函数\n */\nexport function createValidator<T extends TSchema>(\n schema: T,\n): (data: unknown) => ValidationResult<Static<T>> {\n const compiler = getCompiledValidator(schema);\n\n return (data: unknown): ValidationResult<Static<T>> => {\n if (compiler.Check(data)) {\n return { success: true, data: data as Static<T> };\n }\n\n const errors: ValidationError[] = [];\n for (const error of compiler.Errors(data)) {\n errors.push({\n path: error.path,\n message: error.message,\n code: \"VALIDATION_FAILED\",\n value: error.value,\n schema: error.schema,\n });\n }\n return { success: false, errors };\n };\n}\n\n/**\n * 快速验证(只返回布尔值,不收集错误)\n * 适用于只需要知道验证结果的场景\n * @param schema TypeBox Schema\n * @param data 要验证的数据\n * @returns 验证是否通过\n */\nexport function validateFast<T extends TSchema>(\n schema: T,\n data: unknown,\n): data is Static<T> {\n const compiler = getCompiledValidator(schema);\n return compiler.Check(data);\n}\n\n/**\n * 获取缓存统计信息(用于调试)\n */\nexport function getValidatorCacheStats(): { cacheType: string; note: string } {\n return {\n cacheType: \"WeakMap\",\n note: \"WeakMap 不支持 size 属性,缓存会随 Schema 对象自动清理\",\n };\n}\n\n// 导出常用的TypeBox类型,方便使用\nexport { Type, Static, TSchema };\n"],"mappings":";AAUA,SAAS,YAAY;AAErB,SAAS,oBAAoC;AAgC7C,IAAM,gBAAgB,oBAAI,QAAqC;AAO/D,SAAS,qBAAwC,QAAyB;AACxE,MAAI,WAAW,cAAc,IAAI,MAAM;AACvC,MAAI,CAAC,UAAU;AACb,eAAW,aAAa,QAAQ,MAAM;AACtC,kBAAc,IAAI,QAAQ,QAAQ;AAAA,EACpC;AACA,SAAO;AACT;AAMO,SAAS,kBAAkB,SAA0B;AAC1D,aAAW,UAAU,SAAS;AAC5B,yBAAqB,MAAM;AAAA,EAC7B;AACF;AAQO,SAAS,eACd,QACA,MAC6B;AAC7B,MAAI;AAEF,UAAM,WAAW,qBAAqB,MAAM;AAE5C,QAAI,SAAS,MAAM,IAAI,GAAG;AACxB,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,UAAM,SAA4B,CAAC;AACnC,UAAM,gBAAgB,SAAS,OAAO,IAAI;AAG1C,eAAW,SAAS,eAAe;AACjC,aAAO,KAAK;AAAA,QACV,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,QACf,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AAEd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,QACN;AAAA,UACE,MAAM;AAAA,UACN,SACE,iBAAiB,QAAQ,MAAM,UAAU;AAAA,UAC3C,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAQO,SAAS,gBACd,QACgD;AAChD,QAAM,WAAW,qBAAqB,MAAM;AAE5C,SAAO,CAAC,SAA+C;AACrD,QAAI,SAAS,MAAM,IAAI,GAAG;AACxB,aAAO,EAAE,SAAS,MAAM,KAAwB;AAAA,IAClD;AAEA,UAAM,SAA4B,CAAC;AACnC,eAAW,SAAS,SAAS,OAAO,IAAI,GAAG;AACzC,aAAO,KAAK;AAAA,QACV,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,QACf,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,MAChB,CAAC;AAAA,IACH;AACA,WAAO,EAAE,SAAS,OAAO,OAAO;AAAA,EAClC;AACF;AASO,SAAS,aACd,QACA,MACmB;AACnB,QAAM,WAAW,qBAAqB,MAAM;AAC5C,SAAO,SAAS,MAAM,IAAI;AAC5B;AAKO,SAAS,yBAA8D;AAC5E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vafast",
3
- "version": "0.3.1",
3
+ "version": "0.3.4",
4
4
  "description": "极简结构化Web框架,支持 Bun 和 Node.js。Go风格,函数优先。",
5
5
  "type": "module",
6
6
  "repository": {
@@ -35,7 +35,7 @@
35
35
  "main": "./dist/index.js",
36
36
  "scripts": {
37
37
  "clean": "rimraf dist",
38
- "build": "npm run clean && tsc --outDir dist --declaration",
38
+ "build": "tsup",
39
39
  "dev": "bun --watch example/index.ts",
40
40
  "start": "bun run dist/index.js",
41
41
  "test": "vitest run",
@@ -77,21 +77,22 @@
77
77
  "author": "Vafast Team",
78
78
  "license": "MIT",
79
79
  "devDependencies": {
80
+ "@eslint/js": "^9.24.0",
80
81
  "@types/cookie": "^1.0.0",
81
82
  "@types/jsdom": "^21.1.7",
82
83
  "@types/node": "^22.15.30",
83
84
  "@types/qs": "^6.14.0",
84
85
  "@types/react": "^19.1.10",
85
86
  "@types/react-dom": "^19.1.7",
86
- "@eslint/js": "^9.24.0",
87
87
  "@vitest/ui": "^3.2.4",
88
88
  "bun-types": "^1.2.20",
89
89
  "eslint": "^9.24.0",
90
- "typescript-eslint": "^8.30.1",
91
90
  "jsdom": "^26.1.0",
92
91
  "prettier": "^3.5.3",
93
92
  "rimraf": "^6.0.1",
93
+ "tsup": "^8.5.1",
94
94
  "typescript": "^5.9.2",
95
+ "typescript-eslint": "^8.30.1",
95
96
  "vitest": "^3.2.4"
96
97
  },
97
98
  "dependencies": {