vafast 0.1.17 → 0.2.3

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 (80) hide show
  1. package/README.md +167 -185
  2. package/dist/auth/token.d.ts +39 -2
  3. package/dist/auth/token.js +124 -0
  4. package/dist/defineRoute.js +3 -0
  5. package/dist/index.d.ts +3 -4
  6. package/dist/index.js +13 -323
  7. package/dist/middleware/auth.d.ts +6 -0
  8. package/dist/middleware/auth.js +106 -0
  9. package/dist/middleware/authMiddleware.js +13 -0
  10. package/dist/middleware/component-renderer.d.ts +6 -0
  11. package/dist/middleware/component-renderer.js +132 -0
  12. package/dist/middleware/component-router.d.ts +10 -0
  13. package/dist/middleware/component-router.js +42 -0
  14. package/dist/middleware/cors.js +30 -0
  15. package/dist/middleware/rateLimit.js +33 -0
  16. package/dist/middleware.d.ts +1 -1
  17. package/dist/middleware.js +56 -0
  18. package/dist/monitoring/index.d.ts +29 -0
  19. package/dist/monitoring/index.js +24 -0
  20. package/dist/monitoring/native-monitor.d.ts +38 -0
  21. package/dist/monitoring/native-monitor.js +176 -0
  22. package/dist/monitoring/types.d.ts +146 -0
  23. package/dist/monitoring/types.js +8 -0
  24. package/dist/router/index.d.ts +5 -0
  25. package/dist/router/index.js +7 -0
  26. package/dist/router/radix-tree.d.ts +51 -0
  27. package/dist/router/radix-tree.js +186 -0
  28. package/dist/router.d.ts +43 -6
  29. package/dist/router.js +86 -0
  30. package/dist/server/base-server.d.ts +34 -0
  31. package/dist/server/base-server.js +145 -0
  32. package/dist/server/component-server.d.ts +32 -0
  33. package/dist/server/component-server.js +146 -0
  34. package/dist/server/index.d.ts +7 -0
  35. package/dist/server/index.js +11 -0
  36. package/dist/server/server-factory.d.ts +42 -0
  37. package/dist/server/server-factory.js +70 -0
  38. package/dist/server/server.d.ts +35 -0
  39. package/dist/server/server.js +97 -0
  40. package/dist/types/component-route.d.ts +25 -0
  41. package/dist/types/component-route.js +1 -0
  42. package/dist/types/index.d.ts +5 -0
  43. package/dist/types/index.js +4 -0
  44. package/dist/types/route.d.ts +39 -0
  45. package/dist/types/route.js +11 -0
  46. package/dist/types/schema.d.ts +75 -0
  47. package/dist/types/schema.js +10 -0
  48. package/dist/types/types.d.ts +22 -0
  49. package/dist/types/types.js +1 -0
  50. package/dist/utils/base64url.js +11 -0
  51. package/dist/utils/create-handler.d.ts +74 -0
  52. package/dist/utils/create-handler.js +234 -0
  53. package/dist/utils/dependency-manager.d.ts +23 -0
  54. package/dist/utils/dependency-manager.js +73 -0
  55. package/dist/utils/go-await.d.ts +26 -0
  56. package/dist/utils/go-await.js +30 -0
  57. package/dist/{cookie.d.ts → utils/handle.d.ts} +3 -0
  58. package/dist/utils/handle.js +29 -0
  59. package/dist/utils/html-renderer.d.ts +18 -0
  60. package/dist/utils/html-renderer.js +64 -0
  61. package/dist/utils/index.d.ts +12 -0
  62. package/dist/utils/index.js +21 -0
  63. package/dist/utils/parsers.d.ts +36 -0
  64. package/dist/utils/parsers.js +126 -0
  65. package/dist/utils/path-matcher.d.ts +23 -0
  66. package/dist/utils/path-matcher.js +83 -0
  67. package/dist/utils/request-validator.d.ts +63 -0
  68. package/dist/utils/request-validator.js +94 -0
  69. package/dist/utils/response.d.ts +17 -0
  70. package/dist/utils/response.js +110 -0
  71. package/dist/utils/validators/schema-validator.d.ts +66 -0
  72. package/dist/utils/validators/schema-validator.js +222 -0
  73. package/dist/utils/validators/schema-validators-ultra.d.ts +51 -0
  74. package/dist/utils/validators/schema-validators-ultra.js +289 -0
  75. package/dist/utils/validators/validators.d.ts +30 -0
  76. package/dist/utils/validators/validators.js +54 -0
  77. package/package.json +50 -14
  78. package/dist/server.d.ts +0 -9
  79. package/dist/types.d.ts +0 -9
  80. package/dist/util.d.ts +0 -7
@@ -0,0 +1,126 @@
1
+ // src/parsers.ts
2
+ import qs from "qs";
3
+ import cookie from "cookie";
4
+ /**
5
+ * 简化的请求体解析函数
6
+ * 优先简洁性,处理最常见的场景
7
+ */
8
+ export async function parseBody(req) {
9
+ const contentType = req.headers.get("content-type") || "";
10
+ if (contentType.includes("application/json")) {
11
+ return await req.json();
12
+ }
13
+ if (contentType.includes("application/x-www-form-urlencoded")) {
14
+ const text = await req.text();
15
+ return Object.fromEntries(new URLSearchParams(text));
16
+ }
17
+ return await req.text(); // fallback
18
+ }
19
+ /**
20
+ * 解析 multipart/form-data 格式
21
+ * 支持文件上传和普通表单字段
22
+ */
23
+ async function parseMultipartFormData(req) {
24
+ const formData = await req.formData();
25
+ const result = {
26
+ fields: {},
27
+ files: {},
28
+ };
29
+ for (const [key, value] of formData.entries()) {
30
+ if (typeof value === "object" &&
31
+ value !== null &&
32
+ "name" in value &&
33
+ "type" in value &&
34
+ "size" in value) {
35
+ // 处理文件
36
+ const file = value;
37
+ const arrayBuffer = await file.arrayBuffer();
38
+ result.files[key] = {
39
+ name: file.name,
40
+ type: file.type,
41
+ size: file.size,
42
+ data: arrayBuffer,
43
+ };
44
+ }
45
+ else {
46
+ // 处理普通字段
47
+ result.fields[key] = value;
48
+ }
49
+ }
50
+ return result;
51
+ }
52
+ /**
53
+ * 解析请求体为特定类型
54
+ * 提供类型安全的解析方法
55
+ */
56
+ export async function parseBodyAs(req) {
57
+ const body = await parseBody(req);
58
+ return body;
59
+ }
60
+ /**
61
+ * 解析请求体为表单数据
62
+ * 专门用于处理 multipart/form-data
63
+ */
64
+ export async function parseFormData(req) {
65
+ const contentType = req.headers.get("content-type") || "";
66
+ if (!contentType.includes("multipart/form-data")) {
67
+ throw new Error("请求不是 multipart/form-data 格式");
68
+ }
69
+ return await parseMultipartFormData(req);
70
+ }
71
+ /**
72
+ * 解析请求体为文件
73
+ * 专门用于处理文件上传
74
+ */
75
+ export async function parseFile(req) {
76
+ const contentType = req.headers.get("content-type") || "";
77
+ if (!contentType.includes("multipart/form-data")) {
78
+ throw new Error("请求不是 multipart/form-data 格式");
79
+ }
80
+ const formData = await parseMultipartFormData(req);
81
+ const fileKeys = Object.keys(formData.files);
82
+ if (fileKeys.length === 0) {
83
+ throw new Error("请求中没有文件");
84
+ }
85
+ if (fileKeys.length > 1) {
86
+ throw new Error("请求中包含多个文件,请使用 parseFormData");
87
+ }
88
+ return formData.files[fileKeys[0]];
89
+ }
90
+ /** 获取查询字符串,直接返回对象 */
91
+ export function parseQuery(req) {
92
+ const url = new URL(req.url);
93
+ return qs.parse(url.search.slice(1)); // 去掉开头的 ?
94
+ }
95
+ /** 解析请求头,返回对象 */
96
+ export function parseHeaders(req) {
97
+ const headers = {};
98
+ req.headers.forEach((value, key) => {
99
+ if (value !== undefined && value !== null) {
100
+ headers[key] = value;
101
+ }
102
+ });
103
+ return headers;
104
+ }
105
+ /** 使用cookie库解析Cookie,保证可靠性 */
106
+ export function parseCookies(req) {
107
+ const cookieHeader = req.headers.get("cookie");
108
+ if (!cookieHeader)
109
+ return {};
110
+ try {
111
+ const parsed = cookie.parse(cookieHeader);
112
+ // 过滤掉undefined和null值
113
+ const result = {};
114
+ for (const [key, value] of Object.entries(parsed)) {
115
+ if (value !== undefined && value !== null) {
116
+ result[key] = value;
117
+ }
118
+ }
119
+ return result;
120
+ }
121
+ catch (error) {
122
+ console.error("Cookie解析失败:", error);
123
+ console.error("原始Cookie字符串:", cookieHeader);
124
+ return {};
125
+ }
126
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 路径匹配工具类
3
+ * 提供统一的路径匹配和参数提取功能
4
+ */
5
+ export declare class PathMatcher {
6
+ /**
7
+ * 路径匹配
8
+ */
9
+ static matchPath(pattern: string, path: string): boolean;
10
+ /**
11
+ * 提取路径参数
12
+ */
13
+ static extractParams(pattern: string, path: string): Record<string, string>;
14
+ /**
15
+ * 计算路径特异性分数
16
+ * 用于路由排序:静态 > 动态(:param) > 通配符(*)
17
+ */
18
+ static calculatePathScore(path: string): number;
19
+ /**
20
+ * 判断两个路径是否可能冲突
21
+ */
22
+ static pathsMayConflict(path1: string, path2: string): boolean;
23
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * 路径匹配工具类
3
+ * 提供统一的路径匹配和参数提取功能
4
+ */
5
+ export class PathMatcher {
6
+ /**
7
+ * 路径匹配
8
+ */
9
+ static matchPath(pattern, path) {
10
+ const patternParts = pattern.split("/").filter(Boolean);
11
+ const pathParts = path.split("/").filter(Boolean);
12
+ if (patternParts.length !== pathParts.length) {
13
+ return false;
14
+ }
15
+ for (let i = 0; i < patternParts.length; i++) {
16
+ if (patternParts[i] !== pathParts[i] &&
17
+ !patternParts[i].startsWith(":")) {
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ }
23
+ /**
24
+ * 提取路径参数
25
+ */
26
+ static extractParams(pattern, path) {
27
+ const params = {};
28
+ const patternParts = pattern.split("/").filter(Boolean);
29
+ const pathParts = path.split("/").filter(Boolean);
30
+ for (let i = 0; i < patternParts.length; i++) {
31
+ if (patternParts[i].startsWith(":")) {
32
+ const paramName = patternParts[i].slice(1);
33
+ params[paramName] = pathParts[i];
34
+ }
35
+ }
36
+ return params;
37
+ }
38
+ /**
39
+ * 计算路径特异性分数
40
+ * 用于路由排序:静态 > 动态(:param) > 通配符(*)
41
+ */
42
+ static calculatePathScore(path) {
43
+ const parts = path.split("/").filter(Boolean);
44
+ let score = 0;
45
+ for (const p of parts) {
46
+ if (p === "*")
47
+ score += 1; // 最弱
48
+ else if (p.startsWith(":"))
49
+ score += 2; // 中等
50
+ else
51
+ score += 3; // 静态最强
52
+ }
53
+ // 更长的路径更具体,略微提升
54
+ return score * 10 + parts.length;
55
+ }
56
+ /**
57
+ * 判断两个路径是否可能冲突
58
+ */
59
+ static pathsMayConflict(path1, path2) {
60
+ const parts1 = path1.split("/").filter(Boolean);
61
+ const parts2 = path2.split("/").filter(Boolean);
62
+ if (parts1.length !== parts2.length)
63
+ return false;
64
+ for (let i = 0; i < parts1.length; i++) {
65
+ const p1 = parts1[i];
66
+ const p2 = parts2[i];
67
+ // 如果两个部分都是静态的且不同,则不会冲突
68
+ if (!p1.startsWith(":") &&
69
+ !p1.startsWith("*") &&
70
+ !p2.startsWith(":") &&
71
+ !p2.startsWith("*") &&
72
+ p1 !== p2) {
73
+ return false;
74
+ }
75
+ // 如果一个是通配符,另一个是动态参数,可能冲突
76
+ if ((p1 === "*" && p2.startsWith(":")) ||
77
+ (p2 === "*" && p1.startsWith(":"))) {
78
+ return true;
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 请求解析和验证器
3
+ *
4
+ * 解析handler的req参数,使用Ultra验证器进行验证,
5
+ * 并类型安全地返回解析出来的值
6
+ *
7
+ * @author Framework Team
8
+ * @version 1.0.0
9
+ * @license MIT
10
+ */
11
+ import type { TSchema } from "@sinclair/typebox";
12
+ import type { Static } from "@sinclair/typebox";
13
+ import { type SchemaConfig } from "./validators/schema-validators-ultra";
14
+ export interface RequestData {
15
+ body: unknown;
16
+ query: unknown;
17
+ params: Record<string, string>;
18
+ headers: Record<string, string>;
19
+ cookies: Record<string, string>;
20
+ }
21
+ export interface ValidatedRequestData<T extends SchemaConfig> {
22
+ body: T["body"] extends TSchema ? Static<T["body"]> : unknown;
23
+ query: T["query"] extends TSchema ? Static<T["query"]> : unknown;
24
+ params: T["params"] extends TSchema ? Static<T["params"]> : Record<string, string>;
25
+ headers: T["headers"] extends TSchema ? Static<T["headers"]> : Record<string, string>;
26
+ cookies: T["cookies"] extends TSchema ? Static<T["cookies"]> : Record<string, string>;
27
+ }
28
+ export interface ValidationResult<T extends SchemaConfig> {
29
+ success: boolean;
30
+ data?: ValidatedRequestData<T>;
31
+ errors?: Array<{
32
+ field: keyof SchemaConfig;
33
+ message: string;
34
+ }>;
35
+ }
36
+ /**
37
+ * 解析Request对象,提取所有相关数据
38
+ * @param request Request对象
39
+ * @param params 路径参数(可选)
40
+ * @returns 解析后的请求数据
41
+ */
42
+ export declare function parseRequest(request: Request, params?: Record<string, string>): Promise<RequestData>;
43
+ /**
44
+ * 验证请求数据
45
+ * @param config Schema配置
46
+ * @param requestData 请求数据
47
+ * @returns 验证结果
48
+ */
49
+ export declare function validateRequest<T extends SchemaConfig>(config: T, requestData: RequestData): ValidationResult<T>;
50
+ /**
51
+ * 完整的请求解析和验证流程
52
+ * @param request Request对象
53
+ * @param config Schema配置
54
+ * @param params 路径参数(可选)
55
+ * @returns 验证结果
56
+ */
57
+ export declare function parseAndValidateRequest<T extends SchemaConfig>(request: Request, config: T, params?: Record<string, string>): Promise<ValidationResult<T>>;
58
+ /**
59
+ * 创建类型安全的请求验证器工厂
60
+ * @param config Schema配置
61
+ * @returns 验证器函数
62
+ */
63
+ export declare function createRequestValidator<T extends SchemaConfig>(config: T): (request: Request, params?: Record<string, string>) => Promise<ValidationResult<T>>;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * 请求解析和验证器
3
+ *
4
+ * 解析handler的req参数,使用Ultra验证器进行验证,
5
+ * 并类型安全地返回解析出来的值
6
+ *
7
+ * @author Framework Team
8
+ * @version 1.0.0
9
+ * @license MIT
10
+ */
11
+ import { validateAllSchemasUltra, } from "./validators/schema-validators-ultra";
12
+ import { parseBody, parseQuery, parseHeaders, parseCookies } from "./parsers";
13
+ /**
14
+ * 解析Request对象,提取所有相关数据
15
+ * @param request Request对象
16
+ * @param params 路径参数(可选)
17
+ * @returns 解析后的请求数据
18
+ */
19
+ export async function parseRequest(request, params) {
20
+ const requestData = {
21
+ body: undefined,
22
+ query: parseQuery(request),
23
+ params: params || {},
24
+ headers: parseHeaders(request),
25
+ cookies: parseCookies(request),
26
+ };
27
+ // 对于非GET请求,尝试解析请求体
28
+ if (request.method !== "GET" && request.method !== "HEAD") {
29
+ requestData.body = await parseBody(request);
30
+ }
31
+ return requestData;
32
+ }
33
+ /**
34
+ * 验证请求数据
35
+ * @param config Schema配置
36
+ * @param requestData 请求数据
37
+ * @returns 验证结果
38
+ */
39
+ export function validateRequest(config, requestData) {
40
+ try {
41
+ const validatedData = validateAllSchemasUltra(config, requestData);
42
+ return {
43
+ success: true,
44
+ data: validatedData,
45
+ };
46
+ }
47
+ catch (error) {
48
+ return {
49
+ success: false,
50
+ errors: [
51
+ {
52
+ field: "unknown",
53
+ message: error instanceof Error ? error.message : "验证失败",
54
+ },
55
+ ],
56
+ };
57
+ }
58
+ }
59
+ /**
60
+ * 完整的请求解析和验证流程
61
+ * @param request Request对象
62
+ * @param config Schema配置
63
+ * @param params 路径参数(可选)
64
+ * @returns 验证结果
65
+ */
66
+ export async function parseAndValidateRequest(request, config, params) {
67
+ try {
68
+ // 1. 解析请求
69
+ const requestData = await parseRequest(request, params);
70
+ // 2. 验证数据
71
+ return validateRequest(config, requestData);
72
+ }
73
+ catch (error) {
74
+ return {
75
+ success: false,
76
+ errors: [
77
+ {
78
+ field: "unknown",
79
+ message: error instanceof Error ? error.message : "请求解析失败",
80
+ },
81
+ ],
82
+ };
83
+ }
84
+ }
85
+ /**
86
+ * 创建类型安全的请求验证器工厂
87
+ * @param config Schema配置
88
+ * @returns 验证器函数
89
+ */
90
+ export function createRequestValidator(config) {
91
+ return async (request, params) => {
92
+ return parseAndValidateRequest(request, config, params);
93
+ };
94
+ }
@@ -0,0 +1,17 @@
1
+ /** 生成 JSON 响应 */
2
+ export declare function json(data: unknown, status?: number, headers?: HeadersInit): Response;
3
+ /**
4
+ * 类型特化的响应映射
5
+ * 根据返回值类型直接生成 Response,避免不必要的检查
6
+ */
7
+ export declare function mapResponse(response: unknown): Response;
8
+ /** 生成重定向响应 */
9
+ export declare function redirect(location: string, status?: 301 | 302): Response;
10
+ /** 生成纯文本响应 */
11
+ export declare function text(content: string, status?: number, headers?: HeadersInit): Response;
12
+ /** 生成HTML响应 */
13
+ export declare function html(content: string, status?: number, headers?: HeadersInit): Response;
14
+ /** 生成空响应(204 No Content) */
15
+ export declare function empty(status?: number, headers?: HeadersInit): Response;
16
+ /** 生成流式响应 */
17
+ export declare function stream(stream: ReadableStream, status?: number, headers?: HeadersInit): Response;
@@ -0,0 +1,110 @@
1
+ // src/response.ts
2
+ /** 生成 JSON 响应 */
3
+ export function json(data, status = 200, headers = {}) {
4
+ // 优化:只在有自定义 headers 时才创建 Headers 对象
5
+ if (Object.keys(headers).length === 0) {
6
+ return new Response(JSON.stringify(data), {
7
+ status,
8
+ headers: { "Content-Type": "application/json" },
9
+ });
10
+ }
11
+ // 有自定义 headers 时才创建 Headers 对象
12
+ const h = new Headers({
13
+ "Content-Type": "application/json",
14
+ ...headers,
15
+ });
16
+ return new Response(JSON.stringify(data), {
17
+ status,
18
+ headers: h,
19
+ });
20
+ }
21
+ // JSON 响应的预创建 headers(避免每次创建)
22
+ const JSON_HEADERS = { "Content-Type": "application/json" };
23
+ const TEXT_HEADERS = { "Content-Type": "text/plain" };
24
+ /**
25
+ * 类型特化的响应映射
26
+ * 根据返回值类型直接生成 Response,避免不必要的检查
27
+ */
28
+ export function mapResponse(response) {
29
+ // 快速路径:已经是 Response
30
+ if (response instanceof Response)
31
+ return response;
32
+ // 使用 constructor.name 进行类型判断(比 instanceof 更快)
33
+ switch (response?.constructor?.name) {
34
+ case "String":
35
+ return new Response(response, { headers: TEXT_HEADERS });
36
+ case "Object":
37
+ case "Array":
38
+ return new Response(JSON.stringify(response), { headers: JSON_HEADERS });
39
+ case "Number":
40
+ case "Boolean":
41
+ return new Response(String(response), { headers: TEXT_HEADERS });
42
+ case undefined:
43
+ // null 或 undefined
44
+ return new Response(null, { status: 204 });
45
+ case "ReadableStream":
46
+ return new Response(response);
47
+ case "Blob":
48
+ return new Response(response);
49
+ case "ArrayBuffer":
50
+ return new Response(response);
51
+ case "Uint8Array":
52
+ return new Response(response);
53
+ default:
54
+ // Promise 处理
55
+ if (response instanceof Promise) {
56
+ return response.then(mapResponse);
57
+ }
58
+ // 其他情况尝试 JSON
59
+ return new Response(JSON.stringify(response), { headers: JSON_HEADERS });
60
+ }
61
+ }
62
+ /** 生成重定向响应 */
63
+ export function redirect(location, status = 302) {
64
+ return new Response(null, {
65
+ status,
66
+ headers: {
67
+ Location: location,
68
+ },
69
+ });
70
+ }
71
+ /** 生成纯文本响应 */
72
+ export function text(content, status = 200, headers = {}) {
73
+ const h = new Headers({
74
+ "Content-Type": "text/plain; charset=utf-8",
75
+ ...headers,
76
+ });
77
+ return new Response(content, {
78
+ status,
79
+ headers: h,
80
+ });
81
+ }
82
+ /** 生成HTML响应 */
83
+ export function html(content, status = 200, headers = {}) {
84
+ const h = new Headers({
85
+ "Content-Type": "text/html; charset=utf-8",
86
+ ...headers,
87
+ });
88
+ return new Response(content, {
89
+ status,
90
+ headers: h,
91
+ });
92
+ }
93
+ /** 生成空响应(204 No Content) */
94
+ export function empty(status = 204, headers = {}) {
95
+ return new Response(null, {
96
+ status,
97
+ headers,
98
+ });
99
+ }
100
+ /** 生成流式响应 */
101
+ export function stream(stream, status = 200, headers = {}) {
102
+ const h = new Headers({
103
+ "Content-Type": "application/octet-stream",
104
+ ...headers,
105
+ });
106
+ return new Response(stream, {
107
+ status,
108
+ headers: h,
109
+ });
110
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Schema配置验证器
3
+ *
4
+ * 使用validateSchema函数对SchemaConfig结构的数据进行验证
5
+ * 提供统一的验证接口和错误处理
6
+ *
7
+ * @author Framework Team
8
+ * @version 1.0.0
9
+ * @license MIT
10
+ */
11
+ import type { TSchema } from "@sinclair/typebox";
12
+ import { type ValidationResult } from "./validators";
13
+ export interface SchemaConfig {
14
+ body?: TSchema;
15
+ query?: TSchema;
16
+ params?: TSchema;
17
+ headers?: TSchema;
18
+ cookies?: TSchema;
19
+ }
20
+ export interface RequestData {
21
+ body?: unknown;
22
+ query?: unknown;
23
+ params?: unknown;
24
+ headers?: unknown;
25
+ cookies?: unknown;
26
+ }
27
+ export interface SchemaValidationResult {
28
+ success: boolean;
29
+ data?: {
30
+ body?: unknown;
31
+ query?: unknown;
32
+ params?: unknown;
33
+ headers?: unknown;
34
+ cookies?: unknown;
35
+ };
36
+ errors?: Array<{
37
+ field: keyof SchemaConfig;
38
+ error: ValidationResult<unknown>;
39
+ }>;
40
+ }
41
+ /**
42
+ * 使用SchemaConfig验证完整的请求数据
43
+ * @param config Schema配置
44
+ * @param data 请求数据
45
+ * @returns 验证结果
46
+ */
47
+ export declare function validateSchemaConfig(config: SchemaConfig, data: RequestData): SchemaValidationResult;
48
+ /**
49
+ * 异步验证SchemaConfig(支持异步验证器)
50
+ * @param config Schema配置
51
+ * @param data 请求数据
52
+ * @returns Promise<验证结果>
53
+ */
54
+ export declare function validateSchemaConfigAsync(config: SchemaConfig, data: RequestData): Promise<SchemaValidationResult>;
55
+ /**
56
+ * 创建验证器工厂函数
57
+ * @param config Schema配置
58
+ * @returns 验证器函数
59
+ */
60
+ export declare function createSchemaValidator(config: SchemaConfig): (data: RequestData) => SchemaValidationResult;
61
+ /**
62
+ * 创建异步验证器工厂函数
63
+ * @param config Schema配置
64
+ * @returns 异步验证器函数
65
+ */
66
+ export declare function createAsyncSchemaValidator(config: SchemaConfig): (data: RequestData) => Promise<SchemaValidationResult>;