@cqrs-ddd/pipeline-zod 0.5.2 → 0.6.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/dist/http.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
+
import type { HttpResponse } from '@cqrs-ddd/pipeline';
|
|
1
2
|
import type { ZodValidationError } from './errors/zod-validation.error.js';
|
|
2
|
-
|
|
3
|
-
export interface HttpResponse {
|
|
4
|
-
status: number;
|
|
5
|
-
body: Record<string, unknown>;
|
|
6
|
-
headers: Record<string, string>;
|
|
7
|
-
}
|
|
3
|
+
export type { HttpResponse };
|
|
8
4
|
/**
|
|
9
5
|
* The HTTP answer for a {@link ZodValidationError}: `400 Bad Request` with the issue
|
|
10
6
|
* details.
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAWtE"}
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,sEAAsE;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAOtE;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB;QACD,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-validation.behavior.d.ts","sourceRoot":"","sources":["../src/zod-validation.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAM9B,OAAO,EACL,WAAW,EACX,gBAAgB,EAIhB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,cAAc,EAAG,YAAqB,CAAC;AAEpD,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"zod-validation.behavior.d.ts","sourceRoot":"","sources":["../src/zod-validation.behavior.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAM9B,OAAO,EACL,WAAW,EACX,gBAAgB,EAIhB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,cAAc,EAAG,YAAqB,CAAC;AAEpD,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,MAAM,CACV,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,OAAO,CAAC,CAelB;CACF"}
|
|
@@ -76,30 +76,41 @@ export class ZodValidationBehavior {
|
|
|
76
76
|
async handle(context, next) {
|
|
77
77
|
const declared = context.getBehaviorOptions(ZodValidationBehavior)?.schema;
|
|
78
78
|
if (declared) {
|
|
79
|
-
|
|
80
|
-
if (!parsed.success)
|
|
81
|
-
throw new ZodValidationError(parsed.error);
|
|
82
|
-
replaceRequest(context, parsed.data);
|
|
79
|
+
await validateCopy(context, declared);
|
|
83
80
|
return next();
|
|
84
81
|
}
|
|
85
|
-
const
|
|
82
|
+
const attached = context.requestType
|
|
86
83
|
? untyped(context.requestType)[ZOD_SCHEMA_KEY]
|
|
87
84
|
: undefined;
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
const request = requireObjectRequest(context);
|
|
91
|
-
const state = getValidationState(request);
|
|
92
|
-
if (state?.schema === schema && !hasBeenMutated(request, state.snapshot))
|
|
93
|
-
return next();
|
|
94
|
-
const result = await schema.safeParseAsync(request);
|
|
95
|
-
if (!result.success)
|
|
96
|
-
throw new ZodValidationError(result.error);
|
|
97
|
-
assertPlainRequestOutput(result.data, 'behavior');
|
|
98
|
-
applyParsed(request, result.data, state?.snapshot);
|
|
99
|
-
setValidatedData(request, schema, result.data);
|
|
85
|
+
if (attached)
|
|
86
|
+
await validateInPlace(context, attached);
|
|
100
87
|
return next();
|
|
101
88
|
}
|
|
102
89
|
}
|
|
90
|
+
/** A schema declared at the call site: the handler receives the parsed copy. */
|
|
91
|
+
async function validateCopy(context, schema) {
|
|
92
|
+
const parsed = await schema.safeParseAsync(context.request);
|
|
93
|
+
if (!parsed.success)
|
|
94
|
+
throw new ZodValidationError(parsed.error);
|
|
95
|
+
replaceRequest(context, parsed.data);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* A schema attached to the request class: the parsed fields are written to the
|
|
99
|
+
* request itself, unless it is unchanged since this schema last validated it.
|
|
100
|
+
*/
|
|
101
|
+
async function validateInPlace(context, schema) {
|
|
102
|
+
const request = requireObjectRequest(context);
|
|
103
|
+
const state = getValidationState(request);
|
|
104
|
+
const isValidated = state?.schema === schema && !hasBeenMutated(request, state.snapshot);
|
|
105
|
+
if (isValidated)
|
|
106
|
+
return;
|
|
107
|
+
const result = await schema.safeParseAsync(request);
|
|
108
|
+
if (!result.success)
|
|
109
|
+
throw new ZodValidationError(result.error);
|
|
110
|
+
assertPlainRequestOutput(result.data, 'behavior');
|
|
111
|
+
applyParsed(request, result.data, state?.snapshot);
|
|
112
|
+
setValidatedData(request, schema, result.data);
|
|
113
|
+
}
|
|
103
114
|
function requireObjectRequest(context) {
|
|
104
115
|
if (!context.request || typeof context.request !== 'object') {
|
|
105
116
|
throw new TypeError('ZodValidationBehavior requires the pipeline request to be an object when a schema is attached.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-validation.behavior.js","sourceRoot":"","sources":["../src/zod-validation.behavior.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAIL,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,YAAqB,CAAC;AAapD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,qBAAqB;IAChC,KAAK,CAAC,MAAM,CACV,OAAyB,EACzB,IAAkB;QAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CACzC,qBAAqB,CACtB,EAAE,MAAM,CAAC;QACV,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,
|
|
1
|
+
{"version":3,"file":"zod-validation.behavior.js","sourceRoot":"","sources":["../src/zod-validation.behavior.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/pipeline-zod",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Zod validation for @cqrs-ddd/pipeline: validates and parses the input of a command, query, event or wrapped function",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -39,17 +39,17 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@cqrs-ddd/pipeline": "^0.
|
|
42
|
+
"@cqrs-ddd/pipeline": "^0.6.0",
|
|
43
43
|
"zod": "^4.3.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@cqrs-ddd/pipeline": "0.
|
|
46
|
+
"@cqrs-ddd/pipeline": "0.6.0",
|
|
47
47
|
"@vitest/coverage-v8": "^5.0.5",
|
|
48
48
|
"vitest": "^5.0.5",
|
|
49
49
|
"zod": "^4.6.7"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@cqrs-ddd/untyped": "^0.
|
|
52
|
+
"@cqrs-ddd/untyped": "^0.6.0"
|
|
53
53
|
},
|
|
54
54
|
"keywords": [
|
|
55
55
|
"pipeline",
|