equipped 5.3.1 → 5.3.2

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 (191) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/cjs/cache/adapters/in-memory/index.cjs +155 -155
  3. package/dist/cjs/cache/adapters/in-memory/index.cjs.map +1 -1
  4. package/dist/cjs/cache/adapters/in-memory/index.min.cjs +3 -3
  5. package/dist/cjs/cache/adapters/in-memory/index.min.cjs.map +1 -1
  6. package/dist/cjs/dbs/adapters/mongodb/index.cjs.map +1 -1
  7. package/dist/cjs/dbs/adapters/mongodb/index.min.cjs +2 -2
  8. package/dist/cjs/dbs/adapters/mongodb/index.min.cjs.map +1 -1
  9. package/dist/cjs/dbs/index.cjs +181 -179
  10. package/dist/cjs/dbs/index.cjs.map +1 -1
  11. package/dist/cjs/dbs/index.min.cjs +3 -3
  12. package/dist/cjs/dbs/index.min.cjs.map +1 -1
  13. package/dist/cjs/events/adapters/kafka/index.cjs.map +1 -1
  14. package/dist/cjs/events/adapters/kafka/index.min.cjs +2 -2
  15. package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -1
  16. package/dist/cjs/events/adapters/rabbitmq/index.cjs +179 -179
  17. package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -1
  18. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +3 -3
  19. package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -1
  20. package/dist/cjs/orm/adapters/mongodb/index.cjs +144 -144
  21. package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -1
  22. package/dist/cjs/orm/adapters/mongodb/index.min.cjs +1 -1
  23. package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -1
  24. package/dist/cjs/orm/adapters/postgresql/index.cjs +144 -215
  25. package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -1
  26. package/dist/cjs/orm/adapters/postgresql/index.min.cjs +11 -11
  27. package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -1
  28. package/dist/cjs/server/adapters/express/index.cjs +291 -225
  29. package/dist/cjs/server/adapters/express/index.cjs.map +1 -1
  30. package/dist/cjs/server/adapters/express/index.min.cjs +7 -7
  31. package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -1
  32. package/dist/cjs/server/adapters/fastify/index.cjs +276 -210
  33. package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -1
  34. package/dist/cjs/server/adapters/fastify/index.min.cjs +7 -7
  35. package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -1
  36. package/dist/cjs/server/index.cjs +81 -15
  37. package/dist/cjs/server/index.cjs.map +1 -1
  38. package/dist/cjs/server/index.min.cjs +7 -7
  39. package/dist/cjs/server/index.min.cjs.map +1 -1
  40. package/dist/cjs/utilities/index.cjs +0 -5
  41. package/dist/cjs/utilities/index.cjs.map +1 -1
  42. package/dist/cjs/utilities/index.min.cjs +2 -2
  43. package/dist/cjs/utilities/index.min.cjs.map +1 -1
  44. package/dist/esm/cache/adapters/in-memory/index.min.mjs +1 -1
  45. package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -1
  46. package/dist/esm/cache/adapters/in-memory/index.mjs +6 -3
  47. package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -1
  48. package/dist/esm/cache/adapters/redis/index.min.mjs +1 -1
  49. package/dist/esm/cache/adapters/redis/index.mjs +5 -3
  50. package/dist/esm/cache/index.min.mjs +1 -1
  51. package/dist/esm/cache/index.mjs +2 -2
  52. package/dist/esm/{chunk-5PZACGPI.mjs → chunk-26BOI6IL.mjs} +7 -5
  53. package/dist/esm/{chunk-5PZACGPI.mjs.map → chunk-26BOI6IL.mjs.map} +1 -1
  54. package/dist/esm/{chunk-7SQ5JQYR.min.mjs → chunk-AODOD22O.min.mjs} +2 -2
  55. package/dist/esm/chunk-APSDCRY5.min.mjs +32 -0
  56. package/dist/esm/chunk-APSDCRY5.min.mjs.map +1 -0
  57. package/dist/esm/{chunk-A4P7P6BU.mjs → chunk-CEYT5YBA.mjs} +157 -347
  58. package/dist/esm/chunk-CEYT5YBA.mjs.map +1 -0
  59. package/dist/esm/chunk-CU2HU5UE.min.mjs +2 -0
  60. package/dist/esm/chunk-CU2HU5UE.min.mjs.map +1 -0
  61. package/dist/esm/chunk-DAK7OKSH.min.mjs +2 -0
  62. package/dist/esm/{chunk-MQXTTWPS.min.mjs.map → chunk-DAK7OKSH.min.mjs.map} +1 -1
  63. package/dist/esm/{chunk-IRYCN6PI.min.mjs → chunk-DAUQA32Q.min.mjs} +2 -2
  64. package/dist/esm/{chunk-BWUFPMVG.mjs → chunk-FQYRVHQT.mjs} +2 -2
  65. package/dist/esm/chunk-NEF3UYFA.mjs +144 -0
  66. package/dist/esm/chunk-NEF3UYFA.mjs.map +1 -0
  67. package/dist/esm/chunk-NNFUYHQ7.mjs +135 -0
  68. package/dist/esm/chunk-NNFUYHQ7.mjs.map +1 -0
  69. package/dist/esm/{chunk-7CP7ZE2O.mjs → chunk-PCEHFZ6G.mjs} +9 -5
  70. package/dist/esm/{chunk-7CP7ZE2O.mjs.map → chunk-PCEHFZ6G.mjs.map} +1 -1
  71. package/dist/esm/{chunk-P4PRHHIY.min.mjs → chunk-QCCDJLBH.min.mjs} +2 -2
  72. package/dist/esm/{chunk-3TP7NINX.mjs → chunk-RIXTQQUU.mjs} +2 -2
  73. package/dist/esm/{chunk-LKS5ZE45.mjs → chunk-RPPYCWXW.mjs} +2 -2
  74. package/dist/esm/{chunk-HXFNN6RI.mjs → chunk-T2O72JBW.mjs} +3 -3
  75. package/dist/esm/{chunk-TSVHZZE4.mjs → chunk-VQO4MSEC.mjs} +5 -5
  76. package/dist/esm/{chunk-676VIABN.min.mjs → chunk-X7VNAGLR.min.mjs} +2 -2
  77. package/dist/esm/chunk-XTXAEBXY.min.mjs +2 -0
  78. package/dist/esm/{chunk-7NF7PV6S.min.mjs.map → chunk-XTXAEBXY.min.mjs.map} +1 -1
  79. package/dist/esm/{chunk-2GGMLKRP.min.mjs → chunk-YDQW6ETS.min.mjs} +2 -2
  80. package/dist/esm/chunk-ZDBDR3IB.min.mjs +2 -0
  81. package/dist/esm/chunk-ZDBDR3IB.min.mjs.map +1 -0
  82. package/dist/esm/dbs/adapters/mongodb/index.min.mjs +1 -1
  83. package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -1
  84. package/dist/esm/dbs/adapters/mongodb/index.mjs +8 -5
  85. package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -1
  86. package/dist/esm/dbs/index.min.mjs +1 -1
  87. package/dist/esm/dbs/index.mjs +5 -3
  88. package/dist/esm/errors/index.min.mjs +1 -1
  89. package/dist/esm/errors/index.mjs +1 -1
  90. package/dist/esm/events/adapters/kafka/index.min.mjs +1 -1
  91. package/dist/esm/events/adapters/kafka/index.mjs +4 -2
  92. package/dist/esm/events/adapters/rabbitmq/index.min.mjs +1 -1
  93. package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -1
  94. package/dist/esm/events/adapters/rabbitmq/index.mjs +7 -3
  95. package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -1
  96. package/dist/esm/index.min.mjs +1 -1
  97. package/dist/esm/index.mjs +1 -1
  98. package/dist/esm/instance/index.min.mjs +1 -1
  99. package/dist/esm/instance/index.mjs +1 -1
  100. package/dist/esm/{introspection-YJF3QAUK.mjs → introspection-FGDVYTPP.mjs} +3 -3
  101. package/dist/esm/introspection-UDWDS6DV.min.mjs +2 -0
  102. package/dist/esm/jobs/adapters/redis/index.min.mjs +1 -1
  103. package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -1
  104. package/dist/esm/jobs/adapters/redis/index.mjs +10 -6
  105. package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -1
  106. package/dist/esm/orm/adapters/in-memory/index.min.mjs +1 -1
  107. package/dist/esm/orm/adapters/in-memory/index.mjs +4 -3
  108. package/dist/esm/orm/adapters/json/index.min.mjs +1 -1
  109. package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -1
  110. package/dist/esm/orm/adapters/json/index.mjs +6 -5
  111. package/dist/esm/orm/adapters/json/index.mjs.map +1 -1
  112. package/dist/esm/orm/adapters/mongodb/index.min.mjs +1 -1
  113. package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -1
  114. package/dist/esm/orm/adapters/mongodb/index.mjs +6 -4
  115. package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -1
  116. package/dist/esm/orm/adapters/postgresql/index.min.mjs +2 -2
  117. package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -1
  118. package/dist/esm/orm/adapters/postgresql/index.mjs +8 -5
  119. package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -1
  120. package/dist/esm/orm/index.min.mjs +1 -1
  121. package/dist/esm/orm/index.mjs +3 -3
  122. package/dist/esm/server/adapters/express/index.min.mjs +1 -1
  123. package/dist/esm/server/adapters/express/index.min.mjs.map +1 -1
  124. package/dist/esm/server/adapters/express/index.mjs +7 -3
  125. package/dist/esm/server/adapters/express/index.mjs.map +1 -1
  126. package/dist/esm/server/adapters/fastify/index.min.mjs +1 -1
  127. package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -1
  128. package/dist/esm/server/adapters/fastify/index.mjs +7 -3
  129. package/dist/esm/server/adapters/fastify/index.mjs.map +1 -1
  130. package/dist/esm/server/index.min.mjs +1 -1
  131. package/dist/esm/server/index.mjs +1 -1
  132. package/dist/esm/utilities/index.min.mjs +1 -1
  133. package/dist/esm/utilities/index.mjs +5 -4
  134. package/dist/esm/validations/index.min.mjs +1 -1
  135. package/dist/esm/validations/index.mjs +1 -1
  136. package/dist/types/{base-BDTBLZ9a.d.ts → base-qDndMBf8.d.ts} +2 -2
  137. package/dist/types/cache/adapters/in-memory/index.js +7 -4
  138. package/dist/types/cache/adapters/redis/index.js +5 -3
  139. package/dist/types/cache/index.js +2 -2
  140. package/dist/types/{chunk-4DH3POYM.js → chunk-35CDCTLR.js} +4 -4
  141. package/dist/types/{chunk-J3TGB5YQ.js → chunk-4YQA5GPT.js} +8 -4
  142. package/dist/types/{chunk-YLJNBL6J.js → chunk-AQIV47BY.js} +6 -4
  143. package/dist/types/{chunk-TT5EORDK.js → chunk-BKDWUJRG.js} +156 -346
  144. package/dist/types/{chunk-5Z26ZURE.js → chunk-DA2VYP7D.js} +1 -1
  145. package/dist/types/{chunk-LPB5LS7A.js → chunk-GDMGPX4C.js} +1 -1
  146. package/dist/types/chunk-H5V6ADFD.js +134 -0
  147. package/dist/types/{chunk-IZDJDGOV.js → chunk-OOKJEMQI.js} +2 -2
  148. package/dist/types/chunk-PPD4WDG6.js +143 -0
  149. package/dist/types/{chunk-55CTVK7R.js → chunk-T7K7PO6G.js} +1 -1
  150. package/dist/types/dbs/adapters/mongodb/index.js +8 -5
  151. package/dist/types/dbs/index.js +5 -3
  152. package/dist/types/errors/index.js +1 -1
  153. package/dist/types/events/adapters/kafka/index.js +4 -2
  154. package/dist/types/events/adapters/rabbitmq/index.js +7 -3
  155. package/dist/types/index.js +1 -1
  156. package/dist/types/instance/index.js +1 -1
  157. package/dist/types/{introspection-EHGM4RMO.js → introspection-FSNS33CQ.js} +2 -2
  158. package/dist/types/jobs/adapters/redis/index.js +10 -6
  159. package/dist/types/orm/adapters/in-memory/index.js +4 -3
  160. package/dist/types/orm/adapters/json/index.js +6 -5
  161. package/dist/types/orm/adapters/mongodb/index.js +6 -4
  162. package/dist/types/orm/adapters/postgresql/index.js +8 -5
  163. package/dist/types/orm/index.js +3 -3
  164. package/dist/types/server/adapters/express/index.d.ts +1 -1
  165. package/dist/types/server/adapters/express/index.js +7 -3
  166. package/dist/types/server/adapters/fastify/index.d.ts +1 -1
  167. package/dist/types/server/adapters/fastify/index.js +7 -3
  168. package/dist/types/server/index.d.ts +2 -2
  169. package/dist/types/server/index.js +1 -1
  170. package/dist/types/utilities/index.d.ts +1 -2
  171. package/dist/types/utilities/index.js +5 -4
  172. package/dist/types/validations/index.js +1 -1
  173. package/package.json +1 -1
  174. package/dist/esm/chunk-7NF7PV6S.min.mjs +0 -2
  175. package/dist/esm/chunk-A4P7P6BU.mjs.map +0 -1
  176. package/dist/esm/chunk-IN5YKIJ7.min.mjs +0 -32
  177. package/dist/esm/chunk-IN5YKIJ7.min.mjs.map +0 -1
  178. package/dist/esm/chunk-MQXTTWPS.min.mjs +0 -2
  179. package/dist/esm/introspection-THKMXV5V.min.mjs +0 -2
  180. /package/dist/esm/{chunk-7SQ5JQYR.min.mjs.map → chunk-AODOD22O.min.mjs.map} +0 -0
  181. /package/dist/esm/{chunk-IRYCN6PI.min.mjs.map → chunk-DAUQA32Q.min.mjs.map} +0 -0
  182. /package/dist/esm/{chunk-BWUFPMVG.mjs.map → chunk-FQYRVHQT.mjs.map} +0 -0
  183. /package/dist/esm/{chunk-P4PRHHIY.min.mjs.map → chunk-QCCDJLBH.min.mjs.map} +0 -0
  184. /package/dist/esm/{chunk-3TP7NINX.mjs.map → chunk-RIXTQQUU.mjs.map} +0 -0
  185. /package/dist/esm/{chunk-LKS5ZE45.mjs.map → chunk-RPPYCWXW.mjs.map} +0 -0
  186. /package/dist/esm/{chunk-HXFNN6RI.mjs.map → chunk-T2O72JBW.mjs.map} +0 -0
  187. /package/dist/esm/{chunk-TSVHZZE4.mjs.map → chunk-VQO4MSEC.mjs.map} +0 -0
  188. /package/dist/esm/{chunk-676VIABN.min.mjs.map → chunk-X7VNAGLR.min.mjs.map} +0 -0
  189. /package/dist/esm/{chunk-2GGMLKRP.min.mjs.map → chunk-YDQW6ETS.min.mjs.map} +0 -0
  190. /package/dist/esm/{introspection-THKMXV5V.min.mjs.map → introspection-FGDVYTPP.mjs.map} +0 -0
  191. /package/dist/esm/{introspection-YJF3QAUK.mjs.map → introspection-UDWDS6DV.min.mjs.map} +0 -0
@@ -1,14 +1,14 @@
1
- "use strict";var Ie=Object.create;var G=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty;var te=(s,e)=>{for(var t in e)G(s,t,{get:e[t],enumerable:!0})},V=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ne(e))!je.call(s,r)&&r!==t&&G(s,r,{get:()=>e[r],enumerable:!(o=Oe(e,r))||o.enumerable});return s},O=(s,e,t)=>(V(s,e,"default"),t&&V(t,e,"default")),J=(s,e,t)=>(t=s!=null?Ie(Me(s)):{},V(e||!s||!s.__esModule?G(t,"default",{value:s,enumerable:!0}):t,s)),Le=s=>V(G({},"__esModule",{value:!0}),s);var ot={};te(ot,{BaseApiKeyRequestAuthMethod:()=>ce,BaseJwtCookieRequestAuthMethod:()=>ue,BaseJwtHeaderRequestAuthMethod:()=>de,BaseJwtRequestAuthMethod:()=>$,BaseRequestAuthMethod:()=>S,Methods:()=>x,Request:()=>pe,Response:()=>H,Router:()=>L,Server:()=>fe,StatusCodes:()=>h,makeErrorMiddleware:()=>We,makeMiddleware:()=>ae,makeResponseMiddleware:()=>ze,requireAuthUser:()=>st,serverConfigPipe:()=>Ye});module.exports=Le(ot);var ss=require("http"),rs=require("@fastify/cors"),ns=require("cors"),qe=require("socket.io"),Pe=J(require("supertest"),1),i=require("valleyed");var g=class extends Error{constructor(t,o,r){super(t,{cause:r});this.message=t;this.context=o;this.cause=r}};var C=class extends g{constructor(t,o,r){super(t,{serializedErrors:o},r);this.message=t;this.serializedErrors=o}};var K=class extends C{statusCode=h.BadRequest;constructor(e,t){super(e,[{message:e}],t)}};var E=class extends C{statusCode=h.NotAuthenticated;constructor(e="Not authenticated",t){super(e,[{message:e}],t)}};var U=class extends C{statusCode=h.NotFound;constructor(e="Not found",t){super(e,[{message:e}],t)}};var N=class extends C{statusCode=h.TokenExpired;constructor(e="Token expired",t){super(e,[{message:e}],t)}};var z=class extends C{statusCode=h.ValidationError;constructor(e,t){super("Unprocessable Entity",e.flatMap(({field:o,messages:r})=>r.map(n=>({message:n,field:o}))),t)}};var W=class{};var M=J(require("pino"),1),ge=require("ulid"),se=require("valleyed");function ye(s,e){for(let t of e.after)if(!s.some(o=>o.class===t)){let o=t.name||"unknown",r=e.class?.name||"anonymous";throw new Error(`Missing dependency: ${r} declares after: [${o}], but ${o} is not registered`)}if(e.class){let t=[...s,e];Fe(t)}s.push(e)}function Fe(s){let e=new Map;for(let n of s){if(!n.class)continue;let d=e.get(n.class);if(d)for(let u of n.after)d.includes(u)||d.push(u);else e.set(n.class,[...n.after])}let t=new Set,o=new Set;function r(n,d){if(o.has(n)){let u=d.indexOf(n),c=[...d.slice(u),n].map(R=>R.name||"unknown");throw new Error(`Cycle detected: ${c.join(" \u2192 ")}`)}if(!t.has(n)){o.add(n),d.push(n);for(let u of e.get(n)??[])r(u,d);d.pop(),o.delete(n),t.add(n)}}for(let n of e.keys())r(n,[])}function $e(s,e=!1){if(s.length===0)return[];let t=new Map,o=[];for(let c of s)if(c.class){let R=t.get(c.class);R?R.push(c):t.set(c.class,[c])}else o.push(c);let r=[...t.keys()],n=new Map,d=new Map;for(let c of r)n.set(c,0),d.set(c,[]);for(let c of s)if(c.class)for(let R of c.after){let[m,w]=e?[c.class,R]:[R,c.class],b=d.get(m);b.includes(w)||(b.push(w),n.set(w,n.get(w)+1))}let u=[],y=r.filter(c=>n.get(c)===0);for(;y.length>0;){let c=[],R=[];for(let m of y)c.push(...t.get(m)??[]);u.push(c);for(let m of y)for(let w of d.get(m)??[]){let b=n.get(w)-1;n.set(w,b),b===0&&R.push(w)}y=R}if(o.length>0){let c=o.filter(m=>m.after.length>0),R=o.filter(m=>m.after.length===0);if(c.length>0){let m=-1;for(let b of c)for(let B of b.after){let a=u.findIndex(p=>p.some(l=>l.class===B));a>m&&(m=a)}let w=m+1;w<u.length?u[w].push(...c):u.push(c)}R.length>0&&(u.length>0?u[u.length-1].push(...R):u.push(R))}return u}async function _(s,e=o=>{throw o},t=!1){let o=$e(s,t);for(let r of o)await Promise.all(r.map(async n=>{try{return typeof n.cb=="function"?await n.cb():await n.cb}catch(d){return e(d instanceof Error?d:new Error(`${d}`))}}))}var T=require("valleyed"),me=()=>T.v.object({app:T.v.object({name:T.v.string()}),log:T.v.defaults(T.v.object({level:T.v.defaults(T.v.in(["fatal","error","warn","info","debug","trace","silent"]),"info")}),{}),utils:T.v.defaults(T.v.object({hashSaltRounds:T.v.defaults(T.v.number(),10),paginationDefaultLimit:T.v.defaults(T.v.number(),100),maxFileUploadSizeInMb:T.v.defaults(T.v.number(),500)}),{})});var P=class s{static#e;static#t;static#o={};settings;log;constructor(e){s.#t=this,this.settings=Object.freeze(e),this.log=(0,M.default)({level:this.settings.log.level,serializers:{err:M.default.stdSerializers.err,error:M.default.stdSerializers.err,req:M.default.stdSerializers.req,res:M.default.stdSerializers.res},mixin:()=>({instanceId:s.#e})}),s.#s()}alias(e){if(s.#e!==void 0)return s.crash(new g("Instance already has an alias",{}));s.#e=e}get id(){return s.#e===void 0?s.crash(new g("Instance doesnt have an alias yet",{})):s.#e}getScopedName(e,t="."){return[this.settings.app.name,e].join(t)}async start(){try{await _(s.#o.setup??[]),await _(s.#o.start??[])}catch(e){s.crash(new g("Error starting instance",{},e))}}static envs(e){let t=se.v.validate(e,process.env);return t.valid||s.crash(new g(`Environment variables are not valid
2
- ${t.error.toString()}`,{messages:t.error.messages})),t.value}static create(e){if(s.#t)return s.crash(new g("Instance has been initialized already",{}));let t=se.v.validate(me(),e);return t.valid||s.crash(new g(`Settings are not valid
3
- ${t.error.toString()}`,{messages:t.error.messages})),new s(t.value)}static get(){return s.#t?s.#t:s.crash(new g("Has not been initialized. Make sure an instance has been created before you get an instance",{}))}static maybeGet(){return s.#t}static on(e,t,o){s.#o[e]??=[];let r={cb:t,class:o?.class,after:o?.after??[]};ye(s.#o[e],r)}static#s(){Object.entries({SIGHUP:1,SIGINT:2,SIGTERM:15}).forEach(([t,o])=>{process.on(t,async()=>{await _(s.#o.close??[],()=>{},!0),process.exit(128+o)})})}static resolveBeforeCrash(e){let t=e();return s.on("close",async()=>await t),t}static crash(e){console.error(e),process.exit(1)}static createId(e){return`${e?.prefix??""}${(0,ge.ulid)(e?.time?.getTime())}`}};var I={};te(I,{pipeErrorToValidationError:()=>j,validate:()=>Ue,ve:()=>re});O(I,require("valleyed"));var re={};te(re,{incomingFile:()=>Ve,incomingFiles:()=>Ge,requestLocalStorage:()=>Q,responseLocalStorage:()=>X,withRequest:()=>Je,withResponse:()=>Ke});var oe=require("async_hooks"),D=require("valleyed");var Re=s=>D.v.array(D.v.file(s).pipe(e=>{let t=`is larger than allowed limit of ${P.get().settings.utils.maxFileUploadSizeInMb}mb`;if(e?!e.isTruncated:!0)return e;throw D.PipeError.root(t,e)})),Ve=s=>D.v.define(D.v.compile(Re(s).pipe(D.v.min(1,"no file provided")).pipe(e=>e[0])),{schema:()=>({type:"string",format:"binary"})}),Ge=s=>D.v.define(D.v.compile(Re(s)),{schema:()=>({type:"string",format:"binary"})}),Q=new oe.AsyncLocalStorage,X=new oe.AsyncLocalStorage,Je=s=>D.v.define(e=>{let t=Q.getStore();if(!t)throw new Error("Request not found in context");let o=D.v.validate(s(t),e);return o.valid?o.value:o.error}),Ke=s=>D.v.define(e=>{let t=X.getStore();if(!t)throw new Error("Response not found in context");let o=D.v.validate(s(t),e);return o.valid?o.value:o.error});var ke=require("valleyed");function j(s){let e=s.messages.reduce((t,{path:o="",message:r})=>(t[o]?t[o].messages.push(r):t[o]={field:o,messages:[r]},t),{});return new z(Object.values(e))}function Ue(s,e){let t=ke.v.validate(s,e);if(t.valid)return t.value;throw j(t.error)}var F=require("@openapi-contrib/json-schema-to-openapi-schema"),be=require("valleyed");var ve=require("valleyed");var x={head:"head",get:"get",post:"post",put:"put",patch:"patch",delete:"delete",options:"options"},h={Ok:200,Found:302,BadRequest:400,NotAuthenticated:401,NotAuthorized:403,NotFound:404,ValidationError:422,TooManyRequests:429,TokenExpired:461};function ne(s,e){return{cb:s,onSetup:e}}var ae=(...s)=>ne(...s),ze=(...s)=>ne(...s),We=(...s)=>ne(...s);function _e(...s){let e={params:"",headers:"",query:"",body:"",cookies:"",response:"",responseHeaders:"",responseCookies:"",defaultStatusCode:"",defaultContentType:""};function t(o,r){return o?r?typeof o=="number"||typeof o=="string"||typeof o=="function"?r:ve.v.merge(o,r):o:r}return Object.fromEntries(Object.keys(e).map(o=>[o,s.map(r=>r[o]).reduce(t,null)]))}var we=(s,e)=>e.map(t=>({...s,...t,path:`${s.path}/${t.path}`,groups:[...s.groups??[],...t.groups??[]],middlewares:[...s.middlewares??[],...t.middlewares??[]],responseMiddlewares:[...s.responseMiddlewares??[],...t.responseMiddlewares??[]],schema:_e(s.schema??{},t.schema??{}),security:[...s.security??[],...t.security??[]]})),L=class{#e={path:""};#t=[];#o=[];constructor(e={path:""}){this.#e=e}#s(e){return(t,o={})=>r=>{let n=we(this.#e,[{...o,path:t,method:e,handler:r}])[0];return this.#t.push(n),n}}head=this.#s(x.head);get=this.#s(x.get);post=this.#s(x.post);put=this.#s(x.put);patch=this.#s(x.patch);delete=this.#s(x.delete);options=this.#s(x.options);nest(...e){e.forEach(t=>this.#o.push(t))}get routes(){return[...this.#t].concat(this.#o.flatMap(e=>we(this.#e,e.routes)))}};var xe=s=>{let e=P.get(),{app:t}=e.settings,o={openapi:"3.0.0",info:{title:`${t.name} ${e.id}`,version:s.openapi.docsVersion??""},servers:s.openapi.docsBaseUrl?.map(a=>({url:a})),paths:{},components:{schemas:{},securitySchemes:{Authorization:{type:"apiKey",name:"authorization",in:"header"},RefreshToken:{type:"apiKey",name:"x-refresh-token",in:"header"},ApiKey:{type:"apiKey",name:"x-api-key",in:"header"}}},tags:[],"x-tagGroups":[]},r={},n={},d=a=>{let{allOf:p,oneOf:l,anyOf:f,...q}=a;return p?p.flatMap(v=>d(v)):[q]},u=a=>{if(!a||typeof a!="object")return a;if(typeof a.$refId=="string"){let{$refId:p,...l}=a,f=u(l);return o.components?.schemas?(o.components.schemas[p]=f,{$ref:`#/components/schemas/${p}`}):f}return Array.isArray(a)?a.map(p=>u(p)):Object.fromEntries(Object.entries(a).map(([p,l])=>[p,u(l)]))},y=a=>{if(!a.length)return;let p=a.map(v=>typeof v=="string"?{name:v}:v),l=p.map(v=>v.name).join(" > "),f=p.at(-1)?.name??"",q=p.map(v=>v.description?.trim()??"").filter(Boolean).join(`
1
+ "use strict";var Be=Object.create;var G=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Ne=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var te=(o,e)=>{for(var t in e)G(o,t,{get:e[t],enumerable:!0})},V=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Oe(e))!Me.call(o,r)&&r!==t&&G(o,r,{get:()=>e[r],enumerable:!(s=Ie(e,r))||s.enumerable});return o},O=(o,e,t)=>(V(o,e,"default"),t&&V(t,e,"default")),K=(o,e,t)=>(t=o!=null?Be(Ne(o)):{},V(e||!o||!o.__esModule?G(t,"default",{value:o,enumerable:!0}):t,o)),je=o=>V(G({},"__esModule",{value:!0}),o);var tt={};te(tt,{BaseApiKeyRequestAuthMethod:()=>pe,BaseJwtCookieRequestAuthMethod:()=>de,BaseJwtHeaderRequestAuthMethod:()=>ce,BaseJwtRequestAuthMethod:()=>$,BaseRequestAuthMethod:()=>q,Methods:()=>x,Request:()=>ie,Response:()=>H,Router:()=>L,Server:()=>le,StatusCodes:()=>h,makeErrorMiddleware:()=>Ue,makeMiddleware:()=>ae,makeResponseMiddleware:()=>ze,requireAuthUser:()=>et,serverConfigPipe:()=>Qe});module.exports=je(tt);var Yt=require("http"),es=require("@fastify/cors"),ts=require("cors"),qe=require("socket.io"),Se=K(require("supertest"),1),i=require("valleyed");var R=class extends Error{constructor(t,s,r){super(t,{cause:r});this.message=t;this.context=s;this.cause=r}};var C=class extends R{constructor(t,s,r){super(t,{serializedErrors:s},r);this.message=t;this.serializedErrors=s}};var J=class extends C{statusCode=h.BadRequest;constructor(e,t){super(e,[{message:e}],t)}};var E=class extends C{statusCode=h.NotAuthenticated;constructor(e="Not authenticated",t){super(e,[{message:e}],t)}};var z=class extends C{statusCode=h.NotFound;constructor(e="Not found",t){super(e,[{message:e}],t)}};var N=class extends C{statusCode=h.TokenExpired;constructor(e="Token expired",t){super(e,[{message:e}],t)}};var U=class extends C{statusCode=h.ValidationError;constructor(e,t){super("Unprocessable Entity",e.flatMap(({field:s,messages:r})=>r.map(n=>({message:n,field:s}))),t)}};var W=class{};var M=K(require("pino"),1),me=require("ulid"),se=require("valleyed");function he(o,e){for(let t of e.after)if(!o.some(s=>s.class===t)){let s=t.name||"unknown",r=e.class?.name||"anonymous";throw new Error(`Missing dependency: ${r} declares after: [${s}], but ${s} is not registered`)}if(e.class){let t=[...o,e];Le(t)}o.push(e)}function Le(o){let e=new Map;for(let n of o){if(!n.class)continue;let d=e.get(n.class);if(d)for(let u of n.after)d.includes(u)||d.push(u);else e.set(n.class,[...n.after])}let t=new Set,s=new Set;function r(n,d){if(s.has(n)){let u=d.indexOf(n),c=[...d.slice(u),n].map(g=>g.name||"unknown");throw new Error(`Cycle detected: ${c.join(" \u2192 ")}`)}if(!t.has(n)){s.add(n),d.push(n);for(let u of e.get(n)??[])r(u,d);d.pop(),s.delete(n),t.add(n)}}for(let n of e.keys())r(n,[])}function Fe(o,e=!1){if(o.length===0)return[];let t=new Map,s=[];for(let c of o)if(c.class){let g=t.get(c.class);g?g.push(c):t.set(c.class,[c])}else s.push(c);let r=[...t.keys()],n=new Map,d=new Map;for(let c of r)n.set(c,0),d.set(c,[]);for(let c of o)if(c.class)for(let g of c.after){let[y,k]=e?[c.class,g]:[g,c.class],b=d.get(y);b.includes(k)||(b.push(k),n.set(k,n.get(k)+1))}let u=[],m=r.filter(c=>n.get(c)===0);for(;m.length>0;){let c=[],g=[];for(let y of m)c.push(...t.get(y)??[]);u.push(c);for(let y of m)for(let k of d.get(y)??[]){let b=n.get(k)-1;n.set(k,b),b===0&&g.push(k)}m=g}if(s.length>0){let c=s.filter(y=>y.after.length>0),g=s.filter(y=>y.after.length===0);if(c.length>0){let y=-1;for(let b of c)for(let B of b.after){let a=u.findIndex(p=>p.some(l=>l.class===B));a>y&&(y=a)}let k=y+1;k<u.length?u[k].push(...c):u.push(c)}g.length>0&&(u.length>0?u[u.length-1].push(...g):u.push(g))}return u}async function _(o,e=s=>{throw s},t=!1){let s=Fe(o,t);for(let r of s)await Promise.all(r.map(async n=>{try{return typeof n.cb=="function"?await n.cb():await n.cb}catch(d){return e(d instanceof Error?d:new Error(`${d}`))}}))}var T=require("valleyed"),ye=()=>T.v.object({app:T.v.object({name:T.v.string()}),log:T.v.defaults(T.v.object({level:T.v.defaults(T.v.in(["fatal","error","warn","info","debug","trace","silent"]),"info")}),{}),utils:T.v.defaults(T.v.object({hashSaltRounds:T.v.defaults(T.v.number(),10),paginationDefaultLimit:T.v.defaults(T.v.number(),100),maxFileUploadSizeInMb:T.v.defaults(T.v.number(),500)}),{})});var A=class o{static#e;static#t;static#o={};settings;log;constructor(e){o.#t=this,this.settings=Object.freeze(e),this.log=(0,M.default)({level:this.settings.log.level,serializers:{err:M.default.stdSerializers.err,error:M.default.stdSerializers.err,req:M.default.stdSerializers.req,res:M.default.stdSerializers.res},mixin:()=>({instanceId:o.#e})}),o.#s()}alias(e){if(o.#e!==void 0)return o.crash(new R("Instance already has an alias",{}));o.#e=e}get id(){return o.#e===void 0?o.crash(new R("Instance doesnt have an alias yet",{})):o.#e}getScopedName(e,t="."){return[this.settings.app.name,e].join(t)}async start(){try{await _(o.#o.setup??[]),await _(o.#o.start??[])}catch(e){o.crash(new R("Error starting instance",{},e))}}static envs(e){let t=se.v.validate(e,process.env);return t.valid||o.crash(new R(`Environment variables are not valid
2
+ ${t.error.toString()}`,{messages:t.error.messages})),t.value}static create(e){if(o.#t)return o.crash(new R("Instance has been initialized already",{}));let t=se.v.validate(ye(),e);return t.valid||o.crash(new R(`Settings are not valid
3
+ ${t.error.toString()}`,{messages:t.error.messages})),new o(t.value)}static get(){return o.#t?o.#t:o.crash(new R("Has not been initialized. Make sure an instance has been created before you get an instance",{}))}static maybeGet(){return o.#t}static on(e,t,s){o.#o[e]??=[];let r={cb:t,class:s?.class,after:s?.after??[]};he(o.#o[e],r)}static#s(){Object.entries({SIGHUP:1,SIGINT:2,SIGTERM:15}).forEach(([t,s])=>{process.on(t,async()=>{await _(o.#o.close??[],()=>{},!0),process.exit(128+s)})})}static resolveBeforeCrash(e){let t=e();return o.on("close",async()=>await t),t}static crash(e){console.error(e),process.exit(1)}static createId(e){return`${e?.prefix??""}${(0,me.ulid)(e?.time?.getTime())}`}};var I={};te(I,{pipeErrorToValidationError:()=>j,validate:()=>Je,ve:()=>re});O(I,require("valleyed"));var re={};te(re,{incomingFile:()=>$e,incomingFiles:()=>Ve,requestLocalStorage:()=>Q,responseLocalStorage:()=>X,withRequest:()=>Ge,withResponse:()=>Ke});var oe=require("async_hooks"),D=require("valleyed");var ge=o=>D.v.array(D.v.file(o).pipe(e=>{let t=`is larger than allowed limit of ${A.get().settings.utils.maxFileUploadSizeInMb}mb`;if(e?!e.isTruncated:!0)return e;throw D.PipeError.root(t,e)})),$e=o=>D.v.define(D.v.compile(ge(o).pipe(D.v.min(1,"no file provided")).pipe(e=>e[0])),{schema:()=>({type:"string",format:"binary"})}),Ve=o=>D.v.define(D.v.compile(ge(o)),{schema:()=>({type:"string",format:"binary"})}),Q=new oe.AsyncLocalStorage,X=new oe.AsyncLocalStorage,Ge=o=>D.v.define(e=>{let t=Q.getStore();if(!t)throw new Error("Request not found in context");let s=D.v.validate(o(t),e);return s.valid?s.value:s.error}),Ke=o=>D.v.define(e=>{let t=X.getStore();if(!t)throw new Error("Response not found in context");let s=D.v.validate(o(t),e);return s.valid?s.value:s.error});var Re=require("valleyed");function j(o){let e=o.messages.reduce((t,{path:s="",message:r})=>(t[s]?t[s].messages.push(r):t[s]={field:s,messages:[r]},t),{});return new U(Object.values(e))}function Je(o,e){let t=Re.v.validate(o,e);if(t.valid)return t.value;throw j(t.error)}var F=require("@openapi-contrib/json-schema-to-openapi-schema"),ve=require("valleyed");var ke=require("valleyed");var x={head:"head",get:"get",post:"post",put:"put",patch:"patch",delete:"delete",options:"options"},h={Ok:200,Found:302,BadRequest:400,NotAuthenticated:401,NotAuthorized:403,NotFound:404,ValidationError:422,TooManyRequests:429,TokenExpired:461};function ne(o,e){return{cb:o,onSetup:e}}var ae=(...o)=>ne(...o),ze=(...o)=>ne(...o),Ue=(...o)=>ne(...o);function We(...o){let e={params:"",headers:"",query:"",body:"",cookies:"",response:"",responseHeaders:"",responseCookies:"",defaultStatusCode:"",defaultContentType:""};function t(s,r){return s?r?typeof s=="number"||typeof s=="string"||typeof s=="function"?r:ke.v.merge(s,r):s:r}return Object.fromEntries(Object.keys(e).map(s=>[s,o.map(r=>r[s]).reduce(t,null)]))}var we=(o,e)=>e.map(t=>({...o,...t,path:`${o.path}/${t.path}`,groups:[...o.groups??[],...t.groups??[]],middlewares:[...o.middlewares??[],...t.middlewares??[]],responseMiddlewares:[...o.responseMiddlewares??[],...t.responseMiddlewares??[]],schema:We(o.schema??{},t.schema??{}),security:[...o.security??[],...t.security??[]]})),L=class{#e={path:""};#t=[];#o=[];constructor(e={path:""}){this.#e=e}#s(e){return(t,s={})=>r=>{let n=we(this.#e,[{...s,path:t,method:e,handler:r}])[0];return this.#t.push(n),n}}head=this.#s(x.head);get=this.#s(x.get);post=this.#s(x.post);put=this.#s(x.put);patch=this.#s(x.patch);delete=this.#s(x.delete);options=this.#s(x.options);nest(...e){e.forEach(t=>this.#o.push(t))}get routes(){return[...this.#t].concat(this.#o.flatMap(e=>we(this.#e,e.routes)))}};var be=o=>{let e=A.get(),{app:t}=e.settings,s={openapi:"3.0.0",info:{title:`${t.name} ${e.id}`,version:o.openapi.docsVersion??""},servers:o.openapi.docsBaseUrl?.map(a=>({url:a})),paths:{},components:{schemas:{},securitySchemes:{Authorization:{type:"apiKey",name:"authorization",in:"header"},RefreshToken:{type:"apiKey",name:"x-refresh-token",in:"header"},ApiKey:{type:"apiKey",name:"x-api-key",in:"header"}}},tags:[],"x-tagGroups":[]},r={},n={},d=a=>{let{allOf:p,oneOf:l,anyOf:f,...S}=a;return p?p.flatMap(v=>d(v)):[S]},u=a=>{if(!a||typeof a!="object")return a;if(typeof a.$refId=="string"){let{$refId:p,...l}=a,f=u(l);return s.components?.schemas?(s.components.schemas[p]=f,{$ref:`#/components/schemas/${p}`}):f}return Array.isArray(a)?a.map(p=>u(p)):Object.fromEntries(Object.entries(a).map(([p,l])=>[p,u(l)]))},m=a=>{if(!a.length)return;let p=a.map(v=>typeof v=="string"?{name:v}:v),l=p.map(v=>v.name).join(" > "),f=p.at(-1)?.name??"",S=p.map(v=>v.description?.trim()??"").filter(Boolean).join(`
4
4
 
5
5
 
6
6
 
7
- `);if(!r[l]){r[l]=!0,o.tags.push({name:l,"x-displayName":f,description:q});let k=p.slice(0,-1).map(A=>A.name).join(" > ")||"default";if(!n[k]){let A={name:k,tags:[]};o["x-tagGroups"].push(A),n[k]=A}n[k].tags=[...new Set([...n[k].tags,l])]}return l},c=async(a,p,l,f)=>{if(l.response.response?.length){f.responses??={};for(let k of l.response.response){f.responses[k.status]??={description:"",content:{}};let A=f.responses[k.status];A.content[k.contentType]={schema:await(0,F.convert)(u(k.schema))}}}if(l.response.responseHeaders?.length){f.responses??={};for(let k of l.response.responseHeaders){f.responses[k.status]??={description:"",content:{}},f.responses[k.status];let A=f.responses[k.status];A.headers={schema:await(0,F.convert)(u(k.schema))}}}l.request.body&&(f.requestBody={required:!0,content:{"application/json":{schema:await(0,F.convert)(u(l.request.body))}}});let q=[],v=async(k,A)=>{if(!A)return;let Ee=d(A);for(let ee of Ee)if(ee.properties)for(let[he,Be]of Object.entries(ee.properties))q.push({name:he,in:k,schema:await(0,F.convert)(u(Be)),required:(ee.required||[]).includes(he)})};await Promise.all([v("query",l.request.query),v("path",l.request.params),v("header",l.request.headers)]),q.length&&(f.parameters=q),o.paths||(o.paths={}),o.paths[a]||(o.paths[a]={}),o.paths[a][p]=f},R=a=>`
7
+ `);if(!r[l]){r[l]=!0,s.tags.push({name:l,"x-displayName":f,description:S});let w=p.slice(0,-1).map(P=>P.name).join(" > ")||"default";if(!n[w]){let P={name:w,tags:[]};s["x-tagGroups"].push(P),n[w]=P}n[w].tags=[...new Set([...n[w].tags,l])]}return l},c=async(a,p,l,f)=>{if(l.response.response?.length){f.responses??={};for(let w of l.response.response){f.responses[w.status]??={description:"",content:{}};let P=f.responses[w.status];P.content[w.contentType]={schema:await(0,F.convert)(u(w.schema))}}}if(l.response.responseHeaders?.length){f.responses??={};for(let w of l.response.responseHeaders){f.responses[w.status]??={description:"",content:{}},f.responses[w.status];let P=f.responses[w.status];P.headers={schema:await(0,F.convert)(u(w.schema))}}}l.request.body&&(f.requestBody={required:!0,content:{"application/json":{schema:await(0,F.convert)(u(l.request.body))}}});let S=[],v=async(w,P)=>{if(!P)return;let Pe=d(P);for(let ee of Pe)if(ee.properties)for(let[fe,Ee]of Object.entries(ee.properties))S.push({name:fe,in:w,schema:await(0,F.convert)(u(Ee)),required:(ee.required||[]).includes(fe)})};await Promise.all([v("query",l.request.query),v("path",l.request.params),v("header",l.request.headers)]),S.length&&(f.parameters=S),s.paths||(s.paths={}),s.paths[a]||(s.paths[a]={}),s.paths[a][p]=f},g=a=>`
8
8
  <!doctype html>
9
9
  <html>
10
10
  <head>
11
- <title>${(0,be.capitalize)(`${t.name} ${e.id}`)}</title>
11
+ <title>${(0,ve.capitalize)(`${t.name} ${e.id}`)}</title>
12
12
  <meta charset="utf-8" />
13
13
  <meta name="viewport" content="width=device-width, initial-scale=1" />
14
14
  <style>
@@ -26,7 +26,7 @@ ${t.error.toString()}`,{messages:t.error.messages})),new s(t.value)}static get()
26
26
  <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.38.0"></script>
27
27
  </body>
28
28
  </html>
29
- `,m=a=>{let p=a.replace(/(\/\s*)+/g,"/");return p.startsWith("/")||(p=`/${p}`),p!=="/"&&p.endsWith("/")&&(p=p.slice(0,-1)),p},w=async(a,p)=>{if(a.hide)return;let l=y(a.groups??[]),f=m(a.path),q=`(${a.method.toUpperCase()}) ${f}`;await c(f,a.method.toLowerCase(),p,{operationId:q,summary:a.title??f,description:a.descriptions?.join(`
29
+ `,y=a=>{let p=a.replace(/(\/\s*)+/g,"/");return p.startsWith("/")||(p=`/${p}`),p!=="/"&&p.endsWith("/")&&(p=p.slice(0,-1)),p},k=async(a,p)=>{if(a.hide)return;let l=m(a.groups??[]),f=y(a.path),S=`(${a.method.toUpperCase()}) ${f}`;await c(f,a.method.toLowerCase(),p,{operationId:S,summary:a.title??f,description:a.descriptions?.join(`
30
30
 
31
- `),tags:l?[l]:void 0,security:a.security})},b="/openapi.json",B=new L({path:s.openapi.docsPath??"/",hide:!0});return B.get("/index.html")(a=>a.res({body:R(`.${b}`),contentType:"text/html"})),B.get(b)(a=>a.res({body:o})),{router:B,register:w,cleanPath:m}};var Qe=s=>{try{return s?.constructor?.name!=="String"?s:JSON.parse(s)}catch{return s}};function ie(s){return Object.fromEntries(Object.entries(s).map(([e,t])=>[e,Qe(t)]))}var pe=class{ip;method;path;body;params;query;headers;cookies;authUser=null;constructor({ip:e,body:t,cookies:o,params:r,query:n,method:d,path:u,headers:y,files:c}){this.ip=e,this.method=d,this.path=u,this.params=r,this.cookies=o,this.headers=y,this.query=ie(n),this.body=Object.assign(ie(t),c)}pipe(e,t={}){return new H({...t,piped:!0,body:e})}res(e){return new H({...e,piped:!1})}error(e){return new H({...e,piped:!1})}},H=class{body;headers;cookies;status;contentType;piped;constructor({body:e,status:t=200,headers:o={},cookies:r={},piped:n=!1,contentType:d="application/json"}){this.body=e,this.status=t,this.contentType=d,this.headers=o,this.cookies=r,this.piped=n,this.piped||(this.headers["Content-Type"]=d)}get cookieValues(){return Object.fromEntries(Object.entries(this.cookies).map(([e,t])=>[e,t]))}set cookieValues(e){Object.entries(e).forEach(([t,o])=>{this.cookies[t]&&(this.cookies[t].value=o)})}};var Gt=require("http2");var S=class{static async process(e,t){if(e.length===0)return null;let o;for(let r of e)try{return await r.parse(t)}catch(n){o=n}throw o instanceof C?o:new K("failed to parse auth user",o)}};var ce=class extends S{headerName;constructor(e){super(),this.headerName=e}async parse(e){let t=e[this.headerName];if(!t||typeof t!="string")throw new E;return this.verify(t)}routeSecuritySchemeName(){return this.headerName}};var Ce=J(require("@fastify/cookie"),1),Y=J(require("jsonwebtoken"),1);var $=class extends S{options;constructor(e){super(),this.options=e}#e(e){return`${this.options.storagePrefix??""}${e}`}async createToken(e){let t=Y.default.sign(e,this.options.signingKey,{expiresIn:this.options.storageTTL});return await this.store(this.#e(e.id),t,this.options.storageTTL),t}async parse(e){try{let t=await this.parseHeader(e),o=Y.default.verify(t,this.options.signingKey);if(!o)throw new E;if(this.options.enforceSingleSession){let r=await this.retrieve(this.#e(o.id));if(t&&t!==r)throw new N}return o}catch(t){throw t instanceof N?t:t instanceof Y.default.TokenExpiredError?new N(void 0,t):new E(void 0,t)}}async retrieveFor(e){return this.retrieve(this.#e(e))}async deleteFor(e){await this.delete(this.#e(e))}},de=class extends ${options;constructor(e){super(e),this.options=e}async parseHeader(e){let t=e[this.options.headerName];if(!t||typeof t!="string")throw new E;return t.startsWith("Bearer ")?t.slice(7):t}routeSecuritySchemeName(){return this.options.headerName}},ue=class extends ${options;constructor(e){super(e),this.options=e}async parseHeader(e){let o=(Ce.default.parse(e.cookie||"")??{})[this.options.cookieName];if(!o||typeof o!="string")throw new E;return o}routeSecuritySchemeName(){return`cookie:${this.options.cookieName}`}};var He=require("path-to-regexp");var Xe="__listener_emitter",Te="*",Z=class{constructor(e,t){this.config=t;this.socketInstance=e,this.#r(),P.on("setup",()=>{let o=t.eventBus?.stream(Xe,{fanout:!0});this.#o=o?o.publish:async r=>{e.to(r.channel).emit(r.channel,r)},o?.subscribe(async r=>{e.to(r.channel).emit(r.channel,r)})})}socketInstance;#e={onConnect:async()=>{},onDisconnect:async()=>{}};#t={};#o=async()=>{};async created(e,t,o){await this.#s(e,"created",{after:t.toJSON(),before:null},o)}async updated(e,{after:t,before:o},r){await this.#s(e,"updated",{after:t.toJSON(),before:o.toJSON()},r)}async deleted(e,t,o){await this.#s(e,"deleted",{before:t.toJSON(),after:null},o)}async#s(e,t,{before:o,after:r},n){let d=Array.isArray(n)?n:[n??Te],u=e.flatMap(y=>d.map(c=>`${c}:${y}`));await Promise.all(u.map(async y=>this.#o({channel:y,type:t,before:o,after:r})))}set connectionCallbacks(e){this.#e=e,this.#r()}register(e,t){return this.#t[e]=t,this.#t[e+"/:id"]=t,this}#n(e){let t=n=>(0,He.match)(n)(e),o=Object.keys(this.#t).find(t)??null;if(!o)return null;let r=t(o);return r?{config:this.#t[o],params:r.params}:null}#r=()=>{this.socketInstance.removeAllListeners("connection"),this.socketInstance.on("connection",async e=>{let t=e.id,o=await S.process(this.config.socketsAuthMethods,e.handshake.headers).catch(()=>null);e.on("leave",async(r,n)=>r.channel?(e.leave(r.channel),typeof n=="function"&&n({code:h.Ok,message:"",channel:r.channel})):typeof n=="function"&&n({code:h.ValidationError,message:"channel is required",channel:""})),e.on("join",async(r,n)=>{if(!r.channel)return typeof n=="function"&&n({code:h.ValidationError,message:"channel is required",channel:""});let d=r.channel,u=this.#n(d)??null;if(!u)return typeof n=="function"&&n({code:h.BadRequest,message:"unknown channel",channel:d});let c=`${await u.config({channel:d,user:o},u.params,r.query??{})??Te}:${d}`;return e.join(c),typeof n=="function"&&n({code:h.Ok,message:"",channel:c})}),o&&await this.#e.onConnect(o.id,t),e.on("disconnect",async()=>{o&&await this.#e.onDisconnect(o.id,t)})})}};var Ye=()=>i.v.object({port:i.v.number(),cors:i.v.optional(i.v.object({origin:i.v.optional(i.v.or([i.v.array(i.v.string()),i.v.is(!0)])),methods:i.v.optional(i.v.array(i.v.in(Object.values(x)))),credentials:i.v.optional(i.v.boolean())})),eventBus:i.v.optional(i.v.instanceOf(W)),publicPath:i.v.optional(i.v.string()),healthPath:i.v.optional(i.v.string()),openapi:i.v.defaults(i.v.object({docsVersion:i.v.defaults(i.v.string(),"1.0.0"),docsBaseUrl:i.v.defaults(i.v.array(i.v.string()),["/"]),docsPath:i.v.defaults(i.v.string(),"/__docs")}),{}),requests:i.v.defaults(i.v.object({log:i.v.defaults(i.v.boolean(),!0),rateLimit:i.v.defaults(i.v.object({enabled:i.v.defaults(i.v.boolean(),!1),periodInMs:i.v.defaults(i.v.number(),3600*1e3),limit:i.v.defaults(i.v.number(),5e3)}),{}),slowdown:i.v.defaults(i.v.object({enabled:i.v.defaults(i.v.boolean(),!1),periodInMs:i.v.defaults(i.v.number(),600*1e3),delayAfter:i.v.defaults(i.v.number(),2e3),delayInMs:i.v.defaults(i.v.number(),500)}),{})}),{}),socketsAuthMethods:i.v.defaults(i.v.array(i.v.instanceOf(S)),[])}),Ae=Symbol("rawResponseHandled"),De=Object.freeze({[Ae]:!0}),Ze="Raw not-found handler did not start or complete a response";function et(s){return!!(s&&typeof s=="object"&&Ae in s)}function le(s){return s.headersSent||s.writableEnded}function Se(s,e){if(le(s))return;s.statusCode=h.BadRequest,s.setHeader("Content-Type","application/json");let t=e instanceof Error?e.message:`${e}`;s.end(JSON.stringify([{message:t}]))}var tt=Object.entries(h).filter(([,s])=>s>399).map(([s,e])=>({status:e,contentType:"application/json",pipe:i.v.meta(i.v.array(i.v.object({message:i.v.string(),field:i.v.optional(i.v.string())})),{$refId:`Errors.${s}Response`,description:`${s} Response`})})),fe=class{socket;cors;#e;#t;#o;#s=[];#n=new Set;#r=!1;#i=[];#a=null;setup(e,t){this.#e=e,this.#o=t,this.cors={origin:t.cors?.origin?(r,n)=>n(null,!0):t.cors?.origin,methods:(t.cors?.methods??Object.values(x)).filter(r=>r!==x.options).map(r=>r.toUpperCase()),credentials:t.cors?.credentials},this.#t=xe(t);let o=new qe.Server(e,{cors:this.cors});this.socket=new Z(o,t),this.addRouter(this.#t.router)}addRouter(...e){e.map(t=>t.routes).forEach(t=>this.addRoute(...t))}addRoute(...e){e.forEach(t=>{this.#s.push(async()=>{let{method:o,path:r,schema:n={},onError:d,middlewares:u=[],responseMiddlewares:y=[]}=t,c=`(${o.toUpperCase()}) ${this.#t.cleanPath(r)}`;if(this.#n.has(c))throw new g(`Route key ${c} already registered. All route keys must be unique`,{route:t,key:c});u.forEach(b=>b.onSetup?.(t)),d?.onSetup?.(t),y.forEach(b=>b.onSetup?.(t));let{validateRequest:R,validateResponse:m,jsonSchema:w}=this.#c(o,n);this.#n.add(c),await this.#t.register(t,w),this.registerRoute(o,this.#t.cleanPath(r),async(b,B)=>{let a=await R(await this.parseRequest(b));try{for(let f of u)await f.cb(a);let p=await t.handler(a),l=p instanceof H?p:new H({body:p,status:h.Ok,headers:{},piped:!1});for(let f of y)await f.cb(a,l);return await this.handleResponse(B,await m(l))}catch(p){if(d?.cb){let l=await d.cb(a,p),f=l instanceof H?l:new H({body:l,status:h.BadRequest,headers:{}});return await this.handleResponse(B,await m(f))}throw p}})})})}setNotFoundHandler(e){if(this.#r)throw new g("Cannot set not-found handler after server has started",{});return this.#a=e,this}onBeforeListen(e){if(this.#r)throw new g("Cannot add before-listen handler after server has started",{});return this.#i.push(e),this}test(){return(0,Pe.default)(this.#e)}async start(){this.#r=!0;let e=this.#o,t=P.get(),{app:o}=t.settings;e.healthPath&&this.addRoute({method:x.get,path:e.healthPath,handler:async n=>n.res({body:`${t.id}(${o.name}) service running`,contentType:"text/plain"})}),await Promise.all(this.#s.map(n=>n())),this.registerNotFoundHandler(async(n,d)=>await this.#p(n,d)),this.registerErrorHandler(async(n,d,u)=>{n instanceof g||P.get().log.error({error:n},"Uncaught error in route handler");let y=n instanceof C?new H({body:n.serializedErrors,status:n.statusCode}):n instanceof g?new H({body:[{message:n.message}],status:h.BadRequest}):new H({body:[{message:"Something went wrong",data:n.message}],status:h.BadRequest});return await this.handleResponse(u,y)});for(let n of this.#i)await n({httpServer:this.#e,port:e.port});let r=await this.startServer(e.port);return r&&P.get().log.info(`${t.id}(${o.name}) service listening on port ${e.port}`),r}createNodeRawResponder(e){return async t=>{e.beforeHandle?.();try{await t(e.request,e.response)}catch(o){if(!le(e.response))return Se(e.response,o),De;throw o}return le(e.response)||Se(e.response,new g(Ze,{})),De}}async#p(e,t){let o=await this.parseRequest(e);if(!this.#a)throw new U(`Route ${o.path} not found`);let r=await this.#a({request:o,respondWithRaw:this.createRawResponder(e,t)});if(!et(r)){if(r instanceof H)return await this.handleResponse(t,r);throw new g("Not-found handler must return a Response or respondWithRaw(...)",{})}}#c(e,t){let o=t?.defaultStatusCode??h.Ok,r=t?.defaultContentType??"application/json",n=o,d=r,u={response:{},request:{}},y={},c={};[{key:"params",type:"request"},{key:"headers",type:"request"},{key:"cookies",type:"request"},{key:"query",type:"request"},{key:"body",type:"request",skip:![x.post,x.put,x.patch].includes(e)},{key:"response",type:"response"},{key:"responseHeaders",type:"response"},{key:"responseCookies",type:"response"}].forEach(a=>{let p=t[a.key]??i.v.any();if(!a.skip&&(a.type==="request"&&(y[a.key]=p,u.request[a.key]=i.v.schema(p)),a.type==="response")){let l=tt.concat({status:o,contentType:d,pipe:p});c[a.key]=i.v.any().pipe(f=>{let q=l.find(k=>k.status===n)?.pipe;if(!q)throw i.PipeError.root(`schema not defined for status code: ${n}`,f);let v=i.v.validate(q,f);if(!v.valid)throw v.error;return v.value}),u.response[a.key]=l.map(f=>({status:f.status,contentType:f.contentType,schema:i.v.schema(f.pipe)}))}});let m=i.v.object(y);i.v.compile(m,{allErrors:!0});let w=i.v.object(c);return i.v.compile(w,{allErrors:!0}),{jsonSchema:u,validateRequest:async a=>{if(!Object.keys(y))return a;let p=Q.run(a,()=>i.v.validate(m,{params:a.params,headers:a.headers,query:a.query,body:a.body,cookies:a.cookies}));if(!p.valid)throw j(p.error);return a.params=p.value.params,a.headers=p.value.headers,a.query=p.value.query,a.body=p.value.body,a.cookies=p.value.cookies,a},validateResponse:async a=>{if(!Object.keys(c))return a;n=a.status,d=a.contentType;let p=X.run(a,()=>i.v.validate(w,{responseHeaders:a.headers,responseCookies:Object.fromEntries(Object.entries(a.cookies).map(([l,f])=>[l,f.value])),response:a.body}));if(!p.valid)throw j(p.error);return a.body=p.value.response,a.headers=p.value.responseHeaders,a.cookieValues=p.value.responseCookies,a}}}};var st=s=>ae(async e=>{if(e.authUser=await S.process(s,e.headers),!e.authUser)throw new E},e=>{e.security??=[];for(let t of s){let o=t.routeSecuritySchemeName();o&&e.security.push({[o]:[]})}e.descriptions??=[],e.descriptions.push("Requires a valid means of authentication.")});0&&(module.exports={BaseApiKeyRequestAuthMethod,BaseJwtCookieRequestAuthMethod,BaseJwtHeaderRequestAuthMethod,BaseJwtRequestAuthMethod,BaseRequestAuthMethod,Methods,Request,Response,Router,Server,StatusCodes,makeErrorMiddleware,makeMiddleware,makeResponseMiddleware,requireAuthUser,serverConfigPipe});
31
+ `),tags:l?[l]:void 0,security:a.security})},b="/openapi.json",B=new L({path:o.openapi.docsPath??"/",hide:!0});return B.get("/index.html")(a=>a.res({body:g(`.${b}`),contentType:"text/html"})),B.get(b)(a=>a.res({body:s})),{router:B,register:k,cleanPath:y}};var ie=class{ip;method;path;body;params;query;headers;cookies;authUser=null;constructor({ip:e,body:t,cookies:s,params:r,query:n,method:d,path:u,headers:m,files:c}){this.ip=e,this.method=d,this.path=u,this.params=r,this.cookies=s,this.headers=m;let g=Object.keys(c).length>0,y=t&&typeof t=="object"&&!Array.isArray(t)?t:{};this.query=n,this.body=g?Object.assign({},y,c):t}pipe(e,t={}){return new H({...t,piped:!0,body:e})}res(e){return new H({...e,piped:!1})}error(e){return new H({...e,piped:!1})}},H=class{body;headers;cookies;status;contentType;piped;constructor({body:e,status:t=200,headers:s={},cookies:r={},piped:n=!1,contentType:d="application/json"}){this.body=e,this.status=t,this.contentType=d,this.headers=s,this.cookies=r,this.piped=n,this.piped||(this.headers["Content-Type"]=d)}get cookieValues(){return Object.fromEntries(Object.entries(this.cookies).map(([e,t])=>[e,t]))}set cookieValues(e){Object.entries(e).forEach(([t,s])=>{this.cookies[t]&&(this.cookies[t].value=s)})}};var Lt=require("http2");var q=class{static async process(e,t){if(e.length===0)return null;let s;for(let r of e)try{return await r.parse(t)}catch(n){s=n}throw s instanceof C?s:new J("failed to parse auth user",s)}};var pe=class extends q{headerName;constructor(e){super(),this.headerName=e}async parse(e){let t=e[this.headerName];if(!t||typeof t!="string")throw new E;return this.verify(t)}routeSecuritySchemeName(){return this.headerName}};var xe=K(require("@fastify/cookie"),1),Y=K(require("jsonwebtoken"),1);var $=class extends q{options;constructor(e){super(),this.options=e}#e(e){return`${this.options.storagePrefix??""}${e}`}async createToken(e){let t=Y.default.sign(e,this.options.signingKey,{expiresIn:this.options.storageTTL});return await this.store(this.#e(e.id),t,this.options.storageTTL),t}async parse(e){try{let t=await this.parseHeader(e),s=Y.default.verify(t,this.options.signingKey);if(!s)throw new E;if(this.options.enforceSingleSession){let r=await this.retrieve(this.#e(s.id));if(t&&t!==r)throw new N}return s}catch(t){throw t instanceof N?t:t instanceof Y.default.TokenExpiredError?new N(void 0,t):new E(void 0,t)}}async retrieveFor(e){return this.retrieve(this.#e(e))}async deleteFor(e){await this.delete(this.#e(e))}},ce=class extends ${options;constructor(e){super(e),this.options=e}async parseHeader(e){let t=e[this.options.headerName];if(!t||typeof t!="string")throw new E;return t.startsWith("Bearer ")?t.slice(7):t}routeSecuritySchemeName(){return this.options.headerName}},de=class extends ${options;constructor(e){super(e),this.options=e}async parseHeader(e){let s=(xe.default.parse(e.cookie||"")??{})[this.options.cookieName];if(!s||typeof s!="string")throw new E;return s}routeSecuritySchemeName(){return`cookie:${this.options.cookieName}`}};var Te=require("path-to-regexp");var _e="__listener_emitter",Ce="*",Z=class{constructor(e,t){this.config=t;this.socketInstance=e,this.#r(),A.on("setup",()=>{let s=t.eventBus?.stream(_e,{fanout:!0});this.#o=s?s.publish:async r=>{e.to(r.channel).emit(r.channel,r)},s?.subscribe(async r=>{e.to(r.channel).emit(r.channel,r)})})}socketInstance;#e={onConnect:async()=>{},onDisconnect:async()=>{}};#t={};#o=async()=>{};async created(e,t,s){await this.#s(e,"created",{after:t.toJSON(),before:null},s)}async updated(e,{after:t,before:s},r){await this.#s(e,"updated",{after:t.toJSON(),before:s.toJSON()},r)}async deleted(e,t,s){await this.#s(e,"deleted",{before:t.toJSON(),after:null},s)}async#s(e,t,{before:s,after:r},n){let d=Array.isArray(n)?n:[n??Ce],u=e.flatMap(m=>d.map(c=>`${c}:${m}`));await Promise.all(u.map(async m=>this.#o({channel:m,type:t,before:s,after:r})))}set connectionCallbacks(e){this.#e=e,this.#r()}register(e,t){return this.#t[e]=t,this.#t[e+"/:id"]=t,this}#n(e){let t=n=>(0,Te.match)(n)(e),s=Object.keys(this.#t).find(t)??null;if(!s)return null;let r=t(s);return r?{config:this.#t[s],params:r.params}:null}#r=()=>{this.socketInstance.removeAllListeners("connection"),this.socketInstance.on("connection",async e=>{let t=e.id,s=await q.process(this.config.socketsAuthMethods,e.handshake.headers).catch(()=>null);e.on("leave",async(r,n)=>r.channel?(e.leave(r.channel),typeof n=="function"&&n({code:h.Ok,message:"",channel:r.channel})):typeof n=="function"&&n({code:h.ValidationError,message:"channel is required",channel:""})),e.on("join",async(r,n)=>{if(!r.channel)return typeof n=="function"&&n({code:h.ValidationError,message:"channel is required",channel:""});let d=r.channel,u=this.#n(d)??null;if(!u)return typeof n=="function"&&n({code:h.BadRequest,message:"unknown channel",channel:d});let c=`${await u.config({channel:d,user:s},u.params,r.query??{})??Ce}:${d}`;return e.join(c),typeof n=="function"&&n({code:h.Ok,message:"",channel:c})}),s&&await this.#e.onConnect(s.id,t),e.on("disconnect",async()=>{s&&await this.#e.onDisconnect(s.id,t)})})}};var Qe=()=>i.v.object({port:i.v.number(),cors:i.v.optional(i.v.object({origin:i.v.optional(i.v.or([i.v.array(i.v.string()),i.v.is(!0)])),methods:i.v.optional(i.v.array(i.v.in(Object.values(x)))),credentials:i.v.optional(i.v.boolean())})),eventBus:i.v.optional(i.v.instanceOf(W)),publicPath:i.v.optional(i.v.string()),healthPath:i.v.optional(i.v.string()),openapi:i.v.defaults(i.v.object({docsVersion:i.v.defaults(i.v.string(),"1.0.0"),docsBaseUrl:i.v.defaults(i.v.array(i.v.string()),["/"]),docsPath:i.v.defaults(i.v.string(),"/__docs")}),{}),requests:i.v.defaults(i.v.object({log:i.v.defaults(i.v.boolean(),!0),rateLimit:i.v.defaults(i.v.object({enabled:i.v.defaults(i.v.boolean(),!1),periodInMs:i.v.defaults(i.v.number(),3600*1e3),limit:i.v.defaults(i.v.number(),5e3)}),{}),slowdown:i.v.defaults(i.v.object({enabled:i.v.defaults(i.v.boolean(),!1),periodInMs:i.v.defaults(i.v.number(),600*1e3),delayAfter:i.v.defaults(i.v.number(),2e3),delayInMs:i.v.defaults(i.v.number(),500)}),{})}),{}),socketsAuthMethods:i.v.defaults(i.v.array(i.v.instanceOf(q)),[])}),Ae=Symbol("rawResponseHandled"),He=Object.freeze({[Ae]:!0}),Xe="Raw not-found handler did not start or complete a response";function Ye(o){return!!(o&&typeof o=="object"&&Ae in o)}function ue(o){return o.headersSent||o.writableEnded}function De(o,e){if(ue(o))return;o.statusCode=h.BadRequest,o.setHeader("Content-Type","application/json");let t=e instanceof Error?e.message:`${e}`;o.end(JSON.stringify([{message:t}]))}var Ze=Object.entries(h).filter(([,o])=>o>399).map(([o,e])=>({status:e,contentType:"application/json",pipe:i.v.meta(i.v.array(i.v.object({message:i.v.string(),field:i.v.optional(i.v.string())})),{$refId:`Errors.${o}Response`,description:`${o} Response`})})),le=class{socket;cors;#e;#t;#o;#s=[];#n=new Set;#r=!1;#i=[];#a=null;setup(e,t){this.#e=e,this.#o=t,this.cors={origin:t.cors?.origin?(r,n)=>n(null,!0):t.cors?.origin,methods:(t.cors?.methods??Object.values(x)).filter(r=>r!==x.options).map(r=>r.toUpperCase()),credentials:t.cors?.credentials},this.#t=be(t);let s=new qe.Server(e,{cors:this.cors});this.socket=new Z(s,t),this.addRouter(this.#t.router)}addRouter(...e){e.map(t=>t.routes).forEach(t=>this.addRoute(...t))}addRoute(...e){e.forEach(t=>{this.#s.push(async()=>{let{method:s,path:r,schema:n={},onError:d,middlewares:u=[],responseMiddlewares:m=[]}=t,c=`(${s.toUpperCase()}) ${this.#t.cleanPath(r)}`;if(this.#n.has(c))throw new R(`Route key ${c} already registered. All route keys must be unique`,{route:t,key:c});u.forEach(b=>b.onSetup?.(t)),d?.onSetup?.(t),m.forEach(b=>b.onSetup?.(t));let{validateRequest:g,validateResponse:y,jsonSchema:k}=this.#c(s,n);this.#n.add(c),await this.#t.register(t,k),this.registerRoute(s,this.#t.cleanPath(r),async(b,B)=>{let a=await g(await this.parseRequest(b));try{for(let f of u)await f.cb(a);let p=await t.handler(a),l=p instanceof H?p:new H({body:p,status:h.Ok,headers:{},piped:!1});for(let f of m)await f.cb(a,l);return await this.handleResponse(B,await y(l))}catch(p){if(d?.cb){let l=await d.cb(a,p),f=l instanceof H?l:new H({body:l,status:h.BadRequest,headers:{}});return await this.handleResponse(B,await y(f))}throw p}})})})}setNotFoundHandler(e){if(this.#r)throw new R("Cannot set not-found handler after server has started",{});return this.#a=e,this}onBeforeListen(e){if(this.#r)throw new R("Cannot add before-listen handler after server has started",{});return this.#i.push(e),this}test(){return(0,Se.default)(this.#e)}async start(){this.#r=!0;let e=this.#o,t=A.get(),{app:s}=t.settings;e.healthPath&&this.addRoute({method:x.get,path:e.healthPath,handler:async n=>n.res({body:`${t.id}(${s.name}) service running`,contentType:"text/plain"})}),await Promise.all(this.#s.map(n=>n())),this.registerNotFoundHandler(async(n,d)=>await this.#p(n,d)),this.registerErrorHandler(async(n,d,u)=>{n instanceof R||A.get().log.error({error:n},"Uncaught error in route handler");let m=n instanceof C?new H({body:n.serializedErrors,status:n.statusCode}):n instanceof R?new H({body:[{message:n.message}],status:h.BadRequest}):new H({body:[{message:"Something went wrong",data:n.message}],status:h.BadRequest});return await this.handleResponse(u,m)});for(let n of this.#i)await n({httpServer:this.#e,port:e.port});let r=await this.startServer(e.port);return r&&A.get().log.info(`${t.id}(${s.name}) service listening on port ${e.port}`),r}createNodeRawResponder(e){return async t=>{e.beforeHandle?.();try{await t(e.request,e.response)}catch(s){if(!ue(e.response))return De(e.response,s),He;throw s}return ue(e.response)||De(e.response,new R(Xe,{})),He}}async#p(e,t){let s=await this.parseRequest(e);if(!this.#a)throw new z(`Route ${s.path} not found`);let r=await this.#a({request:s,respondWithRaw:this.createRawResponder(e,t)});if(!Ye(r)){if(r instanceof H)return await this.handleResponse(t,r);throw new R("Not-found handler must return a Response or respondWithRaw(...)",{})}}#c(e,t){let s=t?.defaultStatusCode??h.Ok,r=t?.defaultContentType??"application/json",n=s,d=r,u={response:{},request:{}},m={},c={};[{key:"params",type:"request"},{key:"headers",type:"request"},{key:"cookies",type:"request"},{key:"query",type:"request"},{key:"body",type:"request",skip:![x.post,x.put,x.patch].includes(e)},{key:"response",type:"response"},{key:"responseHeaders",type:"response"},{key:"responseCookies",type:"response"}].forEach(a=>{let p=t[a.key]??i.v.any();if(!a.skip&&(a.type==="request"&&(m[a.key]=p,u.request[a.key]=i.v.schema(p)),a.type==="response")){let l=Ze.concat({status:s,contentType:d,pipe:p});c[a.key]=i.v.any().pipe(f=>{let S=l.find(w=>w.status===n)?.pipe;if(!S)throw i.PipeError.root(`schema not defined for status code: ${n}`,f);let v=i.v.validate(S,f);if(!v.valid)throw v.error;return v.value}),u.response[a.key]=l.map(f=>({status:f.status,contentType:f.contentType,schema:i.v.schema(f.pipe)}))}});let y=i.v.object(m);i.v.compile(y,{allErrors:!0});let k=i.v.object(c);return i.v.compile(k,{allErrors:!0}),{jsonSchema:u,validateRequest:async a=>{if(!Object.keys(m))return a;let p=Q.run(a,()=>i.v.validate(y,{params:a.params,headers:a.headers,query:a.query,body:a.body,cookies:a.cookies}));if(!p.valid)throw j(p.error);return a.params=p.value.params,a.headers=p.value.headers,a.query=p.value.query,a.body=p.value.body,a.cookies=p.value.cookies,a},validateResponse:async a=>{if(!Object.keys(c))return a;n=a.status,d=a.contentType;let p=X.run(a,()=>i.v.validate(k,{responseHeaders:a.headers,responseCookies:Object.fromEntries(Object.entries(a.cookies).map(([l,f])=>[l,f.value])),response:a.body}));if(!p.valid)throw j(p.error);return a.body=p.value.response,a.headers=p.value.responseHeaders,a.cookieValues=p.value.responseCookies,a}}}};var et=o=>ae(async e=>{if(e.authUser=await q.process(o,e.headers),!e.authUser)throw new E},e=>{e.security??=[];for(let t of o){let s=t.routeSecuritySchemeName();s&&e.security.push({[s]:[]})}e.descriptions??=[],e.descriptions.push("Requires a valid means of authentication.")});0&&(module.exports={BaseApiKeyRequestAuthMethod,BaseJwtCookieRequestAuthMethod,BaseJwtHeaderRequestAuthMethod,BaseJwtRequestAuthMethod,BaseRequestAuthMethod,Methods,Request,Response,Router,Server,StatusCodes,makeErrorMiddleware,makeMiddleware,makeResponseMiddleware,requireAuthUser,serverConfigPipe});
32
32
  //# sourceMappingURL=index.min.cjs.map