@bepalo/spine 1.5.17 → 2.7.19

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 (110) hide show
  1. package/README.md +532 -1
  2. package/dist/auth-middlewares.d.ts.map +1 -1
  3. package/dist/auth-middlewares.js +1 -0
  4. package/dist/auth-middlewares.js.map +1 -1
  5. package/dist/cache.d.ts +72 -0
  6. package/dist/cache.d.ts.map +1 -0
  7. package/dist/cache.js +387 -0
  8. package/dist/cache.js.map +1 -0
  9. package/dist/cjs/auth-middlewares.d.ts.map +1 -1
  10. package/dist/cjs/auth-middlewares.js +1 -0
  11. package/dist/cjs/auth-middlewares.js.map +1 -1
  12. package/dist/cjs/cache.d.ts +72 -0
  13. package/dist/cjs/cache.d.ts.map +1 -0
  14. package/dist/cjs/cache.js +387 -0
  15. package/dist/cjs/cache.js.map +1 -0
  16. package/dist/cjs/exp-cache.d.ts +101 -0
  17. package/dist/cjs/exp-cache.d.ts.map +1 -0
  18. package/dist/cjs/exp-cache.js +551 -0
  19. package/dist/cjs/exp-cache.js.map +1 -0
  20. package/dist/cjs/generator.d.ts +142 -19
  21. package/dist/cjs/generator.d.ts.map +1 -1
  22. package/dist/cjs/generator.js +416 -36
  23. package/dist/cjs/generator.js.map +1 -1
  24. package/dist/cjs/helpers.d.ts +49 -2
  25. package/dist/cjs/helpers.d.ts.map +1 -1
  26. package/dist/cjs/helpers.js +169 -14
  27. package/dist/cjs/helpers.js.map +1 -1
  28. package/dist/cjs/index.d.ts +2 -0
  29. package/dist/cjs/index.d.ts.map +1 -1
  30. package/dist/cjs/index.js +3 -0
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/linked-list.d.ts +35 -0
  33. package/dist/cjs/linked-list.d.ts.map +1 -0
  34. package/dist/cjs/linked-list.js +300 -0
  35. package/dist/cjs/linked-list.js.map +1 -0
  36. package/dist/cjs/middlewares.d.ts +264 -28
  37. package/dist/cjs/middlewares.d.ts.map +1 -1
  38. package/dist/cjs/middlewares.js +691 -44
  39. package/dist/cjs/middlewares.js.map +1 -1
  40. package/dist/cjs/parsers.d.ts +32 -10
  41. package/dist/cjs/parsers.d.ts.map +1 -1
  42. package/dist/cjs/parsers.js +84 -46
  43. package/dist/cjs/parsers.js.map +1 -1
  44. package/dist/cjs/router.d.ts +5 -6
  45. package/dist/cjs/router.d.ts.map +1 -1
  46. package/dist/cjs/router.js +272 -149
  47. package/dist/cjs/router.js.map +1 -1
  48. package/dist/cjs/status.d.ts.map +1 -1
  49. package/dist/cjs/status.js +80 -79
  50. package/dist/cjs/status.js.map +1 -1
  51. package/dist/cjs/types.d.ts +74 -2
  52. package/dist/cjs/types.d.ts.map +1 -1
  53. package/dist/cjs/types.js +15 -2
  54. package/dist/cjs/types.js.map +1 -1
  55. package/dist/cjs/utils.d.ts +1 -0
  56. package/dist/cjs/utils.d.ts.map +1 -1
  57. package/dist/cjs/utils.js +1 -0
  58. package/dist/cjs/utils.js.map +1 -1
  59. package/dist/cjs/utils.node.d.ts +1 -1
  60. package/dist/cjs/utils.node.d.ts.map +1 -1
  61. package/dist/cjs/utils.node.js +31 -7
  62. package/dist/cjs/utils.node.js.map +1 -1
  63. package/dist/exp-cache.d.ts +101 -0
  64. package/dist/exp-cache.d.ts.map +1 -0
  65. package/dist/exp-cache.js +551 -0
  66. package/dist/exp-cache.js.map +1 -0
  67. package/dist/generator.d.ts +142 -19
  68. package/dist/generator.d.ts.map +1 -1
  69. package/dist/generator.js +416 -36
  70. package/dist/generator.js.map +1 -1
  71. package/dist/helpers.d.ts +49 -2
  72. package/dist/helpers.d.ts.map +1 -1
  73. package/dist/helpers.js +169 -14
  74. package/dist/helpers.js.map +1 -1
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +3 -0
  78. package/dist/index.js.map +1 -1
  79. package/dist/linked-list.d.ts +35 -0
  80. package/dist/linked-list.d.ts.map +1 -0
  81. package/dist/linked-list.js +300 -0
  82. package/dist/linked-list.js.map +1 -0
  83. package/dist/middlewares.d.ts +264 -28
  84. package/dist/middlewares.d.ts.map +1 -1
  85. package/dist/middlewares.js +691 -44
  86. package/dist/middlewares.js.map +1 -1
  87. package/dist/parsers.d.ts +32 -10
  88. package/dist/parsers.d.ts.map +1 -1
  89. package/dist/parsers.js +84 -46
  90. package/dist/parsers.js.map +1 -1
  91. package/dist/router.d.ts +5 -6
  92. package/dist/router.d.ts.map +1 -1
  93. package/dist/router.js +272 -149
  94. package/dist/router.js.map +1 -1
  95. package/dist/status.d.ts.map +1 -1
  96. package/dist/status.js +80 -79
  97. package/dist/status.js.map +1 -1
  98. package/dist/types.d.ts +74 -2
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/types.js +15 -2
  101. package/dist/types.js.map +1 -1
  102. package/dist/utils.d.ts +1 -0
  103. package/dist/utils.d.ts.map +1 -1
  104. package/dist/utils.js +1 -0
  105. package/dist/utils.js.map +1 -1
  106. package/dist/utils.node.d.ts +1 -1
  107. package/dist/utils.node.d.ts.map +1 -1
  108. package/dist/utils.node.js +31 -7
  109. package/dist/utils.node.js.map +1 -1
  110. package/package.json +6 -2
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ // src/linked-list.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LinkedList = void 0;
5
+ const node_util_1 = require("node:util");
6
+ class LinkedList {
7
+ constructor() {
8
+ this.first = undefined;
9
+ this.last = undefined;
10
+ this.size = 0;
11
+ }
12
+ *[Symbol.iterator]() {
13
+ for (let node = this.first; node !== undefined; node = node.next) {
14
+ yield node.data;
15
+ }
16
+ }
17
+ *values() {
18
+ for (let node = this.first; node !== undefined; node = node.next) {
19
+ yield node.data;
20
+ }
21
+ }
22
+ [node_util_1.inspect.custom](depth, options) {
23
+ return {
24
+ size: this.size,
25
+ entries: [...this],
26
+ };
27
+ }
28
+ toJSON() {
29
+ const list = new Array(this.size);
30
+ for (let node = this.first, i = 0; node !== undefined; node = node.next, i++) {
31
+ list[i] = node.data;
32
+ }
33
+ return list;
34
+ }
35
+ insertStart(data) {
36
+ const newNode = {
37
+ data,
38
+ prev: undefined,
39
+ next: this.first,
40
+ };
41
+ if (this.first === undefined) {
42
+ this.last = this.first = newNode;
43
+ }
44
+ else {
45
+ this.first.prev = newNode;
46
+ this.first = newNode;
47
+ }
48
+ this.size++;
49
+ return newNode;
50
+ }
51
+ insertEnd(data) {
52
+ const newNode = {
53
+ data,
54
+ prev: this.last,
55
+ next: undefined,
56
+ };
57
+ if (this.first === undefined) {
58
+ this.last = this.first = newNode;
59
+ }
60
+ else {
61
+ this.last.next = newNode;
62
+ this.last = newNode;
63
+ }
64
+ this.size++;
65
+ return newNode;
66
+ }
67
+ insertBefore(beforeNode, data) {
68
+ const { prev } = beforeNode;
69
+ const newNode = {
70
+ data,
71
+ prev,
72
+ next: beforeNode,
73
+ };
74
+ if (prev !== undefined) {
75
+ prev.next = newNode;
76
+ }
77
+ beforeNode.prev = newNode;
78
+ if (this.first === beforeNode) {
79
+ this.first = newNode;
80
+ }
81
+ this.size++;
82
+ return newNode;
83
+ }
84
+ insertAfter(afterNode, data) {
85
+ const { next } = afterNode;
86
+ const newNode = {
87
+ data,
88
+ prev: afterNode,
89
+ next,
90
+ };
91
+ if (next !== undefined) {
92
+ next.prev = newNode;
93
+ }
94
+ afterNode.next = newNode;
95
+ if (this.last === afterNode) {
96
+ this.last = newNode;
97
+ }
98
+ this.size++;
99
+ return newNode;
100
+ }
101
+ moveBefore(beforeNode, node) {
102
+ if (node === beforeNode) {
103
+ return this;
104
+ }
105
+ // splice node
106
+ {
107
+ const { prev, next } = node;
108
+ if (prev !== undefined) {
109
+ prev.next = next;
110
+ }
111
+ if (next !== undefined) {
112
+ next.prev = prev;
113
+ }
114
+ }
115
+ // insert node before
116
+ const { prev } = beforeNode;
117
+ if (prev !== undefined) {
118
+ prev.next = node;
119
+ }
120
+ beforeNode.prev = node;
121
+ node.prev = prev;
122
+ node.next = beforeNode;
123
+ if (this.first === beforeNode) {
124
+ this.first = node;
125
+ }
126
+ return this;
127
+ }
128
+ moveAfter(afterNode, node) {
129
+ if (node === afterNode) {
130
+ return this;
131
+ }
132
+ // splice node
133
+ {
134
+ const { prev, next } = node;
135
+ if (prev !== undefined) {
136
+ prev.next = next;
137
+ }
138
+ if (next !== undefined) {
139
+ next.prev = prev;
140
+ }
141
+ }
142
+ // insert node after
143
+ const { next } = afterNode;
144
+ if (next !== undefined) {
145
+ next.prev = node;
146
+ }
147
+ afterNode.next = node;
148
+ node.next = next;
149
+ node.prev = afterNode;
150
+ if (this.last === afterNode) {
151
+ this.last = node;
152
+ }
153
+ return this;
154
+ }
155
+ popStart() {
156
+ if (this.first !== undefined) {
157
+ const { data, next } = this.first;
158
+ this.first = next;
159
+ if (next !== undefined) {
160
+ next.prev = undefined;
161
+ }
162
+ if (this.first === undefined) {
163
+ this.last = undefined;
164
+ }
165
+ this.size--;
166
+ return data;
167
+ }
168
+ return undefined;
169
+ }
170
+ popEnd() {
171
+ if (this.last !== undefined) {
172
+ const { data, prev } = this.last;
173
+ this.last = prev;
174
+ if (prev !== undefined) {
175
+ prev.next = undefined;
176
+ }
177
+ if (this.last === undefined) {
178
+ this.first = undefined;
179
+ }
180
+ this.size--;
181
+ return data;
182
+ }
183
+ return undefined;
184
+ }
185
+ cutStart(node, cutSize) {
186
+ const { prev } = node;
187
+ this.first = node;
188
+ node.prev = undefined;
189
+ if (prev !== undefined) {
190
+ prev.next = undefined;
191
+ }
192
+ this.size -= cutSize;
193
+ return prev;
194
+ }
195
+ cutEnd(node, cutSize) {
196
+ const { next } = node;
197
+ this.last = node;
198
+ node.next = undefined;
199
+ if (next !== undefined) {
200
+ next.prev = undefined;
201
+ }
202
+ this.size -= cutSize;
203
+ return next;
204
+ }
205
+ cutLeft(node, cutSize) {
206
+ const { prev } = node;
207
+ this.last = prev;
208
+ if (prev === undefined) {
209
+ this.first = undefined;
210
+ }
211
+ else {
212
+ prev.next = undefined;
213
+ }
214
+ node.prev = undefined;
215
+ this.size -= cutSize;
216
+ return node;
217
+ }
218
+ cutRight(node, cutSize) {
219
+ const { next } = node;
220
+ this.first = next;
221
+ if (next === undefined) {
222
+ this.last = undefined;
223
+ }
224
+ else {
225
+ next.prev = undefined;
226
+ }
227
+ node.next = undefined;
228
+ this.size -= cutSize;
229
+ return node;
230
+ }
231
+ remove(node) {
232
+ const { prev, next } = node;
233
+ if (prev !== undefined) {
234
+ prev.next = next;
235
+ node.prev = undefined;
236
+ }
237
+ if (next !== undefined) {
238
+ next.prev = prev;
239
+ node.next = undefined;
240
+ }
241
+ if (node === this.first) {
242
+ this.first = next;
243
+ }
244
+ if (node === this.last) {
245
+ this.last = prev;
246
+ }
247
+ this.size--;
248
+ return node;
249
+ }
250
+ moveToStart(node) {
251
+ if (node === this.first) {
252
+ return node;
253
+ }
254
+ const { prev, next } = node;
255
+ // detach node
256
+ if (prev !== undefined) {
257
+ prev.next = next;
258
+ }
259
+ if (next !== undefined) {
260
+ next.prev = prev;
261
+ }
262
+ else {
263
+ this.last = prev;
264
+ }
265
+ // insert start
266
+ node.next = this.first;
267
+ node.prev = undefined;
268
+ this.first.prev = node;
269
+ this.first = node;
270
+ return node;
271
+ }
272
+ moveToEnd(node) {
273
+ if (node === this.last) {
274
+ return node;
275
+ }
276
+ const { prev, next } = node;
277
+ // detach node
278
+ if (prev !== undefined) {
279
+ prev.next = next;
280
+ }
281
+ else {
282
+ this.first = next;
283
+ }
284
+ if (next !== undefined) {
285
+ next.prev = prev;
286
+ }
287
+ // insert end
288
+ node.prev = this.last;
289
+ node.next = undefined;
290
+ this.last.next = node;
291
+ this.last = node;
292
+ return node;
293
+ }
294
+ clear() {
295
+ this.first = this.last = undefined;
296
+ this.size = 0;
297
+ }
298
+ }
299
+ exports.LinkedList = LinkedList;
300
+ //# sourceMappingURL=linked-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linked-list.js","sourceRoot":"","sources":["../src/linked-list.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,110 @@
1
- import { type Context, type Handler, type HttpMethod } from "./types.ts";
1
+ import { CTBody, CTCookie, CTQuery, ParseBodyOptions, ParsedBody } from "./parsers.ts";
2
+ import { HttpError } from "./types.ts";
3
+ import type { HttpMethodLower, HttpMethodUpper, Context, Handler, HttpMethod, XFrameOptions, ReferrerPolicy, ContentSecurityPolicyParams, StrictTransportSecurityParams, CrossOriginOpenerPolicy, CrossOriginEmbedderPolicy, CrossOriginResourcePolicy, ContentSecurityPolicyArrayParams, StrictTransportSecurity, ContentSecurityPolicySource, ContentSecurityPolicyFetchDirectiveType, HandlerReturn } from "./types.ts";
4
+ /**
5
+ * Force http into https
6
+ *
7
+ * @returns {Handler<ExtendContext>} Middleware function
8
+ *
9
+ */
10
+ export declare const forceHttps: <ExtendContext extends Record<string, unknown> = {}>(config?: {
11
+ toPort?: number;
12
+ }) => Handler<ExtendContext>;
13
+ /**
14
+ * Set security headers.
15
+ * - "X-Content-Type-Options": always "nosniff"
16
+ * - "X-Frame-Options": default "DENY"
17
+ * - "Referrer-Policy": from parameters
18
+ * - "Strict-Transport-Security": from parameters
19
+ * - "Content-Security-Policy": from parameters
20
+ *
21
+ * @returns {Handler<ExtendContext>} Middleware function
22
+ *
23
+ */
24
+ export declare const securityHeaders: <ExtendContext extends Record<string, unknown> = {}>(config?: {
25
+ referrerPolicy?: ReferrerPolicy | null;
26
+ xFrameOptions?: XFrameOptions | null;
27
+ strictTransportSecurity?: StrictTransportSecurity | StrictTransportSecurityParams | boolean | null;
28
+ /**
29
+ * @property [config.contentSecurityPolicy] When using the array version
30
+ * please take note of whitespace usage to differentiate between some values.
31
+ * NOTE: Custom values require a preceding space.
32
+ *
33
+ * @example
34
+ * contentSecurityPolicy: {
35
+ * "default-src": "'self'",
36
+ * "object-src": "'none'",
37
+ * "frame-ancestors": "'none'",
38
+ * "script-src style-src font-src": [
39
+ * "'self'",
40
+ * "https://unpkg.com",
41
+ * "'unsafe-inline'",
42
+ * ],
43
+ * "script-src": [
44
+ * "'self'",
45
+ * "'strict-dynamic'",
46
+ * `'nonce-${toBase64UUID(crypto.randomUUID())}'`,
47
+ * "'unsafe-inline'",
48
+ * ],
49
+ * "img-src": [ "'self'", "data:" ],
50
+ * "upgrade-insecure-requests": true,
51
+ * "trusted-types": " type-a type-b",
52
+ * // "trusted-types": "'none'",
53
+ * }
54
+ *
55
+ * @example
56
+ * contentSecurityPolicy: {
57
+ * [ "default-src", "'self'" ],
58
+ * [ "object-src", "'none'" ],
59
+ * [ "frame-ancestors", "'none'" ],
60
+ * [
61
+ * "script-src style-src font-src",
62
+ * "'self'",
63
+ * "https://unpkg.com",
64
+ * "'unsafe-inline'",
65
+ * ],
66
+ * [
67
+ * "script-src",
68
+ * "'self'",
69
+ * "'strict-dynamic'",
70
+ * `'nonce-${toBase64UUID(crypto.randomUUID())}'`,
71
+ * "'unsafe-inline'",
72
+ * ],
73
+ * [ "img-src", "'self'", "data:" ],
74
+ * [ "upgrade-insecure-requests" ],
75
+ * [ "trusted-types", " type-a type-b" ],
76
+ * // [ "trusted-types", "'none'" ],
77
+ * }
78
+ *
79
+ */
80
+ contentSecurityPolicy?: ContentSecurityPolicyArrayParams | ContentSecurityPolicyParams | (ContentSecurityPolicyParams & { [K in string as K extends keyof ContentSecurityPolicyFetchDirectiveType | "upgrade-insecure-requests" | "trusted-types" ? never : K]: ContentSecurityPolicySource | ContentSecurityPolicySource[]; }) | null;
81
+ crossOriginOpenerPolicy?: CrossOriginOpenerPolicy;
82
+ /**
83
+ * @property
84
+ */
85
+ crossOriginEmbedderPolicy?: CrossOriginEmbedderPolicy;
86
+ crossOriginResourcePolicy?: CrossOriginResourcePolicy;
87
+ /**
88
+ * @property [config.headers] Extra headers to set.
89
+ */
90
+ headers?: [string, string][] | Record<string, string>;
91
+ }) => Handler<ExtendContext>;
2
92
  /**
3
93
  * Creates a rate limiting middleware using token bucket algorithm.
4
94
  * Supports both fixed interval refill and continuous rate-based refill.
5
95
  *
6
- * @template {Record<string, unknown>} ExtendContext - Extend Router Context
7
- * @param {Object} config - Rate limiting configuration
8
- * @param {Function} [config.key] - Function to generate cache key from request and context
9
- * @param {number} [config.maxTokens] - Maximum number of tokens in the bucket
10
- * @param {number} [config.refillInterval] - Fixed interval in seconds for token refill
11
- * @param {number} [config.refillRate] - Continuous refill rate in tokens per second
12
- * @param {number} [config.cleanUpInterval] - Interval in seconds for cleanup timer
13
- * @param {number} [config.cleanUpIdleDelay] - Time in seconds to delay cleanup of filled token buckets
14
- * @param {boolean} [config.setXRateLimitHeaders=false] - Whether to set X-RateLimit headers in response
15
- * @returns {Function} Middleware function that enforces rate limits
96
+ * @template {Record<string, unknown>} ExtendContext Extend Router Context
97
+ * @property {Object} config Rate limiting configuration
98
+ * @property {Function} [config.key] Function to generate cache key from request and context
99
+ * @property {number} [config.maxTokens] Maximum number of tokens in the bucket
100
+ * @property {number} [config.refillInterval] Fixed interval in seconds for token refill
101
+ * @property {number} [config.refillRate] Continuous refill rate in tokens per second
102
+ * @property {number} [config.cleanUpInterval] Interval in seconds for cleanup timer
103
+ * @property {number} [config.cleanUpIdleDelay] Time in seconds to delay cleanup of filled token buckets
104
+ * @property {boolean} [config.setXRateLimitHeaders=false] Whether to set X-RateLimit headers in response
105
+ * @property {boolean} [config.breakPipeline=false] If true, returns Break_Pipeline
106
+ * @property {"status"|"text"|"json"} [config.responseType="text"] Response type
107
+ * @returns {Handler<ExtendContext>} Middleware function that enforces rate limits
16
108
  *
17
109
  * @example
18
110
  * // Fixed interval rate limiting (10 requests per minute)
@@ -32,9 +124,9 @@ import { type Context, type Handler, type HttpMethod } from "./types.ts";
32
124
  * maxTokens: 100,
33
125
  * });
34
126
  *
35
- * @throws {RouterError} If neither refillInterval nor refillRate is provided
127
+ * @throws {Error} If neither refillInterval nor refillRate is provided
36
128
  */
37
- export declare const limitRate: <ExtendContext extends Record<string, unknown> = Record<string, never>>(config: {
129
+ export declare const limitRate: <ExtendContext extends Record<string, unknown> = {}>(config: {
38
130
  key: (ctx: Context<ExtendContext>) => string | Promise<string>;
39
131
  maxTokens: number;
40
132
  refillInterval?: number;
@@ -43,22 +135,26 @@ export declare const limitRate: <ExtendContext extends Record<string, unknown> =
43
135
  cleanUpIdleDelay?: number;
44
136
  setXRateLimitHeaders?: boolean;
45
137
  breakPipeline?: boolean;
138
+ responseType?: "text" | "status" | "json";
46
139
  }) => Handler<ExtendContext>;
47
140
  /**
48
141
  * Creates a CORS (Cross-Origin Resource Sharing) middleware.
49
142
  * Supports preflight requests and configurable CORS headers.
50
143
  *
51
- * @template {Record<string, unknown>} ExtendContext - Extend Router Context
52
- * @param {Object} [config] - CORS configuration
53
- * @param {string|string[]|"*"} [config.origins="*"] - Allowed origins (wildcard "*", single origin, or array)
54
- * @param {HttpMethod[]} [config.methods=["GET","HEAD","PUT","PATCH","POST","DELETE"]] - Allowed HTTP methods
55
- * @param {string[]} [config.allowedHeaders=["Content-Type","Authorization"]] - Allowed request headers
56
- * @param {string[]} [config.exposedHeaders] - Headers exposed to the browser
57
- * @param {boolean} [config.credentials=false] - Allow credentials (cookies, authorization headers)
58
- * @param {number} [config.maxAge=86400] - Maximum age for preflight cache in seconds
59
- * @param {boolean} [config.varyOrigin=false] - Add Vary: Origin header for caching
60
- * @param {boolean} [options.breakPipeline=false] - If true, stops only pipe flow per handler type after success.
61
- * @returns {Function} Middleware function that handles CORS headers
144
+ * @template {Record<string, unknown>} ExtendContext Extend Router Context
145
+ * @param {Object} [config] CORS configuration
146
+ * @param {string|string[]|"*"} [config.origins="*"] Allowed origins (wildcard "*", single origin, or array)
147
+ * @param {(HttpMethod|HttpMethodUpper|HttpMethodLower)[]} [config.methods=["Get","Head","Put","Patch","Post","Delete"]] Allowed HTTP methods
148
+ * @param {string[]} [config.allowedHeaders=["Content-Type","Authorization"]] Allowed request headers
149
+ * @param {string[]} [config.exposedHeaders] Headers exposed to the browser
150
+ * @param {boolean} [config.credentials=false] Allow credentials (cookies, authorization headers)
151
+ * @param {number} [config.maxAge=86400] Maximum age for preflight cache in seconds
152
+ * @param {boolean} [config.varyOrigin=true] Add Vary: Origin header for caching
153
+ * @param {boolean} [config.breakPipeline=false] If true, returns Break_Pipeline
154
+ * @param {"status"|"text"|"json"} [config.responseType="text"] Response type
155
+ * @returns {Handler<ExtendContext>} Middleware function that handles CORS headers
156
+ *
157
+ * @throws {HttpError} If credentials is enabled with wildcard origin ("*")
62
158
  *
63
159
  * @example
64
160
  * // Basic CORS with all defaults
@@ -69,20 +165,160 @@ export declare const limitRate: <ExtendContext extends Record<string, unknown> =
69
165
  * const corsMiddleware = cors({
70
166
  * origins: ["https://example.com", "https://api.example.com"],
71
167
  * credentials: true,
72
- * methods: ["GET", "POST", "PUT", "DELETE"],
168
+ * methods: ["Get", "Post", "Put", "Delete"],
73
169
  * allowedHeaders: ["Content-Type", "Authorization", "X-Custom-Header"]
74
170
  * });
75
171
  *
76
- * @throws {HttpError} If credentials is true with wildcard origin ("*")
77
172
  */
78
- export declare const cors: <ExtendContext extends Record<string, unknown> = Record<string, never>>(config?: {
173
+ export declare const cors: <ExtendContext extends Record<string, unknown> = {}>(config?: {
79
174
  origins: "*" | string | string[];
80
- methods?: HttpMethod[] | null;
175
+ methods?: (HttpMethod | HttpMethodUpper | HttpMethodLower)[] | null;
81
176
  allowedHeaders?: string[] | null;
82
177
  exposedHeaders?: string[] | null;
83
178
  credentials?: boolean | null;
84
179
  maxAge?: number | null;
85
180
  varyOrigin?: boolean;
86
181
  breakPipeline?: boolean;
182
+ responseType?: "text" | "status" | "json";
87
183
  }) => Handler<ExtendContext>;
184
+ /**
185
+ * Types used as validator target
186
+ */
187
+ export type ValidateTargetTypes = {
188
+ params: Record<string, string>;
189
+ query: Record<string, string>;
190
+ cookie: Record<string, string>;
191
+ body: ParsedBody;
192
+ };
193
+ type CTFrom<ExtendContext extends Record<string, unknown> = {}, Options extends Pick<ValidateOptions<ExtendContext>, "params" | "query" | "cookie" | "body"> = Pick<ValidateOptions<ExtendContext>, "params" | "query" | "cookie" | "body">> = {
194
+ [K in keyof Options as {} extends Options[K] ? K : never]: K extends keyof ValidateTargetTypes ? ValidateTargetTypes[K] : never;
195
+ };
196
+ declare type Type<t = unknown, $ = {}> = any;
197
+ type CustomErrorType = abstract new (...args: any[]) => unknown;
198
+ export type ValidatorReturn<T = unknown> = Exclude<HandlerReturn, void> | Error | HttpError | T;
199
+ export type ValidatorFn<Target, ExtendContext extends Record<string, unknown> = {}> = Type<any, any> & {
200
+ (target: Target): ValidatorReturn<Target>;
201
+ (this: Context<ExtendContext>, target: Target): ValidatorReturn<Target>;
202
+ };
203
+ export type ValidatorFnIt<Target, ExtendContext extends Record<string, unknown> = {}> = Type<any, any> & {
204
+ (target: Target): ValidatorReturn<Target>;
205
+ (this: Context<ExtendContext>, target: Target): ValidatorReturn<Target>;
206
+ (target: Target, ctx: Context<ExtendContext>, index: number): ValidatorReturn<Target>;
207
+ };
208
+ export type PropValidator<Target, ExtendContext extends Record<string, unknown> = {}> = {
209
+ (target: Target): ValidatorReturn<Target>;
210
+ (this: Context<ExtendContext>, target: Target): ValidatorReturn<Target>;
211
+ };
212
+ export type PropValidatorIt<Target, ExtendContext extends Record<string, unknown> = {}> = {
213
+ (target: Target): ValidatorReturn<Target>;
214
+ (this: Context<ExtendContext>, target: Target): ValidatorReturn<Target>;
215
+ (target: Target, ctx: Context<ExtendContext>, index: number): ValidatorReturn<Target>;
216
+ };
217
+ export type Validator<Target, ExtendContext extends Record<string, unknown> = {}> = ValidatorFn<Target, ExtendContext> | (Target extends Record<string, unknown> ? {
218
+ [K in keyof Target]: PropValidator<Target[K], ExtendContext>;
219
+ } : never);
220
+ export type ValidatorIt<Target, ExtendContext extends Record<string, unknown> = {}> = ValidatorFnIt<Target, ExtendContext> | (Target extends Record<string, unknown> ? {
221
+ [K in keyof Target]: PropValidatorIt<Target[K], ExtendContext>;
222
+ } : never);
223
+ export type ValidateQueryParser<ExtendContext extends Record<string, unknown> = {}> = {
224
+ (ctx: Context<CTQuery & ExtendContext>): Promise<void> | void;
225
+ };
226
+ export type ValidateCookieParser<ExtendContext extends Record<string, unknown> = {}> = {
227
+ (ctx: Context<CTCookie & ExtendContext>): Promise<void> | void;
228
+ };
229
+ export type ValidateBodyParser<ExtendContext extends Record<string, unknown> = {}> = {
230
+ (ctx: Context<CTBody & ExtendContext>): Promise<void> | void;
231
+ };
232
+ /**
233
+ * Options type for validator middleware function.
234
+ */
235
+ export interface ValidateOptions<ExtendContext extends ({
236
+ params: Record<string, string>;
237
+ } & ({
238
+ query: Record<string, string>;
239
+ } | {
240
+ cookie: Record<string, string>;
241
+ } | {
242
+ body: ParsedBody;
243
+ } | {
244
+ query: Record<string, string>;
245
+ body: ParsedBody;
246
+ } | {
247
+ query: Record<string, string>;
248
+ cookie: Record<string, string>;
249
+ } | {
250
+ cookie: Record<string, string>;
251
+ body: ParsedBody;
252
+ } | {
253
+ query: Record<string, string>;
254
+ cookie: Record<string, string>;
255
+ body: ParsedBody;
256
+ })) | Record<string, unknown> = {}> {
257
+ responseType?: "text" | "status" | "json";
258
+ errors?: Array<CustomErrorType>;
259
+ paramsReassign?: boolean;
260
+ params?: Validator<Record<string, string>, ExtendContext>;
261
+ paramsErrors?: Array<CustomErrorType>;
262
+ strangeParams?: boolean | {
263
+ <Target extends Record<string, unknown>>(target: Target, key: string): void | any;
264
+ };
265
+ queryParse?: boolean | ValidateQueryParser<ExtendContext>;
266
+ queryReassign?: boolean;
267
+ query?: Validator<Record<string, string>, ExtendContext>;
268
+ queryErrors?: Array<CustomErrorType>;
269
+ strangeQuery?: boolean | {
270
+ <Target extends Record<string, unknown>>(target: Target, key: string): void | any;
271
+ };
272
+ cookieParse?: boolean | ValidateCookieParser<ExtendContext>;
273
+ cookieReassign?: boolean;
274
+ cookie?: Validator<Record<string, string>, ExtendContext>;
275
+ cookieErrors?: Array<CustomErrorType>;
276
+ strangeCookie?: boolean | {
277
+ <Target extends Record<string, unknown>>(target: Target, key: string): void | any;
278
+ };
279
+ bodyParseOptions?: ParseBodyOptions;
280
+ bodyParse?: boolean | ValidateBodyParser<ExtendContext>;
281
+ bodyReassign?: boolean;
282
+ body?: ValidatorFnIt<ParsedBody, ExtendContext> | Array<ValidatorIt<ParsedBody, ExtendContext>>;
283
+ bodyErrors?: Array<CustomErrorType>;
284
+ strangeBody?: boolean | {
285
+ <Target extends Record<string, unknown>>(target: Target, key: string): void | any;
286
+ };
287
+ strange?: boolean | {
288
+ <Target extends Record<string, unknown>>(target: Target, key: string): void | any;
289
+ };
290
+ breakPipeline?: boolean;
291
+ }
292
+ /**
293
+ * Creates a request params, query and body validator middleware function
294
+ *
295
+ * @param {Validator<Record<string, string>,ExtendContext>} [config.params] Parameters validator
296
+ * @param {CustomErrorType} [config.paramsErrors] Parameters validator's expected error instance types other than Error derivatives
297
+ * @param {boolean|ValidateQueryParser<ExtendContext>} [config.queryParse] Parse query before validation. 'true' for default parser or provide a custom parser
298
+ * @param {Validator<Record<string, string>,ExtendContext>} [config.query] Query validator
299
+ * @param {CustomErrorType} [config.queryErrors] Query validator's expected error instance types other than Error derivatives
300
+ * @param {boolean|ValidateCookieParser<ExtendContext>} [config.cookieParse] Parse cookie before validation. 'true' for default parser or provide a custom parser
301
+ * @param {Validator<Record<string, string>,ExtendContext>} [config.cookie] Cookie validator
302
+ * @param {CustomErrorType} [config.cookieErrors] Cookie validator's expected error instance types other than Error derivatives
303
+ * @param {ParseBodyOptions} [config.bodyParseOptions] Body parser options
304
+ * @param {boolean|ValidateBodyParser<ExtendContext>} [config.bodyParse] Parse body before validation. 'true' for default parser or provide a custom parser
305
+ * @param {ValidatorFnIt<ParsedBody,ExtendContext>|Array<ValidatorIt<ParsedBody,ExtendContext>>} [config.body] Body validator
306
+ * @param {CustomErrorType} [config.bodyErrors] Body validator's expected error instance types other than Error derivatives
307
+ * @param {Array<CustomErrorType>} [config.errors] All validator's expected error instance types other than Error derivatives. Can be overridden.
308
+ * @param {boolean} [config.paramsReassign] Reassign validated return value of the params validator function
309
+ * @param {boolean} [config.queryReassign] Reassign validated return value of the query validator function
310
+ * @param {boolean} [config.cookieReassign] Reassign validated return value of the cookie validator function
311
+ * @param {boolean} [config.bodyReassign] Reassign validated return value of the body validator function
312
+ * @param {boolean|{<Target extends Record<string, unknown>>(target: Target,key: string,):void|any;}} [config.strangeParams] Handle strange or unexpected properties
313
+ * @param {boolean|{<Target extends Record<string, unknown>>(target: Target,key: string,):void|any;}} [config.strangeQuery] Handle strange or unexpected properties
314
+ * @param {boolean|{<Target extends Record<string, unknown>>(target: Target,key: string,):void|any;}} [config.strangeCookie] Handle strange or unexpected properties
315
+ * @param {boolean|{<Target extends Record<string, unknown>>(target: Target,key: string,):void|any;}} [config.strangeBody] Handle strange or unexpected properties
316
+ * @param {boolean|{<Target extends Record<string, unknown>>(target: Target,key: string,):void|any;}} [config.strange] A default common option to handle strange or unexpected properties
317
+ * @param {"status"|"text"|"json"} [config.responseType="text"] Response type.
318
+ * - Note: 'status' type will omit content
319
+ * @param {boolean} [config.breakPipeline=false] If true, returns Break_Pipeline
320
+ * @returns {HandlerReturn}
321
+ */
322
+ export declare const validate: <ExtendContext extends Record<string, unknown> = {}, Options extends ValidateOptions<ExtendContext> = ValidateOptions<ExtendContext>>({ responseType, errors, paramsReassign, params: paramsValidator, paramsErrors, strangeParams, queryParse, queryReassign, query: queryValidator, queryErrors, strangeQuery, cookieParse, cookieReassign, cookie: cookieValidator, cookieErrors, strangeCookie, bodyParse, bodyParseOptions, bodyReassign, body: bodyValidator, bodyErrors, strangeBody, strange, breakPipeline, }: Options) => Handler<ExtendContext & CTFrom<ExtendContext, Options>>;
323
+ export {};
88
324
  //# sourceMappingURL=middlewares.d.ts.map