@bepalo/spine 1.0.3
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 +830 -0
- package/dist/auth-middlewares.d.ts +119 -0
- package/dist/auth-middlewares.d.ts.map +1 -0
- package/dist/auth-middlewares.js +168 -0
- package/dist/auth-middlewares.js.map +1 -0
- package/dist/cjs/auth-middlewares.d.ts +119 -0
- package/dist/cjs/auth-middlewares.d.ts.map +1 -0
- package/dist/cjs/auth-middlewares.js +168 -0
- package/dist/cjs/auth-middlewares.js.map +1 -0
- package/dist/cjs/helpers.d.ts +180 -0
- package/dist/cjs/helpers.d.ts.map +1 -0
- package/dist/cjs/helpers.js +366 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +30 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/middlewares.d.ts +88 -0
- package/dist/cjs/middlewares.d.ts.map +1 -0
- package/dist/cjs/middlewares.js +262 -0
- package/dist/cjs/middlewares.js.map +1 -0
- package/dist/cjs/parsers.d.ts +177 -0
- package/dist/cjs/parsers.d.ts.map +1 -0
- package/dist/cjs/parsers.js +1021 -0
- package/dist/cjs/parsers.js.map +1 -0
- package/dist/cjs/router.d.ts +124 -0
- package/dist/cjs/router.d.ts.map +1 -0
- package/dist/cjs/router.js +1378 -0
- package/dist/cjs/router.js.map +1 -0
- package/dist/cjs/status.d.ts +77 -0
- package/dist/cjs/status.d.ts.map +1 -0
- package/dist/cjs/status.js +252 -0
- package/dist/cjs/status.js.map +1 -0
- package/dist/cjs/types.d.ts +135 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +109 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +11 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +76 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/utils.node.d.ts +4 -0
- package/dist/cjs/utils.node.d.ts.map +1 -0
- package/dist/cjs/utils.node.js +99 -0
- package/dist/cjs/utils.node.js.map +1 -0
- package/dist/helpers.d.ts +180 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +366 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares.d.ts +88 -0
- package/dist/middlewares.d.ts.map +1 -0
- package/dist/middlewares.js +262 -0
- package/dist/middlewares.js.map +1 -0
- package/dist/parsers.d.ts +177 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +1021 -0
- package/dist/parsers.js.map +1 -0
- package/dist/router.d.ts +124 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +1378 -0
- package/dist/router.js.map +1 -0
- package/dist/status.d.ts +77 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +252 -0
- package/dist/status.js.map +1 -0
- package/dist/types.d.ts +135 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +109 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +76 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.node.d.ts +4 -0
- package/dist/utils.node.d.ts.map +1 -0
- package/dist/utils.node.js +66 -0
- package/dist/utils.node.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.cors = exports.limitRate = void 0;
|
|
13
|
+
const helpers_ts_1 = require("./helpers.js");
|
|
14
|
+
const types_ts_1 = require("./types.js");
|
|
15
|
+
/**
|
|
16
|
+
* Creates a rate limiting middleware using token bucket algorithm.
|
|
17
|
+
* Supports both fixed interval refill and continuous rate-based refill.
|
|
18
|
+
*
|
|
19
|
+
* @template {Record<string, unknown>} ExtendContext - Extend Router Context
|
|
20
|
+
* @param {Object} config - Rate limiting configuration
|
|
21
|
+
* @param {Function} [config.key] - Function to generate cache key from request and context
|
|
22
|
+
* @param {number} [config.maxTokens] - Maximum number of tokens in the bucket
|
|
23
|
+
* @param {number} [config.refillInterval] - Fixed interval in seconds for token refill
|
|
24
|
+
* @param {number} [config.refillRate] - Continuous refill rate in tokens per second
|
|
25
|
+
* @param {number} [config.cleanUpInterval] - Interval in seconds for cleanup timer
|
|
26
|
+
* @param {number} [config.cleanUpIdleDelay] - Time in seconds to delay cleanup of filled token buckets
|
|
27
|
+
* @param {boolean} [config.setXRateLimitHeaders=false] - Whether to set X-RateLimit headers in response
|
|
28
|
+
* @returns {Function} Middleware function that enforces rate limits
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // Fixed interval rate limiting (10 requests per minute)
|
|
32
|
+
* const rateLimiter = limitRate({
|
|
33
|
+
* key: (ctx) => ctx.clientId, // IP-based limiting
|
|
34
|
+
* refillInterval: 60, // 1 minute
|
|
35
|
+
* refillRate: 10, // 10 tokens per interval
|
|
36
|
+
* maxTokens: 10,
|
|
37
|
+
* setXRateLimitHeaders: true
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Continuous rate limiting (100 requests per hour)
|
|
42
|
+
* const rateLimiter = limitRate({
|
|
43
|
+
* key: (ctx) => ctx.clientId || 'anonymous',
|
|
44
|
+
* refillRate: 60, // 100 tokens per 60 seconds
|
|
45
|
+
* maxTokens: 100,
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* @throws {RouterError} If neither refillInterval nor refillRate is provided
|
|
49
|
+
*/
|
|
50
|
+
const limitRate = (config) => {
|
|
51
|
+
var _a;
|
|
52
|
+
const { key, maxTokens, refillInterval, refillRate, cleanUpInterval, setXRateLimitHeaders = false, breakPipeline = false, } = config;
|
|
53
|
+
const cleanUpIdleDelay = -((_a = config.cleanUpIdleDelay) !== null && _a !== void 0 ? _a : 0);
|
|
54
|
+
const rateLimits = new Map();
|
|
55
|
+
const now = () => performance.now() / 1000;
|
|
56
|
+
const getRateLimits = (id) => {
|
|
57
|
+
let entry = rateLimits.get(id);
|
|
58
|
+
if (entry == null) {
|
|
59
|
+
entry = {
|
|
60
|
+
tokens: maxTokens,
|
|
61
|
+
lastRefill: now(),
|
|
62
|
+
};
|
|
63
|
+
rateLimits.set(id, entry);
|
|
64
|
+
}
|
|
65
|
+
return entry;
|
|
66
|
+
};
|
|
67
|
+
const timeToFill = (key) => {
|
|
68
|
+
const entry = rateLimits.get(key);
|
|
69
|
+
if (entry == null) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const timeElapsed = now() - entry.lastRefill;
|
|
73
|
+
if (refillInterval != null) {
|
|
74
|
+
const timeLeft = refillRate != null
|
|
75
|
+
? (maxTokens - entry.tokens) / (refillRate / refillInterval) -
|
|
76
|
+
timeElapsed
|
|
77
|
+
: refillInterval - timeElapsed;
|
|
78
|
+
return timeLeft;
|
|
79
|
+
}
|
|
80
|
+
else if (refillRate != null) {
|
|
81
|
+
const timeLeft = (maxTokens - entry.tokens) / refillRate - timeElapsed;
|
|
82
|
+
return timeLeft;
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
85
|
+
};
|
|
86
|
+
const cleanUpRateLimits = () => {
|
|
87
|
+
for (const key of rateLimits.keys()) {
|
|
88
|
+
const timeLeft = timeToFill(key);
|
|
89
|
+
if (timeLeft == null) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (timeLeft <= cleanUpIdleDelay) {
|
|
93
|
+
rateLimits.delete(key);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
if (cleanUpInterval != null) {
|
|
98
|
+
setInterval(cleanUpRateLimits, cleanUpInterval * 1000);
|
|
99
|
+
}
|
|
100
|
+
if (refillInterval != null) {
|
|
101
|
+
return function (ctx) {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
const id = yield key(ctx);
|
|
104
|
+
const entry = getRateLimits(id);
|
|
105
|
+
const timeElapsed = now() - entry.lastRefill;
|
|
106
|
+
if (timeElapsed >= refillInterval) {
|
|
107
|
+
if (refillRate != null) {
|
|
108
|
+
const newTokens = entry.tokens +
|
|
109
|
+
refillRate * Math.floor(timeElapsed / refillInterval);
|
|
110
|
+
entry.tokens = Math.min(newTokens, maxTokens);
|
|
111
|
+
entry.lastRefill = now();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
entry.tokens = maxTokens;
|
|
115
|
+
entry.lastRefill = now();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (entry.tokens <= 0) {
|
|
119
|
+
ctx.headers.set("Retry-After", Math.ceil(refillInterval - timeElapsed).toFixed());
|
|
120
|
+
return (0, helpers_ts_1.status)(429);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
entry.tokens--;
|
|
124
|
+
}
|
|
125
|
+
if (setXRateLimitHeaders) {
|
|
126
|
+
ctx.headers.set("X-RateLimit-Limit", maxTokens.toFixed());
|
|
127
|
+
ctx.headers.set("X-RateLimit-Remaining", entry.tokens.toFixed());
|
|
128
|
+
}
|
|
129
|
+
if (breakPipeline) {
|
|
130
|
+
return types_ts_1.Break_Pipeline;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
else if (refillRate != null) {
|
|
136
|
+
return function (ctx) {
|
|
137
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
+
const id = yield key(ctx);
|
|
139
|
+
const entry = getRateLimits(id);
|
|
140
|
+
const timeElapsed = now() - entry.lastRefill;
|
|
141
|
+
const newTokens = entry.tokens + refillRate * timeElapsed;
|
|
142
|
+
entry.tokens = Math.min(newTokens, maxTokens);
|
|
143
|
+
entry.lastRefill = now();
|
|
144
|
+
if (entry.tokens <= 0) {
|
|
145
|
+
ctx.headers.set("Retry-After", Math.ceil(1 / refillRate).toFixed());
|
|
146
|
+
return (0, helpers_ts_1.status)(429);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
entry.tokens--;
|
|
150
|
+
}
|
|
151
|
+
if (setXRateLimitHeaders) {
|
|
152
|
+
ctx.headers.set("X-RateLimit-Limit", maxTokens.toFixed());
|
|
153
|
+
ctx.headers.set("X-RateLimit-Remaining", Math.max(0, entry.tokens).toFixed());
|
|
154
|
+
}
|
|
155
|
+
if (breakPipeline) {
|
|
156
|
+
return types_ts_1.Break_Pipeline;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
throw new types_ts_1.RouterError("LIMIT-RATE: `refillInterval` or `refillRate` or both should be set");
|
|
162
|
+
};
|
|
163
|
+
exports.limitRate = limitRate;
|
|
164
|
+
/**
|
|
165
|
+
* Creates a CORS (Cross-Origin Resource Sharing) middleware.
|
|
166
|
+
* Supports preflight requests and configurable CORS headers.
|
|
167
|
+
*
|
|
168
|
+
* @template {Record<string, unknown>} ExtendContext - Extend Router Context
|
|
169
|
+
* @param {Object} [config] - CORS configuration
|
|
170
|
+
* @param {string|string[]|"*"} [config.origins="*"] - Allowed origins (wildcard "*", single origin, or array)
|
|
171
|
+
* @param {HttpMethod[]} [config.methods=["GET","HEAD","PUT","PATCH","POST","DELETE"]] - Allowed HTTP methods
|
|
172
|
+
* @param {string[]} [config.allowedHeaders=["Content-Type","Authorization"]] - Allowed request headers
|
|
173
|
+
* @param {string[]} [config.exposedHeaders] - Headers exposed to the browser
|
|
174
|
+
* @param {boolean} [config.credentials=false] - Allow credentials (cookies, authorization headers)
|
|
175
|
+
* @param {number} [config.maxAge=86400] - Maximum age for preflight cache in seconds
|
|
176
|
+
* @param {boolean} [config.varyOrigin=false] - Add Vary: Origin header for caching
|
|
177
|
+
* @param {boolean} [options.breakPipeline=false] - If true, stops only pipeline flow per handler type after success.
|
|
178
|
+
* @returns {Function} Middleware function that handles CORS headers
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* // Basic CORS with all defaults
|
|
182
|
+
* const corsMiddleware = cors();
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* // Specific origins with credentials
|
|
186
|
+
* const corsMiddleware = cors({
|
|
187
|
+
* origins: ["https://example.com", "https://api.example.com"],
|
|
188
|
+
* credentials: true,
|
|
189
|
+
* methods: ["GET", "POST", "PUT", "DELETE"],
|
|
190
|
+
* allowedHeaders: ["Content-Type", "Authorization", "X-Custom-Header"]
|
|
191
|
+
* });
|
|
192
|
+
*
|
|
193
|
+
* @throws {HttpError} If credentials is true with wildcard origin ("*")
|
|
194
|
+
*/
|
|
195
|
+
const cors = (config) => {
|
|
196
|
+
const { origins = "*", methods = ["Get", "Head", "Put", "Patch", "Post", "Delete"], allowedHeaders = ["Content-Type", "Authorization"], exposedHeaders, credentials = false, maxAge = 86400, varyOrigin = false, breakPipeline = false, } = config !== null && config !== void 0 ? config : {};
|
|
197
|
+
const globOrigin = origins === "*" ? "*" : null;
|
|
198
|
+
const originsSet = new Set(typeof origins !== "string" ? origins : origins !== "*" ? [] : [origins]);
|
|
199
|
+
if (methods != null) {
|
|
200
|
+
for (let i = 0; i < methods.length; i++) {
|
|
201
|
+
methods[i] = methods[i].toUpperCase();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return function (ctx) {
|
|
205
|
+
const { request, headers } = ctx;
|
|
206
|
+
const origin = request.headers.get("origin");
|
|
207
|
+
let corsOrigin = null;
|
|
208
|
+
if (!origin) {
|
|
209
|
+
if (breakPipeline) {
|
|
210
|
+
return types_ts_1.Break_Pipeline;
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (globOrigin) {
|
|
215
|
+
corsOrigin = "*";
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
corsOrigin = originsSet.has(origin) ? origin : null;
|
|
219
|
+
}
|
|
220
|
+
if (!corsOrigin) {
|
|
221
|
+
if (varyOrigin)
|
|
222
|
+
ctx.headers.append("Vary", "Origin");
|
|
223
|
+
if (breakPipeline) {
|
|
224
|
+
return types_ts_1.Break_Pipeline;
|
|
225
|
+
}
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
headers.set("Access-Control-Allow-Origin", corsOrigin);
|
|
229
|
+
if (credentials) {
|
|
230
|
+
if (corsOrigin === "*")
|
|
231
|
+
throw new types_ts_1.HttpError(403, "CORS: Cannot use credentials with wildcard origin");
|
|
232
|
+
headers.set("Access-Control-Allow-Credentials", "true");
|
|
233
|
+
}
|
|
234
|
+
if (exposedHeaders && exposedHeaders.length > 0) {
|
|
235
|
+
headers.set("Access-Control-Expose-Headers", exposedHeaders.join(", "));
|
|
236
|
+
}
|
|
237
|
+
if (varyOrigin) {
|
|
238
|
+
headers.append("Vary", "Origin");
|
|
239
|
+
}
|
|
240
|
+
if (request.method === "OPTIONS") {
|
|
241
|
+
if (methods && methods.length > 0) {
|
|
242
|
+
const requestMethod = request.headers.get("Access-Control-Request-Method");
|
|
243
|
+
if (requestMethod && !methods.includes(requestMethod)) {
|
|
244
|
+
return (0, helpers_ts_1.status)(405, `Method ${requestMethod} not allowed`);
|
|
245
|
+
}
|
|
246
|
+
headers.set("Access-Control-Allow-Methods", methods.join(", "));
|
|
247
|
+
}
|
|
248
|
+
if (allowedHeaders && allowedHeaders.length > 0) {
|
|
249
|
+
headers.set("Access-Control-Allow-Headers", allowedHeaders.join(", "));
|
|
250
|
+
}
|
|
251
|
+
if (maxAge) {
|
|
252
|
+
headers.set("Access-Control-Max-Age", maxAge.toString());
|
|
253
|
+
}
|
|
254
|
+
return (0, helpers_ts_1.status)(204, null);
|
|
255
|
+
}
|
|
256
|
+
if (breakPipeline) {
|
|
257
|
+
return types_ts_1.Break_Pipeline;
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
exports.cors = cors;
|
|
262
|
+
//# sourceMappingURL=middlewares.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../src/middlewares.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { Break_Pipe, Break_Pipeline, HttpError, type Context, type EmptyRecord, type Handler, type MimeType } from "./types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Parsed params.
|
|
4
|
+
*
|
|
5
|
+
* @type {Object} Params
|
|
6
|
+
*/
|
|
7
|
+
export type Params<Keys extends string = string, ExtendParams extends Record<Keys, string> | Record<string, string | unknown> = {}> = Omit<Record<Keys, string>, keyof ExtendParams> & ExtendParams;
|
|
8
|
+
/**
|
|
9
|
+
* Context object containing parsed params.
|
|
10
|
+
*
|
|
11
|
+
* @type {Object} CTParams
|
|
12
|
+
* @property {Record<string, string>} params - Parsed params
|
|
13
|
+
*/
|
|
14
|
+
export type CTParams<Keys extends string = string, ExtendParams extends Record<Keys, string> | Record<string, string | unknown> = {}> = {
|
|
15
|
+
params: Params<Keys, ExtendParams>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Parsed query.
|
|
19
|
+
*
|
|
20
|
+
* @type {Object} Query
|
|
21
|
+
*/
|
|
22
|
+
export type Query<Keys extends string = string, ExtendQuery extends Record<Keys, string> | Record<string, string | unknown> = {}> = Omit<Record<Keys, string>, keyof ExtendQuery> & ExtendQuery;
|
|
23
|
+
/**
|
|
24
|
+
* Context object containing parsed query.
|
|
25
|
+
*
|
|
26
|
+
* @template {string} Keys - Keys to extend context Query. "q"|"search"
|
|
27
|
+
* @template {Record<string, unknown>} ExtendQuery - Extend context Query
|
|
28
|
+
*
|
|
29
|
+
* @type {Object} CTQuery
|
|
30
|
+
* @property {Record<string, string>} query - Parsed query
|
|
31
|
+
*/
|
|
32
|
+
export type CTQuery<Keys extends string = string, ExtendQuery extends Record<Keys, string> | Record<string, string | unknown> = {}> = {
|
|
33
|
+
query: Query<Keys, ExtendQuery>;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Creates middleware that parses queries from the request url and adds them to the context.
|
|
37
|
+
*
|
|
38
|
+
* @template {string} Keys - Keys to extend context Query. "q"|"search"
|
|
39
|
+
* @template {Record<string, unknown>} ExtendQuery - Extend context Query
|
|
40
|
+
* @template {Record<string, unknown>} ExtendContext - Extend Router Context
|
|
41
|
+
*
|
|
42
|
+
* @returns {Function} A middleware function that adds parsed queries to context.query
|
|
43
|
+
*/
|
|
44
|
+
export declare const parseQuery: <Keys extends string = string, ExtendQuery extends Record<Keys, string> | Record<string, string | unknown> = {}, ExtendContext extends Record<string, unknown> = EmptyRecord>() => Handler<ExtendContext & CTQuery<Keys, ExtendQuery>>;
|
|
45
|
+
/**
|
|
46
|
+
* Parses cookies from a Request object's Cookie header.
|
|
47
|
+
* @template {Record<string, string>} Expected
|
|
48
|
+
* @param {Request} req - The request object containing cookies
|
|
49
|
+
* @returns {Expected|undefined} An object with cookie name-value pairs, or undefined if no cookies
|
|
50
|
+
* @example
|
|
51
|
+
* const cookies = parseCookieFromRequest(req);
|
|
52
|
+
* // Returns: { session: "abc123", theme: "dark" }
|
|
53
|
+
*/
|
|
54
|
+
export declare const parseCookieFromRequest: <Expected extends Record<string, string>>(req: Request, cookies?: Expected) => Expected | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Parsed cookie.
|
|
57
|
+
*
|
|
58
|
+
* @type {Object} Cookies
|
|
59
|
+
* @template {string} Keys - Keys to extend context Cookie. "session"|"geo"
|
|
60
|
+
* @template {Record<string, string>} ExtendCookie - Extend context Cookie
|
|
61
|
+
*/
|
|
62
|
+
export type Cookies<Keys extends string = string, ExtendCookie extends Record<Keys, string> | Record<string, string | unknown> = {}> = Omit<Record<Keys, string>, keyof ExtendCookie> & ExtendCookie;
|
|
63
|
+
/**
|
|
64
|
+
* Context object containing parsed cookie.
|
|
65
|
+
*
|
|
66
|
+
* @type {Object} CTCookie
|
|
67
|
+
* @property {Record<string, string|unknown>} cookie - Parsed cookie
|
|
68
|
+
*/
|
|
69
|
+
export type CTCookie<Keys extends string = string, ExtendCookie extends Record<Keys, string> | Record<string, string | unknown> = {}> = {
|
|
70
|
+
cookie: Cookies<Keys, ExtendCookie>;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Creates middleware that parses cookies from the request and adds them to the context.
|
|
74
|
+
*
|
|
75
|
+
* @template {string} Keys - Keys to extend context Cookie. "session"|"geo"
|
|
76
|
+
* @template {Record<string, string>} ExtendCookie - Extend context Cookie
|
|
77
|
+
* @template {Record<string, string>} ExtendContext - Extend Router Context
|
|
78
|
+
*
|
|
79
|
+
* @returns {Function} A middleware function that adds parsed cookies to context.cookie
|
|
80
|
+
*/
|
|
81
|
+
export declare const parseCookie: <Keys extends string = string, ExtendCookie extends Record<Keys, string> | Record<string, string | unknown> = {}, ExtendContext extends Record<string, unknown> = EmptyRecord>() => Handler<ExtendContext & CTCookie<Keys, ExtendCookie>>;
|
|
82
|
+
/**
|
|
83
|
+
* Parsed body object types.
|
|
84
|
+
* @type {Object|Array<unknown>|string|null|undefined} ParsedBody
|
|
85
|
+
*/
|
|
86
|
+
export type ParsedBody = Record<string, unknown> | Array<unknown> | string | number | boolean | null | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Context object containing parsed request body.
|
|
89
|
+
*
|
|
90
|
+
* @type {Object} CTBody
|
|
91
|
+
* @template {any | ParsedBody} BodyType - Define body type
|
|
92
|
+
* @property {ParsedBody} body - Parsed request body data
|
|
93
|
+
*/
|
|
94
|
+
export type CTBody<BodyType = ParsedBody> = {
|
|
95
|
+
body: BodyType;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Supported media types for request body parsing.
|
|
99
|
+
* @type {"application/x-www-form-urlencoded"|"application/json"|"application/rjson"|"text/plain"} SupportedBodyMediaTypes
|
|
100
|
+
*/
|
|
101
|
+
export type SupportedBodyMediaTypes = "application/x-www-form-urlencoded" | "application/json" | "application/rjson" | "text/plain";
|
|
102
|
+
/**
|
|
103
|
+
* Fronzen Set of supported media types for request body parsing.
|
|
104
|
+
*/
|
|
105
|
+
export declare const SUPPORTED_MEDIA_TYPES: Readonly<Set<string>>;
|
|
106
|
+
/**
|
|
107
|
+
* Fronzen Array of supported media types for request body parsing.
|
|
108
|
+
*/
|
|
109
|
+
export declare const SUPPORTED_MEDIA_TYPES_LIST: readonly string[];
|
|
110
|
+
/**
|
|
111
|
+
* Creates middleware that parses the request body based on Content-Type.
|
|
112
|
+
* Supports url-encoded forms, JSON, RJSON, and plain text.
|
|
113
|
+
*
|
|
114
|
+
* @template {Record<string, unknown>} ExtendContext - Extend Router Context
|
|
115
|
+
* @param {Object} [options] - Configuration options for body parsing
|
|
116
|
+
* @param {SupportedBodyMediaTypes|SupportedBodyMediaTypes[]} [options.accept] - Media types to accept (defaults to all supported)
|
|
117
|
+
* @param {number} [options.maxSize] - Maximum body size in bytes (defaults to 1MB)
|
|
118
|
+
* @param {number} [options.once] - Do not parse if parsed already. checks `ctx.body`
|
|
119
|
+
* @param {number} [options.clone] - Clone request before parsing it. Useful for forwarding.
|
|
120
|
+
* @returns {Function} A middleware function that adds parsed body to context.body
|
|
121
|
+
* @returns {Response} Returns a 415 response if content-type is not accepted
|
|
122
|
+
* @returns {Response} Returns a 413 response if body exceeds maxSize
|
|
123
|
+
* @returns {Response} Returns a 400 response if body is malformed
|
|
124
|
+
*/
|
|
125
|
+
export declare const parseBody: <ExtendContext extends Record<string, unknown> = EmptyRecord>(options?: {
|
|
126
|
+
accept?: SupportedBodyMediaTypes | SupportedBodyMediaTypes[];
|
|
127
|
+
maxSize?: number;
|
|
128
|
+
once?: boolean;
|
|
129
|
+
clone?: boolean;
|
|
130
|
+
}) => Handler<ExtendContext & CTBody>;
|
|
131
|
+
export declare const parseHeaders: (rawHeaders: Uint8Array, contentDisposition?: object) => Headers;
|
|
132
|
+
export type ParsedFormDataFile<ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord> = {
|
|
133
|
+
name: string;
|
|
134
|
+
type: MimeType;
|
|
135
|
+
size: number;
|
|
136
|
+
totalSize?: number;
|
|
137
|
+
} & ExtendParsedFormDataFile;
|
|
138
|
+
export type CTFormData<ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord> = {
|
|
139
|
+
files: Map<string, ParsedFormDataFile<ExtendParsedFormDataFile>>;
|
|
140
|
+
fields: Map<string, string | any>;
|
|
141
|
+
};
|
|
142
|
+
export type ParseMultipartCallbacksReturnType = Response | typeof Break_Pipeline | typeof Break_Pipe | void | Promise<Response | typeof Break_Pipeline | typeof Break_Pipe | void>;
|
|
143
|
+
export declare const parseMultipart: <ExtendContext extends Record<string, unknown> = EmptyRecord, ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord>({ idGenerator, onStart, onEnd, onHeader, onData, onDataCompletion, }: {
|
|
144
|
+
idGenerator?: (info: {
|
|
145
|
+
headers: Headers;
|
|
146
|
+
name: string;
|
|
147
|
+
filename?: string;
|
|
148
|
+
}) => string;
|
|
149
|
+
onStart?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>) => ParseMultipartCallbacksReturnType;
|
|
150
|
+
onEnd?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
|
|
151
|
+
success: boolean;
|
|
152
|
+
error?: Error | HttpError;
|
|
153
|
+
}) => ParseMultipartCallbacksReturnType;
|
|
154
|
+
onHeader?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
|
|
155
|
+
headers: Headers;
|
|
156
|
+
id: string;
|
|
157
|
+
name: string;
|
|
158
|
+
filename?: string;
|
|
159
|
+
file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
|
|
160
|
+
}) => ParseMultipartCallbacksReturnType;
|
|
161
|
+
onData: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
|
|
162
|
+
chunk: Uint8Array;
|
|
163
|
+
headers: Headers;
|
|
164
|
+
id: string;
|
|
165
|
+
name: string;
|
|
166
|
+
filename?: string;
|
|
167
|
+
file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
|
|
168
|
+
}) => ParseMultipartCallbacksReturnType;
|
|
169
|
+
onDataCompletion: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
|
|
170
|
+
headers: Headers;
|
|
171
|
+
id: string;
|
|
172
|
+
name: string;
|
|
173
|
+
filename?: string;
|
|
174
|
+
file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
|
|
175
|
+
}) => ParseMultipartCallbacksReturnType;
|
|
176
|
+
}) => Handler<CTFormData<ExtendParsedFormDataFile> & ExtendContext>;
|
|
177
|
+
//# sourceMappingURL=parsers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"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"}
|