@quilla-be-kit/http 0.2.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/LICENSE +21 -0
- package/README.md +400 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/adapter/hono/create-http-request.d.ts +15 -0
- package/dist/adapter/hono/create-http-request.d.ts.map +1 -0
- package/dist/adapter/hono/create-http-request.js +57 -0
- package/dist/adapter/hono/create-http-request.js.map +1 -0
- package/dist/adapter/hono/get-request-attributes.d.ts +2 -0
- package/dist/adapter/hono/get-request-attributes.d.ts.map +1 -0
- package/dist/adapter/hono/get-request-attributes.js +10 -0
- package/dist/adapter/hono/get-request-attributes.js.map +1 -0
- package/dist/adapter/hono/hono-middleware.adapter.d.ts +10 -0
- package/dist/adapter/hono/hono-middleware.adapter.d.ts.map +1 -0
- package/dist/adapter/hono/hono-middleware.adapter.js +13 -0
- package/dist/adapter/hono/hono-middleware.adapter.js.map +1 -0
- package/dist/adapter/hono/hono-request.adapter.d.ts +12 -0
- package/dist/adapter/hono/hono-request.adapter.d.ts.map +1 -0
- package/dist/adapter/hono/hono-request.adapter.js +99 -0
- package/dist/adapter/hono/hono-request.adapter.js.map +1 -0
- package/dist/adapter/hono/hono.server.d.ts +30 -0
- package/dist/adapter/hono/hono.server.d.ts.map +1 -0
- package/dist/adapter/hono/hono.server.js +64 -0
- package/dist/adapter/hono/hono.server.js.map +1 -0
- package/dist/adapter/hono/hono.types.d.ts +9 -0
- package/dist/adapter/hono/hono.types.d.ts.map +1 -0
- package/dist/adapter/hono/hono.types.js +4 -0
- package/dist/adapter/hono/hono.types.js.map +1 -0
- package/dist/adapter/hono/index.d.ts +2 -0
- package/dist/adapter/hono/index.d.ts.map +1 -0
- package/dist/adapter/hono/index.js +2 -0
- package/dist/adapter/hono/index.js.map +1 -0
- package/dist/decorator/authorize-scope.decorator.d.ts +6 -0
- package/dist/decorator/authorize-scope.decorator.d.ts.map +1 -0
- package/dist/decorator/authorize-scope.decorator.js +30 -0
- package/dist/decorator/authorize-scope.decorator.js.map +1 -0
- package/dist/decorator/controller.decorator.d.ts +2 -0
- package/dist/decorator/controller.decorator.d.ts.map +1 -0
- package/dist/decorator/controller.decorator.js +7 -0
- package/dist/decorator/controller.decorator.js.map +1 -0
- package/dist/decorator/index.d.ts +5 -0
- package/dist/decorator/index.d.ts.map +1 -0
- package/dist/decorator/index.js +5 -0
- package/dist/decorator/index.js.map +1 -0
- package/dist/decorator/method.decorators.d.ts +11 -0
- package/dist/decorator/method.decorators.d.ts.map +1 -0
- package/dist/decorator/method.decorators.js +27 -0
- package/dist/decorator/method.decorators.js.map +1 -0
- package/dist/decorator/route.metadata.d.ts +22 -0
- package/dist/decorator/route.metadata.d.ts.map +1 -0
- package/dist/decorator/route.metadata.js +61 -0
- package/dist/decorator/route.metadata.js.map +1 -0
- package/dist/decorator/validate-request.decorator.d.ts +7 -0
- package/dist/decorator/validate-request.decorator.d.ts.map +1 -0
- package/dist/decorator/validate-request.decorator.js +57 -0
- package/dist/decorator/validate-request.decorator.js.map +1 -0
- package/dist/error/index.d.ts +2 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +2 -0
- package/dist/error/index.js.map +1 -0
- package/dist/error/resolve-http-error.d.ts +7 -0
- package/dist/error/resolve-http-error.d.ts.map +1 -0
- package/dist/error/resolve-http-error.js +43 -0
- package/dist/error/resolve-http-error.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/request/authenticated-token.interface.d.ts +4 -0
- package/dist/request/authenticated-token.interface.d.ts.map +1 -0
- package/dist/request/authenticated-token.interface.js +2 -0
- package/dist/request/authenticated-token.interface.js.map +1 -0
- package/dist/request/http-attributes.d.ts +6 -0
- package/dist/request/http-attributes.d.ts.map +1 -0
- package/dist/request/http-attributes.js +6 -0
- package/dist/request/http-attributes.js.map +1 -0
- package/dist/request/http-middleware.type.d.ts +3 -0
- package/dist/request/http-middleware.type.d.ts.map +1 -0
- package/dist/request/http-middleware.type.js +2 -0
- package/dist/request/http-middleware.type.js.map +1 -0
- package/dist/request/http-request.interface.d.ts +18 -0
- package/dist/request/http-request.interface.d.ts.map +1 -0
- package/dist/request/http-request.interface.js +2 -0
- package/dist/request/http-request.interface.js.map +1 -0
- package/dist/request/http-response.type.d.ts +18 -0
- package/dist/request/http-response.type.d.ts.map +1 -0
- package/dist/request/http-response.type.js +2 -0
- package/dist/request/http-response.type.js.map +1 -0
- package/dist/request/index.d.ts +6 -0
- package/dist/request/index.d.ts.map +1 -0
- package/dist/request/index.js +2 -0
- package/dist/request/index.js.map +1 -0
- package/dist/router/auth-middleware-stack.type.d.ts +13 -0
- package/dist/router/auth-middleware-stack.type.d.ts.map +1 -0
- package/dist/router/auth-middleware-stack.type.js +2 -0
- package/dist/router/auth-middleware-stack.type.js.map +1 -0
- package/dist/router/controller-registration.type.d.ts +7 -0
- package/dist/router/controller-registration.type.d.ts.map +1 -0
- package/dist/router/controller-registration.type.js +2 -0
- package/dist/router/controller-registration.type.js.map +1 -0
- package/dist/router/http-module-meta.type.d.ts +8 -0
- package/dist/router/http-module-meta.type.d.ts.map +1 -0
- package/dist/router/http-module-meta.type.js +2 -0
- package/dist/router/http-module-meta.type.js.map +1 -0
- package/dist/router/index.d.ts +6 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +2 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/normalized-route.type.d.ts +20 -0
- package/dist/router/normalized-route.type.d.ts.map +1 -0
- package/dist/router/normalized-route.type.js +2 -0
- package/dist/router/normalized-route.type.js.map +1 -0
- package/dist/router/router-options.type.d.ts +37 -0
- package/dist/router/router-options.type.d.ts.map +1 -0
- package/dist/router/router-options.type.js +2 -0
- package/dist/router/router-options.type.js.map +1 -0
- package/dist/router/router.d.ts +11 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +143 -0
- package/dist/router/router.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware-adapter.interface.d.ts +5 -0
- package/dist/server/middleware-adapter.interface.d.ts.map +1 -0
- package/dist/server/middleware-adapter.interface.js +2 -0
- package/dist/server/middleware-adapter.interface.js.map +1 -0
- package/dist/server/request-adapter.interface.d.ts +7 -0
- package/dist/server/request-adapter.interface.d.ts.map +1 -0
- package/dist/server/request-adapter.interface.js +2 -0
- package/dist/server/request-adapter.interface.js.map +1 -0
- package/dist/server/web-server.interface.d.ts +6 -0
- package/dist/server/web-server.interface.d.ts.map +1 -0
- package/dist/server/web-server.interface.js +2 -0
- package/dist/server/web-server.interface.js.map +1 -0
- package/dist/validator/index.d.ts +4 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +2 -0
- package/dist/validator/index.js.map +1 -0
- package/dist/validator/request-source.type.d.ts +2 -0
- package/dist/validator/request-source.type.d.ts.map +1 -0
- package/dist/validator/request-source.type.js +2 -0
- package/dist/validator/request-source.type.js.map +1 -0
- package/dist/validator/request-validator.interface.d.ts +30 -0
- package/dist/validator/request-validator.interface.d.ts.map +1 -0
- package/dist/validator/request-validator.interface.js +2 -0
- package/dist/validator/request-validator.interface.js.map +1 -0
- package/dist/validator/validation-result.type.d.ts +8 -0
- package/dist/validator/validation-result.type.d.ts.map +1 -0
- package/dist/validator/validation-result.type.js +2 -0
- package/dist/validator/validation-result.type.js.map +1 -0
- package/dist/validator/zod.d.ts +29 -0
- package/dist/validator/zod.d.ts.map +1 -0
- package/dist/validator/zod.js +43 -0
- package/dist/validator/zod.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ZodError } from 'zod';
|
|
2
|
+
import type { RequestValidator } from './request-validator.interface.js';
|
|
3
|
+
export type ZodRequestValidatorOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* Formats Zod's raw issue array for inclusion in the thrown
|
|
6
|
+
* `ValidationError`'s `context.issues`. Defaults to passing
|
|
7
|
+
* `error.issues` through verbatim.
|
|
8
|
+
*/
|
|
9
|
+
readonly extractIssues?: (error: ZodError) => unknown[];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* `RequestValidator` adapter for Zod 4. Implements `describeSchema` so
|
|
13
|
+
* `@ValidateRequest` can inject `scopeId` / `userId` from the active
|
|
14
|
+
* `ExecutionContext` into payloads whose schemas declare those keys.
|
|
15
|
+
*
|
|
16
|
+
* Handles the two common shapes:
|
|
17
|
+
*
|
|
18
|
+
* - Bare `ZodObject` — keys come straight from `schema.shape`.
|
|
19
|
+
* - `ZodPipe` over `ZodObject` — the shape produced by chaining
|
|
20
|
+
* `.transform(...)` onto an object (e.g. the schema returned by
|
|
21
|
+
* `createQueryParametersSchema` in `@quilla-be-kit/persistence/query-schema`).
|
|
22
|
+
* The adapter walks the pipe's input side until it reaches a
|
|
23
|
+
* `ZodObject` and enumerates that.
|
|
24
|
+
*
|
|
25
|
+
* Any other shape (unions, primitives, tuples) returns `null` — the
|
|
26
|
+
* decorator then skips auth-injection for that schema.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createZodRequestValidator(options?: ZodRequestValidatorOptions): RequestValidator;
|
|
29
|
+
//# sourceMappingURL=zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/validator/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,KAAK,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,kCAAkC,CAAC;AAE5F,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,EAAE,CAAC;CACzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,0BAA+B,GACvC,gBAAgB,CAwBlB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* `RequestValidator` adapter for Zod 4. Implements `describeSchema` so
|
|
4
|
+
* `@ValidateRequest` can inject `scopeId` / `userId` from the active
|
|
5
|
+
* `ExecutionContext` into payloads whose schemas declare those keys.
|
|
6
|
+
*
|
|
7
|
+
* Handles the two common shapes:
|
|
8
|
+
*
|
|
9
|
+
* - Bare `ZodObject` — keys come straight from `schema.shape`.
|
|
10
|
+
* - `ZodPipe` over `ZodObject` — the shape produced by chaining
|
|
11
|
+
* `.transform(...)` onto an object (e.g. the schema returned by
|
|
12
|
+
* `createQueryParametersSchema` in `@quilla-be-kit/persistence/query-schema`).
|
|
13
|
+
* The adapter walks the pipe's input side until it reaches a
|
|
14
|
+
* `ZodObject` and enumerates that.
|
|
15
|
+
*
|
|
16
|
+
* Any other shape (unions, primitives, tuples) returns `null` — the
|
|
17
|
+
* decorator then skips auth-injection for that schema.
|
|
18
|
+
*/
|
|
19
|
+
export function createZodRequestValidator(options = {}) {
|
|
20
|
+
const extractIssues = options.extractIssues ?? ((error) => error.issues);
|
|
21
|
+
return {
|
|
22
|
+
validate(schema, input) {
|
|
23
|
+
const result = schema.safeParse(input);
|
|
24
|
+
if (result.success)
|
|
25
|
+
return { success: true, data: result.data };
|
|
26
|
+
return { success: false, error: extractIssues(result.error) };
|
|
27
|
+
},
|
|
28
|
+
describeSchema(schema) {
|
|
29
|
+
let current = schema;
|
|
30
|
+
// Walk `ZodPipe.in` — Zod 4's transform produces `pipe(source, transform)`,
|
|
31
|
+
// and the upstream object lives at `._zod.def.in`. Keep unwrapping so
|
|
32
|
+
// chained pipes (transform().refine(), etc.) are all penetrated.
|
|
33
|
+
while (current instanceof z.ZodPipe) {
|
|
34
|
+
current = current._zod.def.in;
|
|
35
|
+
}
|
|
36
|
+
if (current instanceof z.ZodObject) {
|
|
37
|
+
return { keys: Object.keys(current.shape) };
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/validator/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,CAAC,EAAE,MAAM,KAAK,CAAC;AAYrD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAsC,EAAE;IAExC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzE,OAAO;QACL,QAAQ,CAAC,MAAM,EAAE,KAAK;YACpB,MAAM,MAAM,GAAI,MAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAChE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,CAAC;QAED,cAAc,CAAC,MAAM;YACnB,IAAI,OAAO,GAAY,MAAM,CAAC;YAC9B,4EAA4E;YAC5E,sEAAsE;YACtE,iEAAiE;YACjE,OAAO,OAAO,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAO,GAAI,OAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAa,CAAC;YAC1D,CAAC;YACD,IAAI,OAAO,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;gBACnC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quilla-be-kit/http",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Framework-agnostic HTTP layer: decorators (@Controller/@Get/@Post/.../@AuthorizeScope/@ValidateRequest), framework-agnostic router, WebServer interface, and a Hono adapter sub-path.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Max Martinez",
|
|
7
|
+
"homepage": "https://github.com/quilla-kit/quilla-be-kit/tree/main/packages/http",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/quilla-kit/quilla-be-kit.git",
|
|
11
|
+
"directory": "packages/http"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/quilla-kit/quilla-be-kit/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"http",
|
|
18
|
+
"decorators",
|
|
19
|
+
"controller",
|
|
20
|
+
"routing",
|
|
21
|
+
"hono",
|
|
22
|
+
"framework-agnostic",
|
|
23
|
+
"typescript"
|
|
24
|
+
],
|
|
25
|
+
"type": "module",
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=22"
|
|
28
|
+
},
|
|
29
|
+
"sideEffects": [
|
|
30
|
+
"./dist/decorator/route.metadata.js"
|
|
31
|
+
],
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"import": "./dist/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./adapter/hono": {
|
|
38
|
+
"types": "./dist/adapter/hono/index.d.ts",
|
|
39
|
+
"import": "./dist/adapter/hono/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./validator/zod": {
|
|
42
|
+
"types": "./dist/validator/zod.d.ts",
|
|
43
|
+
"import": "./dist/validator/zod.js"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"main": "./dist/index.js",
|
|
47
|
+
"types": "./dist/index.d.ts",
|
|
48
|
+
"files": [
|
|
49
|
+
"dist",
|
|
50
|
+
"README.md",
|
|
51
|
+
"LICENSE"
|
|
52
|
+
],
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@quilla-be-kit/errors": "^0.2.0",
|
|
58
|
+
"@quilla-be-kit/execution-context": "^0.2.0",
|
|
59
|
+
"@quilla-be-kit/observability": "^0.2.0",
|
|
60
|
+
"@quilla-be-kit/runtime": "^0.2.0"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"hono": "4.x.x",
|
|
64
|
+
"zod": ">=4.0.0"
|
|
65
|
+
},
|
|
66
|
+
"peerDependenciesMeta": {
|
|
67
|
+
"hono": {
|
|
68
|
+
"optional": true
|
|
69
|
+
},
|
|
70
|
+
"zod": {
|
|
71
|
+
"optional": true
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"hono": "^4.12.0",
|
|
76
|
+
"vitest": "^2.1.3",
|
|
77
|
+
"zod": "^4.0.0"
|
|
78
|
+
},
|
|
79
|
+
"scripts": {
|
|
80
|
+
"build": "tsc -b",
|
|
81
|
+
"typecheck": "tsc -p tsconfig.test.json",
|
|
82
|
+
"test": "vitest run --passWithNoTests",
|
|
83
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
84
|
+
}
|
|
85
|
+
}
|