better-call 1.3.7 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +862 -0
- package/dist/_virtual/_rolldown/runtime.cjs +7 -13
- package/dist/adapters/node/request.cjs +3 -4
- package/dist/adapters/node/request.cjs.map +1 -1
- package/dist/adapters/node/request.d.cts +1 -6
- package/dist/adapters/node/request.d.mts +1 -6
- package/dist/adapters/node/request.mjs +1 -2
- package/dist/adapters/node/request.mjs.map +1 -1
- package/dist/client.cjs +3 -5
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +5 -6
- package/dist/client.d.mts +5 -6
- package/dist/client.mjs +1 -2
- package/dist/client.mjs.map +1 -1
- package/dist/context.cjs +6 -7
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +32 -29
- package/dist/context.d.mts +32 -29
- package/dist/context.mjs +3 -4
- package/dist/context.mjs.map +1 -1
- package/dist/cookies.cjs +3 -4
- package/dist/cookies.cjs.map +1 -1
- package/dist/cookies.mjs +2 -3
- package/dist/cookies.mjs.map +1 -1
- package/dist/crypto.cjs +2 -4
- package/dist/crypto.cjs.map +1 -1
- package/dist/crypto.mjs +2 -3
- package/dist/crypto.mjs.map +1 -1
- package/dist/endpoint.cjs +21 -10
- package/dist/endpoint.cjs.map +1 -1
- package/dist/endpoint.d.cts +22 -20
- package/dist/endpoint.d.mts +22 -20
- package/dist/endpoint.mjs +18 -7
- package/dist/endpoint.mjs.map +1 -1
- package/dist/error.cjs +8 -3
- package/dist/error.cjs.map +1 -1
- package/dist/error.d.cts +0 -1
- package/dist/error.d.mts +0 -1
- package/dist/error.mjs +7 -1
- package/dist/error.mjs.map +1 -1
- package/dist/helper.d.cts +4 -4
- package/dist/helper.d.mts +4 -4
- package/dist/index.cjs +10 -11
- package/dist/index.d.cts +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +2 -3
- package/dist/middleware.cjs +4 -6
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.d.cts +10 -21
- package/dist/middleware.d.mts +10 -21
- package/dist/middleware.mjs +1 -3
- package/dist/middleware.mjs.map +1 -1
- package/dist/node.cjs +3 -4
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.cts +1 -2
- package/dist/node.d.mts +1 -2
- package/dist/node.mjs +1 -2
- package/dist/node.mjs.map +1 -1
- package/dist/openapi.cjs +1 -3
- package/dist/openapi.cjs.map +1 -1
- package/dist/openapi.d.cts +2 -3
- package/dist/openapi.d.mts +2 -3
- package/dist/openapi.mjs +1 -2
- package/dist/openapi.mjs.map +1 -1
- package/dist/router.cjs +7 -9
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts +2 -3
- package/dist/router.d.mts +2 -3
- package/dist/router.mjs +3 -4
- package/dist/router.mjs.map +1 -1
- package/dist/to-response.cjs +3 -5
- package/dist/to-response.cjs.map +1 -1
- package/dist/to-response.mjs +2 -4
- package/dist/to-response.mjs.map +1 -1
- package/dist/utils.cjs +2 -3
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.mjs +1 -2
- package/dist/utils.mjs.map +1 -1
- package/dist/validator.cjs +2 -3
- package/dist/validator.cjs.map +1 -1
- package/dist/validator.mjs +2 -2
- package/dist/validator.mjs.map +1 -1
- package/package.json +10 -11
package/dist/error.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.cjs","names":["#hiddenStack"],"sources":["../src/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"./standard-schema\";\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L246C1-L261C2\nfunction isErrorStackTraceLimitWritable() {\n\tconst desc = Object.getOwnPropertyDescriptor(Error, \"stackTraceLimit\");\n\tif (desc === undefined) {\n\t\treturn Object.isExtensible(Error);\n\t}\n\n\treturn Object.prototype.hasOwnProperty.call(desc, \"writable\")\n\t\t? desc.writable\n\t\t: desc.set !== undefined;\n}\n\n/**\n * Hide internal stack frames from the error stack trace.\n */\nexport function hideInternalStackFrames(stack: string): string {\n\tconst lines = stack.split(\"\\n at \");\n\tif (lines.length <= 1) {\n\t\treturn stack;\n\t}\n\tlines.splice(1, 1);\n\treturn lines.join(\"\\n at \");\n}\n\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L411-L432\n/**\n * Creates a custom error class that hides stack frames.\n */\nexport function makeErrorForHideStackFrame<\n\tB extends new (\n\t\t...args: any[]\n\t) => Error,\n>(\n\tBase: B,\n\tclazz: any,\n): {\n\tnew (\n\t\t...args: ConstructorParameters<B>\n\t): InstanceType<B> & { errorStack: string | undefined };\n} {\n\tclass HideStackFramesError extends Base {\n\t\t#hiddenStack: string | undefined;\n\n\t\tconstructor(...args: any[]) {\n\t\t\tif (isErrorStackTraceLimitWritable()) {\n\t\t\t\tconst limit = Error.stackTraceLimit;\n\t\t\t\tError.stackTraceLimit = 0;\n\t\t\t\tsuper(...args);\n\t\t\t\tError.stackTraceLimit = limit;\n\t\t\t} else {\n\t\t\t\tsuper(...args);\n\t\t\t}\n\t\t\tconst stack = new Error().stack;\n\t\t\tif (stack) {\n\t\t\t\tthis.#hiddenStack = hideInternalStackFrames(\n\t\t\t\t\tstack.replace(/^Error/, this.name),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// use `getter` here to avoid the stack trace being captured by loggers\n\t\tget errorStack() {\n\t\t\treturn this.#hiddenStack;\n\t\t}\n\t}\n\n\t// This is a workaround for wpt tests that expect that the error\n\t// constructor has a `name` property of the base class.\n\tObject.defineProperty(HideStackFramesError.prototype, \"constructor\", {\n\t\tget() {\n\t\t\treturn clazz;\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t});\n\n\treturn HideStackFramesError as any;\n}\n\nexport const statusCodes = {\n\tOK: 200,\n\tCREATED: 201,\n\tACCEPTED: 202,\n\tNO_CONTENT: 204,\n\tMULTIPLE_CHOICES: 300,\n\tMOVED_PERMANENTLY: 301,\n\tFOUND: 302,\n\tSEE_OTHER: 303,\n\tNOT_MODIFIED: 304,\n\tTEMPORARY_REDIRECT: 307,\n\tBAD_REQUEST: 400,\n\tUNAUTHORIZED: 401,\n\tPAYMENT_REQUIRED: 402,\n\tFORBIDDEN: 403,\n\tNOT_FOUND: 404,\n\tMETHOD_NOT_ALLOWED: 405,\n\tNOT_ACCEPTABLE: 406,\n\tPROXY_AUTHENTICATION_REQUIRED: 407,\n\tREQUEST_TIMEOUT: 408,\n\tCONFLICT: 409,\n\tGONE: 410,\n\tLENGTH_REQUIRED: 411,\n\tPRECONDITION_FAILED: 412,\n\tPAYLOAD_TOO_LARGE: 413,\n\tURI_TOO_LONG: 414,\n\tUNSUPPORTED_MEDIA_TYPE: 415,\n\tRANGE_NOT_SATISFIABLE: 416,\n\tEXPECTATION_FAILED: 417,\n\t\"I'M_A_TEAPOT\": 418,\n\tMISDIRECTED_REQUEST: 421,\n\tUNPROCESSABLE_ENTITY: 422,\n\tLOCKED: 423,\n\tFAILED_DEPENDENCY: 424,\n\tTOO_EARLY: 425,\n\tUPGRADE_REQUIRED: 426,\n\tPRECONDITION_REQUIRED: 428,\n\tTOO_MANY_REQUESTS: 429,\n\tREQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\tUNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\tINTERNAL_SERVER_ERROR: 500,\n\tNOT_IMPLEMENTED: 501,\n\tBAD_GATEWAY: 502,\n\tSERVICE_UNAVAILABLE: 503,\n\tGATEWAY_TIMEOUT: 504,\n\tHTTP_VERSION_NOT_SUPPORTED: 505,\n\tVARIANT_ALSO_NEGOTIATES: 506,\n\tINSUFFICIENT_STORAGE: 507,\n\tLOOP_DETECTED: 508,\n\tNOT_EXTENDED: 510,\n\tNETWORK_AUTHENTICATION_REQUIRED: 511,\n};\n\nexport type Status =\n\t| 100\n\t| 101\n\t| 102\n\t| 103\n\t| 200\n\t| 201\n\t| 202\n\t| 203\n\t| 204\n\t| 205\n\t| 206\n\t| 207\n\t| 208\n\t| 226\n\t| 300\n\t| 301\n\t| 302\n\t| 303\n\t| 304\n\t| 305\n\t| 306\n\t| 307\n\t| 308\n\t| 400\n\t| 401\n\t| 402\n\t| 403\n\t| 404\n\t| 405\n\t| 406\n\t| 407\n\t| 408\n\t| 409\n\t| 410\n\t| 411\n\t| 412\n\t| 413\n\t| 414\n\t| 415\n\t| 416\n\t| 417\n\t| 418\n\t| 421\n\t| 422\n\t| 423\n\t| 424\n\t| 425\n\t| 426\n\t| 428\n\t| 429\n\t| 431\n\t| 451\n\t| 500\n\t| 501\n\t| 502\n\t| 503\n\t| 504\n\t| 505\n\t| 506\n\t| 507\n\t| 508\n\t| 510\n\t| 511;\n\nclass InternalAPIError extends Error {\n\tconstructor(\n\t\tpublic status: keyof typeof statusCodes | Status = \"INTERNAL_SERVER_ERROR\",\n\t\tpublic body:\n\t\t\t| ({\n\t\t\t\t\tmessage?: string;\n\t\t\t\t\tcode?: string;\n\t\t\t\t\tcause?: unknown;\n\t\t\t } & Record<string, any>)\n\t\t\t| undefined = undefined,\n\t\tpublic headers: HeadersInit = {},\n\t\tpublic statusCode = typeof status === \"number\"\n\t\t\t? status\n\t\t\t: statusCodes[status],\n\t) {\n\t\tsuper(\n\t\t\tbody?.message,\n\t\t\tbody?.cause\n\t\t\t\t? {\n\t\t\t\t\t\tcause: body.cause,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t);\n\t\tthis.name = \"APIError\";\n\t\tthis.status = status;\n\t\tthis.headers = headers;\n\t\tthis.statusCode = statusCode;\n\t\tthis.body = body;\n\t}\n}\n\nexport class ValidationError extends InternalAPIError {\n\tconstructor(\n\t\tpublic message: string,\n\t\tpublic issues: readonly StandardSchemaV1.Issue[],\n\t) {\n\t\tsuper(400, {\n\t\t\tmessage: message,\n\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t});\n\n\t\tthis.issues = issues;\n\t}\n}\n\nexport class BetterCallError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"BetterCallError\";\n\t}\n}\n\nexport const kAPIErrorHeaderSymbol = Symbol.for(\n\t\"better-call:api-error-headers\",\n);\n\nexport type APIError = InstanceType<typeof InternalAPIError>;\nexport const APIError = makeErrorForHideStackFrame(InternalAPIError, Error);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"error.cjs","names":["#hiddenStack"],"sources":["../src/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"./standard-schema\";\n\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L246C1-L261C2\nfunction isErrorStackTraceLimitWritable() {\n\tconst desc = Object.getOwnPropertyDescriptor(Error, \"stackTraceLimit\");\n\tif (desc === undefined) {\n\t\treturn Object.isExtensible(Error);\n\t}\n\n\treturn Object.prototype.hasOwnProperty.call(desc, \"writable\")\n\t\t? desc.writable\n\t\t: desc.set !== undefined;\n}\n\n/**\n * Hide internal stack frames from the error stack trace.\n */\nexport function hideInternalStackFrames(stack: string): string {\n\tconst lines = stack.split(\"\\n at \");\n\tif (lines.length <= 1) {\n\t\treturn stack;\n\t}\n\tlines.splice(1, 1);\n\treturn lines.join(\"\\n at \");\n}\n\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L411-L432\n/**\n * Creates a custom error class that hides stack frames.\n */\nexport function makeErrorForHideStackFrame<\n\tB extends new (\n\t\t...args: any[]\n\t) => Error,\n>(\n\tBase: B,\n\tclazz: any,\n): {\n\tnew (\n\t\t...args: ConstructorParameters<B>\n\t): InstanceType<B> & { errorStack: string | undefined };\n} {\n\tclass HideStackFramesError extends Base {\n\t\t#hiddenStack: string | undefined;\n\n\t\tconstructor(...args: any[]) {\n\t\t\tif (isErrorStackTraceLimitWritable()) {\n\t\t\t\tconst limit = Error.stackTraceLimit;\n\t\t\t\tError.stackTraceLimit = 0;\n\t\t\t\tsuper(...args);\n\t\t\t\tError.stackTraceLimit = limit;\n\t\t\t} else {\n\t\t\t\tsuper(...args);\n\t\t\t}\n\t\t\tconst stack = new Error().stack;\n\t\t\tif (stack) {\n\t\t\t\tthis.#hiddenStack = hideInternalStackFrames(\n\t\t\t\t\tstack.replace(/^Error/, this.name),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// use `getter` here to avoid the stack trace being captured by loggers\n\t\tget errorStack() {\n\t\t\treturn this.#hiddenStack;\n\t\t}\n\t}\n\n\t// This is a workaround for wpt tests that expect that the error\n\t// constructor has a `name` property of the base class.\n\tObject.defineProperty(HideStackFramesError.prototype, \"constructor\", {\n\t\tget() {\n\t\t\treturn clazz;\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t});\n\n\treturn HideStackFramesError as any;\n}\n\nexport const statusCodes = {\n\tOK: 200,\n\tCREATED: 201,\n\tACCEPTED: 202,\n\tNO_CONTENT: 204,\n\tMULTIPLE_CHOICES: 300,\n\tMOVED_PERMANENTLY: 301,\n\tFOUND: 302,\n\tSEE_OTHER: 303,\n\tNOT_MODIFIED: 304,\n\tTEMPORARY_REDIRECT: 307,\n\tBAD_REQUEST: 400,\n\tUNAUTHORIZED: 401,\n\tPAYMENT_REQUIRED: 402,\n\tFORBIDDEN: 403,\n\tNOT_FOUND: 404,\n\tMETHOD_NOT_ALLOWED: 405,\n\tNOT_ACCEPTABLE: 406,\n\tPROXY_AUTHENTICATION_REQUIRED: 407,\n\tREQUEST_TIMEOUT: 408,\n\tCONFLICT: 409,\n\tGONE: 410,\n\tLENGTH_REQUIRED: 411,\n\tPRECONDITION_FAILED: 412,\n\tPAYLOAD_TOO_LARGE: 413,\n\tURI_TOO_LONG: 414,\n\tUNSUPPORTED_MEDIA_TYPE: 415,\n\tRANGE_NOT_SATISFIABLE: 416,\n\tEXPECTATION_FAILED: 417,\n\t\"I'M_A_TEAPOT\": 418,\n\tMISDIRECTED_REQUEST: 421,\n\tUNPROCESSABLE_ENTITY: 422,\n\tLOCKED: 423,\n\tFAILED_DEPENDENCY: 424,\n\tTOO_EARLY: 425,\n\tUPGRADE_REQUIRED: 426,\n\tPRECONDITION_REQUIRED: 428,\n\tTOO_MANY_REQUESTS: 429,\n\tREQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\tUNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\tINTERNAL_SERVER_ERROR: 500,\n\tNOT_IMPLEMENTED: 501,\n\tBAD_GATEWAY: 502,\n\tSERVICE_UNAVAILABLE: 503,\n\tGATEWAY_TIMEOUT: 504,\n\tHTTP_VERSION_NOT_SUPPORTED: 505,\n\tVARIANT_ALSO_NEGOTIATES: 506,\n\tINSUFFICIENT_STORAGE: 507,\n\tLOOP_DETECTED: 508,\n\tNOT_EXTENDED: 510,\n\tNETWORK_AUTHENTICATION_REQUIRED: 511,\n};\n\nexport type Status =\n\t| 100\n\t| 101\n\t| 102\n\t| 103\n\t| 200\n\t| 201\n\t| 202\n\t| 203\n\t| 204\n\t| 205\n\t| 206\n\t| 207\n\t| 208\n\t| 226\n\t| 300\n\t| 301\n\t| 302\n\t| 303\n\t| 304\n\t| 305\n\t| 306\n\t| 307\n\t| 308\n\t| 400\n\t| 401\n\t| 402\n\t| 403\n\t| 404\n\t| 405\n\t| 406\n\t| 407\n\t| 408\n\t| 409\n\t| 410\n\t| 411\n\t| 412\n\t| 413\n\t| 414\n\t| 415\n\t| 416\n\t| 417\n\t| 418\n\t| 421\n\t| 422\n\t| 423\n\t| 424\n\t| 425\n\t| 426\n\t| 428\n\t| 429\n\t| 431\n\t| 451\n\t| 500\n\t| 501\n\t| 502\n\t| 503\n\t| 504\n\t| 505\n\t| 506\n\t| 507\n\t| 508\n\t| 510\n\t| 511;\n\nclass InternalAPIError extends Error {\n\tconstructor(\n\t\tpublic status: keyof typeof statusCodes | Status = \"INTERNAL_SERVER_ERROR\",\n\t\tpublic body:\n\t\t\t| ({\n\t\t\t\t\tmessage?: string;\n\t\t\t\t\tcode?: string;\n\t\t\t\t\tcause?: unknown;\n\t\t\t } & Record<string, any>)\n\t\t\t| undefined = undefined,\n\t\tpublic headers: HeadersInit = {},\n\t\tpublic statusCode = typeof status === \"number\"\n\t\t\t? status\n\t\t\t: statusCodes[status],\n\t) {\n\t\tsuper(\n\t\t\tbody?.message,\n\t\t\tbody?.cause\n\t\t\t\t? {\n\t\t\t\t\t\tcause: body.cause,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t);\n\t\tthis.name = \"APIError\";\n\t\tthis.status = status;\n\t\tthis.headers = headers;\n\t\tthis.statusCode = statusCode;\n\t\tthis.body = body;\n\t}\n}\n\nexport class ValidationError extends InternalAPIError {\n\tconstructor(\n\t\tpublic message: string,\n\t\tpublic issues: readonly StandardSchemaV1.Issue[],\n\t) {\n\t\tsuper(400, {\n\t\t\tmessage: message,\n\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t});\n\n\t\tthis.issues = issues;\n\t}\n}\n\nexport class BetterCallError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"BetterCallError\";\n\t}\n}\n\nexport const kAPIErrorHeaderSymbol = Symbol.for(\n\t\"better-call:api-error-headers\",\n);\n\nexport type APIError = InstanceType<typeof InternalAPIError>;\nexport const APIError = makeErrorForHideStackFrame(InternalAPIError, Error);\n"],"mappings":";;AAGA,SAAS,iCAAiC;CACzC,MAAM,OAAO,OAAO,yBAAyB,OAAO,iBAAiB;CACrE,IAAI,SAAS,KAAA,GACZ,OAAO,OAAO,aAAa,KAAK;CAGjC,OAAO,OAAO,UAAU,eAAe,KAAK,MAAM,UAAU,IACzD,KAAK,WACL,KAAK,QAAQ,KAAA;AACjB;;;;AAKA,SAAgB,wBAAwB,OAAuB;CAC9D,MAAM,QAAQ,MAAM,MAAM,WAAW;CACrC,IAAI,MAAM,UAAU,GACnB,OAAO;CAER,MAAM,OAAO,GAAG,CAAC;CACjB,OAAO,MAAM,KAAK,WAAW;AAC9B;;;;AAMA,SAAgB,2BAKf,MACA,OAKC;CACD,MAAM,6BAA6B,KAAK;EACvC;EAEA,YAAY,GAAG,MAAa;GAC3B,IAAI,+BAA+B,GAAG;IACrC,MAAM,QAAQ,MAAM;IACpB,MAAM,kBAAkB;IACxB,MAAM,GAAG,IAAI;IACb,MAAM,kBAAkB;GACzB,OACC,MAAM,GAAG,IAAI;GAEd,MAAM,yBAAQ,IAAI,MAAM,EAAA,CAAE;GAC1B,IAAI,OACH,KAAKA,eAAe,wBACnB,MAAM,QAAQ,UAAU,KAAK,IAAI,CAClC;EAEF;EAGA,IAAI,aAAa;GAChB,OAAO,KAAKA;EACb;CACD;CAIA,OAAO,eAAe,qBAAqB,WAAW,eAAe;EACpE,MAAM;GACL,OAAO;EACR;EACA,YAAY;EACZ,cAAc;CACf,CAAC;CAED,OAAO;AACR;AAEA,MAAa,cAAc;CAC1B,IAAI;CACJ,SAAS;CACT,UAAU;CACV,YAAY;CACZ,kBAAkB;CAClB,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,cAAc;CACd,oBAAoB;CACpB,aAAa;CACb,cAAc;CACd,kBAAkB;CAClB,WAAW;CACX,WAAW;CACX,oBAAoB;CACpB,gBAAgB;CAChB,+BAA+B;CAC/B,iBAAiB;CACjB,UAAU;CACV,MAAM;CACN,iBAAiB;CACjB,qBAAqB;CACrB,mBAAmB;CACnB,cAAc;CACd,wBAAwB;CACxB,uBAAuB;CACvB,oBAAoB;CACpB,gBAAgB;CAChB,qBAAqB;CACrB,sBAAsB;CACtB,QAAQ;CACR,mBAAmB;CACnB,WAAW;CACX,kBAAkB;CAClB,uBAAuB;CACvB,mBAAmB;CACnB,iCAAiC;CACjC,+BAA+B;CAC/B,uBAAuB;CACvB,iBAAiB;CACjB,aAAa;CACb,qBAAqB;CACrB,iBAAiB;CACjB,4BAA4B;CAC5B,yBAAyB;CACzB,sBAAsB;CACtB,eAAe;CACf,cAAc;CACd,iCAAiC;AAClC;AAmEA,IAAM,mBAAN,cAA+B,MAAM;CAE5B;CACA;CAOA;CACA;CAVR,YACC,SAAmD,yBACnD,OAMe,KAAA,GACf,UAA8B,CAAC,GAC/B,aAAoB,OAAO,WAAW,WACnC,SACA,YAAY,SACd;EACD,MACC,MAAM,SACN,MAAM,QACH,EACA,OAAO,KAAK,MACb,IACC,KAAA,CACJ;EApBO,KAAA,SAAA;EACA,KAAA,OAAA;EAOA,KAAA,UAAA;EACA,KAAA,aAAA;EAYP,KAAK,OAAO;EACZ,KAAK,SAAS;EACd,KAAK,UAAU;EACf,KAAK,aAAa;EAClB,KAAK,OAAO;CACb;AACD;AAEA,IAAa,kBAAb,cAAqC,iBAAiB;CAE7C;CACA;CAFR,YACC,SACA,QACC;EACD,MAAM,KAAK;GACD;GACT,MAAM;EACP,CAAC;EANM,KAAA,UAAA;EACA,KAAA,SAAA;EAOP,KAAK,SAAS;CACf;AACD;AAEA,IAAa,kBAAb,cAAqC,MAAM;CAC1C,YAAY,SAAiB;EAC5B,MAAM,OAAO;EACb,KAAK,OAAO;CACb;AACD;AAEA,MAAa,wBAAwB,OAAO,IAC3C,+BACD;AAGA,MAAa,WAAW,2BAA2B,kBAAkB,KAAK"}
|
package/dist/error.d.cts
CHANGED
package/dist/error.d.mts
CHANGED
package/dist/error.mjs
CHANGED
|
@@ -95,6 +95,10 @@ const statusCodes = {
|
|
|
95
95
|
NETWORK_AUTHENTICATION_REQUIRED: 511
|
|
96
96
|
};
|
|
97
97
|
var InternalAPIError = class extends Error {
|
|
98
|
+
status;
|
|
99
|
+
body;
|
|
100
|
+
headers;
|
|
101
|
+
statusCode;
|
|
98
102
|
constructor(status = "INTERNAL_SERVER_ERROR", body = void 0, headers = {}, statusCode = typeof status === "number" ? status : statusCodes[status]) {
|
|
99
103
|
super(body?.message, body?.cause ? { cause: body.cause } : void 0);
|
|
100
104
|
this.status = status;
|
|
@@ -109,6 +113,8 @@ var InternalAPIError = class extends Error {
|
|
|
109
113
|
}
|
|
110
114
|
};
|
|
111
115
|
var ValidationError = class extends InternalAPIError {
|
|
116
|
+
message;
|
|
117
|
+
issues;
|
|
112
118
|
constructor(message, issues) {
|
|
113
119
|
super(400, {
|
|
114
120
|
message,
|
|
@@ -127,7 +133,7 @@ var BetterCallError = class extends Error {
|
|
|
127
133
|
};
|
|
128
134
|
const kAPIErrorHeaderSymbol = Symbol.for("better-call:api-error-headers");
|
|
129
135
|
const APIError = makeErrorForHideStackFrame(InternalAPIError, Error);
|
|
130
|
-
|
|
131
136
|
//#endregion
|
|
132
137
|
export { APIError, BetterCallError, ValidationError, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, statusCodes };
|
|
138
|
+
|
|
133
139
|
//# sourceMappingURL=error.mjs.map
|
package/dist/error.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.mjs","names":["#hiddenStack"],"sources":["../src/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"./standard-schema\";\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L246C1-L261C2\nfunction isErrorStackTraceLimitWritable() {\n\tconst desc = Object.getOwnPropertyDescriptor(Error, \"stackTraceLimit\");\n\tif (desc === undefined) {\n\t\treturn Object.isExtensible(Error);\n\t}\n\n\treturn Object.prototype.hasOwnProperty.call(desc, \"writable\")\n\t\t? desc.writable\n\t\t: desc.set !== undefined;\n}\n\n/**\n * Hide internal stack frames from the error stack trace.\n */\nexport function hideInternalStackFrames(stack: string): string {\n\tconst lines = stack.split(\"\\n at \");\n\tif (lines.length <= 1) {\n\t\treturn stack;\n\t}\n\tlines.splice(1, 1);\n\treturn lines.join(\"\\n at \");\n}\n\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L411-L432\n/**\n * Creates a custom error class that hides stack frames.\n */\nexport function makeErrorForHideStackFrame<\n\tB extends new (\n\t\t...args: any[]\n\t) => Error,\n>(\n\tBase: B,\n\tclazz: any,\n): {\n\tnew (\n\t\t...args: ConstructorParameters<B>\n\t): InstanceType<B> & { errorStack: string | undefined };\n} {\n\tclass HideStackFramesError extends Base {\n\t\t#hiddenStack: string | undefined;\n\n\t\tconstructor(...args: any[]) {\n\t\t\tif (isErrorStackTraceLimitWritable()) {\n\t\t\t\tconst limit = Error.stackTraceLimit;\n\t\t\t\tError.stackTraceLimit = 0;\n\t\t\t\tsuper(...args);\n\t\t\t\tError.stackTraceLimit = limit;\n\t\t\t} else {\n\t\t\t\tsuper(...args);\n\t\t\t}\n\t\t\tconst stack = new Error().stack;\n\t\t\tif (stack) {\n\t\t\t\tthis.#hiddenStack = hideInternalStackFrames(\n\t\t\t\t\tstack.replace(/^Error/, this.name),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// use `getter` here to avoid the stack trace being captured by loggers\n\t\tget errorStack() {\n\t\t\treturn this.#hiddenStack;\n\t\t}\n\t}\n\n\t// This is a workaround for wpt tests that expect that the error\n\t// constructor has a `name` property of the base class.\n\tObject.defineProperty(HideStackFramesError.prototype, \"constructor\", {\n\t\tget() {\n\t\t\treturn clazz;\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t});\n\n\treturn HideStackFramesError as any;\n}\n\nexport const statusCodes = {\n\tOK: 200,\n\tCREATED: 201,\n\tACCEPTED: 202,\n\tNO_CONTENT: 204,\n\tMULTIPLE_CHOICES: 300,\n\tMOVED_PERMANENTLY: 301,\n\tFOUND: 302,\n\tSEE_OTHER: 303,\n\tNOT_MODIFIED: 304,\n\tTEMPORARY_REDIRECT: 307,\n\tBAD_REQUEST: 400,\n\tUNAUTHORIZED: 401,\n\tPAYMENT_REQUIRED: 402,\n\tFORBIDDEN: 403,\n\tNOT_FOUND: 404,\n\tMETHOD_NOT_ALLOWED: 405,\n\tNOT_ACCEPTABLE: 406,\n\tPROXY_AUTHENTICATION_REQUIRED: 407,\n\tREQUEST_TIMEOUT: 408,\n\tCONFLICT: 409,\n\tGONE: 410,\n\tLENGTH_REQUIRED: 411,\n\tPRECONDITION_FAILED: 412,\n\tPAYLOAD_TOO_LARGE: 413,\n\tURI_TOO_LONG: 414,\n\tUNSUPPORTED_MEDIA_TYPE: 415,\n\tRANGE_NOT_SATISFIABLE: 416,\n\tEXPECTATION_FAILED: 417,\n\t\"I'M_A_TEAPOT\": 418,\n\tMISDIRECTED_REQUEST: 421,\n\tUNPROCESSABLE_ENTITY: 422,\n\tLOCKED: 423,\n\tFAILED_DEPENDENCY: 424,\n\tTOO_EARLY: 425,\n\tUPGRADE_REQUIRED: 426,\n\tPRECONDITION_REQUIRED: 428,\n\tTOO_MANY_REQUESTS: 429,\n\tREQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\tUNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\tINTERNAL_SERVER_ERROR: 500,\n\tNOT_IMPLEMENTED: 501,\n\tBAD_GATEWAY: 502,\n\tSERVICE_UNAVAILABLE: 503,\n\tGATEWAY_TIMEOUT: 504,\n\tHTTP_VERSION_NOT_SUPPORTED: 505,\n\tVARIANT_ALSO_NEGOTIATES: 506,\n\tINSUFFICIENT_STORAGE: 507,\n\tLOOP_DETECTED: 508,\n\tNOT_EXTENDED: 510,\n\tNETWORK_AUTHENTICATION_REQUIRED: 511,\n};\n\nexport type Status =\n\t| 100\n\t| 101\n\t| 102\n\t| 103\n\t| 200\n\t| 201\n\t| 202\n\t| 203\n\t| 204\n\t| 205\n\t| 206\n\t| 207\n\t| 208\n\t| 226\n\t| 300\n\t| 301\n\t| 302\n\t| 303\n\t| 304\n\t| 305\n\t| 306\n\t| 307\n\t| 308\n\t| 400\n\t| 401\n\t| 402\n\t| 403\n\t| 404\n\t| 405\n\t| 406\n\t| 407\n\t| 408\n\t| 409\n\t| 410\n\t| 411\n\t| 412\n\t| 413\n\t| 414\n\t| 415\n\t| 416\n\t| 417\n\t| 418\n\t| 421\n\t| 422\n\t| 423\n\t| 424\n\t| 425\n\t| 426\n\t| 428\n\t| 429\n\t| 431\n\t| 451\n\t| 500\n\t| 501\n\t| 502\n\t| 503\n\t| 504\n\t| 505\n\t| 506\n\t| 507\n\t| 508\n\t| 510\n\t| 511;\n\nclass InternalAPIError extends Error {\n\tconstructor(\n\t\tpublic status: keyof typeof statusCodes | Status = \"INTERNAL_SERVER_ERROR\",\n\t\tpublic body:\n\t\t\t| ({\n\t\t\t\t\tmessage?: string;\n\t\t\t\t\tcode?: string;\n\t\t\t\t\tcause?: unknown;\n\t\t\t } & Record<string, any>)\n\t\t\t| undefined = undefined,\n\t\tpublic headers: HeadersInit = {},\n\t\tpublic statusCode = typeof status === \"number\"\n\t\t\t? status\n\t\t\t: statusCodes[status],\n\t) {\n\t\tsuper(\n\t\t\tbody?.message,\n\t\t\tbody?.cause\n\t\t\t\t? {\n\t\t\t\t\t\tcause: body.cause,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t);\n\t\tthis.name = \"APIError\";\n\t\tthis.status = status;\n\t\tthis.headers = headers;\n\t\tthis.statusCode = statusCode;\n\t\tthis.body = body;\n\t}\n}\n\nexport class ValidationError extends InternalAPIError {\n\tconstructor(\n\t\tpublic message: string,\n\t\tpublic issues: readonly StandardSchemaV1.Issue[],\n\t) {\n\t\tsuper(400, {\n\t\t\tmessage: message,\n\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t});\n\n\t\tthis.issues = issues;\n\t}\n}\n\nexport class BetterCallError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"BetterCallError\";\n\t}\n}\n\nexport const kAPIErrorHeaderSymbol = Symbol.for(\n\t\"better-call:api-error-headers\",\n);\n\nexport type APIError = InstanceType<typeof InternalAPIError>;\nexport const APIError = makeErrorForHideStackFrame(InternalAPIError, Error);\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"error.mjs","names":["#hiddenStack"],"sources":["../src/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"./standard-schema\";\n\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L246C1-L261C2\nfunction isErrorStackTraceLimitWritable() {\n\tconst desc = Object.getOwnPropertyDescriptor(Error, \"stackTraceLimit\");\n\tif (desc === undefined) {\n\t\treturn Object.isExtensible(Error);\n\t}\n\n\treturn Object.prototype.hasOwnProperty.call(desc, \"writable\")\n\t\t? desc.writable\n\t\t: desc.set !== undefined;\n}\n\n/**\n * Hide internal stack frames from the error stack trace.\n */\nexport function hideInternalStackFrames(stack: string): string {\n\tconst lines = stack.split(\"\\n at \");\n\tif (lines.length <= 1) {\n\t\treturn stack;\n\t}\n\tlines.splice(1, 1);\n\treturn lines.join(\"\\n at \");\n}\n\n// https://github.com/nodejs/node/blob/360f7cc7867b43344aac00564286b895e15f21d7/lib/internal/errors.js#L411-L432\n/**\n * Creates a custom error class that hides stack frames.\n */\nexport function makeErrorForHideStackFrame<\n\tB extends new (\n\t\t...args: any[]\n\t) => Error,\n>(\n\tBase: B,\n\tclazz: any,\n): {\n\tnew (\n\t\t...args: ConstructorParameters<B>\n\t): InstanceType<B> & { errorStack: string | undefined };\n} {\n\tclass HideStackFramesError extends Base {\n\t\t#hiddenStack: string | undefined;\n\n\t\tconstructor(...args: any[]) {\n\t\t\tif (isErrorStackTraceLimitWritable()) {\n\t\t\t\tconst limit = Error.stackTraceLimit;\n\t\t\t\tError.stackTraceLimit = 0;\n\t\t\t\tsuper(...args);\n\t\t\t\tError.stackTraceLimit = limit;\n\t\t\t} else {\n\t\t\t\tsuper(...args);\n\t\t\t}\n\t\t\tconst stack = new Error().stack;\n\t\t\tif (stack) {\n\t\t\t\tthis.#hiddenStack = hideInternalStackFrames(\n\t\t\t\t\tstack.replace(/^Error/, this.name),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// use `getter` here to avoid the stack trace being captured by loggers\n\t\tget errorStack() {\n\t\t\treturn this.#hiddenStack;\n\t\t}\n\t}\n\n\t// This is a workaround for wpt tests that expect that the error\n\t// constructor has a `name` property of the base class.\n\tObject.defineProperty(HideStackFramesError.prototype, \"constructor\", {\n\t\tget() {\n\t\t\treturn clazz;\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t});\n\n\treturn HideStackFramesError as any;\n}\n\nexport const statusCodes = {\n\tOK: 200,\n\tCREATED: 201,\n\tACCEPTED: 202,\n\tNO_CONTENT: 204,\n\tMULTIPLE_CHOICES: 300,\n\tMOVED_PERMANENTLY: 301,\n\tFOUND: 302,\n\tSEE_OTHER: 303,\n\tNOT_MODIFIED: 304,\n\tTEMPORARY_REDIRECT: 307,\n\tBAD_REQUEST: 400,\n\tUNAUTHORIZED: 401,\n\tPAYMENT_REQUIRED: 402,\n\tFORBIDDEN: 403,\n\tNOT_FOUND: 404,\n\tMETHOD_NOT_ALLOWED: 405,\n\tNOT_ACCEPTABLE: 406,\n\tPROXY_AUTHENTICATION_REQUIRED: 407,\n\tREQUEST_TIMEOUT: 408,\n\tCONFLICT: 409,\n\tGONE: 410,\n\tLENGTH_REQUIRED: 411,\n\tPRECONDITION_FAILED: 412,\n\tPAYLOAD_TOO_LARGE: 413,\n\tURI_TOO_LONG: 414,\n\tUNSUPPORTED_MEDIA_TYPE: 415,\n\tRANGE_NOT_SATISFIABLE: 416,\n\tEXPECTATION_FAILED: 417,\n\t\"I'M_A_TEAPOT\": 418,\n\tMISDIRECTED_REQUEST: 421,\n\tUNPROCESSABLE_ENTITY: 422,\n\tLOCKED: 423,\n\tFAILED_DEPENDENCY: 424,\n\tTOO_EARLY: 425,\n\tUPGRADE_REQUIRED: 426,\n\tPRECONDITION_REQUIRED: 428,\n\tTOO_MANY_REQUESTS: 429,\n\tREQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n\tUNAVAILABLE_FOR_LEGAL_REASONS: 451,\n\tINTERNAL_SERVER_ERROR: 500,\n\tNOT_IMPLEMENTED: 501,\n\tBAD_GATEWAY: 502,\n\tSERVICE_UNAVAILABLE: 503,\n\tGATEWAY_TIMEOUT: 504,\n\tHTTP_VERSION_NOT_SUPPORTED: 505,\n\tVARIANT_ALSO_NEGOTIATES: 506,\n\tINSUFFICIENT_STORAGE: 507,\n\tLOOP_DETECTED: 508,\n\tNOT_EXTENDED: 510,\n\tNETWORK_AUTHENTICATION_REQUIRED: 511,\n};\n\nexport type Status =\n\t| 100\n\t| 101\n\t| 102\n\t| 103\n\t| 200\n\t| 201\n\t| 202\n\t| 203\n\t| 204\n\t| 205\n\t| 206\n\t| 207\n\t| 208\n\t| 226\n\t| 300\n\t| 301\n\t| 302\n\t| 303\n\t| 304\n\t| 305\n\t| 306\n\t| 307\n\t| 308\n\t| 400\n\t| 401\n\t| 402\n\t| 403\n\t| 404\n\t| 405\n\t| 406\n\t| 407\n\t| 408\n\t| 409\n\t| 410\n\t| 411\n\t| 412\n\t| 413\n\t| 414\n\t| 415\n\t| 416\n\t| 417\n\t| 418\n\t| 421\n\t| 422\n\t| 423\n\t| 424\n\t| 425\n\t| 426\n\t| 428\n\t| 429\n\t| 431\n\t| 451\n\t| 500\n\t| 501\n\t| 502\n\t| 503\n\t| 504\n\t| 505\n\t| 506\n\t| 507\n\t| 508\n\t| 510\n\t| 511;\n\nclass InternalAPIError extends Error {\n\tconstructor(\n\t\tpublic status: keyof typeof statusCodes | Status = \"INTERNAL_SERVER_ERROR\",\n\t\tpublic body:\n\t\t\t| ({\n\t\t\t\t\tmessage?: string;\n\t\t\t\t\tcode?: string;\n\t\t\t\t\tcause?: unknown;\n\t\t\t } & Record<string, any>)\n\t\t\t| undefined = undefined,\n\t\tpublic headers: HeadersInit = {},\n\t\tpublic statusCode = typeof status === \"number\"\n\t\t\t? status\n\t\t\t: statusCodes[status],\n\t) {\n\t\tsuper(\n\t\t\tbody?.message,\n\t\t\tbody?.cause\n\t\t\t\t? {\n\t\t\t\t\t\tcause: body.cause,\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\t);\n\t\tthis.name = \"APIError\";\n\t\tthis.status = status;\n\t\tthis.headers = headers;\n\t\tthis.statusCode = statusCode;\n\t\tthis.body = body;\n\t}\n}\n\nexport class ValidationError extends InternalAPIError {\n\tconstructor(\n\t\tpublic message: string,\n\t\tpublic issues: readonly StandardSchemaV1.Issue[],\n\t) {\n\t\tsuper(400, {\n\t\t\tmessage: message,\n\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t});\n\n\t\tthis.issues = issues;\n\t}\n}\n\nexport class BetterCallError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"BetterCallError\";\n\t}\n}\n\nexport const kAPIErrorHeaderSymbol = Symbol.for(\n\t\"better-call:api-error-headers\",\n);\n\nexport type APIError = InstanceType<typeof InternalAPIError>;\nexport const APIError = makeErrorForHideStackFrame(InternalAPIError, Error);\n"],"mappings":"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"}
|
package/dist/helper.d.cts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
//#region src/helper.d.ts
|
|
2
|
-
type RequiredKeysOf<BaseType extends object> = Exclude<{ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]> ? Key : never }[keyof BaseType], undefined>;
|
|
2
|
+
type RequiredKeysOf<BaseType extends object> = Exclude<{ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]> ? Key : never; }[keyof BaseType], undefined>;
|
|
3
3
|
type HasRequiredKeys<BaseType extends object> = RequiredKeysOf<BaseType> extends never ? false : true;
|
|
4
|
-
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
4
|
+
type Prettify<T> = { [K in keyof T]: T[K]; } & {};
|
|
5
5
|
type IsEmptyObject<T> = keyof T extends never ? true : false;
|
|
6
6
|
type UnionToIntersection<Union> = (Union extends unknown ? (distributedUnion: Union) => void : never) extends ((mergedIntersection: infer Intersection) => void) ? Intersection & Union : never;
|
|
7
7
|
type MergeObject<T extends Record<string, any> | never, S extends Record<string, any> | never> = T extends never ? S : S extends never ? T : T & S;
|
|
8
|
-
type InferParamPath<Path> = Path extends `${infer _Start}:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string } : Path extends `${infer _Start}:${infer Param}` ? { [K in Param]: string } : Path extends `${infer _Start}/${infer Rest}` ? InferParamPath<Rest> : {};
|
|
9
|
-
type InferParamWildCard<Path> = Path extends `${infer _Start}/*:${infer Param}/${infer Rest}` | `${infer _Start}/**:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string } : Path extends `${infer _Start}/*` ? { [K in "_"]: string } : Path extends `${infer _Start}/${infer Rest}` ? InferParamWildCard<Rest> : {};
|
|
8
|
+
type InferParamPath<Path> = Path extends `${infer _Start}:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string; } : Path extends `${infer _Start}:${infer Param}` ? { [K in Param]: string; } : Path extends `${infer _Start}/${infer Rest}` ? InferParamPath<Rest> : {};
|
|
9
|
+
type InferParamWildCard<Path> = Path extends `${infer _Start}/*:${infer Param}/${infer Rest}` | `${infer _Start}/**:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string; } : Path extends `${infer _Start}/*` ? { [K in "_"]: string; } : Path extends `${infer _Start}/${infer Rest}` ? InferParamWildCard<Rest> : {};
|
|
10
10
|
//#endregion
|
|
11
11
|
export { HasRequiredKeys, InferParamPath, InferParamWildCard, IsEmptyObject, MergeObject, Prettify, RequiredKeysOf, UnionToIntersection };
|
|
12
12
|
//# sourceMappingURL=helper.d.cts.map
|
package/dist/helper.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
//#region src/helper.d.ts
|
|
2
|
-
type RequiredKeysOf<BaseType extends object> = Exclude<{ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]> ? Key : never }[keyof BaseType], undefined>;
|
|
2
|
+
type RequiredKeysOf<BaseType extends object> = Exclude<{ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]> ? Key : never; }[keyof BaseType], undefined>;
|
|
3
3
|
type HasRequiredKeys<BaseType extends object> = RequiredKeysOf<BaseType> extends never ? false : true;
|
|
4
|
-
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
4
|
+
type Prettify<T> = { [K in keyof T]: T[K]; } & {};
|
|
5
5
|
type IsEmptyObject<T> = keyof T extends never ? true : false;
|
|
6
6
|
type UnionToIntersection<Union> = (Union extends unknown ? (distributedUnion: Union) => void : never) extends ((mergedIntersection: infer Intersection) => void) ? Intersection & Union : never;
|
|
7
7
|
type MergeObject<T extends Record<string, any> | never, S extends Record<string, any> | never> = T extends never ? S : S extends never ? T : T & S;
|
|
8
|
-
type InferParamPath<Path> = Path extends `${infer _Start}:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string } : Path extends `${infer _Start}:${infer Param}` ? { [K in Param]: string } : Path extends `${infer _Start}/${infer Rest}` ? InferParamPath<Rest> : {};
|
|
9
|
-
type InferParamWildCard<Path> = Path extends `${infer _Start}/*:${infer Param}/${infer Rest}` | `${infer _Start}/**:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string } : Path extends `${infer _Start}/*` ? { [K in "_"]: string } : Path extends `${infer _Start}/${infer Rest}` ? InferParamWildCard<Rest> : {};
|
|
8
|
+
type InferParamPath<Path> = Path extends `${infer _Start}:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string; } : Path extends `${infer _Start}:${infer Param}` ? { [K in Param]: string; } : Path extends `${infer _Start}/${infer Rest}` ? InferParamPath<Rest> : {};
|
|
9
|
+
type InferParamWildCard<Path> = Path extends `${infer _Start}/*:${infer Param}/${infer Rest}` | `${infer _Start}/**:${infer Param}/${infer Rest}` ? { [K in Param | keyof InferParamPath<Rest>]: string; } : Path extends `${infer _Start}/*` ? { [K in "_"]: string; } : Path extends `${infer _Start}/${infer Rest}` ? InferParamWildCard<Rest> : {};
|
|
10
10
|
//#endregion
|
|
11
11
|
export { HasRequiredKeys, InferParamPath, InferParamWildCard, IsEmptyObject, MergeObject, Prettify, RequiredKeysOf, UnionToIntersection };
|
|
12
12
|
//# sourceMappingURL=helper.d.mts.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_error = require(
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const require_endpoint = require(
|
|
7
|
-
const require_middleware = require(
|
|
8
|
-
const require_openapi = require(
|
|
9
|
-
const require_router = require(
|
|
10
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_error = require("./error.cjs");
|
|
3
|
+
const require_cookies = require("./cookies.cjs");
|
|
4
|
+
const require_context = require("./context.cjs");
|
|
5
|
+
const require_to_response = require("./to-response.cjs");
|
|
6
|
+
const require_endpoint = require("./endpoint.cjs");
|
|
7
|
+
const require_middleware = require("./middleware.cjs");
|
|
8
|
+
const require_openapi = require("./openapi.cjs");
|
|
9
|
+
const require_router = require("./router.cjs");
|
|
11
10
|
exports.APIError = require_error.APIError;
|
|
12
11
|
exports.BetterCallError = require_error.BetterCallError;
|
|
13
12
|
exports.ValidationError = require_error.ValidationError;
|
|
@@ -25,4 +24,4 @@ exports.parseCookies = require_cookies.parseCookies;
|
|
|
25
24
|
exports.serializeCookie = require_cookies.serializeCookie;
|
|
26
25
|
exports.serializeSignedCookie = require_cookies.serializeSignedCookie;
|
|
27
26
|
exports.statusCodes = require_error.statusCodes;
|
|
28
|
-
exports.toResponse = require_to_response.toResponse;
|
|
27
|
+
exports.toResponse = require_to_response.toResponse;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CookieOptions, CookiePrefixOptions, getCookieKey, parseCookies, serializeCookie, serializeSignedCookie } from "./cookies.cjs";
|
|
2
2
|
import { StandardSchemaV1 } from "./standard-schema.cjs";
|
|
3
3
|
import { APIError, BetterCallError, Status, ValidationError, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, statusCodes } from "./error.cjs";
|
|
4
|
-
import {
|
|
4
|
+
import { HasRequiredKeys, InferParamPath, InferParamWildCard, IsEmptyObject, MergeObject, Prettify, RequiredKeysOf, UnionToIntersection } from "./helper.cjs";
|
|
5
|
+
import { Middleware, MiddlewareContext, MiddlewareHandler, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware } from "./middleware.cjs";
|
|
5
6
|
import { HTTPMethod, InferBody, InferBodyInput, InferHeaders, InferHeadersInput, InferInputMethod, InferMethod, InferMiddlewareBody, InferMiddlewareQuery, InferParam, InferParamInput, InferQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse, InputContext, Method, createInternalContext } from "./context.cjs";
|
|
6
|
-
import { Middleware, MiddlewareContext, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware } from "./middleware.cjs";
|
|
7
7
|
import { OpenAPIParameter, OpenAPISchemaType, Path, generator, getHTML } from "./openapi.cjs";
|
|
8
8
|
import { Endpoint, EndpointBaseOptions, EndpointBodyMethodOptions, EndpointContext, EndpointHandler, EndpointOptions, StrictEndpoint, createEndpoint } from "./endpoint.cjs";
|
|
9
9
|
import { Router, RouterConfig, createRouter } from "./router.cjs";
|
|
10
10
|
import { JSONResponse, toResponse } from "./to-response.cjs";
|
|
11
|
-
export { APIError, BetterCallError, CookieOptions, CookiePrefixOptions, Endpoint, EndpointBaseOptions, EndpointBodyMethodOptions, EndpointContext, EndpointHandler, EndpointOptions, HTTPMethod, HasRequiredKeys, InferBody, InferBodyInput, InferHeaders, InferHeadersInput, InferInputMethod, InferMethod, InferMiddlewareBody, InferMiddlewareQuery, InferParam, InferParamInput, InferParamPath, InferParamWildCard, InferQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse, InputContext, IsEmptyObject, JSONResponse, MergeObject, Method, Middleware, MiddlewareContext, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, OpenAPIParameter, OpenAPISchemaType, Path, Prettify, RequiredKeysOf, Router, RouterConfig, StandardSchemaV1, Status, StrictEndpoint, UnionToIntersection, ValidationError, createEndpoint, createInternalContext, createMiddleware, createRouter, generator, getCookieKey, getHTML, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, parseCookies, serializeCookie, serializeSignedCookie, statusCodes, toResponse };
|
|
11
|
+
export { APIError, BetterCallError, CookieOptions, CookiePrefixOptions, Endpoint, EndpointBaseOptions, EndpointBodyMethodOptions, EndpointContext, EndpointHandler, EndpointOptions, HTTPMethod, HasRequiredKeys, InferBody, InferBodyInput, InferHeaders, InferHeadersInput, InferInputMethod, InferMethod, InferMiddlewareBody, InferMiddlewareQuery, InferParam, InferParamInput, InferParamPath, InferParamWildCard, InferQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse, InputContext, IsEmptyObject, JSONResponse, MergeObject, Method, Middleware, MiddlewareContext, MiddlewareHandler, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, OpenAPIParameter, OpenAPISchemaType, Path, Prettify, RequiredKeysOf, Router, RouterConfig, StandardSchemaV1, Status, StrictEndpoint, UnionToIntersection, ValidationError, createEndpoint, createInternalContext, createMiddleware, createRouter, generator, getCookieKey, getHTML, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, parseCookies, serializeCookie, serializeSignedCookie, statusCodes, toResponse };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CookieOptions, CookiePrefixOptions, getCookieKey, parseCookies, serializeCookie, serializeSignedCookie } from "./cookies.mjs";
|
|
2
2
|
import { StandardSchemaV1 } from "./standard-schema.mjs";
|
|
3
3
|
import { APIError, BetterCallError, Status, ValidationError, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, statusCodes } from "./error.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { HasRequiredKeys, InferParamPath, InferParamWildCard, IsEmptyObject, MergeObject, Prettify, RequiredKeysOf, UnionToIntersection } from "./helper.mjs";
|
|
5
|
+
import { Middleware, MiddlewareContext, MiddlewareHandler, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware } from "./middleware.mjs";
|
|
5
6
|
import { HTTPMethod, InferBody, InferBodyInput, InferHeaders, InferHeadersInput, InferInputMethod, InferMethod, InferMiddlewareBody, InferMiddlewareQuery, InferParam, InferParamInput, InferQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse, InputContext, Method, createInternalContext } from "./context.mjs";
|
|
6
|
-
import { Middleware, MiddlewareContext, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware } from "./middleware.mjs";
|
|
7
7
|
import { OpenAPIParameter, OpenAPISchemaType, Path, generator, getHTML } from "./openapi.mjs";
|
|
8
8
|
import { Endpoint, EndpointBaseOptions, EndpointBodyMethodOptions, EndpointContext, EndpointHandler, EndpointOptions, StrictEndpoint, createEndpoint } from "./endpoint.mjs";
|
|
9
9
|
import { Router, RouterConfig, createRouter } from "./router.mjs";
|
|
10
10
|
import { JSONResponse, toResponse } from "./to-response.mjs";
|
|
11
|
-
export { APIError, BetterCallError, CookieOptions, CookiePrefixOptions, Endpoint, EndpointBaseOptions, EndpointBodyMethodOptions, EndpointContext, EndpointHandler, EndpointOptions, HTTPMethod, HasRequiredKeys, InferBody, InferBodyInput, InferHeaders, InferHeadersInput, InferInputMethod, InferMethod, InferMiddlewareBody, InferMiddlewareQuery, InferParam, InferParamInput, InferParamPath, InferParamWildCard, InferQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse, InputContext, IsEmptyObject, JSONResponse, MergeObject, Method, Middleware, MiddlewareContext, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, OpenAPIParameter, OpenAPISchemaType, Path, Prettify, RequiredKeysOf, Router, RouterConfig, StandardSchemaV1, Status, StrictEndpoint, UnionToIntersection, ValidationError, createEndpoint, createInternalContext, createMiddleware, createRouter, generator, getCookieKey, getHTML, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, parseCookies, serializeCookie, serializeSignedCookie, statusCodes, toResponse };
|
|
11
|
+
export { APIError, BetterCallError, CookieOptions, CookiePrefixOptions, Endpoint, EndpointBaseOptions, EndpointBodyMethodOptions, EndpointContext, EndpointHandler, EndpointOptions, HTTPMethod, HasRequiredKeys, InferBody, InferBodyInput, InferHeaders, InferHeadersInput, InferInputMethod, InferMethod, InferMiddlewareBody, InferMiddlewareQuery, InferParam, InferParamInput, InferParamPath, InferParamWildCard, InferQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse, InputContext, IsEmptyObject, JSONResponse, MergeObject, Method, Middleware, MiddlewareContext, MiddlewareHandler, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, OpenAPIParameter, OpenAPISchemaType, Path, Prettify, RequiredKeysOf, Router, RouterConfig, StandardSchemaV1, Status, StrictEndpoint, UnionToIntersection, ValidationError, createEndpoint, createInternalContext, createMiddleware, createRouter, generator, getCookieKey, getHTML, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, parseCookies, serializeCookie, serializeSignedCookie, statusCodes, toResponse };
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { APIError, BetterCallError, ValidationError, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, statusCodes } from "./error.mjs";
|
|
2
|
-
import { toResponse } from "./to-response.mjs";
|
|
3
2
|
import { getCookieKey, parseCookies, serializeCookie, serializeSignedCookie } from "./cookies.mjs";
|
|
4
3
|
import { createInternalContext } from "./context.mjs";
|
|
4
|
+
import { toResponse } from "./to-response.mjs";
|
|
5
5
|
import { createEndpoint } from "./endpoint.mjs";
|
|
6
6
|
import { createMiddleware } from "./middleware.mjs";
|
|
7
7
|
import { generator, getHTML } from "./openapi.mjs";
|
|
8
8
|
import { createRouter } from "./router.mjs";
|
|
9
|
-
|
|
10
|
-
export { APIError, BetterCallError, ValidationError, createEndpoint, createInternalContext, createMiddleware, createRouter, generator, getCookieKey, getHTML, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, parseCookies, serializeCookie, serializeSignedCookie, statusCodes, toResponse };
|
|
9
|
+
export { APIError, BetterCallError, ValidationError, createEndpoint, createInternalContext, createMiddleware, createRouter, generator, getCookieKey, getHTML, hideInternalStackFrames, kAPIErrorHeaderSymbol, makeErrorForHideStackFrame, parseCookies, serializeCookie, serializeSignedCookie, statusCodes, toResponse };
|
package/dist/middleware.cjs
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
const require_error = require(
|
|
2
|
-
const require_utils = require(
|
|
3
|
-
const require_context = require(
|
|
4
|
-
require('./endpoint.cjs');
|
|
5
|
-
|
|
1
|
+
const require_error = require("./error.cjs");
|
|
2
|
+
const require_utils = require("./utils.cjs");
|
|
3
|
+
const require_context = require("./context.cjs");
|
|
6
4
|
//#region src/middleware.ts
|
|
7
5
|
function createMiddleware(optionsOrHandler, handler) {
|
|
8
6
|
const internalHandler = async (inputCtx) => {
|
|
@@ -46,7 +44,7 @@ createMiddleware.create = (opts) => {
|
|
|
46
44
|
}
|
|
47
45
|
return fn;
|
|
48
46
|
};
|
|
49
|
-
|
|
50
47
|
//#endregion
|
|
51
48
|
exports.createMiddleware = createMiddleware;
|
|
49
|
+
|
|
52
50
|
//# sourceMappingURL=middleware.cjs.map
|
package/dist/middleware.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":["createInternalContext","isAPIError","kAPIErrorHeaderSymbol"],"sources":["../src/middleware.ts"],"sourcesContent":["import {\n\
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":["createInternalContext","isAPIError","kAPIErrorHeaderSymbol"],"sources":["../src/middleware.ts"],"sourcesContent":["import type {\n\tInferBodyInput,\n\tInferHeaders,\n\tInferHeadersInput,\n\tInferMiddlewareBody,\n\tInferMiddlewareQuery,\n\tInferQueryInput,\n\tInferRequest,\n\tInferRequestInput,\n\tInferUse,\n\tInputContext,\n} from \"./context\";\nimport { createInternalContext } from \"./context\";\nimport type { EndpointContext, EndpointOptions } from \"./endpoint\";\nimport { kAPIErrorHeaderSymbol } from \"./error\";\nimport type { Prettify } from \"./helper\";\nimport { isAPIError } from \"./utils\";\n\nexport interface MiddlewareOptions extends Omit<EndpointOptions, \"method\"> {}\n\nexport type MiddlewareResponse = null | void | undefined | Record<string, any>;\n\nexport type MiddlewareContext<\n\tOptions extends MiddlewareOptions,\n\tContext = {},\n> = EndpointContext<\n\tstring,\n\tOptions & {\n\t\tmethod: \"*\";\n\t}\n> & {\n\t/**\n\t * Method\n\t *\n\t * The request method\n\t */\n\tmethod: string;\n\t/**\n\t * Path\n\t *\n\t * The path of the endpoint\n\t */\n\tpath: string;\n\t/**\n\t * Body\n\t *\n\t * The body object will be the parsed JSON from the request and validated\n\t * against the body schema if it exists\n\t */\n\tbody: InferMiddlewareBody<Options>;\n\t/**\n\t * Query\n\t *\n\t * The query object will be the parsed query string from the request\n\t * and validated against the query schema if it exists\n\t */\n\tquery: InferMiddlewareQuery<Options>;\n\t/**\n\t * Request object\n\t *\n\t * If `requireRequest` is set to true in the endpoint options this will be\n\t * required\n\t */\n\trequest: InferRequest<Options>;\n\t/**\n\t * Headers\n\t *\n\t * If `requireHeaders` is set to true in the endpoint options this will be\n\t * required\n\t */\n\theaders: InferHeaders<Options>;\n\t/**\n\t * Set header\n\t *\n\t * If it's called outside of a request it will just be ignored.\n\t */\n\tsetHeader: (key: string, value: string) => void;\n\t/**\n\t * Get header\n\t *\n\t * If it's called outside of a request it will just return null\n\t *\n\t * @param key - The key of the header\n\t * @returns\n\t */\n\tgetHeader: (key: string) => string | null;\n\t/**\n\t * JSON\n\t *\n\t * a helper function to create a JSON response with\n\t * the correct headers\n\t * and status code. If `asResponse` is set to true in\n\t * the context then\n\t * it will return a Response object instead of the\n\t * JSON object.\n\t *\n\t * @param json - The JSON object to return\n\t * @param routerResponse - The response object to\n\t * return if `asResponse` is\n\t * true in the context this will take precedence\n\t */\n\tjson: <R extends Record<string, any> | null>(\n\t\tjson: R,\n\t\trouterResponse?:\n\t\t\t| {\n\t\t\t\t\tstatus?: number;\n\t\t\t\t\theaders?: Record<string, string>;\n\t\t\t\t\tresponse?: Response;\n\t\t\t }\n\t\t\t| Response,\n\t) => Promise<R>;\n\t/**\n\t * Middleware context\n\t */\n\tcontext: Prettify<Context>;\n};\n\nexport function createMiddleware<Options extends MiddlewareOptions, R>(\n\toptions: Options,\n\thandler: (context: MiddlewareContext<Options>) => Promise<R>,\n): Middleware<\n\tOptions,\n\t<InputCtx extends MiddlewareInputContext<Options>>(\n\t\tinputContext: InputCtx,\n\t) => Promise<R>\n>;\nexport function createMiddleware<Options extends MiddlewareOptions, R>(\n\thandler: (context: MiddlewareContext<Options>) => Promise<R>,\n): Middleware<\n\tOptions,\n\t<InputCtx extends MiddlewareInputContext<Options>>(\n\t\tinputContext: InputCtx,\n\t) => Promise<R>\n>;\nexport function createMiddleware(optionsOrHandler: any, handler?: any) {\n\tconst internalHandler = async (inputCtx: InputContext<any, any>) => {\n\t\tconst context = inputCtx as InputContext<any, any>;\n\t\tconst _handler =\n\t\t\ttypeof optionsOrHandler === \"function\" ? optionsOrHandler : handler;\n\t\tconst options =\n\t\t\ttypeof optionsOrHandler === \"function\" ? {} : optionsOrHandler;\n\t\tconst internalContext = await createInternalContext(context, {\n\t\t\toptions,\n\t\t\tpath: \"/\",\n\t\t});\n\n\t\tif (!_handler) {\n\t\t\tthrow new Error(\"handler must be defined\");\n\t\t}\n\t\ttry {\n\t\t\tconst response = await _handler(internalContext as any);\n\t\t\tconst headers = internalContext.responseHeaders;\n\t\t\treturn context.returnHeaders\n\t\t\t\t? {\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tresponse,\n\t\t\t\t\t}\n\t\t\t\t: response;\n\t\t} catch (e) {\n\t\t\t// fixme(alex): this is workaround that set-cookie headers are not accessible when error is thrown from middleware\n\t\t\tif (isAPIError(e)) {\n\t\t\t\tObject.defineProperty(e, kAPIErrorHeaderSymbol, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tget() {\n\t\t\t\t\t\treturn internalContext.responseHeaders;\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t};\n\tinternalHandler.options =\n\t\ttypeof optionsOrHandler === \"function\" ? {} : optionsOrHandler;\n\treturn internalHandler;\n}\n\nexport type MiddlewareInputContext<Options extends MiddlewareOptions> =\n\tInferBodyInput<Options> &\n\t\tInferQueryInput<Options> &\n\t\tInferRequestInput<Options> &\n\t\tInferHeadersInput<Options> & {\n\t\t\tasResponse?: boolean;\n\t\t\treturnHeaders?: boolean;\n\t\t\tuse?: MiddlewareHandler[];\n\t\t};\n\ntype MiddlewareFunction = (...args: never[]) => Promise<unknown>;\nexport type MiddlewareHandler = (\n\tinputContext: MiddlewareInputContext<MiddlewareOptions>,\n) => Promise<unknown>;\n\nexport type Middleware<\n\tOptions extends MiddlewareOptions = MiddlewareOptions,\n\tHandler extends MiddlewareFunction = MiddlewareHandler,\n> = Handler & {\n\toptions: Options;\n};\n\ncreateMiddleware.create = <\n\tE extends {\n\t\tuse?: MiddlewareHandler[];\n\t},\n>(\n\topts?: E,\n) => {\n\ttype InferredContext = InferUse<E[\"use\"]>;\n\tfunction fn<Options extends MiddlewareOptions, R>(\n\t\toptions: Options,\n\t\thandler: (ctx: MiddlewareContext<Options, InferredContext>) => Promise<R>,\n\t): Middleware<\n\t\tOptions,\n\t\t(inputContext: MiddlewareInputContext<Options>) => Promise<R>\n\t>;\n\tfunction fn<Options extends MiddlewareOptions, R>(\n\t\thandler: (ctx: MiddlewareContext<Options, InferredContext>) => Promise<R>,\n\t): Middleware<\n\t\tOptions,\n\t\t(inputContext: MiddlewareInputContext<Options>) => Promise<R>\n\t>;\n\tfunction fn(optionsOrHandler: any, handler?: any) {\n\t\tif (typeof optionsOrHandler === \"function\") {\n\t\t\treturn createMiddleware(\n\t\t\t\t{\n\t\t\t\t\tuse: opts?.use,\n\t\t\t\t},\n\t\t\t\toptionsOrHandler,\n\t\t\t);\n\t\t}\n\t\tif (!handler) {\n\t\t\tthrow new Error(\"Middleware handler is required\");\n\t\t}\n\t\tconst middleware = createMiddleware(\n\t\t\t{\n\t\t\t\t...optionsOrHandler,\n\t\t\t\tmethod: \"*\",\n\t\t\t\tuse: [...(opts?.use || []), ...(optionsOrHandler.use || [])],\n\t\t\t},\n\t\t\thandler,\n\t\t);\n\t\treturn middleware as any;\n\t}\n\treturn fn;\n};\n"],"mappings":";;;;AAsIA,SAAgB,iBAAiB,kBAAuB,SAAe;CACtE,MAAM,kBAAkB,OAAO,aAAqC;EACnE,MAAM,UAAU;EAChB,MAAM,WACL,OAAO,qBAAqB,aAAa,mBAAmB;EAG7D,MAAM,kBAAkB,MAAMA,gBAAAA,sBAAsB,SAAS;GAC5D,SAFA,OAAO,qBAAqB,aAAa,CAAC,IAAI;GAG9C,MAAM;EACP,CAAC;EAED,IAAI,CAAC,UACJ,MAAM,IAAI,MAAM,yBAAyB;EAE1C,IAAI;GACH,MAAM,WAAW,MAAM,SAAS,eAAsB;GACtD,MAAM,UAAU,gBAAgB;GAChC,OAAO,QAAQ,gBACZ;IACA;IACA;GACD,IACC;EACJ,SAAS,GAAG;GAEX,IAAIC,cAAAA,WAAW,CAAC,GACf,OAAO,eAAe,GAAGC,cAAAA,uBAAuB;IAC/C,YAAY;IACZ,cAAc;IACd,MAAM;KACL,OAAO,gBAAgB;IACxB;GACD,CAAC;GAEF,MAAM;EACP;CACD;CACA,gBAAgB,UACf,OAAO,qBAAqB,aAAa,CAAC,IAAI;CAC/C,OAAO;AACR;AAwBA,iBAAiB,UAKhB,SACI;CAeJ,SAAS,GAAG,kBAAuB,SAAe;EACjD,IAAI,OAAO,qBAAqB,YAC/B,OAAO,iBACN,EACC,KAAK,MAAM,IACZ,GACA,gBACD;EAED,IAAI,CAAC,SACJ,MAAM,IAAI,MAAM,gCAAgC;EAUjD,OARmB,iBAClB;GACC,GAAG;GACH,QAAQ;GACR,KAAK,CAAC,GAAI,MAAM,OAAO,CAAC,GAAI,GAAI,iBAAiB,OAAO,CAAC,CAAE;EAC5D,GACA,OAEe;CACjB;CACA,OAAO;AACR"}
|
package/dist/middleware.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Prettify } from "./helper.cjs";
|
|
2
2
|
import { InferBodyInput, InferHeaders, InferHeadersInput, InferMiddlewareBody, InferMiddlewareQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse } from "./context.cjs";
|
|
3
3
|
import { EndpointContext, EndpointOptions } from "./endpoint.cjs";
|
|
4
|
-
|
|
5
4
|
//#region src/middleware.d.ts
|
|
6
5
|
interface MiddlewareOptions extends Omit<EndpointOptions, "method"> {}
|
|
7
6
|
type MiddlewareResponse = null | void | undefined | Record<string, any>;
|
|
@@ -34,18 +33,6 @@ type MiddlewareContext<Options extends MiddlewareOptions, Context = {}> = Endpoi
|
|
|
34
33
|
* and validated against the query schema if it exists
|
|
35
34
|
*/
|
|
36
35
|
query: InferMiddlewareQuery<Options>;
|
|
37
|
-
/**
|
|
38
|
-
* Params
|
|
39
|
-
*
|
|
40
|
-
* If the path is `/user/:id` and the request is `/user/1` then the
|
|
41
|
-
* params will
|
|
42
|
-
* be `{ id: "1" }` and if the path includes a wildcard like `/user/*`
|
|
43
|
-
* then the
|
|
44
|
-
* params will be `{ _: "1" }` where `_` is the wildcard key. If the
|
|
45
|
-
* wildcard
|
|
46
|
-
* is named like `/user/**:name` then the params will be `{ name: string }`
|
|
47
|
-
*/
|
|
48
|
-
params: string;
|
|
49
36
|
/**
|
|
50
37
|
* Request object
|
|
51
38
|
*
|
|
@@ -100,24 +87,26 @@ type MiddlewareContext<Options extends MiddlewareOptions, Context = {}> = Endpoi
|
|
|
100
87
|
*/
|
|
101
88
|
context: Prettify<Context>;
|
|
102
89
|
};
|
|
103
|
-
declare function createMiddleware<Options extends MiddlewareOptions, R>(options: Options, handler: (context: MiddlewareContext<Options>) => Promise<R>): <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R
|
|
104
|
-
declare function createMiddleware<Options extends MiddlewareOptions, R>(handler: (context: MiddlewareContext<Options>) => Promise<R>): <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R
|
|
90
|
+
declare function createMiddleware<Options extends MiddlewareOptions, R>(options: Options, handler: (context: MiddlewareContext<Options>) => Promise<R>): Middleware<Options, <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R>>;
|
|
91
|
+
declare function createMiddleware<Options extends MiddlewareOptions, R>(handler: (context: MiddlewareContext<Options>) => Promise<R>): Middleware<Options, <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R>>;
|
|
105
92
|
declare namespace createMiddleware {
|
|
106
93
|
var create: <E extends {
|
|
107
|
-
use?:
|
|
94
|
+
use?: MiddlewareHandler[];
|
|
108
95
|
}>(opts?: E) => {
|
|
109
|
-
<Options extends MiddlewareOptions, R>(options: Options, handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R>): (inputContext: MiddlewareInputContext<Options>) => Promise<R
|
|
110
|
-
<Options extends MiddlewareOptions, R_1>(handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R_1>): (inputContext: MiddlewareInputContext<Options>) => Promise<R_1
|
|
96
|
+
<Options extends MiddlewareOptions, R>(options: Options, handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R>): Middleware<Options, (inputContext: MiddlewareInputContext<Options>) => Promise<R>>;
|
|
97
|
+
<Options extends MiddlewareOptions, R_1>(handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R_1>): Middleware<Options, (inputContext: MiddlewareInputContext<Options>) => Promise<R_1>>;
|
|
111
98
|
};
|
|
112
99
|
}
|
|
113
100
|
type MiddlewareInputContext<Options extends MiddlewareOptions> = InferBodyInput<Options> & InferQueryInput<Options> & InferRequestInput<Options> & InferHeadersInput<Options> & {
|
|
114
101
|
asResponse?: boolean;
|
|
115
102
|
returnHeaders?: boolean;
|
|
116
|
-
use?:
|
|
103
|
+
use?: MiddlewareHandler[];
|
|
117
104
|
};
|
|
118
|
-
type
|
|
105
|
+
type MiddlewareFunction = (...args: never[]) => Promise<unknown>;
|
|
106
|
+
type MiddlewareHandler = (inputContext: MiddlewareInputContext<MiddlewareOptions>) => Promise<unknown>;
|
|
107
|
+
type Middleware<Options extends MiddlewareOptions = MiddlewareOptions, Handler extends MiddlewareFunction = MiddlewareHandler> = Handler & {
|
|
119
108
|
options: Options;
|
|
120
109
|
};
|
|
121
110
|
//#endregion
|
|
122
|
-
export { Middleware, MiddlewareContext, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware };
|
|
111
|
+
export { Middleware, MiddlewareContext, MiddlewareHandler, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware };
|
|
123
112
|
//# sourceMappingURL=middleware.d.cts.map
|
package/dist/middleware.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Prettify } from "./helper.mjs";
|
|
2
2
|
import { InferBodyInput, InferHeaders, InferHeadersInput, InferMiddlewareBody, InferMiddlewareQuery, InferQueryInput, InferRequest, InferRequestInput, InferUse } from "./context.mjs";
|
|
3
3
|
import { EndpointContext, EndpointOptions } from "./endpoint.mjs";
|
|
4
|
-
|
|
5
4
|
//#region src/middleware.d.ts
|
|
6
5
|
interface MiddlewareOptions extends Omit<EndpointOptions, "method"> {}
|
|
7
6
|
type MiddlewareResponse = null | void | undefined | Record<string, any>;
|
|
@@ -34,18 +33,6 @@ type MiddlewareContext<Options extends MiddlewareOptions, Context = {}> = Endpoi
|
|
|
34
33
|
* and validated against the query schema if it exists
|
|
35
34
|
*/
|
|
36
35
|
query: InferMiddlewareQuery<Options>;
|
|
37
|
-
/**
|
|
38
|
-
* Params
|
|
39
|
-
*
|
|
40
|
-
* If the path is `/user/:id` and the request is `/user/1` then the
|
|
41
|
-
* params will
|
|
42
|
-
* be `{ id: "1" }` and if the path includes a wildcard like `/user/*`
|
|
43
|
-
* then the
|
|
44
|
-
* params will be `{ _: "1" }` where `_` is the wildcard key. If the
|
|
45
|
-
* wildcard
|
|
46
|
-
* is named like `/user/**:name` then the params will be `{ name: string }`
|
|
47
|
-
*/
|
|
48
|
-
params: string;
|
|
49
36
|
/**
|
|
50
37
|
* Request object
|
|
51
38
|
*
|
|
@@ -100,24 +87,26 @@ type MiddlewareContext<Options extends MiddlewareOptions, Context = {}> = Endpoi
|
|
|
100
87
|
*/
|
|
101
88
|
context: Prettify<Context>;
|
|
102
89
|
};
|
|
103
|
-
declare function createMiddleware<Options extends MiddlewareOptions, R>(options: Options, handler: (context: MiddlewareContext<Options>) => Promise<R>): <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R
|
|
104
|
-
declare function createMiddleware<Options extends MiddlewareOptions, R>(handler: (context: MiddlewareContext<Options>) => Promise<R>): <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R
|
|
90
|
+
declare function createMiddleware<Options extends MiddlewareOptions, R>(options: Options, handler: (context: MiddlewareContext<Options>) => Promise<R>): Middleware<Options, <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R>>;
|
|
91
|
+
declare function createMiddleware<Options extends MiddlewareOptions, R>(handler: (context: MiddlewareContext<Options>) => Promise<R>): Middleware<Options, <InputCtx extends MiddlewareInputContext<Options>>(inputContext: InputCtx) => Promise<R>>;
|
|
105
92
|
declare namespace createMiddleware {
|
|
106
93
|
var create: <E extends {
|
|
107
|
-
use?:
|
|
94
|
+
use?: MiddlewareHandler[];
|
|
108
95
|
}>(opts?: E) => {
|
|
109
|
-
<Options extends MiddlewareOptions, R>(options: Options, handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R>): (inputContext: MiddlewareInputContext<Options>) => Promise<R
|
|
110
|
-
<Options extends MiddlewareOptions, R_1>(handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R_1>): (inputContext: MiddlewareInputContext<Options>) => Promise<R_1
|
|
96
|
+
<Options extends MiddlewareOptions, R>(options: Options, handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R>): Middleware<Options, (inputContext: MiddlewareInputContext<Options>) => Promise<R>>;
|
|
97
|
+
<Options extends MiddlewareOptions, R_1>(handler: (ctx: MiddlewareContext<Options, InferUse<E["use"]>>) => Promise<R_1>): Middleware<Options, (inputContext: MiddlewareInputContext<Options>) => Promise<R_1>>;
|
|
111
98
|
};
|
|
112
99
|
}
|
|
113
100
|
type MiddlewareInputContext<Options extends MiddlewareOptions> = InferBodyInput<Options> & InferQueryInput<Options> & InferRequestInput<Options> & InferHeadersInput<Options> & {
|
|
114
101
|
asResponse?: boolean;
|
|
115
102
|
returnHeaders?: boolean;
|
|
116
|
-
use?:
|
|
103
|
+
use?: MiddlewareHandler[];
|
|
117
104
|
};
|
|
118
|
-
type
|
|
105
|
+
type MiddlewareFunction = (...args: never[]) => Promise<unknown>;
|
|
106
|
+
type MiddlewareHandler = (inputContext: MiddlewareInputContext<MiddlewareOptions>) => Promise<unknown>;
|
|
107
|
+
type Middleware<Options extends MiddlewareOptions = MiddlewareOptions, Handler extends MiddlewareFunction = MiddlewareHandler> = Handler & {
|
|
119
108
|
options: Options;
|
|
120
109
|
};
|
|
121
110
|
//#endregion
|
|
122
|
-
export { Middleware, MiddlewareContext, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware };
|
|
111
|
+
export { Middleware, MiddlewareContext, MiddlewareHandler, MiddlewareInputContext, MiddlewareOptions, MiddlewareResponse, createMiddleware };
|
|
123
112
|
//# sourceMappingURL=middleware.d.mts.map
|
package/dist/middleware.mjs
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { kAPIErrorHeaderSymbol } from "./error.mjs";
|
|
2
2
|
import { isAPIError } from "./utils.mjs";
|
|
3
3
|
import { createInternalContext } from "./context.mjs";
|
|
4
|
-
import "./endpoint.mjs";
|
|
5
|
-
|
|
6
4
|
//#region src/middleware.ts
|
|
7
5
|
function createMiddleware(optionsOrHandler, handler) {
|
|
8
6
|
const internalHandler = async (inputCtx) => {
|
|
@@ -46,7 +44,7 @@ createMiddleware.create = (opts) => {
|
|
|
46
44
|
}
|
|
47
45
|
return fn;
|
|
48
46
|
};
|
|
49
|
-
|
|
50
47
|
//#endregion
|
|
51
48
|
export { createMiddleware };
|
|
49
|
+
|
|
52
50
|
//# sourceMappingURL=middleware.mjs.map
|
package/dist/middleware.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.mjs","names":[],"sources":["../src/middleware.ts"],"sourcesContent":["import {\n\
|
|
1
|
+
{"version":3,"file":"middleware.mjs","names":[],"sources":["../src/middleware.ts"],"sourcesContent":["import type {\n\tInferBodyInput,\n\tInferHeaders,\n\tInferHeadersInput,\n\tInferMiddlewareBody,\n\tInferMiddlewareQuery,\n\tInferQueryInput,\n\tInferRequest,\n\tInferRequestInput,\n\tInferUse,\n\tInputContext,\n} from \"./context\";\nimport { createInternalContext } from \"./context\";\nimport type { EndpointContext, EndpointOptions } from \"./endpoint\";\nimport { kAPIErrorHeaderSymbol } from \"./error\";\nimport type { Prettify } from \"./helper\";\nimport { isAPIError } from \"./utils\";\n\nexport interface MiddlewareOptions extends Omit<EndpointOptions, \"method\"> {}\n\nexport type MiddlewareResponse = null | void | undefined | Record<string, any>;\n\nexport type MiddlewareContext<\n\tOptions extends MiddlewareOptions,\n\tContext = {},\n> = EndpointContext<\n\tstring,\n\tOptions & {\n\t\tmethod: \"*\";\n\t}\n> & {\n\t/**\n\t * Method\n\t *\n\t * The request method\n\t */\n\tmethod: string;\n\t/**\n\t * Path\n\t *\n\t * The path of the endpoint\n\t */\n\tpath: string;\n\t/**\n\t * Body\n\t *\n\t * The body object will be the parsed JSON from the request and validated\n\t * against the body schema if it exists\n\t */\n\tbody: InferMiddlewareBody<Options>;\n\t/**\n\t * Query\n\t *\n\t * The query object will be the parsed query string from the request\n\t * and validated against the query schema if it exists\n\t */\n\tquery: InferMiddlewareQuery<Options>;\n\t/**\n\t * Request object\n\t *\n\t * If `requireRequest` is set to true in the endpoint options this will be\n\t * required\n\t */\n\trequest: InferRequest<Options>;\n\t/**\n\t * Headers\n\t *\n\t * If `requireHeaders` is set to true in the endpoint options this will be\n\t * required\n\t */\n\theaders: InferHeaders<Options>;\n\t/**\n\t * Set header\n\t *\n\t * If it's called outside of a request it will just be ignored.\n\t */\n\tsetHeader: (key: string, value: string) => void;\n\t/**\n\t * Get header\n\t *\n\t * If it's called outside of a request it will just return null\n\t *\n\t * @param key - The key of the header\n\t * @returns\n\t */\n\tgetHeader: (key: string) => string | null;\n\t/**\n\t * JSON\n\t *\n\t * a helper function to create a JSON response with\n\t * the correct headers\n\t * and status code. If `asResponse` is set to true in\n\t * the context then\n\t * it will return a Response object instead of the\n\t * JSON object.\n\t *\n\t * @param json - The JSON object to return\n\t * @param routerResponse - The response object to\n\t * return if `asResponse` is\n\t * true in the context this will take precedence\n\t */\n\tjson: <R extends Record<string, any> | null>(\n\t\tjson: R,\n\t\trouterResponse?:\n\t\t\t| {\n\t\t\t\t\tstatus?: number;\n\t\t\t\t\theaders?: Record<string, string>;\n\t\t\t\t\tresponse?: Response;\n\t\t\t }\n\t\t\t| Response,\n\t) => Promise<R>;\n\t/**\n\t * Middleware context\n\t */\n\tcontext: Prettify<Context>;\n};\n\nexport function createMiddleware<Options extends MiddlewareOptions, R>(\n\toptions: Options,\n\thandler: (context: MiddlewareContext<Options>) => Promise<R>,\n): Middleware<\n\tOptions,\n\t<InputCtx extends MiddlewareInputContext<Options>>(\n\t\tinputContext: InputCtx,\n\t) => Promise<R>\n>;\nexport function createMiddleware<Options extends MiddlewareOptions, R>(\n\thandler: (context: MiddlewareContext<Options>) => Promise<R>,\n): Middleware<\n\tOptions,\n\t<InputCtx extends MiddlewareInputContext<Options>>(\n\t\tinputContext: InputCtx,\n\t) => Promise<R>\n>;\nexport function createMiddleware(optionsOrHandler: any, handler?: any) {\n\tconst internalHandler = async (inputCtx: InputContext<any, any>) => {\n\t\tconst context = inputCtx as InputContext<any, any>;\n\t\tconst _handler =\n\t\t\ttypeof optionsOrHandler === \"function\" ? optionsOrHandler : handler;\n\t\tconst options =\n\t\t\ttypeof optionsOrHandler === \"function\" ? {} : optionsOrHandler;\n\t\tconst internalContext = await createInternalContext(context, {\n\t\t\toptions,\n\t\t\tpath: \"/\",\n\t\t});\n\n\t\tif (!_handler) {\n\t\t\tthrow new Error(\"handler must be defined\");\n\t\t}\n\t\ttry {\n\t\t\tconst response = await _handler(internalContext as any);\n\t\t\tconst headers = internalContext.responseHeaders;\n\t\t\treturn context.returnHeaders\n\t\t\t\t? {\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tresponse,\n\t\t\t\t\t}\n\t\t\t\t: response;\n\t\t} catch (e) {\n\t\t\t// fixme(alex): this is workaround that set-cookie headers are not accessible when error is thrown from middleware\n\t\t\tif (isAPIError(e)) {\n\t\t\t\tObject.defineProperty(e, kAPIErrorHeaderSymbol, {\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tget() {\n\t\t\t\t\t\treturn internalContext.responseHeaders;\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t};\n\tinternalHandler.options =\n\t\ttypeof optionsOrHandler === \"function\" ? {} : optionsOrHandler;\n\treturn internalHandler;\n}\n\nexport type MiddlewareInputContext<Options extends MiddlewareOptions> =\n\tInferBodyInput<Options> &\n\t\tInferQueryInput<Options> &\n\t\tInferRequestInput<Options> &\n\t\tInferHeadersInput<Options> & {\n\t\t\tasResponse?: boolean;\n\t\t\treturnHeaders?: boolean;\n\t\t\tuse?: MiddlewareHandler[];\n\t\t};\n\ntype MiddlewareFunction = (...args: never[]) => Promise<unknown>;\nexport type MiddlewareHandler = (\n\tinputContext: MiddlewareInputContext<MiddlewareOptions>,\n) => Promise<unknown>;\n\nexport type Middleware<\n\tOptions extends MiddlewareOptions = MiddlewareOptions,\n\tHandler extends MiddlewareFunction = MiddlewareHandler,\n> = Handler & {\n\toptions: Options;\n};\n\ncreateMiddleware.create = <\n\tE extends {\n\t\tuse?: MiddlewareHandler[];\n\t},\n>(\n\topts?: E,\n) => {\n\ttype InferredContext = InferUse<E[\"use\"]>;\n\tfunction fn<Options extends MiddlewareOptions, R>(\n\t\toptions: Options,\n\t\thandler: (ctx: MiddlewareContext<Options, InferredContext>) => Promise<R>,\n\t): Middleware<\n\t\tOptions,\n\t\t(inputContext: MiddlewareInputContext<Options>) => Promise<R>\n\t>;\n\tfunction fn<Options extends MiddlewareOptions, R>(\n\t\thandler: (ctx: MiddlewareContext<Options, InferredContext>) => Promise<R>,\n\t): Middleware<\n\t\tOptions,\n\t\t(inputContext: MiddlewareInputContext<Options>) => Promise<R>\n\t>;\n\tfunction fn(optionsOrHandler: any, handler?: any) {\n\t\tif (typeof optionsOrHandler === \"function\") {\n\t\t\treturn createMiddleware(\n\t\t\t\t{\n\t\t\t\t\tuse: opts?.use,\n\t\t\t\t},\n\t\t\t\toptionsOrHandler,\n\t\t\t);\n\t\t}\n\t\tif (!handler) {\n\t\t\tthrow new Error(\"Middleware handler is required\");\n\t\t}\n\t\tconst middleware = createMiddleware(\n\t\t\t{\n\t\t\t\t...optionsOrHandler,\n\t\t\t\tmethod: \"*\",\n\t\t\t\tuse: [...(opts?.use || []), ...(optionsOrHandler.use || [])],\n\t\t\t},\n\t\t\thandler,\n\t\t);\n\t\treturn middleware as any;\n\t}\n\treturn fn;\n};\n"],"mappings":";;;;AAsIA,SAAgB,iBAAiB,kBAAuB,SAAe;CACtE,MAAM,kBAAkB,OAAO,aAAqC;EACnE,MAAM,UAAU;EAChB,MAAM,WACL,OAAO,qBAAqB,aAAa,mBAAmB;EAG7D,MAAM,kBAAkB,MAAM,sBAAsB,SAAS;GAC5D,SAFA,OAAO,qBAAqB,aAAa,CAAC,IAAI;GAG9C,MAAM;EACP,CAAC;EAED,IAAI,CAAC,UACJ,MAAM,IAAI,MAAM,yBAAyB;EAE1C,IAAI;GACH,MAAM,WAAW,MAAM,SAAS,eAAsB;GACtD,MAAM,UAAU,gBAAgB;GAChC,OAAO,QAAQ,gBACZ;IACA;IACA;GACD,IACC;EACJ,SAAS,GAAG;GAEX,IAAI,WAAW,CAAC,GACf,OAAO,eAAe,GAAG,uBAAuB;IAC/C,YAAY;IACZ,cAAc;IACd,MAAM;KACL,OAAO,gBAAgB;IACxB;GACD,CAAC;GAEF,MAAM;EACP;CACD;CACA,gBAAgB,UACf,OAAO,qBAAqB,aAAa,CAAC,IAAI;CAC/C,OAAO;AACR;AAwBA,iBAAiB,UAKhB,SACI;CAeJ,SAAS,GAAG,kBAAuB,SAAe;EACjD,IAAI,OAAO,qBAAqB,YAC/B,OAAO,iBACN,EACC,KAAK,MAAM,IACZ,GACA,gBACD;EAED,IAAI,CAAC,SACJ,MAAM,IAAI,MAAM,gCAAgC;EAUjD,OARmB,iBAClB;GACC,GAAG;GACH,QAAQ;GACR,KAAK,CAAC,GAAI,MAAM,OAAO,CAAC,GAAI,GAAI,iBAAiB,OAAO,CAAC,CAAE;EAC5D,GACA,OAEe;CACjB;CACA,OAAO;AACR"}
|
package/dist/node.cjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
const require_request = require(
|
|
3
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_request = require("./adapters/node/request.cjs");
|
|
4
3
|
//#region src/adapters/node/index.ts
|
|
5
4
|
function toNodeHandler(handler) {
|
|
6
5
|
return async (req, res) => {
|
|
@@ -10,9 +9,9 @@ function toNodeHandler(handler) {
|
|
|
10
9
|
})));
|
|
11
10
|
};
|
|
12
11
|
}
|
|
13
|
-
|
|
14
12
|
//#endregion
|
|
15
13
|
exports.getRequest = require_request.getRequest;
|
|
16
14
|
exports.setResponse = require_request.setResponse;
|
|
17
15
|
exports.toNodeHandler = toNodeHandler;
|
|
16
|
+
|
|
18
17
|
//# sourceMappingURL=node.cjs.map
|
package/dist/node.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.cjs","names":["setResponse","getRequest"],"sources":["../src/adapters/node/index.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\
|
|
1
|
+
{"version":3,"file":"node.cjs","names":["setResponse","getRequest"],"sources":["../src/adapters/node/index.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { Router } from \"../../router.js\";\nimport { getRequest, setResponse } from \"./request\";\n\nexport function toNodeHandler(handler: Router[\"handler\"]) {\n\treturn async (req: IncomingMessage, res: ServerResponse) => {\n\t\tconst protocol =\n\t\t\treq.headers[\"x-forwarded-proto\"] ||\n\t\t\t((req.socket as any).encrypted ? \"https\" : \"http\");\n\t\tconst base = `${protocol}://${req.headers[\":authority\"] || req.headers.host}`;\n\t\tconst response = await handler(getRequest({ base, request: req }));\n\t\treturn setResponse(res, response);\n\t};\n}\n\nexport { getRequest, setResponse };\n"],"mappings":";;;AAIA,SAAgB,cAAc,SAA4B;CACzD,OAAO,OAAO,KAAsB,QAAwB;EAM3D,OAAOA,gBAAAA,YAAY,KAAK,MADD,QAAQC,gBAAAA,WAAW;GAAE,MAAA,GAH3C,IAAI,QAAQ,yBACV,IAAI,OAAe,YAAY,UAAU,QACnB,KAAK,IAAI,QAAQ,iBAAiB,IAAI,QAAQ;GACrB,SAAS;EAAI,CAAC,CAAC,CACjC;CACjC;AACD"}
|
package/dist/node.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { getRequest, setResponse } from "./adapters/node/request.cjs";
|
|
2
1
|
import { Router } from "./router.cjs";
|
|
2
|
+
import { getRequest, setResponse } from "./adapters/node/request.cjs";
|
|
3
3
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
4
|
-
|
|
5
4
|
//#region src/adapters/node/index.d.ts
|
|
6
5
|
declare function toNodeHandler(handler: Router["handler"]): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
7
6
|
//#endregion
|
package/dist/node.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { getRequest, setResponse } from "./adapters/node/request.mjs";
|
|
2
1
|
import { Router } from "./router.mjs";
|
|
2
|
+
import { getRequest, setResponse } from "./adapters/node/request.mjs";
|
|
3
3
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
4
|
-
|
|
5
4
|
//#region src/adapters/node/index.d.ts
|
|
6
5
|
declare function toNodeHandler(handler: Router["handler"]): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
7
6
|
//#endregion
|
package/dist/node.mjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getRequest, setResponse } from "./adapters/node/request.mjs";
|
|
2
|
-
|
|
3
2
|
//#region src/adapters/node/index.ts
|
|
4
3
|
function toNodeHandler(handler) {
|
|
5
4
|
return async (req, res) => {
|
|
@@ -9,7 +8,7 @@ function toNodeHandler(handler) {
|
|
|
9
8
|
})));
|
|
10
9
|
};
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
//#endregion
|
|
14
12
|
export { getRequest, setResponse, toNodeHandler };
|
|
13
|
+
|
|
15
14
|
//# sourceMappingURL=node.mjs.map
|