@bepalo/router 1.2.13 → 1.5.20

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.
@@ -76,12 +76,8 @@ export type HandlerType = "filter" | "hook" | "handler" | "fallback" | "catcher"
76
76
  * }
77
77
  */
78
78
  export type HandlerResponse = Response | void | boolean | Promise<Response | void | boolean>;
79
- export interface BoundHandler<XContext = {}> {
80
- (this: Router<XContext>, req: Request, ctx: RouterContext<XContext>): HandlerResponse;
81
- }
82
- export interface NonBoundHandler<XContext = {}> {
83
- (req: Request, ctx: RouterContext<XContext>): HandlerResponse;
84
- }
79
+ export type BoundHandler<XContext = {}> = (this: Router<XContext>, req: Request, ctx: RouterContext<XContext>) => HandlerResponse;
80
+ export type FreeHandler<XContext = {}> = (req: Request, ctx: RouterContext<XContext>) => HandlerResponse;
85
81
  /**
86
82
  * Generic handler function type.
87
83
  * Represents a function that processes HTTP requests.
@@ -109,7 +105,7 @@ export interface NonBoundHandler<XContext = {}> {
109
105
  * // Return nothing to continue to next handler
110
106
  * };
111
107
  */
112
- export type Handler<XContext = {}> = NonBoundHandler<XContext> | BoundHandler<XContext>;
108
+ export type Handler<XContext = {}> = FreeHandler<XContext> | BoundHandler<XContext>;
113
109
  /**
114
110
  * Array of handler functions executed in sequence.
115
111
  * Used to group multiple handlers for a route.
@@ -138,4 +134,30 @@ export type Pipeline<Context = {}> = Array<Handler<Context>>;
138
134
  *
139
135
  */
140
136
  export type HeaderTuple = [string, string];
137
+ /**
138
+ * Generic SocketAddress structure
139
+ *
140
+ * @typedef {{address:string;family:string;port:number;}} SocketAddress
141
+ */
142
+ export interface SocketAddress {
143
+ address: string;
144
+ family: string;
145
+ port: number;
146
+ }
147
+ /**
148
+ * Router Context for certain error
149
+ *
150
+ * @typedef {{error:Error}} CTXError
151
+ */
152
+ export type CTXError = {
153
+ error: Error;
154
+ };
155
+ /**
156
+ * Router Context for sharing client address
157
+ *
158
+ * @typedef {{address:SocketAddress}} CTXAddress
159
+ */
160
+ export type CTXAddress = {
161
+ address: SocketAddress;
162
+ };
141
163
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,SAAS,GACT,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,CAAC;AAEb;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,MAAM,GACN,SAAS,GACT,UAAU,GACV,SAAS,GACT,OAAO,CAAC;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;AAEvC,MAAM,WAAW,YAAY,CAAC,QAAQ,GAAG,EAAE;IACzC,CACE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC3B,eAAe,CAAC;CACpB;AAED,MAAM,WAAW,eAAe,CAAC,QAAQ,GAAG,EAAE;IAC5C,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,OAAO,CAAC,QAAQ,GAAG,EAAE,IAC7B,eAAe,CAAC,QAAQ,CAAC,GACzB,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,QAAQ,CAAC,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,SAAS,GACT,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,CAAC;AAEb;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,MAAM,GACN,SAAS,GACT,UAAU,GACV,SAAS,GACT,OAAO,CAAC;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;AAEvC,MAAM,MAAM,YAAY,CAAC,QAAQ,GAAG,EAAE,IAAI,CACxC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EACtB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,KACzB,eAAe,CAAC;AAErB,MAAM,MAAM,WAAW,CAAC,QAAQ,GAAG,EAAE,IAAI,CACvC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,KACzB,eAAe,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,OAAO,CAAC,QAAQ,GAAG,EAAE,IAC7B,WAAW,CAAC,QAAQ,CAAC,GACrB,YAAY,CAAC,QAAQ,CAAC,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,QAAQ,CAAC,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAExC;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Handler } from "./types";
1
+ import { FreeHandler } from "./types";
2
2
  /**
3
3
  * Context object containing parsed upload data from multipart/form-data requests.
4
4
  * @typedef {Object} CTXUpload
@@ -57,7 +57,7 @@ export type StreamingUploadOptions = {
57
57
  uploadIdGenerator?: () => string | Promise<string>;
58
58
  onUploadStart?: (uploadId: string, totalSize: number) => Promise<void>;
59
59
  onUploadComplete?: (uploadId: string, success: boolean) => Promise<void>;
60
- onFileStart?: (uploadId: string, fieldName: string, fileName: string, contentType: string, fileSize?: number) => Promise<{
60
+ onFileStart?: (uploadId: string, fieldName: string, fileName: string, contentType: string) => Promise<{
61
61
  customFilename?: string;
62
62
  metadata?: Record<string, any>;
63
63
  } | void>;
@@ -102,5 +102,5 @@ export type StreamingUploadOptions = {
102
102
  * });
103
103
  * });
104
104
  */
105
- export declare const parseUploadStreaming: <Context extends CTXUpload>(options?: StreamingUploadOptions) => Handler<Context>;
105
+ export declare const parseUploadStreaming: <XContext = {}>(options?: StreamingUploadOptions) => FreeHandler<XContext & CTXUpload>;
106
106
  //# sourceMappingURL=upload-stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-stream.d.ts","sourceRoot":"","sources":["../../src/upload-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-stream.d.ts","sourceRoot":"","sources":["../../src/upload-stream.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ const helpers_1 = require("./helpers");
49
49
  const parseUploadStreaming = (options) => {
50
50
  const { maxTotalSize = 100 * 1024 * 1024, // 100MB default
51
51
  maxFileSize = 20 * 1024 * 1024, // 20MB per file
52
- maxFiles = 50, maxFields = 1000, allowedTypes, uploadIdGenerator = () => `upload_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, onUploadStart, onUploadComplete, onFileStart, onFileChunk, onFileComplete, onFileError, onField, onError, } = options || {};
52
+ maxFiles = 50, maxFields = 1000, allowedTypes, uploadIdGenerator = () => `upload_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`, onUploadStart, onUploadComplete, onFileStart, onFileChunk, onFileComplete, onFileError, onField, onError, } = options || {};
53
53
  return (req, ctx) => __awaiter(void 0, void 0, void 0, function* () {
54
54
  var _a;
55
55
  const contentType = req.headers.get("content-type");
@@ -81,7 +81,6 @@ const parseUploadStreaming = (options) => {
81
81
  let currentPart = null;
82
82
  const boundaryBytes = new TextEncoder().encode(`--${boundary}`);
83
83
  const boundaryEndBytes = new TextEncoder().encode(`--${boundary}--`);
84
- const crlfBytes = new TextEncoder().encode("\r\n");
85
84
  const headerEndBytes = new TextEncoder().encode("\r\n\r\n");
86
85
  // Notify upload start
87
86
  if (onUploadStart) {
@@ -1 +1 @@
1
- {"version":3,"file":"upload-stream.js","sourceRoot":"","sources":["../../src/upload-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-stream.js","sourceRoot":"","sources":["../../src/upload-stream.ts"],"names":[],"mappings":"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"}
package/dist/helpers.d.ts CHANGED
@@ -1,17 +1,80 @@
1
- import { RouterContext } from "./router";
2
- import { Handler } from "./types";
1
+ import type { BoundHandler, HttpMethod } from "./types";
3
2
  export * from "./upload-stream";
4
- export interface SocketAddress {
5
- address: string;
6
- family: string;
7
- port: number;
3
+ export declare enum Status {
4
+ _100_Continue = 100,
5
+ _101_SwitchingProtocols = 101,
6
+ _102_Processing = 102,
7
+ _103_EarlyHints = 103,
8
+ _200_OK = 200,
9
+ _201_Created = 201,
10
+ _202_Accepted = 202,
11
+ _203_NonAuthoritativeInformation = 203,
12
+ _204_NoContent = 204,
13
+ _205_ResetContent = 205,
14
+ _206_PartialContent = 206,
15
+ _207_MultiStatus = 207,
16
+ _208_AlreadyReported = 208,
17
+ _226_IMUsed = 226,
18
+ _300_MultipleChoices = 300,
19
+ _301_MovedPermanently = 301,
20
+ _302_Found = 302,
21
+ _303_SeeOther = 303,
22
+ _304_NotModified = 304,
23
+ _305_UseProxy = 305,
24
+ _307_TemporaryRedirect = 307,
25
+ _308_PermanentRedirect = 308,
26
+ _400_BadRequest = 400,
27
+ _401_Unauthorized = 401,
28
+ _402_PaymentRequired = 402,
29
+ _403_Forbidden = 403,
30
+ _404_NotFound = 404,
31
+ _405_MethodNotAllowed = 405,
32
+ _406_NotAcceptable = 406,
33
+ _407_ProxyAuthenticationRequired = 407,
34
+ _408_RequestTimeout = 408,
35
+ _409_Conflict = 409,
36
+ _410_Gone = 410,
37
+ _411_LengthRequired = 411,
38
+ _412_PreconditionFailed = 412,
39
+ _413_PayloadTooLarge = 413,
40
+ _414_URITooLong = 414,
41
+ _415_UnsupportedMediaType = 415,
42
+ _416_RangeNotSatisfiable = 416,
43
+ _417_ExpectationFailed = 417,
44
+ _418_IMATeapot = 418,
45
+ _421_MisdirectedRequest = 421,
46
+ _422_UnprocessableEntity = 422,
47
+ _423_Locked = 423,
48
+ _424_FailedDependency = 424,
49
+ _425_TooEarly = 425,
50
+ _426_UpgradeRequired = 426,
51
+ _428_PreconditionRequired = 428,
52
+ _429_TooManyRequests = 429,
53
+ _431_RequestHeaderFieldsTooLarge = 431,
54
+ _451_UnavailableForLegalReasons = 451,
55
+ _500_InternalServerError = 500,
56
+ _501_NotImplemented = 501,
57
+ _502_BadGateway = 502,
58
+ _503_ServiceUnavailable = 503,
59
+ _504_GatewayTimeout = 504,
60
+ _505_HTTPVersionNotSupported = 505,
61
+ _506_VariantAlsoNegotiates = 506,
62
+ _507_InsufficientStorage = 507,
63
+ _508_LoopDetected = 508,
64
+ _510_NotExtended = 510,
65
+ _511_NetworkAuthenticationRequired = 511,
66
+ _419_PageExpired = 419,
67
+ _420_EnhanceYourCalm = 420,
68
+ _450_BlockedbyWindowsParentalControls = 450,
69
+ _498_InvalidToken = 498,
70
+ _499_TokenRequired = 499,
71
+ _509_BandwidthLimitExceeded = 509,
72
+ _526_InvalidSSLCertificate = 526,
73
+ _529_Siteisoverloaded = 529,
74
+ _530_Siteisfrozen = 530,
75
+ _598_NetworkReadTimeoutError = 598,
76
+ _599_NetworkConnectTimeoutError = 599
8
77
  }
9
- export type CTXError = {
10
- error: Error;
11
- };
12
- export type CTXAddress = {
13
- address: SocketAddress;
14
- };
15
78
  export declare function getHttpStatusText(code: number): string;
16
79
  /**
17
80
  * Creates a Response with the specified status code.
@@ -36,14 +99,18 @@ export declare const status: (status: number, content?: string | null, init?: Re
36
99
  */
37
100
  export declare const redirect: (location: string, init?: ResponseInit) => Response;
38
101
  /**
39
- * Forwards the request to another handler internally.
40
- * Does not change the URL or send a redirect to the client.
102
+ * Forwards the request to another route internally.
103
+ * Does not send a redirect to the client but changes the path and method,
104
+ * adds X-Forwarded-[Method|Path] and X-Original-Path headers and calls
105
+ * `(this as Router).respond(newReq, ctx)`.
106
+ * NOTE: parse body only once at the first handler using `parseBody({once: true})`
107
+ * as the body will be consumed at the first parseBody call.
41
108
  * @param {string} path - The new path to forward to
42
109
  * @returns {Response} A Response object with the forwarded request's response
43
110
  */
44
111
  export declare const forward: <XContext = {}>(path: string, options?: {
45
- method: string;
46
- }) => Handler<RouterContext<XContext>>;
112
+ method?: HttpMethod;
113
+ }) => BoundHandler<XContext>;
47
114
  /**
48
115
  * Creates a text/plain Response.
49
116
  * Defaults to status 200 and text/plain content-type if not specified.
@@ -194,53 +261,6 @@ export declare const clearCookie: (name: string, options?: CookieOptions) => Coo
194
261
  * // Returns: { session: "abc123", theme: "dark" }
195
262
  */
196
263
  export declare const parseCookieFromRequest: <Expected extends Record<string, string>>(req: Request) => Expected | undefined;
197
- /**
198
- * Context object containing parsed cookies.
199
- * @typedef {Object} CTXCookie
200
- * @property {Record<string, string>} cookie - Parsed cookies from the request
201
- */
202
- export type CTXCookie = {
203
- cookie: Record<string, string>;
204
- };
205
- /**
206
- * Creates middleware that parses cookies from the request and adds them to the context.
207
- * @returns {Function} A middleware function that adds parsed cookies to context.cookie
208
- * @example
209
- * const cookieParser = parseCookie();
210
- * // Use in respondWith: respondWith({}, cookieParser(), ...otherHandlers)
211
- */
212
- export declare const parseCookie: <Context extends CTXCookie>() => Handler<Context>;
213
- /**
214
- * Context object containing parsed request body.
215
- * @typedef {Object} CTXBody
216
- * @property {Record<string, unknown>} body - Parsed request body data
217
- */
218
- export type CTXBody = {
219
- body: Record<string, unknown>;
220
- };
221
- /**
222
- * Supported media types for request body parsing.
223
- * @typedef {"application/x-www-form-urlencoded"|"application/json"|"text/plain"} SupportedBodyMediaTypes
224
- */
225
- export type SupportedBodyMediaTypes = "application/x-www-form-urlencoded" | "application/json" | "text/plain";
226
- /**
227
- * Creates middleware that parses the request body based on Content-Type.
228
- * Supports url-encoded forms, JSON, and plain text.
229
- * @param {Object} [options] - Configuration options for body parsing
230
- * @param {SupportedBodyMediaTypes|SupportedBodyMediaTypes[]} [options.accept] - Media types to accept (defaults to all supported)
231
- * @param {number} [options.maxSize] - Maximum body size in bytes (defaults to 1MB)
232
- * @returns {Function} A middleware function that adds parsed body to context.body
233
- * @throws {Response} Returns a 415 response if content-type is not accepted
234
- * @throws {Response} Returns a 413 response if body exceeds maxSize
235
- * @throws {Response} Returns a 400 response if body is malformed
236
- * @example
237
- * const bodyParser = parseBody({ maxSize: 5000 });
238
- * // Use in respondWith: respondWith({}, bodyParser(), ...otherHandlers)
239
- */
240
- export declare const parseBody: <Context extends CTXBody>(options?: {
241
- accept?: SupportedBodyMediaTypes | SupportedBodyMediaTypes[];
242
- maxSize?: number;
243
- }) => Handler<Context>;
244
264
  /**
245
265
  * Request handler function type.
246
266
  * @callback RequestHandler
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
package/dist/helpers.js CHANGED
@@ -23,9 +23,85 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
23
23
  });
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.respondWithCatcher = exports.respondWith = exports.parseBody = exports.parseCookie = exports.parseCookieFromRequest = exports.clearCookie = exports.setCookie = exports.send = exports.usp = exports.formData = exports.octetStream = exports.blob = exports.json = exports.html = exports.text = exports.forward = exports.redirect = exports.status = void 0;
26
+ exports.respondWithCatcher = exports.respondWith = exports.parseCookieFromRequest = exports.clearCookie = exports.setCookie = exports.send = exports.usp = exports.formData = exports.octetStream = exports.blob = exports.json = exports.html = exports.text = exports.forward = exports.redirect = exports.status = exports.Status = void 0;
27
27
  exports.getHttpStatusText = getHttpStatusText;
28
28
  __exportStar(require("./upload-stream"), exports);
29
+ var Status;
30
+ (function (Status) {
31
+ Status[Status["_100_Continue"] = 100] = "_100_Continue";
32
+ Status[Status["_101_SwitchingProtocols"] = 101] = "_101_SwitchingProtocols";
33
+ Status[Status["_102_Processing"] = 102] = "_102_Processing";
34
+ Status[Status["_103_EarlyHints"] = 103] = "_103_EarlyHints";
35
+ Status[Status["_200_OK"] = 200] = "_200_OK";
36
+ Status[Status["_201_Created"] = 201] = "_201_Created";
37
+ Status[Status["_202_Accepted"] = 202] = "_202_Accepted";
38
+ Status[Status["_203_NonAuthoritativeInformation"] = 203] = "_203_NonAuthoritativeInformation";
39
+ Status[Status["_204_NoContent"] = 204] = "_204_NoContent";
40
+ Status[Status["_205_ResetContent"] = 205] = "_205_ResetContent";
41
+ Status[Status["_206_PartialContent"] = 206] = "_206_PartialContent";
42
+ Status[Status["_207_MultiStatus"] = 207] = "_207_MultiStatus";
43
+ Status[Status["_208_AlreadyReported"] = 208] = "_208_AlreadyReported";
44
+ Status[Status["_226_IMUsed"] = 226] = "_226_IMUsed";
45
+ Status[Status["_300_MultipleChoices"] = 300] = "_300_MultipleChoices";
46
+ Status[Status["_301_MovedPermanently"] = 301] = "_301_MovedPermanently";
47
+ Status[Status["_302_Found"] = 302] = "_302_Found";
48
+ Status[Status["_303_SeeOther"] = 303] = "_303_SeeOther";
49
+ Status[Status["_304_NotModified"] = 304] = "_304_NotModified";
50
+ Status[Status["_305_UseProxy"] = 305] = "_305_UseProxy";
51
+ Status[Status["_307_TemporaryRedirect"] = 307] = "_307_TemporaryRedirect";
52
+ Status[Status["_308_PermanentRedirect"] = 308] = "_308_PermanentRedirect";
53
+ Status[Status["_400_BadRequest"] = 400] = "_400_BadRequest";
54
+ Status[Status["_401_Unauthorized"] = 401] = "_401_Unauthorized";
55
+ Status[Status["_402_PaymentRequired"] = 402] = "_402_PaymentRequired";
56
+ Status[Status["_403_Forbidden"] = 403] = "_403_Forbidden";
57
+ Status[Status["_404_NotFound"] = 404] = "_404_NotFound";
58
+ Status[Status["_405_MethodNotAllowed"] = 405] = "_405_MethodNotAllowed";
59
+ Status[Status["_406_NotAcceptable"] = 406] = "_406_NotAcceptable";
60
+ Status[Status["_407_ProxyAuthenticationRequired"] = 407] = "_407_ProxyAuthenticationRequired";
61
+ Status[Status["_408_RequestTimeout"] = 408] = "_408_RequestTimeout";
62
+ Status[Status["_409_Conflict"] = 409] = "_409_Conflict";
63
+ Status[Status["_410_Gone"] = 410] = "_410_Gone";
64
+ Status[Status["_411_LengthRequired"] = 411] = "_411_LengthRequired";
65
+ Status[Status["_412_PreconditionFailed"] = 412] = "_412_PreconditionFailed";
66
+ Status[Status["_413_PayloadTooLarge"] = 413] = "_413_PayloadTooLarge";
67
+ Status[Status["_414_URITooLong"] = 414] = "_414_URITooLong";
68
+ Status[Status["_415_UnsupportedMediaType"] = 415] = "_415_UnsupportedMediaType";
69
+ Status[Status["_416_RangeNotSatisfiable"] = 416] = "_416_RangeNotSatisfiable";
70
+ Status[Status["_417_ExpectationFailed"] = 417] = "_417_ExpectationFailed";
71
+ Status[Status["_418_IMATeapot"] = 418] = "_418_IMATeapot";
72
+ Status[Status["_421_MisdirectedRequest"] = 421] = "_421_MisdirectedRequest";
73
+ Status[Status["_422_UnprocessableEntity"] = 422] = "_422_UnprocessableEntity";
74
+ Status[Status["_423_Locked"] = 423] = "_423_Locked";
75
+ Status[Status["_424_FailedDependency"] = 424] = "_424_FailedDependency";
76
+ Status[Status["_425_TooEarly"] = 425] = "_425_TooEarly";
77
+ Status[Status["_426_UpgradeRequired"] = 426] = "_426_UpgradeRequired";
78
+ Status[Status["_428_PreconditionRequired"] = 428] = "_428_PreconditionRequired";
79
+ Status[Status["_429_TooManyRequests"] = 429] = "_429_TooManyRequests";
80
+ Status[Status["_431_RequestHeaderFieldsTooLarge"] = 431] = "_431_RequestHeaderFieldsTooLarge";
81
+ Status[Status["_451_UnavailableForLegalReasons"] = 451] = "_451_UnavailableForLegalReasons";
82
+ Status[Status["_500_InternalServerError"] = 500] = "_500_InternalServerError";
83
+ Status[Status["_501_NotImplemented"] = 501] = "_501_NotImplemented";
84
+ Status[Status["_502_BadGateway"] = 502] = "_502_BadGateway";
85
+ Status[Status["_503_ServiceUnavailable"] = 503] = "_503_ServiceUnavailable";
86
+ Status[Status["_504_GatewayTimeout"] = 504] = "_504_GatewayTimeout";
87
+ Status[Status["_505_HTTPVersionNotSupported"] = 505] = "_505_HTTPVersionNotSupported";
88
+ Status[Status["_506_VariantAlsoNegotiates"] = 506] = "_506_VariantAlsoNegotiates";
89
+ Status[Status["_507_InsufficientStorage"] = 507] = "_507_InsufficientStorage";
90
+ Status[Status["_508_LoopDetected"] = 508] = "_508_LoopDetected";
91
+ Status[Status["_510_NotExtended"] = 510] = "_510_NotExtended";
92
+ Status[Status["_511_NetworkAuthenticationRequired"] = 511] = "_511_NetworkAuthenticationRequired";
93
+ Status[Status["_419_PageExpired"] = 419] = "_419_PageExpired";
94
+ Status[Status["_420_EnhanceYourCalm"] = 420] = "_420_EnhanceYourCalm";
95
+ Status[Status["_450_BlockedbyWindowsParentalControls"] = 450] = "_450_BlockedbyWindowsParentalControls";
96
+ Status[Status["_498_InvalidToken"] = 498] = "_498_InvalidToken";
97
+ Status[Status["_499_TokenRequired"] = 499] = "_499_TokenRequired";
98
+ Status[Status["_509_BandwidthLimitExceeded"] = 509] = "_509_BandwidthLimitExceeded";
99
+ Status[Status["_526_InvalidSSLCertificate"] = 526] = "_526_InvalidSSLCertificate";
100
+ Status[Status["_529_Siteisoverloaded"] = 529] = "_529_Siteisoverloaded";
101
+ Status[Status["_530_Siteisfrozen"] = 530] = "_530_Siteisfrozen";
102
+ Status[Status["_598_NetworkReadTimeoutError"] = 598] = "_598_NetworkReadTimeoutError";
103
+ Status[Status["_599_NetworkConnectTimeoutError"] = 599] = "_599_NetworkConnectTimeoutError";
104
+ })(Status || (exports.Status = Status = {}));
29
105
  function getHttpStatusText(code) {
30
106
  switch (code) {
31
107
  // 1xx Informational
@@ -239,8 +315,12 @@ const redirect = (location, init) => {
239
315
  };
240
316
  exports.redirect = redirect;
241
317
  /**
242
- * Forwards the request to another handler internally.
243
- * Does not change the URL or send a redirect to the client.
318
+ * Forwards the request to another route internally.
319
+ * Does not send a redirect to the client but changes the path and method,
320
+ * adds X-Forwarded-[Method|Path] and X-Original-Path headers and calls
321
+ * `(this as Router).respond(newReq, ctx)`.
322
+ * NOTE: parse body only once at the first handler using `parseBody({once: true})`
323
+ * as the body will be consumed at the first parseBody call.
244
324
  * @param {string} path - The new path to forward to
245
325
  * @returns {Response} A Response object with the forwarded request's response
246
326
  */
@@ -248,13 +328,19 @@ const forward = (path, options) => {
248
328
  return function (req, ctx) {
249
329
  return __awaiter(this, void 0, void 0, function* () {
250
330
  var _a;
331
+ const method = (_a = options === null || options === void 0 ? void 0 : options.method) !== null && _a !== void 0 ? _a : req.method;
332
+ const headers = new Headers(req.headers);
333
+ const body = req.body ? yield req.clone().arrayBuffer() : undefined;
251
334
  const url = new URL(req.url);
335
+ const originalPathname = url.pathname;
252
336
  url.pathname = path;
253
- const newReq = new Request(url.toString(), {
254
- method: (_a = options === null || options === void 0 ? void 0 : options.method) !== null && _a !== void 0 ? _a : req.method,
255
- headers: req.headers,
256
- body: req.body ? req.clone().body : undefined,
257
- });
337
+ if (method != req.method)
338
+ headers.set("X-Forwarded-Method", req.method);
339
+ headers.set("X-Forwarded-Path", originalPathname);
340
+ if (!req.headers.has("X-Original-Path")) {
341
+ headers.set("X-Original-Path", originalPathname);
342
+ }
343
+ const newReq = new Request(url.toString(), { method, headers, body });
258
344
  return this.respond(newReq, ctx);
259
345
  });
260
346
  };
@@ -559,89 +645,6 @@ const parseCookieFromRequest = (req) => {
559
645
  return undefined;
560
646
  };
561
647
  exports.parseCookieFromRequest = parseCookieFromRequest;
562
- /**
563
- * Creates middleware that parses cookies from the request and adds them to the context.
564
- * @returns {Function} A middleware function that adds parsed cookies to context.cookie
565
- * @example
566
- * const cookieParser = parseCookie();
567
- * // Use in respondWith: respondWith({}, cookieParser(), ...otherHandlers)
568
- */
569
- const parseCookie = () => {
570
- return (req, ctx) => {
571
- var _a;
572
- const cookie = (_a = (0, exports.parseCookieFromRequest)(req)) !== null && _a !== void 0 ? _a : {};
573
- ctx.cookie = cookie;
574
- };
575
- };
576
- exports.parseCookie = parseCookie;
577
- /**
578
- * Creates middleware that parses the request body based on Content-Type.
579
- * Supports url-encoded forms, JSON, and plain text.
580
- * @param {Object} [options] - Configuration options for body parsing
581
- * @param {SupportedBodyMediaTypes|SupportedBodyMediaTypes[]} [options.accept] - Media types to accept (defaults to all supported)
582
- * @param {number} [options.maxSize] - Maximum body size in bytes (defaults to 1MB)
583
- * @returns {Function} A middleware function that adds parsed body to context.body
584
- * @throws {Response} Returns a 415 response if content-type is not accepted
585
- * @throws {Response} Returns a 413 response if body exceeds maxSize
586
- * @throws {Response} Returns a 400 response if body is malformed
587
- * @example
588
- * const bodyParser = parseBody({ maxSize: 5000 });
589
- * // Use in respondWith: respondWith({}, bodyParser(), ...otherHandlers)
590
- */
591
- const parseBody = (options) => {
592
- var _a;
593
- const accept = (options === null || options === void 0 ? void 0 : options.accept)
594
- ? Array.isArray(options.accept)
595
- ? options.accept
596
- : [options.accept]
597
- : [
598
- "application/x-www-form-urlencoded",
599
- "application/json",
600
- "text/plain",
601
- ];
602
- const maxSize = (_a = options === null || options === void 0 ? void 0 : options.maxSize) !== null && _a !== void 0 ? _a : 1024 * 1024; // Default 1MB
603
- return (req, ctx) => __awaiter(void 0, void 0, void 0, function* () {
604
- var _a, _b, _c, _d;
605
- const contentType = (_a = req.headers.get("content-type")) === null || _a === void 0 ? void 0 : _a.split(";", 2)[0];
606
- if (!(contentType && accept.includes(contentType))) {
607
- yield ((_b = req.body) === null || _b === void 0 ? void 0 : _b.cancel().catch(() => { }));
608
- return (0, exports.status)(415);
609
- }
610
- try {
611
- const contentLengthHeader = req.headers.get("content-length");
612
- if (!contentLengthHeader || parseInt(contentLengthHeader) > maxSize) {
613
- yield ((_c = req.body) === null || _c === void 0 ? void 0 : _c.cancel().catch(() => { }));
614
- return (0, exports.status)(413);
615
- }
616
- switch (contentType) {
617
- case "application/x-www-form-urlencoded": {
618
- const body = yield req.formData();
619
- ctx.body = Object.fromEntries(body.entries());
620
- break;
621
- }
622
- case "application/json": {
623
- const body = yield req.json();
624
- ctx.body =
625
- typeof body === "object" ? body : {};
626
- break;
627
- }
628
- case "text/plain": {
629
- const text = yield req.text();
630
- ctx.body = { text };
631
- break;
632
- }
633
- default:
634
- ctx.body = {};
635
- break;
636
- }
637
- }
638
- catch (_e) {
639
- yield ((_d = req.body) === null || _d === void 0 ? void 0 : _d.cancel().catch(() => { }));
640
- return (0, exports.status)(400, "Malformed Payload");
641
- }
642
- });
643
- };
644
- exports.parseBody = parseBody;
645
648
  /**
646
649
  * Creates a request handler that processes requests through a series of middleware/handlers.
647
650
  * Handlers are executed in order. If a handler returns a Response, that response is returned immediately.