vovk 3.0.0-draft.99 → 3.0.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.
- package/README.md +22 -13
- package/bin/index.mjs +10 -0
- package/dist/client/createRPC.d.ts +13 -3
- package/dist/client/createRPC.js +112 -50
- package/dist/client/defaultHandler.d.ts +5 -1
- package/dist/client/defaultHandler.js +12 -9
- package/dist/client/defaultStreamHandler.d.ts +16 -4
- package/dist/client/defaultStreamHandler.js +259 -62
- package/dist/client/fetcher.d.ts +41 -3
- package/dist/client/fetcher.js +125 -60
- package/dist/client/progressive.d.ts +15 -0
- package/dist/client/progressive.js +56 -0
- package/dist/{utils → client}/serializeQuery.d.ts +2 -2
- package/dist/{utils → client}/serializeQuery.js +1 -4
- package/dist/core/HttpException.d.ts +16 -0
- package/dist/core/HttpException.js +26 -0
- package/dist/core/JSONLinesResponder.d.ts +42 -0
- package/dist/core/JSONLinesResponder.js +92 -0
- package/dist/core/controllersToStaticParams.d.ts +13 -0
- package/dist/core/controllersToStaticParams.js +36 -0
- package/dist/core/createDecorator.d.ts +12 -0
- package/dist/{createDecorator.js → core/createDecorator.js} +18 -12
- package/dist/core/decorators.d.ts +59 -0
- package/dist/core/decorators.js +132 -0
- package/dist/core/getSchema.d.ts +21 -0
- package/dist/core/getSchema.js +31 -0
- package/dist/core/initSegment.d.ts +33 -0
- package/dist/core/initSegment.js +35 -0
- package/dist/core/multitenant.d.ts +33 -0
- package/dist/core/multitenant.js +132 -0
- package/dist/core/resolveGeneratorConfigValues.d.ts +19 -0
- package/dist/core/resolveGeneratorConfigValues.js +59 -0
- package/dist/{utils → core}/setHandlerSchema.d.ts +2 -2
- package/dist/{utils → core}/setHandlerSchema.js +1 -4
- package/dist/core/toDownloadResponse.d.ts +11 -0
- package/dist/core/toDownloadResponse.js +25 -0
- package/dist/core/vovkApp.d.ts +36 -0
- package/dist/core/vovkApp.js +316 -0
- package/dist/index.d.ts +25 -59
- package/dist/index.js +23 -23
- package/dist/internal.d.ts +17 -0
- package/dist/internal.js +10 -0
- package/dist/openapi/error.d.ts +2 -0
- package/dist/openapi/error.js +97 -0
- package/dist/openapi/openAPIToVovkSchema/applyComponentsSchemas.d.ts +3 -0
- package/dist/openapi/openAPIToVovkSchema/applyComponentsSchemas.js +65 -0
- package/dist/openapi/openAPIToVovkSchema/index.d.ts +5 -0
- package/dist/openapi/openAPIToVovkSchema/index.js +153 -0
- package/dist/openapi/openAPIToVovkSchema/inlineRefs.d.ts +9 -0
- package/dist/openapi/openAPIToVovkSchema/inlineRefs.js +99 -0
- package/dist/openapi/operation.d.ts +10 -0
- package/dist/openapi/operation.js +19 -0
- package/dist/openapi/tool.d.ts +2 -0
- package/dist/openapi/tool.js +12 -0
- package/dist/openapi/vovkSchemaToOpenAPI.d.ts +21 -0
- package/dist/openapi/vovkSchemaToOpenAPI.js +250 -0
- package/dist/req/bufferBody.d.ts +1 -0
- package/dist/req/bufferBody.js +30 -0
- package/dist/req/parseBody.d.ts +4 -0
- package/dist/req/parseBody.js +49 -0
- package/dist/req/parseForm.d.ts +1 -0
- package/dist/req/parseForm.js +24 -0
- package/dist/{utils → req}/parseQuery.d.ts +1 -2
- package/dist/{utils → req}/parseQuery.js +2 -5
- package/dist/req/reqMeta.d.ts +2 -0
- package/dist/{utils → req}/reqMeta.js +1 -4
- package/dist/req/reqQuery.d.ts +2 -0
- package/dist/req/reqQuery.js +4 -0
- package/dist/req/validateContentType.d.ts +1 -0
- package/dist/req/validateContentType.js +32 -0
- package/dist/samples/createCodeSamples.d.ts +20 -0
- package/dist/samples/createCodeSamples.js +293 -0
- package/dist/samples/objectToCode.d.ts +8 -0
- package/dist/samples/objectToCode.js +38 -0
- package/dist/samples/schemaToCode.d.ts +11 -0
- package/dist/samples/schemaToCode.js +264 -0
- package/dist/samples/schemaToObject.d.ts +2 -0
- package/dist/samples/schemaToObject.js +164 -0
- package/dist/samples/schemaToTsType.d.ts +2 -0
- package/dist/samples/schemaToTsType.js +114 -0
- package/dist/tools/ToModelOutput.d.ts +8 -0
- package/dist/tools/ToModelOutput.js +10 -0
- package/dist/tools/createTool.d.ts +126 -0
- package/dist/tools/createTool.js +6 -0
- package/dist/tools/createToolFactory.d.ts +135 -0
- package/dist/tools/createToolFactory.js +61 -0
- package/dist/tools/deriveTools.d.ts +46 -0
- package/dist/tools/deriveTools.js +134 -0
- package/dist/tools/toModelOutputDefault.d.ts +7 -0
- package/dist/tools/toModelOutputDefault.js +7 -0
- package/dist/tools/toModelOutputMCP.d.ts +30 -0
- package/dist/tools/toModelOutputMCP.js +54 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/client.d.ts +140 -0
- package/dist/types/client.js +1 -0
- package/dist/types/config.d.ts +151 -0
- package/dist/types/config.js +1 -0
- package/dist/types/core.d.ts +115 -0
- package/dist/types/core.js +1 -0
- package/dist/types/enums.d.ts +75 -0
- package/dist/{types.js → types/enums.js} +21 -9
- package/dist/types/inference.d.ts +117 -0
- package/dist/types/inference.js +1 -0
- package/dist/types/json-schema.d.ts +51 -0
- package/dist/types/json-schema.js +1 -0
- package/dist/types/operation.d.ts +5 -0
- package/dist/types/operation.js +1 -0
- package/dist/types/package.d.ts +544 -0
- package/dist/types/package.js +5 -0
- package/dist/types/request.d.ts +48 -0
- package/dist/types/request.js +1 -0
- package/dist/types/standard-schema.d.ts +117 -0
- package/dist/types/standard-schema.js +6 -0
- package/dist/types/tools.d.ts +43 -0
- package/dist/types/tools.js +1 -0
- package/dist/types/utils.d.ts +9 -0
- package/dist/types/utils.js +1 -0
- package/dist/types/validation.d.ts +48 -0
- package/dist/types/validation.js +1 -0
- package/dist/utils/camelCase.d.ts +6 -0
- package/dist/utils/camelCase.js +34 -0
- package/dist/utils/deepExtend.d.ts +53 -0
- package/dist/utils/deepExtend.js +128 -0
- package/dist/utils/fileNameToDisposition.d.ts +1 -0
- package/dist/utils/fileNameToDisposition.js +3 -0
- package/dist/utils/shim.d.ts +1 -0
- package/dist/utils/shim.js +1 -1
- package/dist/utils/toKebabCase.d.ts +1 -0
- package/dist/utils/toKebabCase.js +5 -0
- package/dist/utils/trimPath.d.ts +1 -0
- package/dist/utils/trimPath.js +1 -0
- package/dist/utils/upperFirst.d.ts +1 -0
- package/dist/utils/upperFirst.js +3 -0
- package/dist/validation/createStandardValidation.d.ts +268 -0
- package/dist/validation/createStandardValidation.js +45 -0
- package/dist/validation/createValidateOnClient.d.ts +14 -0
- package/dist/validation/createValidateOnClient.js +23 -0
- package/dist/validation/procedure.d.ts +261 -0
- package/dist/validation/procedure.js +8 -0
- package/dist/validation/withValidationLibrary.d.ts +119 -0
- package/dist/validation/withValidationLibrary.js +174 -0
- package/package.json +44 -10
- package/dist/HttpException.d.ts +0 -7
- package/dist/HttpException.js +0 -15
- package/dist/StreamJSONResponse.d.ts +0 -14
- package/dist/StreamJSONResponse.js +0 -57
- package/dist/VovkApp.d.ts +0 -29
- package/dist/VovkApp.js +0 -188
- package/dist/client/index.d.ts +0 -3
- package/dist/client/index.js +0 -7
- package/dist/client/types.d.ts +0 -104
- package/dist/client/types.js +0 -2
- package/dist/createDecorator.d.ts +0 -6
- package/dist/createVovkApp.d.ts +0 -62
- package/dist/createVovkApp.js +0 -118
- package/dist/types.d.ts +0 -220
- package/dist/utils/generateStaticAPI.d.ts +0 -4
- package/dist/utils/generateStaticAPI.js +0 -18
- package/dist/utils/getSchema.d.ts +0 -20
- package/dist/utils/getSchema.js +0 -33
- package/dist/utils/reqForm.d.ts +0 -2
- package/dist/utils/reqForm.js +0 -13
- package/dist/utils/reqMeta.d.ts +0 -2
- package/dist/utils/reqQuery.d.ts +0 -2
- package/dist/utils/reqQuery.js +0 -10
- package/dist/utils/withValidation.d.ts +0 -20
- package/dist/utils/withValidation.js +0 -72
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import type { VovkRequest } from '../types/request.js';
|
|
2
|
+
import type { CombinedSpec, ContentType, NormalizeContentType } from '../types/validation.js';
|
|
3
|
+
import type { VovkValidationType } from '../types/core.js';
|
|
4
|
+
import type { VovkOperationObject } from '../types/operation.js';
|
|
5
|
+
import type { KnownAny } from '../types/utils.js';
|
|
6
|
+
type ProcedureOptions<TBody extends CombinedSpec, TQuery extends CombinedSpec, TParams extends CombinedSpec, TOutput extends CombinedSpec, TIteration extends CombinedSpec, TContentType extends ContentType | ContentType[]> = {
|
|
7
|
+
contentType?: TContentType;
|
|
8
|
+
body?: TBody;
|
|
9
|
+
query?: TQuery;
|
|
10
|
+
params?: TParams;
|
|
11
|
+
output?: TOutput;
|
|
12
|
+
iteration?: TIteration;
|
|
13
|
+
disableServerSideValidation?: boolean | VovkValidationType[];
|
|
14
|
+
skipSchemaEmission?: boolean | VovkValidationType[];
|
|
15
|
+
validateEachIteration?: boolean;
|
|
16
|
+
preferTransformed?: boolean;
|
|
17
|
+
operationObject?: VovkOperationObject;
|
|
18
|
+
target?: CombinedSpec.Target;
|
|
19
|
+
};
|
|
20
|
+
export declare function createStandardValidation({ toJSONSchema, }: {
|
|
21
|
+
toJSONSchema: (model: KnownAny, meta: {
|
|
22
|
+
validationType: VovkValidationType;
|
|
23
|
+
target: CombinedSpec.Target | undefined;
|
|
24
|
+
}) => KnownAny;
|
|
25
|
+
}): (<TBody extends CombinedSpec, TQuery extends CombinedSpec, TParams extends CombinedSpec, TOutput extends CombinedSpec, TIteration extends CombinedSpec, TReq extends VovkRequest<KnownAny, KnownAny, KnownAny> = VovkRequest<TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined, TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined, TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined>, TContentType extends ContentType | ContentType[] = ["application/json"]>(options?: ProcedureOptions<TBody, TQuery, TParams, TOutput, TIteration, TContentType>) => {
|
|
26
|
+
(req: TReq, params: TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : Record<string, string>): KnownAny;
|
|
27
|
+
__types: {
|
|
28
|
+
body: TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : any;
|
|
29
|
+
query: TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : any;
|
|
30
|
+
params: TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : any;
|
|
31
|
+
output: unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput>;
|
|
32
|
+
iteration: TIteration extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TIteration> : any;
|
|
33
|
+
contentType: NormalizeContentType<TContentType>;
|
|
34
|
+
};
|
|
35
|
+
__handleFn: (...args: KnownAny[]) => KnownAny;
|
|
36
|
+
isRPC?: boolean;
|
|
37
|
+
fn: {
|
|
38
|
+
<TTransformed>(input: {
|
|
39
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
40
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
41
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
42
|
+
meta?: Record<string, KnownAny>;
|
|
43
|
+
disableClientValidation?: boolean;
|
|
44
|
+
transform: (data: any, fakeReq: Pick<TReq, "vovk">) => TTransformed;
|
|
45
|
+
}): Promise<TTransformed>;
|
|
46
|
+
<TReturnType = any>(input?: {
|
|
47
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
48
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
49
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
50
|
+
meta?: Record<string, KnownAny>;
|
|
51
|
+
disableClientValidation?: boolean;
|
|
52
|
+
} | undefined): TReturnType;
|
|
53
|
+
(input?: {
|
|
54
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
55
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
56
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
57
|
+
meta?: Record<string, KnownAny>;
|
|
58
|
+
disableClientValidation?: boolean;
|
|
59
|
+
} | undefined): any;
|
|
60
|
+
};
|
|
61
|
+
definition: KnownAny;
|
|
62
|
+
schema: KnownAny;
|
|
63
|
+
wrapper?: KnownAny;
|
|
64
|
+
} & {
|
|
65
|
+
handle: unknown extends CombinedSpec.InferOutput<TOutput> ? <THandleFn extends (req: TReq, params: TParams extends CombinedSpec ? CombinedSpec.InferOutput<TParams> : Record<string, string>) => KnownAny>(fn: THandleFn) => {
|
|
66
|
+
(req: TReq, params: TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : Record<string, string>): KnownAny;
|
|
67
|
+
__types: {
|
|
68
|
+
body: TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : any;
|
|
69
|
+
query: TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : any;
|
|
70
|
+
params: TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : any;
|
|
71
|
+
output: unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput>;
|
|
72
|
+
iteration: TIteration extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TIteration> : any;
|
|
73
|
+
contentType: NormalizeContentType<TContentType>;
|
|
74
|
+
};
|
|
75
|
+
__handleFn: THandleFn;
|
|
76
|
+
isRPC?: boolean;
|
|
77
|
+
fn: {
|
|
78
|
+
<TTransformed>(input: {
|
|
79
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
80
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
81
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
82
|
+
meta?: Record<string, KnownAny>;
|
|
83
|
+
disableClientValidation?: boolean;
|
|
84
|
+
transform: (data: Awaited<ReturnType<THandleFn>>, fakeReq: Pick<TReq, "vovk">) => TTransformed;
|
|
85
|
+
}): Promise<TTransformed>;
|
|
86
|
+
<TReturnType = ReturnType<THandleFn>>(input?: {
|
|
87
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
88
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
89
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
90
|
+
meta?: Record<string, KnownAny>;
|
|
91
|
+
disableClientValidation?: boolean;
|
|
92
|
+
} | undefined): TReturnType;
|
|
93
|
+
(input?: {
|
|
94
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
95
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
96
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
97
|
+
meta?: Record<string, KnownAny>;
|
|
98
|
+
disableClientValidation?: boolean;
|
|
99
|
+
} | undefined): ReturnType<THandleFn>;
|
|
100
|
+
};
|
|
101
|
+
definition: KnownAny;
|
|
102
|
+
schema: KnownAny;
|
|
103
|
+
wrapper?: KnownAny;
|
|
104
|
+
} : (fn: (req: TReq, params: TParams extends CombinedSpec ? CombinedSpec.InferOutput<TParams> : Record<string, string>) => unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput> | Promise<CombinedSpec.InferOutput<TOutput>> | (unknown extends CombinedSpec.InferOutput<TIteration> ? never : AsyncGenerator<CombinedSpec.InferOutput<TIteration>, any, any>)) => {
|
|
105
|
+
(req: TReq, params: TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : Record<string, string>): KnownAny;
|
|
106
|
+
__types: {
|
|
107
|
+
body: TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : any;
|
|
108
|
+
query: TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : any;
|
|
109
|
+
params: TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : any;
|
|
110
|
+
output: unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput>;
|
|
111
|
+
iteration: TIteration extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TIteration> : any;
|
|
112
|
+
contentType: NormalizeContentType<TContentType>;
|
|
113
|
+
};
|
|
114
|
+
__handleFn: (req: TReq, params: TParams extends CombinedSpec ? CombinedSpec.InferOutput<TParams> : Record<string, string>) => unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput> | Promise<CombinedSpec.InferOutput<TOutput>> | (unknown extends CombinedSpec.InferOutput<TIteration> ? never : AsyncGenerator<CombinedSpec.InferOutput<TIteration>, any, any>);
|
|
115
|
+
isRPC?: boolean;
|
|
116
|
+
fn: {
|
|
117
|
+
<TTransformed>(input: {
|
|
118
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
119
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
120
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
121
|
+
meta?: Record<string, KnownAny>;
|
|
122
|
+
disableClientValidation?: boolean;
|
|
123
|
+
transform: (data: Awaited<unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput> | Promise<CombinedSpec.InferOutput<TOutput>> | (unknown extends CombinedSpec.InferOutput<TIteration> ? never : AsyncGenerator<CombinedSpec.InferOutput<TIteration>, any, any>)>, fakeReq: Pick<TReq, "vovk">) => TTransformed;
|
|
124
|
+
}): Promise<TTransformed>;
|
|
125
|
+
<TReturnType = unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput> | Promise<CombinedSpec.InferOutput<TOutput>> | (unknown extends CombinedSpec.InferOutput<TIteration> ? never : AsyncGenerator<CombinedSpec.InferOutput<TIteration>, any, any>)>(input?: {
|
|
126
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
127
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
128
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
129
|
+
meta?: Record<string, KnownAny>;
|
|
130
|
+
disableClientValidation?: boolean;
|
|
131
|
+
} | undefined): TReturnType;
|
|
132
|
+
(input?: {
|
|
133
|
+
body?: (TBody extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TBody> : undefined) | undefined;
|
|
134
|
+
query?: (TQuery extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TQuery> : undefined) | undefined;
|
|
135
|
+
params?: (TParams extends CombinedSpec<unknown, unknown> ? CombinedSpec.InferOutput<TParams> : undefined) | undefined;
|
|
136
|
+
meta?: Record<string, KnownAny>;
|
|
137
|
+
disableClientValidation?: boolean;
|
|
138
|
+
} | undefined): unknown extends CombinedSpec.InferOutput<TOutput> ? any : CombinedSpec.InferOutput<TOutput> | Promise<CombinedSpec.InferOutput<TOutput>> | (unknown extends CombinedSpec.InferOutput<TIteration> ? never : AsyncGenerator<CombinedSpec.InferOutput<TIteration>, any, any>);
|
|
139
|
+
};
|
|
140
|
+
definition: KnownAny;
|
|
141
|
+
schema: KnownAny;
|
|
142
|
+
wrapper?: KnownAny;
|
|
143
|
+
};
|
|
144
|
+
}) & {
|
|
145
|
+
createTool: {
|
|
146
|
+
<TInput, TOutput, TToModelOutput extends (...args: KnownAny[]) => KnownAny>(options: {
|
|
147
|
+
name: string;
|
|
148
|
+
title?: string;
|
|
149
|
+
description: string;
|
|
150
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
151
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
152
|
+
target?: CombinedSpec.Target;
|
|
153
|
+
} & {
|
|
154
|
+
inputSchema: CombinedSpec<TInput, TInput>;
|
|
155
|
+
} & {
|
|
156
|
+
outputSchema: CombinedSpec<TOutput, TOutput>;
|
|
157
|
+
} & {
|
|
158
|
+
execute: (input: TInput, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
159
|
+
toModelOutput: TToModelOutput;
|
|
160
|
+
}): import("../internal.js").VovkToolNonDerived<TInput, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>;
|
|
161
|
+
<TInput, TOutput>(options: {
|
|
162
|
+
name: string;
|
|
163
|
+
title?: string;
|
|
164
|
+
description: string;
|
|
165
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
166
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
167
|
+
target?: CombinedSpec.Target;
|
|
168
|
+
} & {
|
|
169
|
+
inputSchema: CombinedSpec<TInput, TInput>;
|
|
170
|
+
} & {
|
|
171
|
+
outputSchema: CombinedSpec<TOutput, TOutput>;
|
|
172
|
+
} & {
|
|
173
|
+
execute: (input: TInput, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
174
|
+
toModelOutput?: undefined;
|
|
175
|
+
}): import("../internal.js").VovkToolNonDerived<TInput, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>;
|
|
176
|
+
<TInput, TOutput, TToModelOutput extends (...args: KnownAny[]) => KnownAny>(options: {
|
|
177
|
+
name: string;
|
|
178
|
+
title?: string;
|
|
179
|
+
description: string;
|
|
180
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
181
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
182
|
+
target?: CombinedSpec.Target;
|
|
183
|
+
} & {
|
|
184
|
+
inputSchema: CombinedSpec<TInput, TInput>;
|
|
185
|
+
} & {
|
|
186
|
+
outputSchema?: undefined;
|
|
187
|
+
} & {
|
|
188
|
+
execute: (input: TInput, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
189
|
+
toModelOutput: TToModelOutput;
|
|
190
|
+
}): import("../internal.js").VovkToolNonDerived<TInput, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>;
|
|
191
|
+
<TInput, TOutput>(options: {
|
|
192
|
+
name: string;
|
|
193
|
+
title?: string;
|
|
194
|
+
description: string;
|
|
195
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
196
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<TInput, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
197
|
+
target?: CombinedSpec.Target;
|
|
198
|
+
} & {
|
|
199
|
+
inputSchema: CombinedSpec<TInput, TInput>;
|
|
200
|
+
} & {
|
|
201
|
+
outputSchema?: undefined;
|
|
202
|
+
} & {
|
|
203
|
+
execute: (input: TInput, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
204
|
+
toModelOutput?: undefined;
|
|
205
|
+
}): import("../internal.js").VovkToolNonDerived<TInput, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>;
|
|
206
|
+
<TOutput, TToModelOutput extends (...args: KnownAny[]) => KnownAny>(options: {
|
|
207
|
+
name: string;
|
|
208
|
+
title?: string;
|
|
209
|
+
description: string;
|
|
210
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
211
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
212
|
+
target?: CombinedSpec.Target;
|
|
213
|
+
} & {
|
|
214
|
+
inputSchema?: undefined;
|
|
215
|
+
} & {
|
|
216
|
+
outputSchema: CombinedSpec<TOutput, TOutput>;
|
|
217
|
+
} & {
|
|
218
|
+
execute: (input: null, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
219
|
+
toModelOutput: TToModelOutput;
|
|
220
|
+
}): import("../internal.js").VovkToolNonDerived<null, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>;
|
|
221
|
+
<TOutput>(options: {
|
|
222
|
+
name: string;
|
|
223
|
+
title?: string;
|
|
224
|
+
description: string;
|
|
225
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
226
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
227
|
+
target?: CombinedSpec.Target;
|
|
228
|
+
} & {
|
|
229
|
+
inputSchema?: undefined;
|
|
230
|
+
} & {
|
|
231
|
+
outputSchema: CombinedSpec<TOutput, TOutput>;
|
|
232
|
+
} & {
|
|
233
|
+
execute: (input: null, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
234
|
+
toModelOutput?: undefined;
|
|
235
|
+
}): import("../internal.js").VovkToolNonDerived<null, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>;
|
|
236
|
+
<TOutput, TToModelOutput extends (...args: KnownAny[]) => KnownAny>(options: {
|
|
237
|
+
name: string;
|
|
238
|
+
title?: string;
|
|
239
|
+
description: string;
|
|
240
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
241
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>) => void) | undefined;
|
|
242
|
+
target?: CombinedSpec.Target;
|
|
243
|
+
} & {
|
|
244
|
+
inputSchema?: undefined;
|
|
245
|
+
} & {
|
|
246
|
+
outputSchema?: undefined;
|
|
247
|
+
} & {
|
|
248
|
+
execute: (input: null, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
249
|
+
toModelOutput: TToModelOutput;
|
|
250
|
+
}): import("../internal.js").VovkToolNonDerived<null, TOutput, TToModelOutput extends import("../tools/toModelOutputDefault.js").ToModelOutputDefaultFn ? import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput> : TToModelOutput extends (...args: KnownAny[]) => infer R ? R extends Promise<infer U> ? U : R : unknown>;
|
|
251
|
+
<TOutput>(options: {
|
|
252
|
+
name: string;
|
|
253
|
+
title?: string;
|
|
254
|
+
description: string;
|
|
255
|
+
onExecute?: ((result: unknown, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
256
|
+
onError?: ((error: Error, tool: import("../internal.js").VovkToolNonDerived<null, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>) => void) | undefined;
|
|
257
|
+
target?: CombinedSpec.Target;
|
|
258
|
+
} & {
|
|
259
|
+
inputSchema?: undefined;
|
|
260
|
+
} & {
|
|
261
|
+
outputSchema?: undefined;
|
|
262
|
+
} & {
|
|
263
|
+
execute: (input: null, processingMeta?: unknown) => TOutput | Promise<TOutput>;
|
|
264
|
+
toModelOutput?: undefined;
|
|
265
|
+
}): import("../internal.js").VovkToolNonDerived<null, TOutput, import("../tools/toModelOutputDefault.js").DefaultModelOutput<TOutput>>;
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { withValidationLibrary } from './withValidationLibrary.js';
|
|
2
|
+
import { HttpException } from '../core/HttpException.js';
|
|
3
|
+
import { createToolFactory } from '../tools/createToolFactory.js';
|
|
4
|
+
import { HttpStatus } from './createValidateOnClient.js';
|
|
5
|
+
export function createStandardValidation({ toJSONSchema, }) {
|
|
6
|
+
function callWithValidationLibrary(options, handle) {
|
|
7
|
+
const normalizedContentType = (typeof options.contentType === 'string' ? [options.contentType] : options.contentType);
|
|
8
|
+
return withValidationLibrary({
|
|
9
|
+
contentType: normalizedContentType,
|
|
10
|
+
body: options.body,
|
|
11
|
+
query: options.query,
|
|
12
|
+
params: options.params,
|
|
13
|
+
output: options.output,
|
|
14
|
+
iteration: options.iteration,
|
|
15
|
+
disableServerSideValidation: options.disableServerSideValidation,
|
|
16
|
+
skipSchemaEmission: options.skipSchemaEmission,
|
|
17
|
+
validateEachIteration: options.validateEachIteration,
|
|
18
|
+
handle: handle,
|
|
19
|
+
toJSONSchema: (model, opts) => toJSONSchema(model, { validationType: opts.validationType, target: options.target }),
|
|
20
|
+
validate: async (data, model, { validationType, i }) => {
|
|
21
|
+
const result = await model['~standard'].validate(data);
|
|
22
|
+
if (result.issues?.length) {
|
|
23
|
+
throw new HttpException(HttpStatus.BAD_REQUEST, `Validation failed. Invalid ${validationType === 'iteration' ? `${validationType} #${i}` : validationType}: ${result.issues
|
|
24
|
+
.map(({ message, path }) => `${message}${path ? ` at ${path.join('.')}` : ''}`)
|
|
25
|
+
.join(', ')}`, { issues: result.issues });
|
|
26
|
+
}
|
|
27
|
+
return result.value;
|
|
28
|
+
},
|
|
29
|
+
preferTransformed: options.preferTransformed,
|
|
30
|
+
operationObject: options.operationObject,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Implementation
|
|
34
|
+
function procedure(options) {
|
|
35
|
+
const notImplementedHandler = callWithValidationLibrary(options ?? {}, () => {
|
|
36
|
+
throw new HttpException(HttpStatus.NOT_IMPLEMENTED, 'Not implemented');
|
|
37
|
+
});
|
|
38
|
+
return Object.assign(notImplementedHandler, {
|
|
39
|
+
handle(fn) {
|
|
40
|
+
return callWithValidationLibrary(options ?? {}, fn);
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return Object.assign(procedure, { createTool: createToolFactory({ toJSONSchema }) });
|
|
45
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HttpException } from '../core/HttpException.js';
|
|
2
|
+
import { HttpStatus } from '../types/enums.js';
|
|
3
|
+
import type { VovkValidateOnClient } from '../types/validation.js';
|
|
4
|
+
import type { VovkJSONSchemaBase } from '../types/json-schema.js';
|
|
5
|
+
import type { VovkSchema } from '../types/core.js';
|
|
6
|
+
export { createValidateOnClient, HttpException, HttpStatus, type VovkJSONSchemaBase, type VovkValidateOnClient, type VovkSchema, };
|
|
7
|
+
/**
|
|
8
|
+
* Creates a validation function for client-side input validation.
|
|
9
|
+
*/
|
|
10
|
+
declare function createValidateOnClient<TFetcherOptions>({ validate, }: {
|
|
11
|
+
validate: (input: unknown, schema: VovkJSONSchemaBase, meta: Parameters<VovkValidateOnClient<TFetcherOptions>>[2] & {
|
|
12
|
+
type: 'body' | 'query' | 'params';
|
|
13
|
+
}) => unknown | Promise<unknown>;
|
|
14
|
+
}): VovkValidateOnClient<TFetcherOptions>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HttpException } from '../core/HttpException.js';
|
|
2
|
+
import { HttpStatus } from '../types/enums.js';
|
|
3
|
+
// types and enums required for client validation libs
|
|
4
|
+
export { createValidateOnClient, HttpException, HttpStatus, };
|
|
5
|
+
/**
|
|
6
|
+
* Creates a validation function for client-side input validation.
|
|
7
|
+
*/
|
|
8
|
+
function createValidateOnClient({ validate, }) {
|
|
9
|
+
const validateOnClient = async function validateOnClient(input, validation, meta) {
|
|
10
|
+
const newInput = { ...input };
|
|
11
|
+
if (input.body && validation.body) {
|
|
12
|
+
newInput.body = (await validate(input.body, validation.body, { ...meta, type: 'body' })) ?? input.body;
|
|
13
|
+
}
|
|
14
|
+
if (input.query && validation.query) {
|
|
15
|
+
newInput.query = (await validate(input.query, validation.query, { ...meta, type: 'query' })) ?? input.query;
|
|
16
|
+
}
|
|
17
|
+
if (input.params && validation.params) {
|
|
18
|
+
newInput.params = (await validate(input.params, validation.params, { ...meta, type: 'params' })) ?? input.params;
|
|
19
|
+
}
|
|
20
|
+
return newInput;
|
|
21
|
+
};
|
|
22
|
+
return validateOnClient;
|
|
23
|
+
}
|