@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.
Files changed (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +400 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/adapter/hono/create-http-request.d.ts +15 -0
  5. package/dist/adapter/hono/create-http-request.d.ts.map +1 -0
  6. package/dist/adapter/hono/create-http-request.js +57 -0
  7. package/dist/adapter/hono/create-http-request.js.map +1 -0
  8. package/dist/adapter/hono/get-request-attributes.d.ts +2 -0
  9. package/dist/adapter/hono/get-request-attributes.d.ts.map +1 -0
  10. package/dist/adapter/hono/get-request-attributes.js +10 -0
  11. package/dist/adapter/hono/get-request-attributes.js.map +1 -0
  12. package/dist/adapter/hono/hono-middleware.adapter.d.ts +10 -0
  13. package/dist/adapter/hono/hono-middleware.adapter.d.ts.map +1 -0
  14. package/dist/adapter/hono/hono-middleware.adapter.js +13 -0
  15. package/dist/adapter/hono/hono-middleware.adapter.js.map +1 -0
  16. package/dist/adapter/hono/hono-request.adapter.d.ts +12 -0
  17. package/dist/adapter/hono/hono-request.adapter.d.ts.map +1 -0
  18. package/dist/adapter/hono/hono-request.adapter.js +99 -0
  19. package/dist/adapter/hono/hono-request.adapter.js.map +1 -0
  20. package/dist/adapter/hono/hono.server.d.ts +30 -0
  21. package/dist/adapter/hono/hono.server.d.ts.map +1 -0
  22. package/dist/adapter/hono/hono.server.js +64 -0
  23. package/dist/adapter/hono/hono.server.js.map +1 -0
  24. package/dist/adapter/hono/hono.types.d.ts +9 -0
  25. package/dist/adapter/hono/hono.types.d.ts.map +1 -0
  26. package/dist/adapter/hono/hono.types.js +4 -0
  27. package/dist/adapter/hono/hono.types.js.map +1 -0
  28. package/dist/adapter/hono/index.d.ts +2 -0
  29. package/dist/adapter/hono/index.d.ts.map +1 -0
  30. package/dist/adapter/hono/index.js +2 -0
  31. package/dist/adapter/hono/index.js.map +1 -0
  32. package/dist/decorator/authorize-scope.decorator.d.ts +6 -0
  33. package/dist/decorator/authorize-scope.decorator.d.ts.map +1 -0
  34. package/dist/decorator/authorize-scope.decorator.js +30 -0
  35. package/dist/decorator/authorize-scope.decorator.js.map +1 -0
  36. package/dist/decorator/controller.decorator.d.ts +2 -0
  37. package/dist/decorator/controller.decorator.d.ts.map +1 -0
  38. package/dist/decorator/controller.decorator.js +7 -0
  39. package/dist/decorator/controller.decorator.js.map +1 -0
  40. package/dist/decorator/index.d.ts +5 -0
  41. package/dist/decorator/index.d.ts.map +1 -0
  42. package/dist/decorator/index.js +5 -0
  43. package/dist/decorator/index.js.map +1 -0
  44. package/dist/decorator/method.decorators.d.ts +11 -0
  45. package/dist/decorator/method.decorators.d.ts.map +1 -0
  46. package/dist/decorator/method.decorators.js +27 -0
  47. package/dist/decorator/method.decorators.js.map +1 -0
  48. package/dist/decorator/route.metadata.d.ts +22 -0
  49. package/dist/decorator/route.metadata.d.ts.map +1 -0
  50. package/dist/decorator/route.metadata.js +61 -0
  51. package/dist/decorator/route.metadata.js.map +1 -0
  52. package/dist/decorator/validate-request.decorator.d.ts +7 -0
  53. package/dist/decorator/validate-request.decorator.d.ts.map +1 -0
  54. package/dist/decorator/validate-request.decorator.js +57 -0
  55. package/dist/decorator/validate-request.decorator.js.map +1 -0
  56. package/dist/error/index.d.ts +2 -0
  57. package/dist/error/index.d.ts.map +1 -0
  58. package/dist/error/index.js +2 -0
  59. package/dist/error/index.js.map +1 -0
  60. package/dist/error/resolve-http-error.d.ts +7 -0
  61. package/dist/error/resolve-http-error.d.ts.map +1 -0
  62. package/dist/error/resolve-http-error.js +43 -0
  63. package/dist/error/resolve-http-error.js.map +1 -0
  64. package/dist/index.d.ts +6 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +6 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/request/authenticated-token.interface.d.ts +4 -0
  69. package/dist/request/authenticated-token.interface.d.ts.map +1 -0
  70. package/dist/request/authenticated-token.interface.js +2 -0
  71. package/dist/request/authenticated-token.interface.js.map +1 -0
  72. package/dist/request/http-attributes.d.ts +6 -0
  73. package/dist/request/http-attributes.d.ts.map +1 -0
  74. package/dist/request/http-attributes.js +6 -0
  75. package/dist/request/http-attributes.js.map +1 -0
  76. package/dist/request/http-middleware.type.d.ts +3 -0
  77. package/dist/request/http-middleware.type.d.ts.map +1 -0
  78. package/dist/request/http-middleware.type.js +2 -0
  79. package/dist/request/http-middleware.type.js.map +1 -0
  80. package/dist/request/http-request.interface.d.ts +18 -0
  81. package/dist/request/http-request.interface.d.ts.map +1 -0
  82. package/dist/request/http-request.interface.js +2 -0
  83. package/dist/request/http-request.interface.js.map +1 -0
  84. package/dist/request/http-response.type.d.ts +18 -0
  85. package/dist/request/http-response.type.d.ts.map +1 -0
  86. package/dist/request/http-response.type.js +2 -0
  87. package/dist/request/http-response.type.js.map +1 -0
  88. package/dist/request/index.d.ts +6 -0
  89. package/dist/request/index.d.ts.map +1 -0
  90. package/dist/request/index.js +2 -0
  91. package/dist/request/index.js.map +1 -0
  92. package/dist/router/auth-middleware-stack.type.d.ts +13 -0
  93. package/dist/router/auth-middleware-stack.type.d.ts.map +1 -0
  94. package/dist/router/auth-middleware-stack.type.js +2 -0
  95. package/dist/router/auth-middleware-stack.type.js.map +1 -0
  96. package/dist/router/controller-registration.type.d.ts +7 -0
  97. package/dist/router/controller-registration.type.d.ts.map +1 -0
  98. package/dist/router/controller-registration.type.js +2 -0
  99. package/dist/router/controller-registration.type.js.map +1 -0
  100. package/dist/router/http-module-meta.type.d.ts +8 -0
  101. package/dist/router/http-module-meta.type.d.ts.map +1 -0
  102. package/dist/router/http-module-meta.type.js +2 -0
  103. package/dist/router/http-module-meta.type.js.map +1 -0
  104. package/dist/router/index.d.ts +6 -0
  105. package/dist/router/index.d.ts.map +1 -0
  106. package/dist/router/index.js +2 -0
  107. package/dist/router/index.js.map +1 -0
  108. package/dist/router/normalized-route.type.d.ts +20 -0
  109. package/dist/router/normalized-route.type.d.ts.map +1 -0
  110. package/dist/router/normalized-route.type.js +2 -0
  111. package/dist/router/normalized-route.type.js.map +1 -0
  112. package/dist/router/router-options.type.d.ts +37 -0
  113. package/dist/router/router-options.type.d.ts.map +1 -0
  114. package/dist/router/router-options.type.js +2 -0
  115. package/dist/router/router-options.type.js.map +1 -0
  116. package/dist/router/router.d.ts +11 -0
  117. package/dist/router/router.d.ts.map +1 -0
  118. package/dist/router/router.js +143 -0
  119. package/dist/router/router.js.map +1 -0
  120. package/dist/server/index.d.ts +2 -0
  121. package/dist/server/index.d.ts.map +1 -0
  122. package/dist/server/index.js +2 -0
  123. package/dist/server/index.js.map +1 -0
  124. package/dist/server/middleware-adapter.interface.d.ts +5 -0
  125. package/dist/server/middleware-adapter.interface.d.ts.map +1 -0
  126. package/dist/server/middleware-adapter.interface.js +2 -0
  127. package/dist/server/middleware-adapter.interface.js.map +1 -0
  128. package/dist/server/request-adapter.interface.d.ts +7 -0
  129. package/dist/server/request-adapter.interface.d.ts.map +1 -0
  130. package/dist/server/request-adapter.interface.js +2 -0
  131. package/dist/server/request-adapter.interface.js.map +1 -0
  132. package/dist/server/web-server.interface.d.ts +6 -0
  133. package/dist/server/web-server.interface.d.ts.map +1 -0
  134. package/dist/server/web-server.interface.js +2 -0
  135. package/dist/server/web-server.interface.js.map +1 -0
  136. package/dist/validator/index.d.ts +4 -0
  137. package/dist/validator/index.d.ts.map +1 -0
  138. package/dist/validator/index.js +2 -0
  139. package/dist/validator/index.js.map +1 -0
  140. package/dist/validator/request-source.type.d.ts +2 -0
  141. package/dist/validator/request-source.type.d.ts.map +1 -0
  142. package/dist/validator/request-source.type.js +2 -0
  143. package/dist/validator/request-source.type.js.map +1 -0
  144. package/dist/validator/request-validator.interface.d.ts +30 -0
  145. package/dist/validator/request-validator.interface.d.ts.map +1 -0
  146. package/dist/validator/request-validator.interface.js +2 -0
  147. package/dist/validator/request-validator.interface.js.map +1 -0
  148. package/dist/validator/validation-result.type.d.ts +8 -0
  149. package/dist/validator/validation-result.type.d.ts.map +1 -0
  150. package/dist/validator/validation-result.type.js +2 -0
  151. package/dist/validator/validation-result.type.js.map +1 -0
  152. package/dist/validator/zod.d.ts +29 -0
  153. package/dist/validator/zod.d.ts.map +1 -0
  154. package/dist/validator/zod.js +43 -0
  155. package/dist/validator/zod.js.map +1 -0
  156. 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
+ }