@taserjs/router 0.0.2 → 0.0.4

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 (138) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/constants.cjs.map +1 -1
  3. package/dist/cjs/create-context.cjs.map +1 -1
  4. package/dist/cjs/define/handler.cjs.map +1 -1
  5. package/dist/cjs/define/middleware.cjs +18 -27
  6. package/dist/cjs/define/middleware.cjs.map +1 -1
  7. package/dist/cjs/define/middleware.d.cts +27 -79
  8. package/dist/cjs/define/validators.cjs.map +1 -1
  9. package/dist/cjs/factories.cjs.map +1 -1
  10. package/dist/cjs/factories.d.cts +2 -2
  11. package/dist/cjs/index.cjs +1 -2
  12. package/dist/cjs/index.d.cts +1 -1
  13. package/dist/cjs/middleware/body-limit.cjs +2 -2
  14. package/dist/cjs/middleware/body-limit.cjs.map +1 -1
  15. package/dist/cjs/middleware/compress.cjs +2 -2
  16. package/dist/cjs/middleware/compress.cjs.map +1 -1
  17. package/dist/cjs/middleware/cors.cjs +2 -2
  18. package/dist/cjs/middleware/cors.cjs.map +1 -1
  19. package/dist/cjs/middleware/csrf.cjs +2 -2
  20. package/dist/cjs/middleware/csrf.cjs.map +1 -1
  21. package/dist/cjs/middleware/etag.cjs +2 -2
  22. package/dist/cjs/middleware/etag.cjs.map +1 -1
  23. package/dist/cjs/middleware/jwk.cjs +11 -4
  24. package/dist/cjs/middleware/jwk.cjs.map +1 -1
  25. package/dist/cjs/middleware/jwk.d.cts +4 -5
  26. package/dist/cjs/middleware/jwt.cjs +11 -5
  27. package/dist/cjs/middleware/jwt.cjs.map +1 -1
  28. package/dist/cjs/middleware/jwt.d.cts +7 -5
  29. package/dist/cjs/middleware/secure-headers.cjs +2 -2
  30. package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
  31. package/dist/cjs/middleware/timing.cjs +2 -2
  32. package/dist/cjs/middleware/timing.cjs.map +1 -1
  33. package/dist/cjs/middleware/wrap-hono.cjs +9 -0
  34. package/dist/cjs/middleware/wrap-hono.cjs.map +1 -0
  35. package/dist/cjs/middleware/wrap-hono.d.cts +3 -0
  36. package/dist/cjs/middleware.cjs.map +1 -1
  37. package/dist/cjs/reply.d.cts +1 -1
  38. package/dist/cjs/route.cjs.map +1 -1
  39. package/dist/cjs/route.d.cts +1 -1
  40. package/dist/cjs/stream.d.cts +1 -1
  41. package/dist/cjs/taser-app.cjs +0 -6
  42. package/dist/cjs/taser-app.cjs.map +1 -1
  43. package/dist/cjs/taser-app.d.cts +0 -3
  44. package/dist/cjs/taser-router.cjs +9 -10
  45. package/dist/cjs/taser-router.cjs.map +1 -1
  46. package/dist/cjs/taser-router.d.cts +9 -11
  47. package/dist/cjs/types/app.d.cts +3 -2
  48. package/dist/cjs/types/index.d.cts +94 -143
  49. package/dist/cjs/types/type-utils.d.cts +8 -10
  50. package/dist/cjs/types/units.cjs.map +1 -1
  51. package/dist/cjs/types/units.d.cts +32 -27
  52. package/dist/esm/constants.js.map +1 -1
  53. package/dist/esm/create-context.js.map +1 -1
  54. package/dist/esm/define/handler.js.map +1 -1
  55. package/dist/esm/define/middleware.d.ts +27 -79
  56. package/dist/esm/define/middleware.js +18 -27
  57. package/dist/esm/define/middleware.js.map +1 -1
  58. package/dist/esm/define/validators.js.map +1 -1
  59. package/dist/esm/factories.d.ts +2 -2
  60. package/dist/esm/factories.js.map +1 -1
  61. package/dist/esm/index.d.ts +1 -1
  62. package/dist/esm/index.js +3 -3
  63. package/dist/esm/middleware/body-limit.js +1 -1
  64. package/dist/esm/middleware/body-limit.js.map +1 -1
  65. package/dist/esm/middleware/compress.js +1 -1
  66. package/dist/esm/middleware/compress.js.map +1 -1
  67. package/dist/esm/middleware/cors.js +1 -1
  68. package/dist/esm/middleware/cors.js.map +1 -1
  69. package/dist/esm/middleware/csrf.js +1 -1
  70. package/dist/esm/middleware/csrf.js.map +1 -1
  71. package/dist/esm/middleware/etag.js +1 -1
  72. package/dist/esm/middleware/etag.js.map +1 -1
  73. package/dist/esm/middleware/jwk.d.ts +4 -5
  74. package/dist/esm/middleware/jwk.js +11 -4
  75. package/dist/esm/middleware/jwk.js.map +1 -1
  76. package/dist/esm/middleware/jwt.d.ts +7 -5
  77. package/dist/esm/middleware/jwt.js +11 -5
  78. package/dist/esm/middleware/jwt.js.map +1 -1
  79. package/dist/esm/middleware/secure-headers.js +1 -1
  80. package/dist/esm/middleware/secure-headers.js.map +1 -1
  81. package/dist/esm/middleware/timing.js +1 -1
  82. package/dist/esm/middleware/timing.js.map +1 -1
  83. package/dist/esm/middleware/wrap-hono.d.ts +3 -0
  84. package/dist/esm/middleware/wrap-hono.js +9 -0
  85. package/dist/esm/middleware/wrap-hono.js.map +1 -0
  86. package/dist/esm/middleware.js.map +1 -1
  87. package/dist/esm/reply.d.ts +1 -1
  88. package/dist/esm/route.d.ts +1 -1
  89. package/dist/esm/route.js.map +1 -1
  90. package/dist/esm/stream.d.ts +1 -1
  91. package/dist/esm/taser-app.d.ts +0 -3
  92. package/dist/esm/taser-app.js +1 -6
  93. package/dist/esm/taser-app.js.map +1 -1
  94. package/dist/esm/taser-router.d.ts +9 -11
  95. package/dist/esm/taser-router.js +7 -8
  96. package/dist/esm/taser-router.js.map +1 -1
  97. package/dist/esm/types/app.d.ts +3 -2
  98. package/dist/esm/types/index.d.ts +94 -143
  99. package/dist/esm/types/type-utils.d.ts +8 -10
  100. package/dist/esm/types/units.d.ts +32 -27
  101. package/dist/esm/types/units.js.map +1 -1
  102. package/package.json +17 -17
  103. package/src/constants.ts +6 -6
  104. package/src/create-context.ts +8 -8
  105. package/src/define/handler.ts +24 -34
  106. package/src/define/middleware.ts +222 -222
  107. package/src/define/validators.ts +10 -10
  108. package/src/factories.ts +63 -61
  109. package/src/index.ts +12 -12
  110. package/src/middleware/body-limit.ts +5 -5
  111. package/src/middleware/compress.ts +5 -5
  112. package/src/middleware/cors.ts +5 -5
  113. package/src/middleware/csrf.ts +5 -5
  114. package/src/middleware/etag.ts +5 -5
  115. package/src/middleware/jwk.ts +33 -26
  116. package/src/middleware/jwt.ts +26 -10
  117. package/src/middleware/secure-headers.ts +5 -5
  118. package/src/middleware/timing.ts +5 -5
  119. package/src/middleware/wrap-hono.ts +12 -0
  120. package/src/middleware.ts +7 -7
  121. package/src/reply.ts +2 -6
  122. package/src/route.ts +45 -48
  123. package/src/stream.ts +1 -7
  124. package/src/taser-app.ts +13 -18
  125. package/src/taser-router.ts +103 -98
  126. package/src/types/app.ts +33 -35
  127. package/src/types/index.ts +403 -731
  128. package/src/types/returns.ts +92 -97
  129. package/src/types/schema.ts +8 -9
  130. package/src/types/type-utils.ts +42 -45
  131. package/src/types/units.ts +140 -104
  132. package/dist/cjs/middleware/auth.cjs +0 -34
  133. package/dist/cjs/middleware/auth.cjs.map +0 -1
  134. package/dist/cjs/middleware/auth.d.cts +0 -9
  135. package/dist/esm/middleware/auth.d.ts +0 -9
  136. package/dist/esm/middleware/auth.js +0 -33
  137. package/dist/esm/middleware/auth.js.map +0 -1
  138. package/src/middleware/auth.ts +0 -51
package/package.json CHANGED
@@ -1,7 +1,17 @@
1
1
  {
2
2
  "name": "@taserjs/router",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Type-safe Node.js router with runtime validation and middleware",
5
+ "license": "ISC",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/taserjs/taserjs.git",
9
+ "directory": "packages/router"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "src"
14
+ ],
5
15
  "type": "module",
6
16
  "sideEffects": false,
7
17
  "main": "./dist/cjs/index.cjs",
@@ -130,15 +140,15 @@
130
140
  },
131
141
  "./package.json": "./package.json"
132
142
  },
133
- "files": [
134
- "dist",
135
- "src"
136
- ],
143
+ "publishConfig": {
144
+ "access": "public",
145
+ "registry": "https://registry.npmjs.org"
146
+ },
137
147
  "dependencies": {
138
148
  "@standard-schema/spec": "^1.1.0",
139
149
  "hono": "^4.10.3",
140
- "@taserjs/router-core": "0.0.2",
141
- "@taserjs/router-utils": "0.0.2"
150
+ "@taserjs/router-core": "0.0.4",
151
+ "@taserjs/router-utils": "0.0.4"
142
152
  },
143
153
  "devDependencies": {
144
154
  "@tanstack/vite-config": "^0.6.0",
@@ -150,16 +160,6 @@
150
160
  "engines": {
151
161
  "node": ">=20.19"
152
162
  },
153
- "license": "ISC",
154
- "repository": {
155
- "type": "git",
156
- "url": "git+https://github.com/taserjs/taserjs.git",
157
- "directory": "packages/router"
158
- },
159
- "publishConfig": {
160
- "access": "public",
161
- "registry": "https://registry.npmjs.org"
162
- },
163
163
  "scripts": {
164
164
  "clean": "rimraf dist",
165
165
  "build": "vite build && publint --strict",
package/src/constants.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */
2
- export const SCHEMA_KEYS = ['query', 'params', 'body'] as const
2
+ export const SCHEMA_KEYS = ["query", "params", "body"] as const;
3
3
 
4
- export type SchemaKey = (typeof SCHEMA_KEYS)[number]
4
+ export type SchemaKey = (typeof SCHEMA_KEYS)[number];
5
5
 
6
6
  export const HANDLER_SCHEMA_KEY_MAP = {
7
- query: 'handlerQuery',
8
- params: 'handlerParams',
9
- body: 'handlerBody',
10
- } as const satisfies Record<SchemaKey, string>
7
+ query: "handlerQuery",
8
+ params: "handlerParams",
9
+ body: "handlerBody",
10
+ } as const satisfies Record<SchemaKey, string>;
@@ -1,11 +1,11 @@
1
- import type { ReservedContextKey } from '@taserjs/router-core'
1
+ import type { ReservedContextKey } from "@taserjs/router-core";
2
2
 
3
- import type { ContextDefinition } from './types/app.js'
3
+ import type { ContextDefinition } from "./types/app.js";
4
4
 
5
- type NoReservedKeysConstraint<TBoot extends Record<string, unknown>, TReq extends Record<string, unknown>>
6
- = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never
7
- ? unknown
8
- : never
5
+ type NoReservedKeysConstraint<
6
+ TBoot extends Record<string, unknown>,
7
+ TReq extends Record<string, unknown>,
8
+ > = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never ? unknown : never;
9
9
 
10
10
  export function createContext<
11
11
  TBoot extends Record<string, unknown> = Record<string, never>,
@@ -13,7 +13,7 @@ export function createContext<
13
13
  >(
14
14
  definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>,
15
15
  ): ContextDefinition<TBoot, TReq> {
16
- return definition
16
+ return definition;
17
17
  }
18
18
 
19
- export type { ContextDefinition, InferAppContext } from './types/app.js'
19
+ export type { ContextDefinition, InferAppContext } from "./types/app.js";
@@ -1,14 +1,14 @@
1
- import type { HandlerBuilder } from '../types/index.js'
1
+ import type { HandlerBuilder } from "../types/index.js";
2
2
  import type {
3
3
  AppContext,
4
4
  HandlerUnit,
5
5
  MiddlewareDefinition,
6
6
  ReturnsMap,
7
7
  ValidatorParts,
8
- } from '../types/units.js'
9
- import type { Schema } from '../types/schema.js'
10
- import { pickDefinedSchemas, type SchemaValidators } from './validators.js'
11
- import { collectReturnsFromDefinitions } from '@taserjs/router-utils'
8
+ } from "../types/units.js";
9
+ import type { Schema } from "../types/schema.js";
10
+ import { pickDefinedSchemas, type SchemaValidators } from "./validators.js";
11
+ import { collectReturnsFromDefinitions } from "@taserjs/router-utils";
12
12
 
13
13
  function createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(
14
14
  validators: SchemaValidators,
@@ -17,56 +17,46 @@ function createHandlerBuilder<TAppContext extends Record<string, unknown> = AppC
17
17
  ): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {
18
18
  const builder = {
19
19
  returns(map: ReturnsMap) {
20
- return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map })
20
+ return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map });
21
21
  },
22
22
  use(unitOrOptions: MiddlewareDefinition) {
23
- middlewares.push(unitOrOptions)
24
- return builder
23
+ middlewares.push(unitOrOptions);
24
+ return builder;
25
25
  },
26
26
  handler(fn: (ctx: unknown) => unknown) {
27
- const mwReturns = collectReturnsFromDefinitions(middlewares)
28
- const mergedReturns = { ...mwReturns, ...returnsMap }
27
+ const mwReturns = collectReturnsFromDefinitions(middlewares);
28
+ const mergedReturns = { ...mwReturns, ...returnsMap };
29
29
  const unit = {
30
30
  $Infer: { Output: undefined as unknown as Response },
31
31
  middlewares: [...middlewares],
32
- handler: fn as HandlerUnit<readonly [], ValidatorParts>['handler'],
32
+ handler: fn as HandlerUnit<readonly [], ValidatorParts>["handler"],
33
33
  ...pickDefinedSchemas(validators),
34
34
  ...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),
35
- } as HandlerUnit<readonly [], ValidatorParts>
36
- return unit
35
+ } as HandlerUnit<readonly [], ValidatorParts>;
36
+ return unit;
37
37
  },
38
- }
38
+ };
39
39
 
40
- return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>
40
+ return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>;
41
41
  }
42
42
 
43
- export function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<
44
- readonly [],
45
- {},
46
- {},
47
- TAppContext
48
- >
43
+ export function defineHandler<
44
+ TAppContext extends Record<string, unknown> = AppContext,
45
+ >(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
49
46
 
50
47
  export function defineHandler<
51
48
  TAppContext extends Record<string, unknown> = AppContext,
52
49
  TQuery = unknown,
53
50
  TParams = unknown,
54
51
  TBody = unknown,
55
- >(
56
- options: {
57
- query?: Schema<TQuery>
58
- params?: Schema<TParams>
59
- body?: Schema<TBody>
60
- },
61
- ): HandlerBuilder<
62
- readonly [],
63
- { query: TQuery, params: TParams, body: TBody },
64
- {},
65
- TAppContext
66
- >
52
+ >(options: {
53
+ query?: Schema<TQuery>;
54
+ params?: Schema<TParams>;
55
+ body?: Schema<TBody>;
56
+ }): HandlerBuilder<readonly [], { query: TQuery; params: TParams; body: TBody }, {}, TAppContext>;
67
57
 
68
58
  export function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(
69
59
  options?: SchemaValidators,
70
60
  ): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {
71
- return createHandlerBuilder<TAppContext>(options ?? {}, [], {})
61
+ return createHandlerBuilder<TAppContext>(options ?? {}, [], {});
72
62
  }