equipped 5.3.2 → 5.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/errors/index.cjs +11 -0
  3. package/dist/cjs/errors/index.cjs.map +1 -1
  4. package/dist/cjs/errors/index.min.cjs +1 -1
  5. package/dist/cjs/errors/index.min.cjs.map +1 -1
  6. package/dist/cjs/orm/adapters/postgresql/index.cjs +8 -0
  7. package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -1
  8. package/dist/cjs/orm/adapters/postgresql/index.min.cjs +5 -5
  9. package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -1
  10. package/dist/cjs/server/adapters/express/index.cjs +1 -0
  11. package/dist/cjs/server/adapters/express/index.cjs.map +1 -1
  12. package/dist/cjs/server/adapters/express/index.min.cjs +1 -1
  13. package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -1
  14. package/dist/cjs/server/adapters/fastify/index.cjs +1 -0
  15. package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -1
  16. package/dist/cjs/server/adapters/fastify/index.min.cjs +1 -1
  17. package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -1
  18. package/dist/cjs/server/index.cjs +1 -0
  19. package/dist/cjs/server/index.cjs.map +1 -1
  20. package/dist/cjs/server/index.min.cjs +4 -4
  21. package/dist/cjs/server/index.min.cjs.map +1 -1
  22. package/dist/cjs/validations/index.cjs +1 -0
  23. package/dist/cjs/validations/index.cjs.map +1 -1
  24. package/dist/cjs/validations/index.min.cjs +1 -1
  25. package/dist/cjs/validations/index.min.cjs.map +1 -1
  26. package/dist/esm/cache/adapters/in-memory/index.min.mjs +1 -1
  27. package/dist/esm/cache/adapters/in-memory/index.mjs +3 -3
  28. package/dist/esm/cache/adapters/redis/index.min.mjs +1 -1
  29. package/dist/esm/cache/adapters/redis/index.mjs +4 -4
  30. package/dist/esm/cache/index.min.mjs +1 -1
  31. package/dist/esm/cache/index.mjs +2 -2
  32. package/dist/esm/{chunk-YDQW6ETS.min.mjs → chunk-4GZ43EQ2.min.mjs} +2 -2
  33. package/dist/esm/{chunk-DAUQA32Q.min.mjs → chunk-5FEVQT6K.min.mjs} +2 -2
  34. package/dist/esm/{chunk-RPPYCWXW.mjs → chunk-74GY55PM.mjs} +2 -2
  35. package/dist/esm/{chunk-CEYT5YBA.mjs → chunk-7N4WUZ7P.mjs} +11 -1
  36. package/dist/esm/chunk-7N4WUZ7P.mjs.map +1 -0
  37. package/dist/esm/{chunk-NNFUYHQ7.mjs → chunk-A332TTED.mjs} +2 -2
  38. package/dist/esm/{chunk-PCEHFZ6G.mjs → chunk-BONYW6LU.mjs} +3 -3
  39. package/dist/esm/{chunk-T2O72JBW.mjs → chunk-C3G4W4ZV.mjs} +3 -3
  40. package/dist/esm/{chunk-X7VNAGLR.min.mjs → chunk-LJZOS62I.min.mjs} +2 -2
  41. package/dist/esm/{chunk-AODOD22O.min.mjs → chunk-MCX2O5IT.min.mjs} +2 -2
  42. package/dist/esm/{chunk-FQYRVHQT.mjs → chunk-MNKDFIVK.mjs} +2 -2
  43. package/dist/esm/{chunk-APSDCRY5.min.mjs → chunk-N3OD4QL2.min.mjs} +8 -8
  44. package/dist/esm/chunk-N3OD4QL2.min.mjs.map +1 -0
  45. package/dist/esm/{chunk-VQO4MSEC.mjs → chunk-RFJ5URMP.mjs} +2 -2
  46. package/dist/esm/{chunk-DAK7OKSH.min.mjs → chunk-RX4XPABH.min.mjs} +2 -2
  47. package/dist/esm/{chunk-ZDBDR3IB.min.mjs → chunk-SPOVKWV3.min.mjs} +2 -2
  48. package/dist/esm/{chunk-RIXTQQUU.mjs → chunk-XESM7IWM.mjs} +2 -2
  49. package/dist/esm/{chunk-26BOI6IL.mjs → chunk-XJKBHQWO.mjs} +3 -3
  50. package/dist/esm/{chunk-XTXAEBXY.min.mjs → chunk-YC6V4HLT.min.mjs} +2 -2
  51. package/dist/esm/{chunk-QCCDJLBH.min.mjs → chunk-YWQTFKNY.min.mjs} +2 -2
  52. package/dist/esm/dbs/adapters/mongodb/index.min.mjs +1 -1
  53. package/dist/esm/dbs/adapters/mongodb/index.mjs +4 -4
  54. package/dist/esm/dbs/index.min.mjs +1 -1
  55. package/dist/esm/dbs/index.mjs +4 -4
  56. package/dist/esm/errors/index.min.mjs +1 -1
  57. package/dist/esm/errors/index.mjs +3 -1
  58. package/dist/esm/events/adapters/kafka/index.min.mjs +1 -1
  59. package/dist/esm/events/adapters/kafka/index.mjs +3 -3
  60. package/dist/esm/events/adapters/rabbitmq/index.min.mjs +1 -1
  61. package/dist/esm/events/adapters/rabbitmq/index.mjs +2 -2
  62. package/dist/esm/index.min.mjs +1 -1
  63. package/dist/esm/index.mjs +1 -1
  64. package/dist/esm/instance/index.min.mjs +1 -1
  65. package/dist/esm/instance/index.mjs +1 -1
  66. package/dist/esm/introspection-TO27QT2X.min.mjs +2 -0
  67. package/dist/esm/{introspection-FGDVYTPP.mjs → introspection-ZUQYVEFC.mjs} +3 -3
  68. package/dist/esm/jobs/adapters/redis/index.min.mjs +1 -1
  69. package/dist/esm/jobs/adapters/redis/index.mjs +4 -4
  70. package/dist/esm/orm/adapters/in-memory/index.min.mjs +1 -1
  71. package/dist/esm/orm/adapters/in-memory/index.mjs +3 -3
  72. package/dist/esm/orm/adapters/json/index.min.mjs +1 -1
  73. package/dist/esm/orm/adapters/json/index.mjs +3 -3
  74. package/dist/esm/orm/adapters/mongodb/index.min.mjs +1 -1
  75. package/dist/esm/orm/adapters/mongodb/index.mjs +2 -2
  76. package/dist/esm/orm/adapters/postgresql/index.min.mjs +2 -2
  77. package/dist/esm/orm/adapters/postgresql/index.mjs +4 -4
  78. package/dist/esm/orm/index.min.mjs +1 -1
  79. package/dist/esm/orm/index.mjs +3 -3
  80. package/dist/esm/server/adapters/express/index.min.mjs +1 -1
  81. package/dist/esm/server/adapters/express/index.mjs +2 -2
  82. package/dist/esm/server/adapters/fastify/index.min.mjs +1 -1
  83. package/dist/esm/server/adapters/fastify/index.mjs +2 -2
  84. package/dist/esm/server/index.min.mjs +1 -1
  85. package/dist/esm/server/index.mjs +1 -1
  86. package/dist/esm/utilities/index.min.mjs +1 -1
  87. package/dist/esm/utilities/index.mjs +2 -2
  88. package/dist/esm/validations/index.min.mjs +1 -1
  89. package/dist/esm/validations/index.mjs +1 -1
  90. package/dist/types/{base-qDndMBf8.d.ts → base-BnwwLupM.d.ts} +1 -1
  91. package/dist/types/cache/adapters/in-memory/index.js +5 -5
  92. package/dist/types/cache/adapters/redis/index.js +4 -4
  93. package/dist/types/cache/index.js +2 -2
  94. package/dist/types/{chunk-H5V6ADFD.js → chunk-7MXHWHRV.js} +1 -1
  95. package/dist/types/{chunk-GDMGPX4C.js → chunk-BKXNLF6X.js} +1 -1
  96. package/dist/types/{chunk-4YQA5GPT.js → chunk-DZFKDZDZ.js} +2 -2
  97. package/dist/types/{chunk-AQIV47BY.js → chunk-GQRSK2KP.js} +4 -4
  98. package/dist/types/{chunk-T7K7PO6G.js → chunk-SZAA5GF6.js} +1 -1
  99. package/dist/types/{chunk-35CDCTLR.js → chunk-UGLZIYAR.js} +1 -1
  100. package/dist/types/{chunk-DA2VYP7D.js → chunk-UR7O43FC.js} +1 -1
  101. package/dist/types/{chunk-OOKJEMQI.js → chunk-X5ZDIXCZ.js} +2 -2
  102. package/dist/types/{chunk-BKDWUJRG.js → chunk-YGIIUOQM.js} +10 -0
  103. package/dist/types/dbs/adapters/mongodb/index.js +4 -4
  104. package/dist/types/dbs/index.js +4 -4
  105. package/dist/types/errors/index.d.ts +8 -3
  106. package/dist/types/errors/index.js +3 -1
  107. package/dist/types/events/adapters/kafka/index.js +3 -3
  108. package/dist/types/events/adapters/rabbitmq/index.js +2 -2
  109. package/dist/types/index.js +1 -1
  110. package/dist/types/instance/index.js +1 -1
  111. package/dist/types/{introspection-FSNS33CQ.js → introspection-ZQMYTW6H.js} +2 -2
  112. package/dist/types/jobs/adapters/redis/index.js +4 -4
  113. package/dist/types/orm/adapters/in-memory/index.js +3 -3
  114. package/dist/types/orm/adapters/json/index.js +3 -3
  115. package/dist/types/orm/adapters/mongodb/index.js +2 -2
  116. package/dist/types/orm/adapters/postgresql/index.js +4 -4
  117. package/dist/types/orm/index.js +3 -3
  118. package/dist/types/{requestError-DdaL8hc3.d.ts → requestError-BmOhSuFb.d.ts} +1 -0
  119. package/dist/types/server/adapters/express/index.d.ts +2 -2
  120. package/dist/types/server/adapters/express/index.js +2 -2
  121. package/dist/types/server/adapters/fastify/index.d.ts +3 -3
  122. package/dist/types/server/adapters/fastify/index.js +2 -2
  123. package/dist/types/server/index.d.ts +4 -4
  124. package/dist/types/server/index.js +1 -1
  125. package/dist/types/utilities/index.js +2 -2
  126. package/dist/types/{validationError-oigtHqBi.d.ts → validationError-C2tVK4s7.d.ts} +1 -1
  127. package/dist/types/validations/index.d.ts +4 -4
  128. package/dist/types/validations/index.js +1 -1
  129. package/package.json +1 -1
  130. package/dist/esm/chunk-APSDCRY5.min.mjs.map +0 -1
  131. package/dist/esm/chunk-CEYT5YBA.mjs.map +0 -1
  132. package/dist/esm/introspection-UDWDS6DV.min.mjs +0 -2
  133. /package/dist/esm/{chunk-YDQW6ETS.min.mjs.map → chunk-4GZ43EQ2.min.mjs.map} +0 -0
  134. /package/dist/esm/{chunk-DAUQA32Q.min.mjs.map → chunk-5FEVQT6K.min.mjs.map} +0 -0
  135. /package/dist/esm/{chunk-RPPYCWXW.mjs.map → chunk-74GY55PM.mjs.map} +0 -0
  136. /package/dist/esm/{chunk-NNFUYHQ7.mjs.map → chunk-A332TTED.mjs.map} +0 -0
  137. /package/dist/esm/{chunk-PCEHFZ6G.mjs.map → chunk-BONYW6LU.mjs.map} +0 -0
  138. /package/dist/esm/{chunk-T2O72JBW.mjs.map → chunk-C3G4W4ZV.mjs.map} +0 -0
  139. /package/dist/esm/{chunk-X7VNAGLR.min.mjs.map → chunk-LJZOS62I.min.mjs.map} +0 -0
  140. /package/dist/esm/{chunk-AODOD22O.min.mjs.map → chunk-MCX2O5IT.min.mjs.map} +0 -0
  141. /package/dist/esm/{chunk-FQYRVHQT.mjs.map → chunk-MNKDFIVK.mjs.map} +0 -0
  142. /package/dist/esm/{chunk-VQO4MSEC.mjs.map → chunk-RFJ5URMP.mjs.map} +0 -0
  143. /package/dist/esm/{chunk-DAK7OKSH.min.mjs.map → chunk-RX4XPABH.min.mjs.map} +0 -0
  144. /package/dist/esm/{chunk-ZDBDR3IB.min.mjs.map → chunk-SPOVKWV3.min.mjs.map} +0 -0
  145. /package/dist/esm/{chunk-RIXTQQUU.mjs.map → chunk-XESM7IWM.mjs.map} +0 -0
  146. /package/dist/esm/{chunk-26BOI6IL.mjs.map → chunk-XJKBHQWO.mjs.map} +0 -0
  147. /package/dist/esm/{chunk-XTXAEBXY.min.mjs.map → chunk-YC6V4HLT.min.mjs.map} +0 -0
  148. /package/dist/esm/{chunk-QCCDJLBH.min.mjs.map → chunk-YWQTFKNY.min.mjs.map} +0 -0
  149. /package/dist/esm/{introspection-FGDVYTPP.mjs.map → introspection-TO27QT2X.min.mjs.map} +0 -0
  150. /package/dist/esm/{introspection-UDWDS6DV.min.mjs.map → introspection-ZUQYVEFC.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [5.3.3](https://github.com/kevinand11/equipped/compare/v5.3.2...v5.3.3) (2026-06-21)
6
+
7
+
8
+ ### Features
9
+
10
+ * **server:** add precondition required error ([b4630f8](https://github.com/kevinand11/equipped/commit/b4630f841858858af23a4d7f498e7a3ddba83b5b))
11
+
5
12
  ### [5.3.2](https://github.com/kevinand11/equipped/compare/v5.3.1...v5.3.2) (2026-06-20)
6
13
 
7
14
  ### [5.3.1](https://github.com/kevinand11/equipped/compare/v5.3.0...v5.3.1) (2026-06-19)
@@ -25,6 +25,7 @@ __export(errors_exports, {
25
25
  NotAuthenticatedError: () => NotAuthenticatedError,
26
26
  NotAuthorizedError: () => NotAuthorizedError,
27
27
  NotFoundError: () => NotFoundError,
28
+ PreconditionRequiredError: () => PreconditionRequiredError,
28
29
  RequestError: () => RequestError,
29
30
  TokenExpired: () => TokenExpired,
30
31
  ValidationError: () => ValidationError
@@ -59,6 +60,7 @@ var StatusCodes = {
59
60
  NotAuthorized: 403,
60
61
  NotFound: 404,
61
62
  ValidationError: 422,
63
+ PreconditionRequired: 428,
62
64
  TooManyRequests: 429,
63
65
  TokenExpired: 461
64
66
  };
@@ -95,6 +97,14 @@ var NotFoundError = class extends RequestError {
95
97
  }
96
98
  };
97
99
 
100
+ // src/errors/types/preconditionRequiredError.ts
101
+ var PreconditionRequiredError = class extends RequestError {
102
+ statusCode = StatusCodes.PreconditionRequired;
103
+ constructor(message = "Precondition required", cause) {
104
+ super(message, [{ message }], cause);
105
+ }
106
+ };
107
+
98
108
  // src/errors/types/tokenExpired.ts
99
109
  var TokenExpired = class extends RequestError {
100
110
  statusCode = StatusCodes.TokenExpired;
@@ -121,6 +131,7 @@ var ValidationError = class extends RequestError {
121
131
  NotAuthenticatedError,
122
132
  NotAuthorizedError,
123
133
  NotFoundError,
134
+ PreconditionRequiredError,
124
135
  RequestError,
125
136
  TokenExpired,
126
137
  ValidationError
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/errors/index.ts","../../../src/errors/equippedError.ts","../../../src/errors/requestError.ts","../../../src/server/types.ts","../../../src/errors/types/badRequestError.ts","../../../src/errors/types/notAuthenticatedError.ts","../../../src/errors/types/notAuthorizedError.ts","../../../src/errors/types/notFoundError.ts","../../../src/errors/types/tokenExpired.ts","../../../src/errors/types/validationError.ts"],"sourcesContent":["export * from './equippedError'\nexport * from './requestError'\nexport * from './types/badRequestError'\nexport * from './types/notAuthenticatedError'\nexport * from './types/notAuthorizedError'\nexport * from './types/notFoundError'\nexport * from './types/tokenExpired'\nexport * from './types/validationError'\n","export class EquippedError extends Error {\n\tconstructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly context: Record<string, unknown>,\n\t\tpublic readonly cause?: unknown,\n\t) {\n\t\tsuper(message, { cause })\n\t}\n}\n","import type { StatusCodesEnum } from '../server'\nimport { EquippedError } from './equippedError'\n\nexport abstract class RequestError extends EquippedError {\n\tabstract readonly statusCode: StatusCodesEnum\n\n\tprotected constructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly serializedErrors: { message: string; field?: string }[],\n\t\tcause?: unknown,\n\t) {\n\t\tsuper(message, { serializedErrors }, cause)\n\t}\n}\n","import type { IsInTypeList, Pipe, PipeInput, PipeOutput, Prettify } from 'valleyed'\n\nimport type { RequestError } from '../errors'\nimport type { Enum } from '../types'\nimport type { Request, Response } from './requests'\n\nexport const Methods = {\n\thead: 'head',\n\tget: 'get',\n\tpost: 'post',\n\tput: 'put',\n\tpatch: 'patch',\n\tdelete: 'delete',\n\toptions: 'options',\n} as const\n\nexport const StatusCodes = {\n\tOk: 200,\n\tFound: 302,\n\tBadRequest: 400,\n\tNotAuthenticated: 401,\n\tNotAuthorized: 403,\n\tNotFound: 404,\n\tValidationError: 422,\n\tTooManyRequests: 429,\n\tTokenExpired: 461,\n} as const\n\nexport type MethodsEnum = Enum<typeof Methods>\nexport type StatusCodesEnum = Enum<typeof StatusCodes>\n\nexport type DefaultHeaders = Record<string, ArrayOrValue<string>>\nexport type DefaultCookies = Record<string, string | undefined>\n\ntype ArrayOrValue<T> = T | T[] | undefined\n\nexport type IncomingFile = {\n\tname: string\n\ttype: string\n\tsize: number\n\tisTruncated: boolean\n\tdata: Buffer\n\tduration: number\n}\n\nexport type RouteDef = {\n\tparams?: Pipe<Record<string, ArrayOrValue<string>>, Record<string, ArrayOrValue<string>>>\n\tquery?: Pipe<Record<string, ArrayOrValue<unknown>>, Record<string, ArrayOrValue<unknown>>>\n\theaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tcookies?: Pipe<DefaultCookies, DefaultCookies>\n\tbody?: Pipe<Record<string, unknown>, Record<string, unknown>>\n\tresponse?: Pipe<unknown, unknown>\n\tresponseHeaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tresponseCookies?: Pipe<DefaultCookies, DefaultCookies>\n\tdefaultStatusCode?: StatusCodesEnum\n\tdefaultContentType?: string\n}\n\ntype RouteGroup = { name: string; description?: string }\ntype HandlerSetup<T extends RouteDef> = (route: Route<T>) => void\n\nexport type RouteConfig<T extends RouteDef> = {\n\tmiddlewares?: ReturnType<typeof makeMiddleware<RouteDef>>[]\n\tresponseMiddlewares?: ReturnType<typeof makeResponseMiddleware<RouteDef>>[]\n\tonError?: ReturnType<typeof makeErrorMiddleware<RouteDef>>\n\tgroups?: (RouteGroup | RouteGroup['name'])[]\n\ttitle?: string\n\tdescriptions?: string[]\n\tsecurity?: Record<string, string[]>[]\n\tschema?: T\n\thide?: boolean\n}\n\nexport type RouterConfig<T extends RouteDef> = RouteConfig<T> & { path: string }\nexport type Route<T extends RouteDef> = RouteConfig<T> & {\n\tpath: string\n\tmethod: MethodsEnum\n\thandler: RouteDefHandler<T>\n}\n\ntype GetApiPart<T extends RouteDef, K extends keyof RouteDef> = NonNullable<IsInTypeList<T[K], [unknown]> extends true ? RouteDef[K] : T[K]>\n\ntype ArePipes<A, B> = A extends Pipe<any, any> ? (B extends Pipe<any, any> ? true : false) : false\ntype Compare<K extends keyof RouteDef, A, B> =\n\tIsInTypeList<B, [unknown]> extends true\n\t\t? A\n\t\t: IsInTypeList<A, [unknown]> extends true\n\t\t\t? B\n\t\t\t: K extends `default${string}` | 'context'\n\t\t\t\t? B\n\t\t\t\t: ArePipes<A, B> extends true\n\t\t\t\t\t? Pipe<PipeInput<A> & PipeInput<B>, PipeOutput<A> & PipeOutput<B>>\n\t\t\t\t\t: B\n\nexport type MergeRouteDefs<A extends RouteDef, B extends RouteDef> = {\n\t[K in keyof RouteDef]: Compare<K, A[K], B[K]>\n}\n\nexport type RouteDefToReqRes<T extends RouteDef> = Prettify<{\n\tbody: PipeOutput<GetApiPart<T, 'body'>>\n\tparams: PipeOutput<GetApiPart<T, 'params'>>\n\trequestHeaders: PipeOutput<GetApiPart<T, 'headers'>>\n\trequestCookies: PipeOutput<GetApiPart<T, 'cookies'>>\n\tquery: PipeOutput<GetApiPart<T, 'query'>>\n\tresponse: PipeOutput<GetApiPart<T, 'response'>>\n\tresponseHeaders: PipeOutput<GetApiPart<T, 'responseHeaders'>>\n\tresponseCookies: PipeOutput<GetApiPart<T, 'responseCookies'>>\n\tstatusCode: GetApiPart<T, 'defaultStatusCode'>\n\tcontentType: GetApiPart<T, 'defaultContentType'>\n}>\n\ntype Awaitable<T> = Promise<T> | T\ntype Res<T extends RouteDefToReqRes<any>> = Awaitable<\n\tIsInTypeList<T['statusCode'], [StatusCodesEnum, 200]> extends true\n\t\t? IsInTypeList<T['responseHeaders'], [DefaultHeaders]> extends true\n\t\t\t? IsInTypeList<T['responseCookies'], [DefaultCookies]> extends true\n\t\t\t\t? Response<T> | T['response']\n\t\t\t\t: Response<T>\n\t\t\t: Response<T>\n\t\t: Response<T>\n>\nexport type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>) => Res<RouteDefToReqRes<Def>>\ntype RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<void>\ntype RouteResponseMiddlewareHandler<_Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<RouteDef>>,\n\tres: Response<RouteDefToReqRes<RouteDef>>,\n) => Awaitable<void>\ntype ErrorHandler<Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<Def>>,\n\terr: Error,\n) => Res<\n\tOmit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & {\n\t\tresponse: RequestError['serializedErrors']\n\t\tstatusCode: RequestError['statusCode']\n\t\tresponseHeaders: DefaultHeaders\n\t\tresponseCookies: DefaultCookies\n\t}\n>\n\nfunction makeMiddlewareHandler<Cb extends Function, T extends RouteDef>(cb: Cb, onSetup?: HandlerSetup<T>) {\n\treturn { cb, onSetup }\n}\n\nexport const makeMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<RouteMiddlewareHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\nexport const makeResponseMiddleware = <Def extends RouteDef>(\n\t...args: Parameters<typeof makeMiddlewareHandler<RouteResponseMiddlewareHandler<Def>, Def>>\n) => makeMiddlewareHandler(...args)\nexport const makeErrorMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<ErrorHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class BadRequestError extends RequestError {\n\tstatusCode = StatusCodes.BadRequest\n\n\tconstructor(message: string, cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthenticatedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthenticated\n\n\tconstructor(message = 'Not authenticated', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthorizedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthorized\n\n\tconstructor(message = 'Not authorized', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotFoundError extends RequestError {\n\tstatusCode = StatusCodes.NotFound\n\n\tconstructor(message = 'Not found', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class TokenExpired extends RequestError {\n\tstatusCode = StatusCodes.TokenExpired\n\n\tconstructor(message = 'Token expired', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\ntype ValidError = {\n\tmessages: string[]\n\tfield: string\n}\n\nexport class ValidationError extends RequestError {\n\tstatusCode = StatusCodes.ValidationError\n\n\tconstructor(errors: ValidError[], cause?: unknown) {\n\t\tsuper(\n\t\t\t'Unprocessable Entity',\n\t\t\terrors.flatMap(({ field, messages }) => messages.map((message) => ({ message, field }))),\n\t\t\tcause,\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACxC,YACiB,SACA,SACA,OACf;AACD,UAAM,SAAS,EAAE,MAAM,CAAC;AAJR;AACA;AACA;AAAA,EAGjB;AACD;;;ACLO,IAAe,eAAf,cAAoC,cAAc;AAAA,EAG9C,YACO,SACA,kBAChB,OACC;AACD,UAAM,SAAS,EAAE,iBAAiB,GAAG,KAAK;AAJ1B;AACA;AAAA,EAIjB;AACD;;;ACGO,IAAM,cAAc;AAAA,EAC1B,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,cAAc;AACf;;;ACvBO,IAAM,kBAAN,cAA8B,aAAa;AAAA,EACjD,aAAa,YAAY;AAAA,EAEzB,YAAY,SAAiB,OAAiB;AAC7C,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,wBAAN,cAAoC,aAAa;AAAA,EACvD,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,qBAAqB,OAAiB;AAC3D,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,qBAAN,cAAiC,aAAa;AAAA,EACpD,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,kBAAkB,OAAiB;AACxD,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,gBAAN,cAA4B,aAAa;AAAA,EAC/C,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,aAAa,OAAiB;AACnD,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,eAAN,cAA2B,aAAa;AAAA,EAC9C,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,iBAAiB,OAAiB;AACvD,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACDO,IAAM,kBAAN,cAA8B,aAAa;AAAA,EACjD,aAAa,YAAY;AAAA,EAEzB,YAAY,QAAsB,OAAiB;AAClD;AAAA,MACC;AAAA,MACA,OAAO,QAAQ,CAAC,EAAE,OAAO,SAAS,MAAM,SAAS,IAAI,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;AAAA,MACvF;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/errors/index.ts","../../../src/errors/equippedError.ts","../../../src/errors/requestError.ts","../../../src/server/types.ts","../../../src/errors/types/badRequestError.ts","../../../src/errors/types/notAuthenticatedError.ts","../../../src/errors/types/notAuthorizedError.ts","../../../src/errors/types/notFoundError.ts","../../../src/errors/types/preconditionRequiredError.ts","../../../src/errors/types/tokenExpired.ts","../../../src/errors/types/validationError.ts"],"sourcesContent":["export * from './equippedError'\nexport * from './requestError'\nexport * from './types/badRequestError'\nexport * from './types/notAuthenticatedError'\nexport * from './types/notAuthorizedError'\nexport * from './types/notFoundError'\nexport * from './types/preconditionRequiredError'\nexport * from './types/tokenExpired'\nexport * from './types/validationError'\n","export class EquippedError extends Error {\n\tconstructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly context: Record<string, unknown>,\n\t\tpublic readonly cause?: unknown,\n\t) {\n\t\tsuper(message, { cause })\n\t}\n}\n","import type { StatusCodesEnum } from '../server'\nimport { EquippedError } from './equippedError'\n\nexport abstract class RequestError extends EquippedError {\n\tabstract readonly statusCode: StatusCodesEnum\n\n\tprotected constructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly serializedErrors: { message: string; field?: string }[],\n\t\tcause?: unknown,\n\t) {\n\t\tsuper(message, { serializedErrors }, cause)\n\t}\n}\n","import type { IsInTypeList, Pipe, PipeInput, PipeOutput, Prettify } from 'valleyed'\n\nimport type { RequestError } from '../errors'\nimport type { Enum } from '../types'\nimport type { Request, Response } from './requests'\n\nexport const Methods = {\n\thead: 'head',\n\tget: 'get',\n\tpost: 'post',\n\tput: 'put',\n\tpatch: 'patch',\n\tdelete: 'delete',\n\toptions: 'options',\n} as const\n\nexport const StatusCodes = {\n\tOk: 200,\n\tFound: 302,\n\tBadRequest: 400,\n\tNotAuthenticated: 401,\n\tNotAuthorized: 403,\n\tNotFound: 404,\n\tValidationError: 422,\n\tPreconditionRequired: 428,\n\tTooManyRequests: 429,\n\tTokenExpired: 461,\n} as const\n\nexport type MethodsEnum = Enum<typeof Methods>\nexport type StatusCodesEnum = Enum<typeof StatusCodes>\n\nexport type DefaultHeaders = Record<string, ArrayOrValue<string>>\nexport type DefaultCookies = Record<string, string | undefined>\n\ntype ArrayOrValue<T> = T | T[] | undefined\n\nexport type IncomingFile = {\n\tname: string\n\ttype: string\n\tsize: number\n\tisTruncated: boolean\n\tdata: Buffer\n\tduration: number\n}\n\nexport type RouteDef = {\n\tparams?: Pipe<Record<string, ArrayOrValue<string>>, Record<string, ArrayOrValue<string>>>\n\tquery?: Pipe<Record<string, ArrayOrValue<unknown>>, Record<string, ArrayOrValue<unknown>>>\n\theaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tcookies?: Pipe<DefaultCookies, DefaultCookies>\n\tbody?: Pipe<Record<string, unknown>, Record<string, unknown>>\n\tresponse?: Pipe<unknown, unknown>\n\tresponseHeaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tresponseCookies?: Pipe<DefaultCookies, DefaultCookies>\n\tdefaultStatusCode?: StatusCodesEnum\n\tdefaultContentType?: string\n}\n\ntype RouteGroup = { name: string; description?: string }\ntype HandlerSetup<T extends RouteDef> = (route: Route<T>) => void\n\nexport type RouteConfig<T extends RouteDef> = {\n\tmiddlewares?: ReturnType<typeof makeMiddleware<RouteDef>>[]\n\tresponseMiddlewares?: ReturnType<typeof makeResponseMiddleware<RouteDef>>[]\n\tonError?: ReturnType<typeof makeErrorMiddleware<RouteDef>>\n\tgroups?: (RouteGroup | RouteGroup['name'])[]\n\ttitle?: string\n\tdescriptions?: string[]\n\tsecurity?: Record<string, string[]>[]\n\tschema?: T\n\thide?: boolean\n}\n\nexport type RouterConfig<T extends RouteDef> = RouteConfig<T> & { path: string }\nexport type Route<T extends RouteDef> = RouteConfig<T> & {\n\tpath: string\n\tmethod: MethodsEnum\n\thandler: RouteDefHandler<T>\n}\n\ntype GetApiPart<T extends RouteDef, K extends keyof RouteDef> = NonNullable<IsInTypeList<T[K], [unknown]> extends true ? RouteDef[K] : T[K]>\n\ntype ArePipes<A, B> = A extends Pipe<any, any> ? (B extends Pipe<any, any> ? true : false) : false\ntype Compare<K extends keyof RouteDef, A, B> =\n\tIsInTypeList<B, [unknown]> extends true\n\t\t? A\n\t\t: IsInTypeList<A, [unknown]> extends true\n\t\t\t? B\n\t\t\t: K extends `default${string}` | 'context'\n\t\t\t\t? B\n\t\t\t\t: ArePipes<A, B> extends true\n\t\t\t\t\t? Pipe<PipeInput<A> & PipeInput<B>, PipeOutput<A> & PipeOutput<B>>\n\t\t\t\t\t: B\n\nexport type MergeRouteDefs<A extends RouteDef, B extends RouteDef> = {\n\t[K in keyof RouteDef]: Compare<K, A[K], B[K]>\n}\n\nexport type RouteDefToReqRes<T extends RouteDef> = Prettify<{\n\tbody: PipeOutput<GetApiPart<T, 'body'>>\n\tparams: PipeOutput<GetApiPart<T, 'params'>>\n\trequestHeaders: PipeOutput<GetApiPart<T, 'headers'>>\n\trequestCookies: PipeOutput<GetApiPart<T, 'cookies'>>\n\tquery: PipeOutput<GetApiPart<T, 'query'>>\n\tresponse: PipeOutput<GetApiPart<T, 'response'>>\n\tresponseHeaders: PipeOutput<GetApiPart<T, 'responseHeaders'>>\n\tresponseCookies: PipeOutput<GetApiPart<T, 'responseCookies'>>\n\tstatusCode: GetApiPart<T, 'defaultStatusCode'>\n\tcontentType: GetApiPart<T, 'defaultContentType'>\n}>\n\ntype Awaitable<T> = Promise<T> | T\ntype Res<T extends RouteDefToReqRes<any>> = Awaitable<\n\tIsInTypeList<T['statusCode'], [StatusCodesEnum, 200]> extends true\n\t\t? IsInTypeList<T['responseHeaders'], [DefaultHeaders]> extends true\n\t\t\t? IsInTypeList<T['responseCookies'], [DefaultCookies]> extends true\n\t\t\t\t? Response<T> | T['response']\n\t\t\t\t: Response<T>\n\t\t\t: Response<T>\n\t\t: Response<T>\n>\nexport type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>) => Res<RouteDefToReqRes<Def>>\ntype RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<void>\ntype RouteResponseMiddlewareHandler<_Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<RouteDef>>,\n\tres: Response<RouteDefToReqRes<RouteDef>>,\n) => Awaitable<void>\ntype ErrorHandler<Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<Def>>,\n\terr: Error,\n) => Res<\n\tOmit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & {\n\t\tresponse: RequestError['serializedErrors']\n\t\tstatusCode: RequestError['statusCode']\n\t\tresponseHeaders: DefaultHeaders\n\t\tresponseCookies: DefaultCookies\n\t}\n>\n\nfunction makeMiddlewareHandler<Cb extends Function, T extends RouteDef>(cb: Cb, onSetup?: HandlerSetup<T>) {\n\treturn { cb, onSetup }\n}\n\nexport const makeMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<RouteMiddlewareHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\nexport const makeResponseMiddleware = <Def extends RouteDef>(\n\t...args: Parameters<typeof makeMiddlewareHandler<RouteResponseMiddlewareHandler<Def>, Def>>\n) => makeMiddlewareHandler(...args)\nexport const makeErrorMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<ErrorHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class BadRequestError extends RequestError {\n\tstatusCode = StatusCodes.BadRequest\n\n\tconstructor(message: string, cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthenticatedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthenticated\n\n\tconstructor(message = 'Not authenticated', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthorizedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthorized\n\n\tconstructor(message = 'Not authorized', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotFoundError extends RequestError {\n\tstatusCode = StatusCodes.NotFound\n\n\tconstructor(message = 'Not found', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class PreconditionRequiredError extends RequestError {\n\tstatusCode = StatusCodes.PreconditionRequired\n\n\tconstructor(message = 'Precondition required', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class TokenExpired extends RequestError {\n\tstatusCode = StatusCodes.TokenExpired\n\n\tconstructor(message = 'Token expired', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\ntype ValidError = {\n\tmessages: string[]\n\tfield: string\n}\n\nexport class ValidationError extends RequestError {\n\tstatusCode = StatusCodes.ValidationError\n\n\tconstructor(errors: ValidError[], cause?: unknown) {\n\t\tsuper(\n\t\t\t'Unprocessable Entity',\n\t\t\terrors.flatMap(({ field, messages }) => messages.map((message) => ({ message, field }))),\n\t\t\tcause,\n\t\t)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACxC,YACiB,SACA,SACA,OACf;AACD,UAAM,SAAS,EAAE,MAAM,CAAC;AAJR;AACA;AACA;AAAA,EAGjB;AACD;;;ACLO,IAAe,eAAf,cAAoC,cAAc;AAAA,EAG9C,YACO,SACA,kBAChB,OACC;AACD,UAAM,SAAS,EAAE,iBAAiB,GAAG,KAAK;AAJ1B;AACA;AAAA,EAIjB;AACD;;;ACGO,IAAM,cAAc;AAAA,EAC1B,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,cAAc;AACf;;;ACxBO,IAAM,kBAAN,cAA8B,aAAa;AAAA,EACjD,aAAa,YAAY;AAAA,EAEzB,YAAY,SAAiB,OAAiB;AAC7C,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,wBAAN,cAAoC,aAAa;AAAA,EACvD,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,qBAAqB,OAAiB;AAC3D,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,qBAAN,cAAiC,aAAa;AAAA,EACpD,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,kBAAkB,OAAiB;AACxD,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,gBAAN,cAA4B,aAAa;AAAA,EAC/C,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,aAAa,OAAiB;AACnD,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,4BAAN,cAAwC,aAAa;AAAA,EAC3D,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,yBAAyB,OAAiB;AAC/D,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACNO,IAAM,eAAN,cAA2B,aAAa;AAAA,EAC9C,aAAa,YAAY;AAAA,EAEzB,YAAY,UAAU,iBAAiB,OAAiB;AACvD,UAAM,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EACpC;AACD;;;ACDO,IAAM,kBAAN,cAA8B,aAAa;AAAA,EACjD,aAAa,YAAY;AAAA,EAEzB,YAAY,QAAsB,OAAiB;AAClD;AAAA,MACC;AAAA,MACA,OAAO,QAAQ,CAAC,EAAE,OAAO,SAAS,MAAM,SAAS,IAAI,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;AAAA,MACvF;AAAA,IACD;AAAA,EACD;AACD;","names":[]}
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var T=(o,e)=>{for(var t in e)a(o,t,{get:e[t],enumerable:!0})},C=(o,e,t,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of D(e))!c.call(o,n)&&n!==t&&a(o,n,{get:()=>e[n],enumerable:!(u=x(e,n))||u.enumerable});return o};var k=o=>C(a({},"__esModule",{value:!0}),o);var P={};T(P,{BadRequestError:()=>d,EquippedError:()=>p,NotAuthenticatedError:()=>i,NotAuthorizedError:()=>f,NotFoundError:()=>R,RequestError:()=>r,TokenExpired:()=>l,ValidationError:()=>y});module.exports=k(P);var p=class extends Error{constructor(t,u,n){super(t,{cause:n});this.message=t;this.context=u;this.cause=n}};var r=class extends p{constructor(t,u,n){super(t,{serializedErrors:u},n);this.message=t;this.serializedErrors=u}};var s={Ok:200,Found:302,BadRequest:400,NotAuthenticated:401,NotAuthorized:403,NotFound:404,ValidationError:422,TooManyRequests:429,TokenExpired:461};var d=class extends r{statusCode=s.BadRequest;constructor(e,t){super(e,[{message:e}],t)}};var i=class extends r{statusCode=s.NotAuthenticated;constructor(e="Not authenticated",t){super(e,[{message:e}],t)}};var f=class extends r{statusCode=s.NotAuthorized;constructor(e="Not authorized",t){super(e,[{message:e}],t)}};var R=class extends r{statusCode=s.NotFound;constructor(e="Not found",t){super(e,[{message:e}],t)}};var l=class extends r{statusCode=s.TokenExpired;constructor(e="Token expired",t){super(e,[{message:e}],t)}};var y=class extends r{statusCode=s.ValidationError;constructor(e,t){super("Unprocessable Entity",e.flatMap(({field:u,messages:n})=>n.map(m=>({message:m,field:u}))),t)}};0&&(module.exports={BadRequestError,EquippedError,NotAuthenticatedError,NotAuthorizedError,NotFoundError,RequestError,TokenExpired,ValidationError});
1
+ "use strict";var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var C=(r,e)=>{for(var t in e)a(r,t,{get:e[t],enumerable:!0})},k=(r,e,t,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of D(e))!T.call(r,n)&&n!==t&&a(r,n,{get:()=>e[n],enumerable:!(u=c(e,n))||u.enumerable});return r};var P=r=>k(a({},"__esModule",{value:!0}),r);var w={};C(w,{BadRequestError:()=>d,EquippedError:()=>p,NotAuthenticatedError:()=>i,NotAuthorizedError:()=>f,NotFoundError:()=>R,PreconditionRequiredError:()=>l,RequestError:()=>o,TokenExpired:()=>m,ValidationError:()=>y});module.exports=P(w);var p=class extends Error{constructor(t,u,n){super(t,{cause:n});this.message=t;this.context=u;this.cause=n}};var o=class extends p{constructor(t,u,n){super(t,{serializedErrors:u},n);this.message=t;this.serializedErrors=u}};var s={Ok:200,Found:302,BadRequest:400,NotAuthenticated:401,NotAuthorized:403,NotFound:404,ValidationError:422,PreconditionRequired:428,TooManyRequests:429,TokenExpired:461};var d=class extends o{statusCode=s.BadRequest;constructor(e,t){super(e,[{message:e}],t)}};var i=class extends o{statusCode=s.NotAuthenticated;constructor(e="Not authenticated",t){super(e,[{message:e}],t)}};var f=class extends o{statusCode=s.NotAuthorized;constructor(e="Not authorized",t){super(e,[{message:e}],t)}};var R=class extends o{statusCode=s.NotFound;constructor(e="Not found",t){super(e,[{message:e}],t)}};var l=class extends o{statusCode=s.PreconditionRequired;constructor(e="Precondition required",t){super(e,[{message:e}],t)}};var m=class extends o{statusCode=s.TokenExpired;constructor(e="Token expired",t){super(e,[{message:e}],t)}};var y=class extends o{statusCode=s.ValidationError;constructor(e,t){super("Unprocessable Entity",e.flatMap(({field:u,messages:n})=>n.map(x=>({message:x,field:u}))),t)}};0&&(module.exports={BadRequestError,EquippedError,NotAuthenticatedError,NotAuthorizedError,NotFoundError,PreconditionRequiredError,RequestError,TokenExpired,ValidationError});
2
2
  //# sourceMappingURL=index.min.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/errors/index.ts","../../../src/errors/equippedError.ts","../../../src/errors/requestError.ts","../../../src/server/types.ts","../../../src/errors/types/badRequestError.ts","../../../src/errors/types/notAuthenticatedError.ts","../../../src/errors/types/notAuthorizedError.ts","../../../src/errors/types/notFoundError.ts","../../../src/errors/types/tokenExpired.ts","../../../src/errors/types/validationError.ts"],"sourcesContent":["export * from './equippedError'\nexport * from './requestError'\nexport * from './types/badRequestError'\nexport * from './types/notAuthenticatedError'\nexport * from './types/notAuthorizedError'\nexport * from './types/notFoundError'\nexport * from './types/tokenExpired'\nexport * from './types/validationError'\n","export class EquippedError extends Error {\n\tconstructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly context: Record<string, unknown>,\n\t\tpublic readonly cause?: unknown,\n\t) {\n\t\tsuper(message, { cause })\n\t}\n}\n","import type { StatusCodesEnum } from '../server'\nimport { EquippedError } from './equippedError'\n\nexport abstract class RequestError extends EquippedError {\n\tabstract readonly statusCode: StatusCodesEnum\n\n\tprotected constructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly serializedErrors: { message: string; field?: string }[],\n\t\tcause?: unknown,\n\t) {\n\t\tsuper(message, { serializedErrors }, cause)\n\t}\n}\n","import type { IsInTypeList, Pipe, PipeInput, PipeOutput, Prettify } from 'valleyed'\n\nimport type { RequestError } from '../errors'\nimport type { Enum } from '../types'\nimport type { Request, Response } from './requests'\n\nexport const Methods = {\n\thead: 'head',\n\tget: 'get',\n\tpost: 'post',\n\tput: 'put',\n\tpatch: 'patch',\n\tdelete: 'delete',\n\toptions: 'options',\n} as const\n\nexport const StatusCodes = {\n\tOk: 200,\n\tFound: 302,\n\tBadRequest: 400,\n\tNotAuthenticated: 401,\n\tNotAuthorized: 403,\n\tNotFound: 404,\n\tValidationError: 422,\n\tTooManyRequests: 429,\n\tTokenExpired: 461,\n} as const\n\nexport type MethodsEnum = Enum<typeof Methods>\nexport type StatusCodesEnum = Enum<typeof StatusCodes>\n\nexport type DefaultHeaders = Record<string, ArrayOrValue<string>>\nexport type DefaultCookies = Record<string, string | undefined>\n\ntype ArrayOrValue<T> = T | T[] | undefined\n\nexport type IncomingFile = {\n\tname: string\n\ttype: string\n\tsize: number\n\tisTruncated: boolean\n\tdata: Buffer\n\tduration: number\n}\n\nexport type RouteDef = {\n\tparams?: Pipe<Record<string, ArrayOrValue<string>>, Record<string, ArrayOrValue<string>>>\n\tquery?: Pipe<Record<string, ArrayOrValue<unknown>>, Record<string, ArrayOrValue<unknown>>>\n\theaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tcookies?: Pipe<DefaultCookies, DefaultCookies>\n\tbody?: Pipe<Record<string, unknown>, Record<string, unknown>>\n\tresponse?: Pipe<unknown, unknown>\n\tresponseHeaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tresponseCookies?: Pipe<DefaultCookies, DefaultCookies>\n\tdefaultStatusCode?: StatusCodesEnum\n\tdefaultContentType?: string\n}\n\ntype RouteGroup = { name: string; description?: string }\ntype HandlerSetup<T extends RouteDef> = (route: Route<T>) => void\n\nexport type RouteConfig<T extends RouteDef> = {\n\tmiddlewares?: ReturnType<typeof makeMiddleware<RouteDef>>[]\n\tresponseMiddlewares?: ReturnType<typeof makeResponseMiddleware<RouteDef>>[]\n\tonError?: ReturnType<typeof makeErrorMiddleware<RouteDef>>\n\tgroups?: (RouteGroup | RouteGroup['name'])[]\n\ttitle?: string\n\tdescriptions?: string[]\n\tsecurity?: Record<string, string[]>[]\n\tschema?: T\n\thide?: boolean\n}\n\nexport type RouterConfig<T extends RouteDef> = RouteConfig<T> & { path: string }\nexport type Route<T extends RouteDef> = RouteConfig<T> & {\n\tpath: string\n\tmethod: MethodsEnum\n\thandler: RouteDefHandler<T>\n}\n\ntype GetApiPart<T extends RouteDef, K extends keyof RouteDef> = NonNullable<IsInTypeList<T[K], [unknown]> extends true ? RouteDef[K] : T[K]>\n\ntype ArePipes<A, B> = A extends Pipe<any, any> ? (B extends Pipe<any, any> ? true : false) : false\ntype Compare<K extends keyof RouteDef, A, B> =\n\tIsInTypeList<B, [unknown]> extends true\n\t\t? A\n\t\t: IsInTypeList<A, [unknown]> extends true\n\t\t\t? B\n\t\t\t: K extends `default${string}` | 'context'\n\t\t\t\t? B\n\t\t\t\t: ArePipes<A, B> extends true\n\t\t\t\t\t? Pipe<PipeInput<A> & PipeInput<B>, PipeOutput<A> & PipeOutput<B>>\n\t\t\t\t\t: B\n\nexport type MergeRouteDefs<A extends RouteDef, B extends RouteDef> = {\n\t[K in keyof RouteDef]: Compare<K, A[K], B[K]>\n}\n\nexport type RouteDefToReqRes<T extends RouteDef> = Prettify<{\n\tbody: PipeOutput<GetApiPart<T, 'body'>>\n\tparams: PipeOutput<GetApiPart<T, 'params'>>\n\trequestHeaders: PipeOutput<GetApiPart<T, 'headers'>>\n\trequestCookies: PipeOutput<GetApiPart<T, 'cookies'>>\n\tquery: PipeOutput<GetApiPart<T, 'query'>>\n\tresponse: PipeOutput<GetApiPart<T, 'response'>>\n\tresponseHeaders: PipeOutput<GetApiPart<T, 'responseHeaders'>>\n\tresponseCookies: PipeOutput<GetApiPart<T, 'responseCookies'>>\n\tstatusCode: GetApiPart<T, 'defaultStatusCode'>\n\tcontentType: GetApiPart<T, 'defaultContentType'>\n}>\n\ntype Awaitable<T> = Promise<T> | T\ntype Res<T extends RouteDefToReqRes<any>> = Awaitable<\n\tIsInTypeList<T['statusCode'], [StatusCodesEnum, 200]> extends true\n\t\t? IsInTypeList<T['responseHeaders'], [DefaultHeaders]> extends true\n\t\t\t? IsInTypeList<T['responseCookies'], [DefaultCookies]> extends true\n\t\t\t\t? Response<T> | T['response']\n\t\t\t\t: Response<T>\n\t\t\t: Response<T>\n\t\t: Response<T>\n>\nexport type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>) => Res<RouteDefToReqRes<Def>>\ntype RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<void>\ntype RouteResponseMiddlewareHandler<_Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<RouteDef>>,\n\tres: Response<RouteDefToReqRes<RouteDef>>,\n) => Awaitable<void>\ntype ErrorHandler<Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<Def>>,\n\terr: Error,\n) => Res<\n\tOmit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & {\n\t\tresponse: RequestError['serializedErrors']\n\t\tstatusCode: RequestError['statusCode']\n\t\tresponseHeaders: DefaultHeaders\n\t\tresponseCookies: DefaultCookies\n\t}\n>\n\nfunction makeMiddlewareHandler<Cb extends Function, T extends RouteDef>(cb: Cb, onSetup?: HandlerSetup<T>) {\n\treturn { cb, onSetup }\n}\n\nexport const makeMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<RouteMiddlewareHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\nexport const makeResponseMiddleware = <Def extends RouteDef>(\n\t...args: Parameters<typeof makeMiddlewareHandler<RouteResponseMiddlewareHandler<Def>, Def>>\n) => makeMiddlewareHandler(...args)\nexport const makeErrorMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<ErrorHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class BadRequestError extends RequestError {\n\tstatusCode = StatusCodes.BadRequest\n\n\tconstructor(message: string, cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthenticatedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthenticated\n\n\tconstructor(message = 'Not authenticated', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthorizedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthorized\n\n\tconstructor(message = 'Not authorized', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotFoundError extends RequestError {\n\tstatusCode = StatusCodes.NotFound\n\n\tconstructor(message = 'Not found', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class TokenExpired extends RequestError {\n\tstatusCode = StatusCodes.TokenExpired\n\n\tconstructor(message = 'Token expired', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\ntype ValidError = {\n\tmessages: string[]\n\tfield: string\n}\n\nexport class ValidationError extends RequestError {\n\tstatusCode = StatusCodes.ValidationError\n\n\tconstructor(errors: ValidError[], cause?: unknown) {\n\t\tsuper(\n\t\t\t'Unprocessable Entity',\n\t\t\terrors.flatMap(({ field, messages }) => messages.map((message) => ({ message, field }))),\n\t\t\tcause,\n\t\t)\n\t}\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,kBAAAC,EAAA,0BAAAC,EAAA,uBAAAC,EAAA,kBAAAC,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,oBAAAC,IAAA,eAAAC,EAAAV,GCAO,IAAMW,EAAN,cAA4B,KAAM,CACxC,YACiBC,EACAC,EACAC,EACf,CACD,MAAMF,EAAS,CAAE,MAAAE,CAAM,CAAC,EAJR,aAAAF,EACA,aAAAC,EACA,WAAAC,CAGjB,CACD,ECLO,IAAeC,EAAf,cAAoCC,CAAc,CAG9C,YACOC,EACAC,EAChBC,EACC,CACD,MAAMF,EAAS,CAAE,iBAAAC,CAAiB,EAAGC,CAAK,EAJ1B,aAAAF,EACA,sBAAAC,CAIjB,CACD,ECGO,IAAME,EAAc,CAC1B,GAAI,IACJ,MAAO,IACP,WAAY,IACZ,iBAAkB,IAClB,cAAe,IACf,SAAU,IACV,gBAAiB,IACjB,gBAAiB,IACjB,aAAc,GACf,ECvBO,IAAMC,EAAN,cAA8BC,CAAa,CACjD,WAAaC,EAAY,WAEzB,YAAYC,EAAiBC,EAAiB,CAC7C,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAAoCC,CAAa,CACvD,WAAaC,EAAY,iBAEzB,YAAYC,EAAU,oBAAqBC,EAAiB,CAC3D,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAAiCC,CAAa,CACpD,WAAaC,EAAY,cAEzB,YAAYC,EAAU,iBAAkBC,EAAiB,CACxD,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAA4BC,CAAa,CAC/C,WAAaC,EAAY,SAEzB,YAAYC,EAAU,YAAaC,EAAiB,CACnD,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAA2BC,CAAa,CAC9C,WAAaC,EAAY,aAEzB,YAAYC,EAAU,gBAAiBC,EAAiB,CACvD,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECDO,IAAMC,EAAN,cAA8BC,CAAa,CACjD,WAAaC,EAAY,gBAEzB,YAAYC,EAAsBC,EAAiB,CAClD,MACC,uBACAD,EAAO,QAAQ,CAAC,CAAE,MAAAE,EAAO,SAAAC,CAAS,IAAMA,EAAS,IAAKC,IAAa,CAAE,QAAAA,EAAS,MAAAF,CAAM,EAAE,CAAC,EACvFD,CACD,CACD,CACD","names":["errors_exports","__export","BadRequestError","EquippedError","NotAuthenticatedError","NotAuthorizedError","NotFoundError","RequestError","TokenExpired","ValidationError","__toCommonJS","EquippedError","message","context","cause","RequestError","EquippedError","message","serializedErrors","cause","StatusCodes","BadRequestError","RequestError","StatusCodes","message","cause","NotAuthenticatedError","RequestError","StatusCodes","message","cause","NotAuthorizedError","RequestError","StatusCodes","message","cause","NotFoundError","RequestError","StatusCodes","message","cause","TokenExpired","RequestError","StatusCodes","message","cause","ValidationError","RequestError","StatusCodes","errors","cause","field","messages","message"]}
1
+ {"version":3,"sources":["../../../src/errors/index.ts","../../../src/errors/equippedError.ts","../../../src/errors/requestError.ts","../../../src/server/types.ts","../../../src/errors/types/badRequestError.ts","../../../src/errors/types/notAuthenticatedError.ts","../../../src/errors/types/notAuthorizedError.ts","../../../src/errors/types/notFoundError.ts","../../../src/errors/types/preconditionRequiredError.ts","../../../src/errors/types/tokenExpired.ts","../../../src/errors/types/validationError.ts"],"sourcesContent":["export * from './equippedError'\nexport * from './requestError'\nexport * from './types/badRequestError'\nexport * from './types/notAuthenticatedError'\nexport * from './types/notAuthorizedError'\nexport * from './types/notFoundError'\nexport * from './types/preconditionRequiredError'\nexport * from './types/tokenExpired'\nexport * from './types/validationError'\n","export class EquippedError extends Error {\n\tconstructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly context: Record<string, unknown>,\n\t\tpublic readonly cause?: unknown,\n\t) {\n\t\tsuper(message, { cause })\n\t}\n}\n","import type { StatusCodesEnum } from '../server'\nimport { EquippedError } from './equippedError'\n\nexport abstract class RequestError extends EquippedError {\n\tabstract readonly statusCode: StatusCodesEnum\n\n\tprotected constructor(\n\t\tpublic readonly message: string,\n\t\tpublic readonly serializedErrors: { message: string; field?: string }[],\n\t\tcause?: unknown,\n\t) {\n\t\tsuper(message, { serializedErrors }, cause)\n\t}\n}\n","import type { IsInTypeList, Pipe, PipeInput, PipeOutput, Prettify } from 'valleyed'\n\nimport type { RequestError } from '../errors'\nimport type { Enum } from '../types'\nimport type { Request, Response } from './requests'\n\nexport const Methods = {\n\thead: 'head',\n\tget: 'get',\n\tpost: 'post',\n\tput: 'put',\n\tpatch: 'patch',\n\tdelete: 'delete',\n\toptions: 'options',\n} as const\n\nexport const StatusCodes = {\n\tOk: 200,\n\tFound: 302,\n\tBadRequest: 400,\n\tNotAuthenticated: 401,\n\tNotAuthorized: 403,\n\tNotFound: 404,\n\tValidationError: 422,\n\tPreconditionRequired: 428,\n\tTooManyRequests: 429,\n\tTokenExpired: 461,\n} as const\n\nexport type MethodsEnum = Enum<typeof Methods>\nexport type StatusCodesEnum = Enum<typeof StatusCodes>\n\nexport type DefaultHeaders = Record<string, ArrayOrValue<string>>\nexport type DefaultCookies = Record<string, string | undefined>\n\ntype ArrayOrValue<T> = T | T[] | undefined\n\nexport type IncomingFile = {\n\tname: string\n\ttype: string\n\tsize: number\n\tisTruncated: boolean\n\tdata: Buffer\n\tduration: number\n}\n\nexport type RouteDef = {\n\tparams?: Pipe<Record<string, ArrayOrValue<string>>, Record<string, ArrayOrValue<string>>>\n\tquery?: Pipe<Record<string, ArrayOrValue<unknown>>, Record<string, ArrayOrValue<unknown>>>\n\theaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tcookies?: Pipe<DefaultCookies, DefaultCookies>\n\tbody?: Pipe<Record<string, unknown>, Record<string, unknown>>\n\tresponse?: Pipe<unknown, unknown>\n\tresponseHeaders?: Pipe<DefaultHeaders, DefaultHeaders>\n\tresponseCookies?: Pipe<DefaultCookies, DefaultCookies>\n\tdefaultStatusCode?: StatusCodesEnum\n\tdefaultContentType?: string\n}\n\ntype RouteGroup = { name: string; description?: string }\ntype HandlerSetup<T extends RouteDef> = (route: Route<T>) => void\n\nexport type RouteConfig<T extends RouteDef> = {\n\tmiddlewares?: ReturnType<typeof makeMiddleware<RouteDef>>[]\n\tresponseMiddlewares?: ReturnType<typeof makeResponseMiddleware<RouteDef>>[]\n\tonError?: ReturnType<typeof makeErrorMiddleware<RouteDef>>\n\tgroups?: (RouteGroup | RouteGroup['name'])[]\n\ttitle?: string\n\tdescriptions?: string[]\n\tsecurity?: Record<string, string[]>[]\n\tschema?: T\n\thide?: boolean\n}\n\nexport type RouterConfig<T extends RouteDef> = RouteConfig<T> & { path: string }\nexport type Route<T extends RouteDef> = RouteConfig<T> & {\n\tpath: string\n\tmethod: MethodsEnum\n\thandler: RouteDefHandler<T>\n}\n\ntype GetApiPart<T extends RouteDef, K extends keyof RouteDef> = NonNullable<IsInTypeList<T[K], [unknown]> extends true ? RouteDef[K] : T[K]>\n\ntype ArePipes<A, B> = A extends Pipe<any, any> ? (B extends Pipe<any, any> ? true : false) : false\ntype Compare<K extends keyof RouteDef, A, B> =\n\tIsInTypeList<B, [unknown]> extends true\n\t\t? A\n\t\t: IsInTypeList<A, [unknown]> extends true\n\t\t\t? B\n\t\t\t: K extends `default${string}` | 'context'\n\t\t\t\t? B\n\t\t\t\t: ArePipes<A, B> extends true\n\t\t\t\t\t? Pipe<PipeInput<A> & PipeInput<B>, PipeOutput<A> & PipeOutput<B>>\n\t\t\t\t\t: B\n\nexport type MergeRouteDefs<A extends RouteDef, B extends RouteDef> = {\n\t[K in keyof RouteDef]: Compare<K, A[K], B[K]>\n}\n\nexport type RouteDefToReqRes<T extends RouteDef> = Prettify<{\n\tbody: PipeOutput<GetApiPart<T, 'body'>>\n\tparams: PipeOutput<GetApiPart<T, 'params'>>\n\trequestHeaders: PipeOutput<GetApiPart<T, 'headers'>>\n\trequestCookies: PipeOutput<GetApiPart<T, 'cookies'>>\n\tquery: PipeOutput<GetApiPart<T, 'query'>>\n\tresponse: PipeOutput<GetApiPart<T, 'response'>>\n\tresponseHeaders: PipeOutput<GetApiPart<T, 'responseHeaders'>>\n\tresponseCookies: PipeOutput<GetApiPart<T, 'responseCookies'>>\n\tstatusCode: GetApiPart<T, 'defaultStatusCode'>\n\tcontentType: GetApiPart<T, 'defaultContentType'>\n}>\n\ntype Awaitable<T> = Promise<T> | T\ntype Res<T extends RouteDefToReqRes<any>> = Awaitable<\n\tIsInTypeList<T['statusCode'], [StatusCodesEnum, 200]> extends true\n\t\t? IsInTypeList<T['responseHeaders'], [DefaultHeaders]> extends true\n\t\t\t? IsInTypeList<T['responseCookies'], [DefaultCookies]> extends true\n\t\t\t\t? Response<T> | T['response']\n\t\t\t\t: Response<T>\n\t\t\t: Response<T>\n\t\t: Response<T>\n>\nexport type RouteDefHandler<Def extends RouteDef> = (req: Request<RouteDefToReqRes<Def>>) => Res<RouteDefToReqRes<Def>>\ntype RouteMiddlewareHandler<_Def extends RouteDef> = (req: Request<RouteDefToReqRes<RouteDef>>) => Awaitable<void>\ntype RouteResponseMiddlewareHandler<_Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<RouteDef>>,\n\tres: Response<RouteDefToReqRes<RouteDef>>,\n) => Awaitable<void>\ntype ErrorHandler<Def extends RouteDef> = (\n\treq: Request<RouteDefToReqRes<Def>>,\n\terr: Error,\n) => Res<\n\tOmit<RouteDefToReqRes<Def>, 'response' | 'statusCode' | 'responseHeaders' | 'responseCookies'> & {\n\t\tresponse: RequestError['serializedErrors']\n\t\tstatusCode: RequestError['statusCode']\n\t\tresponseHeaders: DefaultHeaders\n\t\tresponseCookies: DefaultCookies\n\t}\n>\n\nfunction makeMiddlewareHandler<Cb extends Function, T extends RouteDef>(cb: Cb, onSetup?: HandlerSetup<T>) {\n\treturn { cb, onSetup }\n}\n\nexport const makeMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<RouteMiddlewareHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\nexport const makeResponseMiddleware = <Def extends RouteDef>(\n\t...args: Parameters<typeof makeMiddlewareHandler<RouteResponseMiddlewareHandler<Def>, Def>>\n) => makeMiddlewareHandler(...args)\nexport const makeErrorMiddleware = <Def extends RouteDef>(...args: Parameters<typeof makeMiddlewareHandler<ErrorHandler<Def>, Def>>) =>\n\tmakeMiddlewareHandler(...args)\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class BadRequestError extends RequestError {\n\tstatusCode = StatusCodes.BadRequest\n\n\tconstructor(message: string, cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthenticatedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthenticated\n\n\tconstructor(message = 'Not authenticated', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotAuthorizedError extends RequestError {\n\tstatusCode = StatusCodes.NotAuthorized\n\n\tconstructor(message = 'Not authorized', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class NotFoundError extends RequestError {\n\tstatusCode = StatusCodes.NotFound\n\n\tconstructor(message = 'Not found', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class PreconditionRequiredError extends RequestError {\n\tstatusCode = StatusCodes.PreconditionRequired\n\n\tconstructor(message = 'Precondition required', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\nexport class TokenExpired extends RequestError {\n\tstatusCode = StatusCodes.TokenExpired\n\n\tconstructor(message = 'Token expired', cause?: unknown) {\n\t\tsuper(message, [{ message }], cause)\n\t}\n}\n","import { StatusCodes } from '../../server'\nimport { RequestError } from '../requestError'\n\ntype ValidError = {\n\tmessages: string[]\n\tfield: string\n}\n\nexport class ValidationError extends RequestError {\n\tstatusCode = StatusCodes.ValidationError\n\n\tconstructor(errors: ValidError[], cause?: unknown) {\n\t\tsuper(\n\t\t\t'Unprocessable Entity',\n\t\t\terrors.flatMap(({ field, messages }) => messages.map((message) => ({ message, field }))),\n\t\t\tcause,\n\t\t)\n\t}\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,EAAA,kBAAAC,EAAA,0BAAAC,EAAA,uBAAAC,EAAA,kBAAAC,EAAA,8BAAAC,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,oBAAAC,IAAA,eAAAC,EAAAX,GCAO,IAAMY,EAAN,cAA4B,KAAM,CACxC,YACiBC,EACAC,EACAC,EACf,CACD,MAAMF,EAAS,CAAE,MAAAE,CAAM,CAAC,EAJR,aAAAF,EACA,aAAAC,EACA,WAAAC,CAGjB,CACD,ECLO,IAAeC,EAAf,cAAoCC,CAAc,CAG9C,YACOC,EACAC,EAChBC,EACC,CACD,MAAMF,EAAS,CAAE,iBAAAC,CAAiB,EAAGC,CAAK,EAJ1B,aAAAF,EACA,sBAAAC,CAIjB,CACD,ECGO,IAAME,EAAc,CAC1B,GAAI,IACJ,MAAO,IACP,WAAY,IACZ,iBAAkB,IAClB,cAAe,IACf,SAAU,IACV,gBAAiB,IACjB,qBAAsB,IACtB,gBAAiB,IACjB,aAAc,GACf,ECxBO,IAAMC,EAAN,cAA8BC,CAAa,CACjD,WAAaC,EAAY,WAEzB,YAAYC,EAAiBC,EAAiB,CAC7C,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAAoCC,CAAa,CACvD,WAAaC,EAAY,iBAEzB,YAAYC,EAAU,oBAAqBC,EAAiB,CAC3D,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAAiCC,CAAa,CACpD,WAAaC,EAAY,cAEzB,YAAYC,EAAU,iBAAkBC,EAAiB,CACxD,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAA4BC,CAAa,CAC/C,WAAaC,EAAY,SAEzB,YAAYC,EAAU,YAAaC,EAAiB,CACnD,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAAwCC,CAAa,CAC3D,WAAaC,EAAY,qBAEzB,YAAYC,EAAU,wBAAyBC,EAAiB,CAC/D,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECNO,IAAMC,EAAN,cAA2BC,CAAa,CAC9C,WAAaC,EAAY,aAEzB,YAAYC,EAAU,gBAAiBC,EAAiB,CACvD,MAAMD,EAAS,CAAC,CAAE,QAAAA,CAAQ,CAAC,EAAGC,CAAK,CACpC,CACD,ECDO,IAAMC,EAAN,cAA8BC,CAAa,CACjD,WAAaC,EAAY,gBAEzB,YAAYC,EAAsBC,EAAiB,CAClD,MACC,uBACAD,EAAO,QAAQ,CAAC,CAAE,MAAAE,EAAO,SAAAC,CAAS,IAAMA,EAAS,IAAKC,IAAa,CAAE,QAAAA,EAAS,MAAAF,CAAM,EAAE,CAAC,EACvFD,CACD,CACD,CACD","names":["errors_exports","__export","BadRequestError","EquippedError","NotAuthenticatedError","NotAuthorizedError","NotFoundError","PreconditionRequiredError","RequestError","TokenExpired","ValidationError","__toCommonJS","EquippedError","message","context","cause","RequestError","EquippedError","message","serializedErrors","cause","StatusCodes","BadRequestError","RequestError","StatusCodes","message","cause","NotAuthenticatedError","RequestError","StatusCodes","message","cause","NotAuthorizedError","RequestError","StatusCodes","message","cause","NotFoundError","RequestError","StatusCodes","message","cause","PreconditionRequiredError","RequestError","StatusCodes","message","cause","TokenExpired","RequestError","StatusCodes","message","cause","ValidationError","RequestError","StatusCodes","errors","cause","field","messages","message"]}
@@ -638,6 +638,13 @@ var init_notFoundError = __esm({
638
638
  }
639
639
  });
640
640
 
641
+ // src/errors/types/preconditionRequiredError.ts
642
+ var init_preconditionRequiredError = __esm({
643
+ "src/errors/types/preconditionRequiredError.ts"() {
644
+ "use strict";
645
+ }
646
+ });
647
+
641
648
  // src/errors/types/tokenExpired.ts
642
649
  var init_tokenExpired = __esm({
643
650
  "src/errors/types/tokenExpired.ts"() {
@@ -662,6 +669,7 @@ var init_errors = __esm({
662
669
  init_notAuthenticatedError();
663
670
  init_notAuthorizedError();
664
671
  init_notFoundError();
672
+ init_preconditionRequiredError();
665
673
  init_tokenExpired();
666
674
  init_validationError();
667
675
  }