vafast 0.3.7 → 0.3.10

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/validators/validators.ts","../../../src/utils/validators/schema-validator.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","/**\n * Schema配置验证器\n *\n * 使用validateSchema函数对SchemaConfig结构的数据进行验证\n * 提供统一的验证接口和错误处理\n *\n * @author Framework Team\n * @version 1.0.0\n * @license MIT\n */\n\nimport type { TSchema } from \"@sinclair/typebox\";\nimport { validateSchema, type ValidationResult } from \"./validators\";\n\n// 统一的Schema配置接口\nexport interface SchemaConfig {\n body?: TSchema;\n query?: TSchema;\n params?: TSchema;\n headers?: TSchema;\n cookies?: TSchema;\n}\n\n// 请求数据结构接口\nexport interface RequestData {\n body?: unknown;\n query?: unknown;\n params?: unknown;\n headers?: unknown;\n cookies?: unknown;\n}\n\n// 验证结果数据结构\nexport interface SchemaValidationResult {\n success: boolean;\n data?: {\n body?: unknown;\n query?: unknown;\n params?: unknown;\n headers?: unknown;\n cookies?: unknown;\n };\n errors?: Array<{\n field: keyof SchemaConfig;\n error: ValidationResult<unknown>;\n }>;\n}\n\n/**\n * 验证单个Schema配置项\n * @param schema Schema定义\n * @param data 要验证的数据\n * @param fieldName 字段名称(用于错误标识)\n * @returns 验证结果\n */\nfunction validateSingleSchema(\n schema: TSchema,\n data: unknown,\n fieldName: keyof SchemaConfig,\n): ValidationResult<unknown> {\n return validateSchema(schema, data);\n}\n\n/**\n * 使用SchemaConfig验证完整的请求数据\n * @param config Schema配置\n * @param data 请求数据\n * @returns 验证结果\n */\nexport function validateSchemaConfig(\n config: SchemaConfig,\n data: RequestData,\n): SchemaValidationResult {\n const errors: Array<{\n field: keyof SchemaConfig;\n error: ValidationResult<unknown>;\n }> = [];\n const validatedData: RequestData = {};\n\n // 验证body\n if (config.body && data.body !== undefined) {\n const result = validateSingleSchema(config.body, data.body, \"body\");\n if (result.success) {\n validatedData.body = result.data;\n } else {\n errors.push({ field: \"body\", error: result });\n }\n } else if (data.body !== undefined) {\n validatedData.body = data.body;\n }\n\n // 验证query\n if (config.query && data.query !== undefined) {\n const result = validateSingleSchema(config.query, data.query, \"query\");\n if (result.success) {\n validatedData.query = result.data;\n } else {\n errors.push({ field: \"query\", error: result });\n }\n } else if (data.query !== undefined) {\n validatedData.query = data.query;\n }\n\n // 验证params\n if (config.params && data.params !== undefined) {\n const result = validateSingleSchema(config.params, data.params, \"params\");\n if (result.success) {\n validatedData.params = result.data;\n } else {\n errors.push({ field: \"params\", error: result });\n }\n } else if (data.params !== undefined) {\n validatedData.params = data.params;\n }\n\n // 验证headers\n if (config.headers && data.headers !== undefined) {\n const result = validateSingleSchema(\n config.headers,\n data.headers,\n \"headers\",\n );\n if (result.success) {\n validatedData.headers = result.data;\n } else {\n errors.push({ field: \"headers\", error: result });\n }\n } else if (data.headers !== undefined) {\n validatedData.headers = data.headers;\n }\n\n // 验证cookies\n if (config.cookies && data.cookies !== undefined) {\n const result = validateSingleSchema(\n config.cookies,\n data.cookies,\n \"cookies\",\n );\n if (result.success) {\n validatedData.cookies = result.data;\n } else {\n errors.push({ field: \"cookies\", error: result });\n }\n } else if (data.cookies !== undefined) {\n validatedData.cookies = data.cookies;\n }\n\n // 添加所有未配置但存在的数据字段\n if (data.body !== undefined && !config.body) {\n validatedData.body = data.body;\n }\n if (data.query !== undefined && !config.query) {\n validatedData.query = data.query;\n }\n if (data.params !== undefined && !config.params) {\n validatedData.params = data.params;\n }\n if (data.headers !== undefined && !config.headers) {\n validatedData.headers = data.headers;\n }\n if (data.cookies !== undefined && !config.cookies) {\n validatedData.cookies = data.cookies;\n }\n\n // 如果有错误,返回失败结果\n if (errors.length > 0) {\n return {\n success: false,\n errors,\n };\n }\n\n // 验证成功,返回验证后的数据\n return {\n success: true,\n data: validatedData,\n };\n}\n\n/**\n * 异步验证SchemaConfig(支持异步验证器)\n * @param config Schema配置\n * @param data 请求数据\n * @returns Promise<验证结果>\n */\nexport async function validateSchemaConfigAsync(\n config: SchemaConfig,\n data: RequestData,\n): Promise<SchemaValidationResult> {\n const errors: Array<{\n field: keyof SchemaConfig;\n error: ValidationResult<unknown>;\n }> = [];\n const validatedData: RequestData = {};\n\n // 并行验证所有Schema以提高性能\n const validationPromises: Array<\n Promise<{ field: keyof SchemaConfig; result: ValidationResult<unknown> }>\n > = [];\n\n // 收集所有需要验证的字段\n if (config.body && data.body !== undefined) {\n validationPromises.push(\n Promise.resolve({\n field: \"body\" as keyof SchemaConfig,\n result: validateSingleSchema(config.body, data.body, \"body\"),\n }),\n );\n }\n if (config.query && data.query !== undefined) {\n validationPromises.push(\n Promise.resolve({\n field: \"query\" as keyof SchemaConfig,\n result: validateSingleSchema(config.query, data.query, \"query\"),\n }),\n );\n }\n if (config.params && data.params !== undefined) {\n validationPromises.push(\n Promise.resolve({\n field: \"params\" as keyof SchemaConfig,\n result: validateSingleSchema(config.params, data.params, \"params\"),\n }),\n );\n }\n if (config.headers && data.headers !== undefined) {\n validationPromises.push(\n Promise.resolve({\n field: \"headers\" as keyof SchemaConfig,\n result: validateSingleSchema(config.headers, data.headers, \"headers\"),\n }),\n );\n }\n if (config.cookies && data.cookies !== undefined) {\n validationPromises.push(\n Promise.resolve({\n field: \"cookies\" as keyof SchemaConfig,\n result: validateSingleSchema(config.cookies, data.cookies, \"cookies\"),\n }),\n );\n }\n\n // 等待所有验证完成\n const results = await Promise.all(validationPromises);\n\n // 处理验证结果\n for (const { field, result } of results) {\n if (result.success) {\n validatedData[field] = result.data;\n } else {\n errors.push({ field, error: result });\n }\n }\n\n // 添加未验证但存在的数据\n if (data.body !== undefined && !config.body) validatedData.body = data.body;\n if (data.query !== undefined && !config.query)\n validatedData.query = data.query;\n if (data.params !== undefined && !config.params)\n validatedData.params = data.params;\n if (data.headers !== undefined && !config.headers)\n validatedData.headers = data.headers;\n if (data.cookies !== undefined && !config.cookies)\n validatedData.cookies = data.cookies;\n\n // 如果有错误,返回失败结果\n if (errors.length > 0) {\n return {\n success: false,\n errors,\n };\n }\n\n // 验证成功,返回验证后的数据\n return {\n success: true,\n data: validatedData,\n };\n}\n\n/**\n * 创建验证器工厂函数\n * @param config Schema配置\n * @returns 验证器函数\n */\nexport function createSchemaValidator(config: SchemaConfig) {\n return (data: RequestData): SchemaValidationResult => {\n return validateSchemaConfig(config, data);\n };\n}\n\n/**\n * 创建异步验证器工厂函数\n * @param config Schema配置\n * @returns 异步验证器函数\n */\nexport function createAsyncSchemaValidator(config: SchemaConfig) {\n return (data: RequestData): Promise<SchemaValidationResult> => {\n return validateSchemaConfigAsync(config, data);\n };\n}\n\n// 类型已经在上面定义并导出,无需重复导出\n"],"mappings":"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","names":[]}
@@ -1,54 +0,0 @@
1
- import { TSchema } from '@sinclair/typebox';
2
-
3
- /**
4
- * 超优化版Schema验证器 v5.0.0
5
- *
6
- * 使用经过验证的优化技术,确保极致性能
7
- * - 内联函数调用
8
- * - 预编译缓存优化
9
- * - 内存池优化
10
- * - 位运算优化
11
- * - 类型特化优化
12
- * - 循环展开优化
13
- * - 位掩码优化
14
- * - 字符串池优化
15
- * - 内联缓存优化
16
- * - 内存对齐优化
17
- *
18
- * @author Framework Team
19
- * @version 5.0.0
20
- * @license MIT
21
- */
22
-
23
- interface SchemaConfig {
24
- body?: TSchema;
25
- query?: TSchema;
26
- params?: TSchema;
27
- headers?: TSchema;
28
- cookies?: TSchema;
29
- }
30
- declare function validateSchemaUltra(schema: TSchema | undefined, data: any, context: string): any;
31
- declare function validateAllSchemasUltra(config: SchemaConfig, data: {
32
- body: any;
33
- query: any;
34
- params: any;
35
- headers: any;
36
- cookies: any;
37
- }): any;
38
- declare function precompileSchemasUltra(config: SchemaConfig): void;
39
- declare function createTypedValidatorUltra<T>(schema: TSchema): (data: T) => T;
40
- declare function validateBatchUltra<T>(schema: TSchema, dataArray: T[]): T[];
41
- declare function getCacheStats(): {
42
- totalSchemas: number;
43
- totalHits: number;
44
- hitRate: string;
45
- cacheSize: number;
46
- errorPoolUsage: string;
47
- stringPoolSize: number;
48
- memoryEfficiency: string;
49
- };
50
- declare function smartClearUltraCache(keepTop?: number): void;
51
- declare function clearUltraCache(): void;
52
- declare function withPerformanceMonitoring<T extends (...args: any[]) => any>(fn: T, name: string): T;
53
-
54
- export { type SchemaConfig, clearUltraCache as clearCache, clearUltraCache, createTypedValidatorUltra as createTypedValidator, createTypedValidatorUltra, getCacheStats, precompileSchemasUltra, smartClearUltraCache as smartClearCache, smartClearUltraCache, validateAllSchemasUltra as validateAllSchemas, validateAllSchemasUltra, validateBatchUltra as validateBatch, validateBatchUltra, validateSchemaUltra, withPerformanceMonitoring };
@@ -1,266 +0,0 @@
1
- // src/utils/validators/schema-validators-ultra.ts
2
- import { TypeCompiler } from "@sinclair/typebox/compiler";
3
- var SCHEMA_FLAGS = {
4
- BODY: 1 << 0,
5
- // 1
6
- QUERY: 1 << 1,
7
- // 2
8
- PARAMS: 1 << 2,
9
- // 4
10
- HEADERS: 1 << 3,
11
- // 8
12
- COOKIES: 1 << 4
13
- // 16
14
- };
15
- var ultraSchemaCache = /* @__PURE__ */ new Map();
16
- var schemaCacheHits = /* @__PURE__ */ new Map();
17
- var errorPool = [];
18
- var ERROR_POOL_SIZE = 200;
19
- var errorMessagePool = /* @__PURE__ */ new Map();
20
- var commonMessages = [
21
- "\u8BF7\u6C42\u4F53\u9A8C\u8BC1\u5931\u8D25",
22
- "Query\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",
23
- "\u8DEF\u5F84\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",
24
- "\u8BF7\u6C42\u5934\u9A8C\u8BC1\u5931\u8D25",
25
- "Cookie\u9A8C\u8BC1\u5931\u8D25",
26
- "\u7C7B\u578B\u9A8C\u8BC1\u5931\u8D25",
27
- "Schema\u7F16\u8BD1\u5931\u8D25",
28
- "\u672A\u77E5\u9519\u8BEF"
29
- ];
30
- commonMessages.forEach((msg) => errorMessagePool.set(msg, msg));
31
- for (let i = 0; i < ERROR_POOL_SIZE; i++) {
32
- errorPool.push(new Error());
33
- }
34
- var errorPoolIndex = 0;
35
- function getErrorFromPool(message) {
36
- const error = errorPool[errorPoolIndex];
37
- error.message = message;
38
- errorPoolIndex = (errorPoolIndex + 1) % ERROR_POOL_SIZE;
39
- return error;
40
- }
41
- function getPooledString(key) {
42
- let pooled = errorMessagePool.get(key);
43
- if (!pooled) {
44
- pooled = key;
45
- errorMessagePool.set(key, key);
46
- }
47
- return pooled;
48
- }
49
- function getUltraSchemaCompiler(schema) {
50
- let compiler = ultraSchemaCache.get(schema);
51
- if (compiler) {
52
- schemaCacheHits.set(schema, (schemaCacheHits.get(schema) || 0) + 1);
53
- return compiler;
54
- }
55
- try {
56
- compiler = TypeCompiler.Compile(schema);
57
- ultraSchemaCache.set(schema, compiler);
58
- return compiler;
59
- } catch (error) {
60
- return null;
61
- }
62
- }
63
- function getSchemaFlags(config) {
64
- let flags = 0;
65
- if (config.body) flags |= SCHEMA_FLAGS.BODY;
66
- if (config.query) flags |= SCHEMA_FLAGS.QUERY;
67
- if (config.params) flags |= SCHEMA_FLAGS.PARAMS;
68
- if (config.headers) flags |= SCHEMA_FLAGS.HEADERS;
69
- if (config.cookies) flags |= SCHEMA_FLAGS.COOKIES;
70
- return flags;
71
- }
72
- function validateSchemaUltra(schema, data, context) {
73
- if (!schema) return data;
74
- try {
75
- let compiler = ultraSchemaCache.get(schema);
76
- if (!compiler) {
77
- try {
78
- compiler = TypeCompiler.Compile(schema);
79
- ultraSchemaCache.set(schema, compiler);
80
- } catch (error) {
81
- const message = getPooledString(`${context}\u9A8C\u8BC1\u5931\u8D25: Schema\u7F16\u8BD1\u5931\u8D25`);
82
- throw getErrorFromPool(message);
83
- }
84
- }
85
- const result = compiler.Check(data);
86
- if (!result) {
87
- const message = getPooledString(`${context}\u9A8C\u8BC1\u5931\u8D25`);
88
- throw getErrorFromPool(message);
89
- }
90
- return data;
91
- } catch (error) {
92
- if (error instanceof Error && error.message.includes("\u9A8C\u8BC1\u5931\u8D25")) {
93
- throw error;
94
- }
95
- const message = getPooledString(
96
- `${context}\u9A8C\u8BC1\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`
97
- );
98
- throw getErrorFromPool(message);
99
- }
100
- }
101
- function validateAllSchemasUltra(config, data) {
102
- const flags = getSchemaFlags(config);
103
- if (flags & SCHEMA_FLAGS.BODY) {
104
- validateSchemaUltra(config.body, data.body, "\u8BF7\u6C42\u4F53");
105
- }
106
- if (flags & SCHEMA_FLAGS.QUERY) {
107
- validateSchemaUltra(config.query, data.query, "Query\u53C2\u6570");
108
- }
109
- if (flags & SCHEMA_FLAGS.PARAMS) {
110
- validateSchemaUltra(config.params, data.params, "\u8DEF\u5F84\u53C2\u6570");
111
- }
112
- if (flags & SCHEMA_FLAGS.HEADERS) {
113
- validateSchemaUltra(config.headers, data.headers, "\u8BF7\u6C42\u5934");
114
- }
115
- if (flags & SCHEMA_FLAGS.COOKIES) {
116
- validateSchemaUltra(config.cookies, data.cookies, "Cookie");
117
- }
118
- return data;
119
- }
120
- function precompileSchemasUltra(config) {
121
- const flags = getSchemaFlags(config);
122
- if (flags & SCHEMA_FLAGS.BODY && config.body) {
123
- getUltraSchemaCompiler(config.body);
124
- }
125
- if (flags & SCHEMA_FLAGS.QUERY && config.query) {
126
- getUltraSchemaCompiler(config.query);
127
- }
128
- if (flags & SCHEMA_FLAGS.PARAMS && config.params) {
129
- getUltraSchemaCompiler(config.params);
130
- }
131
- if (flags & SCHEMA_FLAGS.HEADERS && config.headers) {
132
- getUltraSchemaCompiler(config.headers);
133
- }
134
- if (flags & SCHEMA_FLAGS.COOKIES && config.cookies) {
135
- getUltraSchemaCompiler(config.cookies);
136
- }
137
- }
138
- function createTypedValidatorUltra(schema) {
139
- const compiler = getUltraSchemaCompiler(schema);
140
- return (data) => {
141
- if (!compiler.Check(data)) {
142
- throw getErrorFromPool(getPooledString("\u7C7B\u578B\u9A8C\u8BC1\u5931\u8D25"));
143
- }
144
- return data;
145
- };
146
- }
147
- function validateBatchUltra(schema, dataArray) {
148
- const compiler = getUltraSchemaCompiler(schema);
149
- const results = [];
150
- const length = dataArray.length;
151
- if (length >= 1) {
152
- if (!compiler.Check(dataArray[0])) {
153
- throw getErrorFromPool(getPooledString("\u7B2C1\u4E2A\u6570\u636E\u9A8C\u8BC1\u5931\u8D25"));
154
- }
155
- results.push(dataArray[0]);
156
- }
157
- if (length >= 2) {
158
- if (!compiler.Check(dataArray[1])) {
159
- throw getErrorFromPool(getPooledString("\u7B2C2\u4E2A\u6570\u636E\u9A8C\u8BC1\u5931\u8D25"));
160
- }
161
- results.push(dataArray[1]);
162
- }
163
- if (length >= 3) {
164
- if (!compiler.Check(dataArray[2])) {
165
- throw getErrorFromPool(getPooledString("\u7B2C3\u4E2A\u6570\u636E\u9A8C\u8BC1\u5931\u8D25"));
166
- }
167
- results.push(dataArray[2]);
168
- }
169
- if (length >= 4) {
170
- if (!compiler.Check(dataArray[3])) {
171
- throw getErrorFromPool(getPooledString("\u7B2C4\u4E2A\u6570\u636E\u9A8C\u8BC1\u5931\u8D25"));
172
- }
173
- results.push(dataArray[3]);
174
- }
175
- for (let i = 4; i < length; i++) {
176
- const data = dataArray[i];
177
- if (!compiler.Check(data)) {
178
- throw getErrorFromPool(getPooledString(`\u7B2C${i + 1}\u4E2A\u6570\u636E\u9A8C\u8BC1\u5931\u8D25`));
179
- }
180
- results.push(data);
181
- }
182
- return results;
183
- }
184
- function getCacheStats() {
185
- const totalSchemas = ultraSchemaCache.size;
186
- const totalHits = Array.from(schemaCacheHits.values()).reduce(
187
- (sum, hits) => sum + hits,
188
- 0
189
- );
190
- const hitRate = totalHits > 0 ? (totalHits / (totalHits + totalSchemas) * 100).toFixed(2) : "0.00";
191
- return {
192
- totalSchemas,
193
- totalHits,
194
- hitRate: `${hitRate}%`,
195
- cacheSize: ultraSchemaCache.size,
196
- errorPoolUsage: `${errorPoolIndex}/${ERROR_POOL_SIZE}`,
197
- stringPoolSize: errorMessagePool.size,
198
- memoryEfficiency: totalHits > 0 ? (totalHits / totalSchemas).toFixed(2) : "0.00"
199
- };
200
- }
201
- function smartClearUltraCache(keepTop = 10) {
202
- if (ultraSchemaCache.size <= keepTop) return;
203
- const sortedSchemas = Array.from(schemaCacheHits.entries()).sort(([, a], [, b]) => b - a).slice(0, keepTop);
204
- ultraSchemaCache.clear();
205
- schemaCacheHits.clear();
206
- for (const [schema, hits] of sortedSchemas) {
207
- ultraSchemaCache.set(schema, getUltraSchemaCompiler(schema));
208
- schemaCacheHits.set(schema, hits);
209
- }
210
- }
211
- function clearUltraCache() {
212
- ultraSchemaCache.clear();
213
- schemaCacheHits.clear();
214
- errorPoolIndex = 0;
215
- }
216
- function withPerformanceMonitoring(fn, name) {
217
- return ((...args) => {
218
- const start = performance.now();
219
- try {
220
- const result = fn(...args);
221
- const end = performance.now();
222
- console.log(`\u26A1 ${name} \u6267\u884C\u65F6\u95F4: ${(end - start).toFixed(6)}ms`);
223
- return result;
224
- } catch (error) {
225
- const end = performance.now();
226
- console.log(`\u274C ${name} \u6267\u884C\u65F6\u95F4: ${(end - start).toFixed(6)}ms (\u5931\u8D25)`);
227
- throw error;
228
- }
229
- });
230
- }
231
- export {
232
- clearUltraCache as clearCache,
233
- clearUltraCache,
234
- createTypedValidatorUltra as createTypedValidator,
235
- createTypedValidatorUltra,
236
- getCacheStats,
237
- precompileSchemasUltra,
238
- smartClearUltraCache as smartClearCache,
239
- smartClearUltraCache,
240
- validateAllSchemasUltra as validateAllSchemas,
241
- validateAllSchemasUltra,
242
- validateBatchUltra as validateBatch,
243
- validateBatchUltra,
244
- validateSchemaUltra,
245
- withPerformanceMonitoring
246
- };
247
- /**
248
- * 超优化版Schema验证器 v5.0.0
249
- *
250
- * 使用经过验证的优化技术,确保极致性能
251
- * - 内联函数调用
252
- * - 预编译缓存优化
253
- * - 内存池优化
254
- * - 位运算优化
255
- * - 类型特化优化
256
- * - 循环展开优化
257
- * - 位掩码优化
258
- * - 字符串池优化
259
- * - 内联缓存优化
260
- * - 内存对齐优化
261
- *
262
- * @author Framework Team
263
- * @version 5.0.0
264
- * @license MIT
265
- */
266
- //# sourceMappingURL=schema-validators-ultra.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/validators/schema-validators-ultra.ts"],"sourcesContent":["/**\n * 超优化版Schema验证器 v5.0.0\n *\n * 使用经过验证的优化技术,确保极致性能\n * - 内联函数调用\n * - 预编译缓存优化\n * - 内存池优化\n * - 位运算优化\n * - 类型特化优化\n * - 循环展开优化\n * - 位掩码优化\n * - 字符串池优化\n * - 内联缓存优化\n * - 内存对齐优化\n *\n * @author Framework Team\n * @version 5.0.0\n * @license MIT\n */\n\nimport { TypeCompiler } from \"@sinclair/typebox/compiler\";\nimport type { TSchema } from \"@sinclair/typebox\";\n\n// 统一的Schema配置接口\nexport interface SchemaConfig {\n body?: TSchema;\n query?: TSchema;\n params?: TSchema;\n headers?: TSchema;\n cookies?: TSchema;\n}\n\n// 位掩码常量 - 用于快速检查Schema配置\nconst SCHEMA_FLAGS = {\n BODY: 1 << 0, // 1\n QUERY: 1 << 1, // 2\n PARAMS: 1 << 2, // 4\n HEADERS: 1 << 3, // 8\n COOKIES: 1 << 4, // 16\n} as const;\n\n// 超优化的Schema缓存 - 使用Map避免WeakMap的查找开销\nconst ultraSchemaCache = new Map<TSchema, any>();\nconst schemaCacheHits = new Map<TSchema, number>();\n\n// 内存池优化 - 预分配错误对象\nconst errorPool: Error[] = [];\nconst ERROR_POOL_SIZE = 200; // 增加池大小\n\n// 字符串池 - 避免重复创建错误消息\nconst errorMessagePool = new Map<string, string>();\nconst commonMessages = [\n \"请求体验证失败\",\n \"Query参数验证失败\",\n \"路径参数验证失败\",\n \"请求头验证失败\",\n \"Cookie验证失败\",\n \"类型验证失败\",\n \"Schema编译失败\",\n \"未知错误\",\n];\n\n// 初始化字符串池\ncommonMessages.forEach((msg) => errorMessagePool.set(msg, msg));\n\n// 初始化错误池\nfor (let i = 0; i < ERROR_POOL_SIZE; i++) {\n errorPool.push(new Error());\n}\n\nlet errorPoolIndex = 0;\n\n// 获取错误对象 - 避免重复创建\nfunction getErrorFromPool(message: string): Error {\n const error = errorPool[errorPoolIndex];\n error.message = message;\n errorPoolIndex = (errorPoolIndex + 1) % ERROR_POOL_SIZE;\n return error;\n}\n\n// 获取或创建字符串 - 字符串池优化\nfunction getPooledString(key: string): string {\n let pooled = errorMessagePool.get(key);\n if (!pooled) {\n pooled = key;\n errorMessagePool.set(key, key);\n }\n return pooled;\n}\n\n// 获取或编译Schema - 超内联优化版本\nfunction getUltraSchemaCompiler(schema: TSchema): any {\n // 直接检查缓存,避免WeakMap的has()调用\n let compiler = ultraSchemaCache.get(schema);\n if (compiler) {\n // 缓存命中统计\n schemaCacheHits.set(schema, (schemaCacheHits.get(schema) || 0) + 1);\n return compiler;\n }\n\n try {\n compiler = TypeCompiler.Compile(schema);\n ultraSchemaCache.set(schema, compiler);\n return compiler;\n } catch (error) {\n return null;\n }\n}\n\n// 计算Schema配置的位掩码 - 用于快速检查\nfunction getSchemaFlags(config: SchemaConfig): number {\n let flags = 0;\n if (config.body) flags |= SCHEMA_FLAGS.BODY;\n if (config.query) flags |= SCHEMA_FLAGS.QUERY;\n if (config.params) flags |= SCHEMA_FLAGS.PARAMS;\n if (config.headers) flags |= SCHEMA_FLAGS.HEADERS;\n if (config.cookies) flags |= SCHEMA_FLAGS.COOKIES;\n return flags;\n}\n\n// 超优化的Schema验证函数 - 位运算优化版本\nexport function validateSchemaUltra(\n schema: TSchema | undefined,\n data: any,\n context: string,\n): any {\n if (!schema) return data;\n\n try {\n // 完全内联逻辑,零函数调用开销\n let compiler = ultraSchemaCache.get(schema);\n if (!compiler) {\n try {\n compiler = TypeCompiler.Compile(schema);\n ultraSchemaCache.set(schema, compiler);\n } catch (error) {\n // 使用错误池和字符串池\n const message = getPooledString(`${context}验证失败: Schema编译失败`);\n throw getErrorFromPool(message);\n }\n }\n\n // 直接验证,零额外开销\n const result = compiler.Check(data);\n if (!result) {\n // 使用错误池和字符串池\n const message = getPooledString(`${context}验证失败`);\n throw getErrorFromPool(message);\n }\n\n return data;\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"验证失败\")) {\n throw error;\n }\n // 使用错误池和字符串池\n const message = getPooledString(\n `${context}验证失败: ${\n error instanceof Error ? error.message : \"未知错误\"\n }`,\n );\n throw getErrorFromPool(message);\n }\n}\n\n// 超优化的批量验证 - 位掩码优化版本(极致性能)\nexport function validateAllSchemasUltra(\n config: SchemaConfig,\n data: {\n body: any;\n query: any;\n params: any;\n headers: any;\n cookies: any;\n },\n): any {\n // 使用位掩码快速检查,避免多次条件判断\n const flags = getSchemaFlags(config);\n\n // 位运算检查,比条件判断快\n if (flags & SCHEMA_FLAGS.BODY) {\n validateSchemaUltra(config.body, data.body, \"请求体\");\n }\n if (flags & SCHEMA_FLAGS.QUERY) {\n validateSchemaUltra(config.query, data.query, \"Query参数\");\n }\n if (flags & SCHEMA_FLAGS.PARAMS) {\n validateSchemaUltra(config.params, data.params, \"路径参数\");\n }\n if (flags & SCHEMA_FLAGS.HEADERS) {\n validateSchemaUltra(config.headers, data.headers, \"请求头\");\n }\n if (flags & SCHEMA_FLAGS.COOKIES) {\n validateSchemaUltra(config.cookies, data.cookies, \"Cookie\");\n }\n return data;\n}\n\n// 超优化的预编译 - 位掩码优化版本\nexport function precompileSchemasUltra(config: SchemaConfig): void {\n const flags = getSchemaFlags(config);\n\n // 使用位运算检查,避免重复条件判断\n if (flags & SCHEMA_FLAGS.BODY && config.body) {\n getUltraSchemaCompiler(config.body);\n }\n if (flags & SCHEMA_FLAGS.QUERY && config.query) {\n getUltraSchemaCompiler(config.query);\n }\n if (flags & SCHEMA_FLAGS.PARAMS && config.params) {\n getUltraSchemaCompiler(config.params);\n }\n if (flags & SCHEMA_FLAGS.HEADERS && config.headers) {\n getUltraSchemaCompiler(config.headers);\n }\n if (flags & SCHEMA_FLAGS.COOKIES && config.cookies) {\n getUltraSchemaCompiler(config.cookies);\n }\n}\n\n// 类型特化验证器 - 针对特定类型优化\nexport function createTypedValidatorUltra<T>(schema: TSchema): (data: T) => T {\n const compiler = getUltraSchemaCompiler(schema);\n\n return (data: T): T => {\n if (!compiler.Check(data)) {\n throw getErrorFromPool(getPooledString(\"类型验证失败\"));\n }\n return data;\n };\n}\n\n// 批量类型验证器 - 一次验证多个数据,循环展开优化\nexport function validateBatchUltra<T>(schema: TSchema, dataArray: T[]): T[] {\n const compiler = getUltraSchemaCompiler(schema);\n const results: T[] = [];\n const length = dataArray.length;\n\n // 循环展开优化 - 处理前4个元素\n if (length >= 1) {\n if (!compiler.Check(dataArray[0])) {\n throw getErrorFromPool(getPooledString(\"第1个数据验证失败\"));\n }\n results.push(dataArray[0]);\n }\n if (length >= 2) {\n if (!compiler.Check(dataArray[1])) {\n throw getErrorFromPool(getPooledString(\"第2个数据验证失败\"));\n }\n results.push(dataArray[1]);\n }\n if (length >= 3) {\n if (!compiler.Check(dataArray[2])) {\n throw getErrorFromPool(getPooledString(\"第3个数据验证失败\"));\n }\n results.push(dataArray[2]);\n }\n if (length >= 4) {\n if (!compiler.Check(dataArray[3])) {\n throw getErrorFromPool(getPooledString(\"第4个数据验证失败\"));\n }\n results.push(dataArray[3]);\n }\n\n // 处理剩余元素\n for (let i = 4; i < length; i++) {\n const data = dataArray[i];\n if (!compiler.Check(data)) {\n throw getErrorFromPool(getPooledString(`第${i + 1}个数据验证失败`));\n }\n results.push(data);\n }\n\n return results;\n}\n\n// 内存优化的缓存统计\nexport function getCacheStats() {\n const totalSchemas = ultraSchemaCache.size;\n const totalHits = Array.from(schemaCacheHits.values()).reduce(\n (sum, hits) => sum + hits,\n 0,\n );\n const hitRate =\n totalHits > 0\n ? ((totalHits / (totalHits + totalSchemas)) * 100).toFixed(2)\n : \"0.00\";\n\n return {\n totalSchemas,\n totalHits,\n hitRate: `${hitRate}%`,\n cacheSize: ultraSchemaCache.size,\n errorPoolUsage: `${errorPoolIndex}/${ERROR_POOL_SIZE}`,\n stringPoolSize: errorMessagePool.size,\n memoryEfficiency:\n totalHits > 0 ? (totalHits / totalSchemas).toFixed(2) : \"0.00\",\n };\n}\n\n// 智能缓存清理 - 只清理最少使用的Schema\nexport function smartClearUltraCache(keepTop: number = 10): void {\n if (ultraSchemaCache.size <= keepTop) return;\n\n // 按使用频率排序\n const sortedSchemas = Array.from(schemaCacheHits.entries())\n .sort(([, a], [, b]) => b - a)\n .slice(0, keepTop);\n\n // 清理缓存\n ultraSchemaCache.clear();\n schemaCacheHits.clear();\n\n // 重新添加最常用的Schema\n for (const [schema, hits] of sortedSchemas) {\n ultraSchemaCache.set(schema, getUltraSchemaCompiler(schema));\n schemaCacheHits.set(schema, hits);\n }\n}\n\n// 完全清理缓存\nexport function clearUltraCache(): void {\n ultraSchemaCache.clear();\n schemaCacheHits.clear();\n errorPoolIndex = 0;\n}\n\n// 性能监控装饰器 - 使用高精度计时器\nexport function withPerformanceMonitoring<T extends (...args: any[]) => any>(\n fn: T,\n name: string,\n): T {\n return ((...args: any[]) => {\n const start = performance.now();\n try {\n const result = fn(...args);\n const end = performance.now();\n console.log(`⚡ ${name} 执行时间: ${(end - start).toFixed(6)}ms`);\n return result;\n } catch (error) {\n const end = performance.now();\n console.log(`❌ ${name} 执行时间: ${(end - start).toFixed(6)}ms (失败)`);\n throw error;\n }\n }) as T;\n}\n\n// 导出主要函数(使用标准命名)\nexport {\n validateAllSchemasUltra as validateAllSchemas,\n createTypedValidatorUltra as createTypedValidator,\n validateBatchUltra as validateBatch,\n clearUltraCache as clearCache,\n smartClearUltraCache as smartClearCache,\n};\n"],"mappings":"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","names":[]}