@geekmidas/constructs 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{AWSLambdaFunction-BVpc9xFN.cjs → AWSLambdaFunction-CPEAl5nZ.cjs} +2 -2
  3. package/dist/{AWSLambdaFunction-BVpc9xFN.cjs.map → AWSLambdaFunction-CPEAl5nZ.cjs.map} +1 -1
  4. package/dist/{AWSLambdaFunction-OPazEPhQ.mjs → AWSLambdaFunction-DJiCAPAf.mjs} +2 -2
  5. package/dist/{AWSLambdaFunction-OPazEPhQ.mjs.map → AWSLambdaFunction-DJiCAPAf.mjs.map} +1 -1
  6. package/dist/{AWSLambdaSubscriberAdaptor-YxZ_z3XG.mjs → AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs} +1 -1
  7. package/dist/{AWSLambdaSubscriberAdaptor-YxZ_z3XG.mjs.map → AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs.map} +1 -1
  8. package/dist/{AWSLambdaSubscriberAdaptor-BL7Yl1XE.cjs → AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs} +1 -1
  9. package/dist/{AWSLambdaSubscriberAdaptor-BL7Yl1XE.cjs.map → AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs.map} +1 -1
  10. package/dist/{AmazonApiGatewayEndpointAdaptor-CQSZArI6.d.mts → AmazonApiGatewayEndpointAdaptor-B30TqZRX.d.mts} +2 -1
  11. package/dist/AmazonApiGatewayEndpointAdaptor-B30TqZRX.d.mts.map +1 -0
  12. package/dist/{AmazonApiGatewayEndpointAdaptor-Bxvs-F0F.d.cts → AmazonApiGatewayEndpointAdaptor-D4lAuXA-.d.cts} +2 -1
  13. package/dist/AmazonApiGatewayEndpointAdaptor-D4lAuXA-.d.cts.map +1 -0
  14. package/dist/{AmazonApiGatewayEndpointAdaptor-BPxHm8Tg.mjs → AmazonApiGatewayEndpointAdaptor-ciUHVvPX.mjs} +6 -2
  15. package/dist/AmazonApiGatewayEndpointAdaptor-ciUHVvPX.mjs.map +1 -0
  16. package/dist/{AmazonApiGatewayEndpointAdaptor-1XyivLJs.cjs → AmazonApiGatewayEndpointAdaptor-jDYqkgFE.cjs} +6 -2
  17. package/dist/AmazonApiGatewayEndpointAdaptor-jDYqkgFE.cjs.map +1 -0
  18. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D9zY3nHe.d.cts → AmazonApiGatewayV1EndpointAdaptor-B5xFYauV.d.cts} +2 -2
  19. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D9zY3nHe.d.cts.map → AmazonApiGatewayV1EndpointAdaptor-B5xFYauV.d.cts.map} +1 -1
  20. package/dist/{AmazonApiGatewayV1EndpointAdaptor-xTrFYt48.d.mts → AmazonApiGatewayV1EndpointAdaptor-CG1UJoAK.d.mts} +2 -2
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-xTrFYt48.d.mts.map → AmazonApiGatewayV1EndpointAdaptor-CG1UJoAK.d.mts.map} +1 -1
  22. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CQ0dtx1M.mjs → AmazonApiGatewayV1EndpointAdaptor-DCfEo-Tu.mjs} +3 -3
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CQ0dtx1M.mjs.map → AmazonApiGatewayV1EndpointAdaptor-DCfEo-Tu.mjs.map} +1 -1
  24. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Cm2wieNy.cjs → AmazonApiGatewayV1EndpointAdaptor-DwKlAfnb.cjs} +3 -3
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Cm2wieNy.cjs.map → AmazonApiGatewayV1EndpointAdaptor-DwKlAfnb.cjs.map} +1 -1
  26. package/dist/{AmazonApiGatewayV2EndpointAdaptor-CjPCxIb1.cjs → AmazonApiGatewayV2EndpointAdaptor-B126fL6i.cjs} +9 -8
  27. package/dist/AmazonApiGatewayV2EndpointAdaptor-B126fL6i.cjs.map +1 -0
  28. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DrbEaZ2_.mjs → AmazonApiGatewayV2EndpointAdaptor-CGMF4lD4.mjs} +8 -8
  29. package/dist/AmazonApiGatewayV2EndpointAdaptor-CGMF4lD4.mjs.map +1 -0
  30. package/dist/{AmazonApiGatewayV2EndpointAdaptor-CHi3Qe1s.d.cts → AmazonApiGatewayV2EndpointAdaptor-OkwjABOz.d.cts} +4 -3
  31. package/dist/AmazonApiGatewayV2EndpointAdaptor-OkwjABOz.d.cts.map +1 -0
  32. package/dist/{AmazonApiGatewayV2EndpointAdaptor-BBayh2_k.d.mts → AmazonApiGatewayV2EndpointAdaptor-ofjuxcPV.d.mts} +4 -3
  33. package/dist/AmazonApiGatewayV2EndpointAdaptor-ofjuxcPV.d.mts.map +1 -0
  34. package/dist/{Authorizer-Dx57psuM.cjs → Authorizer-BXxBee2P.cjs} +1 -1
  35. package/dist/{Authorizer-Dx57psuM.cjs.map → Authorizer-BXxBee2P.cjs.map} +1 -1
  36. package/dist/{Authorizer-4unKN3Xn.mjs → Authorizer-BgjU8-z6.mjs} +1 -1
  37. package/dist/{Authorizer-4unKN3Xn.mjs.map → Authorizer-BgjU8-z6.mjs.map} +1 -1
  38. package/dist/{Cron-B3vrGuaD.mjs → Cron-BUpUS-0f.mjs} +1 -1
  39. package/dist/{Cron-B3vrGuaD.mjs.map → Cron-BUpUS-0f.mjs.map} +1 -1
  40. package/dist/{Cron-DEKZg5j4.cjs → Cron-Bp08dJ4R.cjs} +1 -1
  41. package/dist/{Cron-DEKZg5j4.cjs.map → Cron-Bp08dJ4R.cjs.map} +1 -1
  42. package/dist/{CronBuilder-BHpY6w3b.cjs → CronBuilder-CIxJQ1Ps.cjs} +2 -2
  43. package/dist/{CronBuilder-BHpY6w3b.cjs.map → CronBuilder-CIxJQ1Ps.cjs.map} +1 -1
  44. package/dist/{CronBuilder-VXpyNfp2.mjs → CronBuilder-DUggbCHc.mjs} +2 -2
  45. package/dist/{CronBuilder-VXpyNfp2.mjs.map → CronBuilder-DUggbCHc.mjs.map} +1 -1
  46. package/dist/{EndpointBuilder-D1RtrBu1.mjs → EndpointBuilder-CF-ZWtdu.mjs} +3 -3
  47. package/dist/{EndpointBuilder-D1RtrBu1.mjs.map → EndpointBuilder-CF-ZWtdu.mjs.map} +1 -1
  48. package/dist/{EndpointBuilder-fXmTxRyW.cjs → EndpointBuilder-CyszO0bs.cjs} +3 -3
  49. package/dist/{EndpointBuilder-fXmTxRyW.cjs.map → EndpointBuilder-CyszO0bs.cjs.map} +1 -1
  50. package/dist/{EndpointFactory-DBfTbSTX.cjs → EndpointFactory-B0D6d6t9.cjs} +3 -3
  51. package/dist/{EndpointFactory-DBfTbSTX.cjs.map → EndpointFactory-B0D6d6t9.cjs.map} +1 -1
  52. package/dist/{EndpointFactory-DkB8yxdQ.mjs → EndpointFactory-Do498RmG.mjs} +3 -3
  53. package/dist/{EndpointFactory-DkB8yxdQ.mjs.map → EndpointFactory-Do498RmG.mjs.map} +1 -1
  54. package/dist/{FunctionExecutionWrapper-Ba0Z-iwe.mjs → FunctionExecutionWrapper-B0ZAssiy.mjs} +1 -1
  55. package/dist/{FunctionExecutionWrapper-Ba0Z-iwe.mjs.map → FunctionExecutionWrapper-B0ZAssiy.mjs.map} +1 -1
  56. package/dist/{FunctionExecutionWrapper-7B-CufYj.cjs → FunctionExecutionWrapper-KKHP6fDY.cjs} +1 -1
  57. package/dist/{FunctionExecutionWrapper-7B-CufYj.cjs.map → FunctionExecutionWrapper-KKHP6fDY.cjs.map} +1 -1
  58. package/dist/{HonoEndpointAdaptor-BCql3gLP.d.cts → HonoEndpointAdaptor-BNHGwpvZ.d.cts} +3 -3
  59. package/dist/{HonoEndpointAdaptor-BCql3gLP.d.cts.map → HonoEndpointAdaptor-BNHGwpvZ.d.cts.map} +1 -1
  60. package/dist/{HonoEndpointAdaptor-CNlb-KGz.mjs → HonoEndpointAdaptor-BvxQreVM.mjs} +5 -5
  61. package/dist/{HonoEndpointAdaptor-CNlb-KGz.mjs.map → HonoEndpointAdaptor-BvxQreVM.mjs.map} +1 -1
  62. package/dist/{HonoEndpointAdaptor-B4NMwHkr.cjs → HonoEndpointAdaptor-CQqQPLHH.cjs} +5 -5
  63. package/dist/{HonoEndpointAdaptor-B4NMwHkr.cjs.map → HonoEndpointAdaptor-CQqQPLHH.cjs.map} +1 -1
  64. package/dist/{HonoEndpointAdaptor-C3AdQ0xS.d.mts → HonoEndpointAdaptor-DgoeqUX6.d.mts} +3 -3
  65. package/dist/{HonoEndpointAdaptor-C3AdQ0xS.d.mts.map → HonoEndpointAdaptor-DgoeqUX6.d.mts.map} +1 -1
  66. package/dist/{Subscriber-Scz7hrV6.cjs → Subscriber-ClqSPbIZ.cjs} +1 -1
  67. package/dist/{Subscriber-Scz7hrV6.cjs.map → Subscriber-ClqSPbIZ.cjs.map} +1 -1
  68. package/dist/{Subscriber-BEhOdNQi.mjs → Subscriber-DKQK5gLD.mjs} +1 -1
  69. package/dist/{Subscriber-BEhOdNQi.mjs.map → Subscriber-DKQK5gLD.mjs.map} +1 -1
  70. package/dist/{SubscriberBuilder-B82h4v-S.cjs → SubscriberBuilder-BS5B_688.cjs} +2 -2
  71. package/dist/{SubscriberBuilder-B82h4v-S.cjs.map → SubscriberBuilder-BS5B_688.cjs.map} +1 -1
  72. package/dist/{SubscriberBuilder-DlUaG0Ej.mjs → SubscriberBuilder-BswTuvUc.mjs} +2 -2
  73. package/dist/{SubscriberBuilder-DlUaG0Ej.mjs.map → SubscriberBuilder-BswTuvUc.mjs.map} +1 -1
  74. package/dist/{TestEndpointAdaptor-DJdmYxMn.mjs → TestEndpointAdaptor-CDOhCmIk.mjs} +2 -2
  75. package/dist/{TestEndpointAdaptor-DJdmYxMn.mjs.map → TestEndpointAdaptor-CDOhCmIk.mjs.map} +1 -1
  76. package/dist/{TestEndpointAdaptor-Bsqn6T0k.cjs → TestEndpointAdaptor-DjQSuxRq.cjs} +2 -2
  77. package/dist/{TestEndpointAdaptor-Bsqn6T0k.cjs.map → TestEndpointAdaptor-DjQSuxRq.cjs.map} +1 -1
  78. package/dist/adaptors/aws.cjs +8 -7
  79. package/dist/adaptors/aws.d.cts +4 -4
  80. package/dist/adaptors/aws.d.mts +4 -4
  81. package/dist/adaptors/aws.mjs +8 -7
  82. package/dist/adaptors/hono.cjs +4 -4
  83. package/dist/adaptors/hono.d.cts +2 -2
  84. package/dist/adaptors/hono.d.mts +2 -2
  85. package/dist/adaptors/hono.mjs +4 -4
  86. package/dist/adaptors/testing.cjs +2 -2
  87. package/dist/adaptors/testing.d.cts +1 -1
  88. package/dist/adaptors/testing.d.mts +1 -1
  89. package/dist/adaptors/testing.mjs +2 -2
  90. package/dist/crons/Cron.cjs +1 -1
  91. package/dist/crons/Cron.d.cts +1 -1
  92. package/dist/crons/Cron.d.mts +1 -1
  93. package/dist/crons/Cron.mjs +1 -1
  94. package/dist/crons/CronBuilder.cjs +2 -2
  95. package/dist/crons/CronBuilder.d.cts +1 -1
  96. package/dist/crons/CronBuilder.d.mts +1 -1
  97. package/dist/crons/CronBuilder.mjs +2 -2
  98. package/dist/crons/index.cjs +2 -2
  99. package/dist/crons/index.d.cts +5 -5
  100. package/dist/crons/index.d.cts.map +1 -1
  101. package/dist/crons/index.d.mts +5 -5
  102. package/dist/crons/index.d.mts.map +1 -1
  103. package/dist/crons/index.mjs +2 -2
  104. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +1 -1
  105. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +2 -2
  106. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +2 -2
  107. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +1 -1
  108. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +3 -3
  109. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +3 -3
  110. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +3 -3
  111. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +3 -3
  112. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +3 -3
  113. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +3 -3
  114. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +3 -3
  115. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +3 -3
  116. package/dist/endpoints/Authorizer.cjs +1 -1
  117. package/dist/endpoints/Authorizer.mjs +1 -1
  118. package/dist/endpoints/Endpoint.d.cts +1 -1
  119. package/dist/endpoints/Endpoint.d.mts +1 -1
  120. package/dist/endpoints/EndpointBuilder.cjs +3 -3
  121. package/dist/endpoints/EndpointBuilder.d.cts +1 -1
  122. package/dist/endpoints/EndpointBuilder.d.mts +1 -1
  123. package/dist/endpoints/EndpointBuilder.mjs +3 -3
  124. package/dist/endpoints/EndpointFactory.cjs +4 -4
  125. package/dist/endpoints/EndpointFactory.d.cts +1 -1
  126. package/dist/endpoints/EndpointFactory.d.mts +1 -1
  127. package/dist/endpoints/EndpointFactory.mjs +4 -4
  128. package/dist/endpoints/HonoEndpointAdaptor.cjs +4 -4
  129. package/dist/endpoints/HonoEndpointAdaptor.d.cts +2 -2
  130. package/dist/endpoints/HonoEndpointAdaptor.d.mts +2 -2
  131. package/dist/endpoints/HonoEndpointAdaptor.mjs +4 -4
  132. package/dist/endpoints/TestEndpointAdaptor.cjs +2 -2
  133. package/dist/endpoints/TestEndpointAdaptor.d.cts +1 -1
  134. package/dist/endpoints/TestEndpointAdaptor.d.mts +1 -1
  135. package/dist/endpoints/TestEndpointAdaptor.mjs +2 -2
  136. package/dist/endpoints/audit.d.cts +1 -1
  137. package/dist/endpoints/audit.d.mts +1 -1
  138. package/dist/endpoints/helpers.cjs +1 -1
  139. package/dist/endpoints/helpers.d.cts +1 -1
  140. package/dist/endpoints/helpers.d.mts +1 -1
  141. package/dist/endpoints/helpers.mjs +1 -1
  142. package/dist/endpoints/index.cjs +5 -5
  143. package/dist/endpoints/index.d.cts +3 -3
  144. package/dist/endpoints/index.d.mts +3 -3
  145. package/dist/endpoints/index.mjs +5 -5
  146. package/dist/endpoints/lazyAccessors.cjs +1 -1
  147. package/dist/endpoints/lazyAccessors.d.cts +1 -1
  148. package/dist/endpoints/lazyAccessors.d.mts +1 -1
  149. package/dist/endpoints/lazyAccessors.mjs +1 -1
  150. package/dist/endpoints/parseHonoQuery.cjs +1 -1
  151. package/dist/endpoints/parseHonoQuery.d.cts +2 -2
  152. package/dist/endpoints/parseHonoQuery.d.cts.map +1 -1
  153. package/dist/endpoints/parseHonoQuery.d.mts +2 -2
  154. package/dist/endpoints/parseHonoQuery.d.mts.map +1 -1
  155. package/dist/endpoints/parseHonoQuery.mjs +1 -1
  156. package/dist/endpoints/parseQueryParams.cjs +1 -1
  157. package/dist/endpoints/parseQueryParams.d.cts +2 -2
  158. package/dist/endpoints/parseQueryParams.d.cts.map +1 -1
  159. package/dist/endpoints/parseQueryParams.d.mts +2 -2
  160. package/dist/endpoints/parseQueryParams.d.mts.map +1 -1
  161. package/dist/endpoints/parseQueryParams.mjs +1 -1
  162. package/dist/endpoints/processAudits.d.cts +1 -1
  163. package/dist/endpoints/processAudits.d.mts +1 -1
  164. package/dist/endpoints/rls.cjs +1 -1
  165. package/dist/endpoints/rls.d.cts +1 -1
  166. package/dist/endpoints/rls.d.mts +1 -1
  167. package/dist/endpoints/rls.mjs +1 -1
  168. package/dist/functions/AWSLambdaFunction.cjs +2 -2
  169. package/dist/functions/AWSLambdaFunction.mjs +2 -2
  170. package/dist/functions/FunctionExecutionWrapper.cjs +1 -1
  171. package/dist/functions/FunctionExecutionWrapper.mjs +1 -1
  172. package/dist/functions/index.d.cts +1 -1
  173. package/dist/functions/index.d.mts +1 -1
  174. package/dist/{helpers-Ciyi6Aap.cjs → helpers-BYyX0qTA.cjs} +1 -1
  175. package/dist/{helpers-Ciyi6Aap.cjs.map → helpers-BYyX0qTA.cjs.map} +1 -1
  176. package/dist/{helpers-C5j_GRBz.mjs → helpers-BtwC2IW8.mjs} +1 -1
  177. package/dist/{helpers-C5j_GRBz.mjs.map → helpers-BtwC2IW8.mjs.map} +1 -1
  178. package/dist/index-Br-zTYii.d.mts +12 -0
  179. package/dist/{index-BfeupgMl.d.cts.map → index-Br-zTYii.d.mts.map} +1 -1
  180. package/dist/index-dRNH0dT6.d.cts +12 -0
  181. package/dist/{index-_5DYCNAt.d.mts.map → index-dRNH0dT6.d.cts.map} +1 -1
  182. package/dist/{lazyAccessors-B8Hhras9.cjs → lazyAccessors-BVEtB9lU.cjs} +1 -1
  183. package/dist/{lazyAccessors-B8Hhras9.cjs.map → lazyAccessors-BVEtB9lU.cjs.map} +1 -1
  184. package/dist/{lazyAccessors-B-Jgkg2o.mjs → lazyAccessors-DM6HcXQk.mjs} +1 -1
  185. package/dist/{lazyAccessors-B-Jgkg2o.mjs.map → lazyAccessors-DM6HcXQk.mjs.map} +1 -1
  186. package/dist/parseHonoQuery-BBs8CX-H.cjs +24 -0
  187. package/dist/parseHonoQuery-BBs8CX-H.cjs.map +1 -0
  188. package/dist/parseHonoQuery-Cp8CII0P.mjs +18 -0
  189. package/dist/parseHonoQuery-Cp8CII0P.mjs.map +1 -0
  190. package/dist/parseQueryParams-B4RK1za3.cjs +31 -0
  191. package/dist/parseQueryParams-B4RK1za3.cjs.map +1 -0
  192. package/dist/parseQueryParams-DS3Qmrbd.mjs +25 -0
  193. package/dist/parseQueryParams-DS3Qmrbd.mjs.map +1 -0
  194. package/dist/{rls-DxFqdIA0.cjs → rls-BrywnrQb.cjs} +1 -1
  195. package/dist/{rls-DxFqdIA0.cjs.map → rls-BrywnrQb.cjs.map} +1 -1
  196. package/dist/{rls-7XXX7DvY.mjs → rls-C0cWOnk4.mjs} +1 -1
  197. package/dist/{rls-7XXX7DvY.mjs.map → rls-C0cWOnk4.mjs.map} +1 -1
  198. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  199. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  200. package/dist/subscribers/Subscriber.cjs +1 -1
  201. package/dist/subscribers/Subscriber.mjs +1 -1
  202. package/dist/subscribers/SubscriberBuilder.cjs +2 -2
  203. package/dist/subscribers/SubscriberBuilder.mjs +2 -2
  204. package/dist/subscribers/index.cjs +2 -2
  205. package/dist/subscribers/index.d.cts +2 -2
  206. package/dist/subscribers/index.d.cts.map +1 -1
  207. package/dist/subscribers/index.d.mts +2 -2
  208. package/dist/subscribers/index.d.mts.map +1 -1
  209. package/dist/subscribers/index.mjs +2 -2
  210. package/package.json +16 -14
  211. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +6 -1
  212. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +11 -19
  213. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +7 -7
  214. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +4 -2
  215. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +92 -18
  216. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +4 -4
  217. package/src/endpoints/parseHonoQuery.ts +9 -46
  218. package/src/endpoints/parseQueryParams.ts +12 -33
  219. package/dist/AmazonApiGatewayEndpointAdaptor-1XyivLJs.cjs.map +0 -1
  220. package/dist/AmazonApiGatewayEndpointAdaptor-BPxHm8Tg.mjs.map +0 -1
  221. package/dist/AmazonApiGatewayEndpointAdaptor-Bxvs-F0F.d.cts.map +0 -1
  222. package/dist/AmazonApiGatewayEndpointAdaptor-CQSZArI6.d.mts.map +0 -1
  223. package/dist/AmazonApiGatewayV2EndpointAdaptor-BBayh2_k.d.mts.map +0 -1
  224. package/dist/AmazonApiGatewayV2EndpointAdaptor-CHi3Qe1s.d.cts.map +0 -1
  225. package/dist/AmazonApiGatewayV2EndpointAdaptor-CjPCxIb1.cjs.map +0 -1
  226. package/dist/AmazonApiGatewayV2EndpointAdaptor-DrbEaZ2_.mjs.map +0 -1
  227. package/dist/index-BfeupgMl.d.cts +0 -12
  228. package/dist/index-_5DYCNAt.d.mts +0 -12
  229. package/dist/parseHonoQuery-D4MhxTRc.cjs +0 -39
  230. package/dist/parseHonoQuery-D4MhxTRc.cjs.map +0 -1
  231. package/dist/parseHonoQuery-DpK3sGPc.mjs +0 -33
  232. package/dist/parseHonoQuery-DpK3sGPc.mjs.map +0 -1
  233. package/dist/parseQueryParams-BSNkjmZ9.cjs +0 -40
  234. package/dist/parseQueryParams-BSNkjmZ9.cjs.map +0 -1
  235. package/dist/parseQueryParams-UMTRnRrW.mjs +0 -34
  236. package/dist/parseQueryParams-UMTRnRrW.mjs.map +0 -1
@@ -130,7 +130,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
130
130
  headers: { 'content-type': 'application/json' },
131
131
  body: JSON.stringify({ name: 'John', age: 30 }),
132
132
  });
133
- // @ts-expect-error
133
+
134
134
  const response = await adapter.handler(event, mockContext);
135
135
 
136
136
  expect(response).toEqual({
@@ -139,7 +139,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
139
139
  });
140
140
  });
141
141
 
142
- it('should handle array query parameters (comma-separated)', async () => {
142
+ it('should handle array query parameters with bracket notation', async () => {
143
143
  const endpoint = e
144
144
  .get('/search')
145
145
  .query(
@@ -164,13 +164,14 @@ describe('AmazonApiGatewayV2Endpoint', () => {
164
164
  const event = createMockV2Event({
165
165
  routeKey: 'GET /search',
166
166
  rawPath: '/search',
167
- rawQueryString: 'tags=nodejs,typescript,javascript&limit=20',
167
+ rawQueryString:
168
+ 'tags%5B%5D=nodejs&tags%5B%5D=typescript&tags%5B%5D=javascript&limit=20',
168
169
  queryStringParameters: {
169
- tags: 'nodejs,typescript,javascript',
170
+ 'tags[]': 'nodejs,typescript,javascript',
170
171
  limit: '20',
171
172
  },
172
173
  });
173
- // @ts-expect-error
174
+
174
175
  const response = await adapter.handler(event, mockContext);
175
176
 
176
177
  expect(response).toEqual({
@@ -182,7 +183,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
182
183
  });
183
184
  });
184
185
 
185
- it('should handle object query parameters with dot notation', async () => {
186
+ it('should handle object query parameters with bracket notation', async () => {
186
187
  const endpoint = e
187
188
  .get('/search')
188
189
  .query(
@@ -210,13 +211,14 @@ describe('AmazonApiGatewayV2Endpoint', () => {
210
211
  const event = createMockV2Event({
211
212
  routeKey: 'GET /search',
212
213
  rawPath: '/search',
213
- rawQueryString: 'filter.category=electronics&filter.active=true',
214
+ rawQueryString:
215
+ 'filter%5Bcategory%5D=electronics&filter%5Bactive%5D=true',
214
216
  queryStringParameters: {
215
- 'filter.category': 'electronics',
216
- 'filter.active': 'true',
217
+ 'filter[category]': 'electronics',
218
+ 'filter[active]': 'true',
217
219
  },
218
220
  });
219
- // @ts-expect-error
221
+
220
222
  const response = await adapter.handler(event, mockContext);
221
223
 
222
224
  expect(response).toEqual({
@@ -250,7 +252,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
250
252
  queryStringParameters: { include: 'profile' },
251
253
  pathParameters: { id: '123' },
252
254
  });
253
- // @ts-expect-error
255
+
254
256
  const response = await adapter.handler(event, mockContext);
255
257
 
256
258
  expect(response).toEqual({
@@ -274,7 +276,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
274
276
 
275
277
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
276
278
  const event = createMockV2Event();
277
- // @ts-expect-error
279
+
278
280
  const response = await adapter.handler(event, mockContext);
279
281
 
280
282
  expect(response.multiValueHeaders?.['Set-Cookie']).toEqual([
@@ -296,7 +298,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
296
298
 
297
299
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
298
300
  const event = createMockV2Event();
299
- // @ts-expect-error
301
+
300
302
  const response = await adapter.handler(event, mockContext);
301
303
 
302
304
  expect(response.headers).toEqual({
@@ -316,7 +318,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
316
318
 
317
319
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
318
320
  const event = createMockV2Event({ routeKey: 'POST /test' });
319
- // @ts-expect-error
321
+
320
322
  const response = await adapter.handler(event, mockContext);
321
323
 
322
324
  expect(response.statusCode).toBe(201);
@@ -337,7 +339,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
337
339
 
338
340
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
339
341
  const event = createMockV2Event({ routeKey: 'POST /test' });
340
- // @ts-expect-error
342
+
341
343
  const response = await adapter.handler(event, mockContext);
342
344
 
343
345
  expect(response.statusCode).toBe(201);
@@ -362,7 +364,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
362
364
 
363
365
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
364
366
  const event = createMockV2Event();
365
- // @ts-expect-error
367
+
366
368
  const response = await adapter.handler(event, mockContext);
367
369
 
368
370
  expect(response.multiValueHeaders?.['Set-Cookie']).toEqual([
@@ -384,7 +386,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
384
386
 
385
387
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
386
388
  const event = createMockV2Event();
387
- // @ts-expect-error
389
+
388
390
  const response = await adapter.handler(event, mockContext);
389
391
 
390
392
  expect(response.statusCode).toBe(201);
@@ -403,7 +405,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
403
405
 
404
406
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
405
407
  const event = createMockV2Event();
406
- // @ts-expect-error
408
+
407
409
  const response = await adapter.handler(event, mockContext);
408
410
 
409
411
  expect(response).toEqual({
@@ -414,5 +416,77 @@ describe('AmazonApiGatewayV2Endpoint', () => {
414
416
  expect(response.multiValueHeaders).toBeUndefined();
415
417
  });
416
418
  });
419
+
420
+ describe('request cookies', () => {
421
+ it('should load cookies from V2 cookies array', async () => {
422
+ const endpoint = e
423
+ .get('/test')
424
+ .output(z.object({ session: z.string(), theme: z.string() }))
425
+ .handle(async ({ cookie }) => ({
426
+ session: cookie('session') ?? '',
427
+ theme: cookie('theme') ?? '',
428
+ }));
429
+
430
+ const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
431
+ const event = createMockV2Event({
432
+ cookies: ['session=abc123', 'theme=dark'],
433
+ });
434
+
435
+ const response = await adapter.handler(event, mockContext);
436
+
437
+ expect(JSON.parse(response.body!)).toEqual({
438
+ session: 'abc123',
439
+ theme: 'dark',
440
+ });
441
+ });
442
+
443
+ it('should fall back to headers.cookie when cookies array is absent', async () => {
444
+ const endpoint = e
445
+ .get('/test')
446
+ .output(z.object({ session: z.string() }))
447
+ .handle(async ({ cookie }) => ({
448
+ session: cookie('session') ?? '',
449
+ }));
450
+
451
+ const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
452
+ const event = createMockV2Event({
453
+ cookies: undefined,
454
+ headers: {
455
+ 'content-type': 'application/json',
456
+ cookie: 'session=from-header',
457
+ },
458
+ });
459
+
460
+ const response = await adapter.handler(event, mockContext);
461
+
462
+ expect(JSON.parse(response.body!)).toEqual({
463
+ session: 'from-header',
464
+ });
465
+ });
466
+
467
+ it('should prefer V2 cookies array over headers.cookie', async () => {
468
+ const endpoint = e
469
+ .get('/test')
470
+ .output(z.object({ session: z.string() }))
471
+ .handle(async ({ cookie }) => ({
472
+ session: cookie('session') ?? '',
473
+ }));
474
+
475
+ const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
476
+ const event = createMockV2Event({
477
+ cookies: ['session=from-array'],
478
+ headers: {
479
+ 'content-type': 'application/json',
480
+ cookie: 'session=from-header',
481
+ },
482
+ });
483
+
484
+ const response = await adapter.handler(event, mockContext);
485
+
486
+ expect(JSON.parse(response.body!)).toEqual({
487
+ session: 'from-array',
488
+ });
489
+ });
490
+ });
417
491
  });
418
492
  });
@@ -626,7 +626,7 @@ describe('HonoEndpointAdaptor', () => {
626
626
  });
627
627
 
628
628
  describe('query parameter handling', () => {
629
- it('should handle array query parameters', async () => {
629
+ it('should handle array query parameters with bracket notation', async () => {
630
630
  const querySchema = z.object({
631
631
  tags: z.array(z.string()),
632
632
  limit: z.coerce.number().default(10),
@@ -663,7 +663,7 @@ describe('HonoEndpointAdaptor', () => {
663
663
  adaptor.addRoute(serviceDiscovery, app);
664
664
 
665
665
  const response = await app.request(
666
- '/search?tags=nodejs&tags=typescript&tags=javascript&limit=20',
666
+ '/search?tags[]=nodejs&tags[]=typescript&tags[]=javascript&limit=20',
667
667
  );
668
668
 
669
669
  expect(response.status).toBe(200);
@@ -673,7 +673,7 @@ describe('HonoEndpointAdaptor', () => {
673
673
  });
674
674
  });
675
675
 
676
- it('should handle object query parameters with dot notation', async () => {
676
+ it('should handle object query parameters with bracket notation', async () => {
677
677
  const querySchema = z.object({
678
678
  filter: z.object({
679
679
  category: z.string(),
@@ -718,7 +718,7 @@ describe('HonoEndpointAdaptor', () => {
718
718
  adaptor.addRoute(serviceDiscovery, app);
719
719
 
720
720
  const response = await app.request(
721
- '/products?filter.category=electronics&filter.active=true&filter.minPrice=100&sort=price',
721
+ '/products?filter[category]=electronics&filter[active]=true&filter[minPrice]=100&sort=price',
722
722
  );
723
723
 
724
724
  expect(response.status).toBe(200);
@@ -1,53 +1,16 @@
1
1
  import type { Context } from 'hono';
2
+ import qs from 'qs';
2
3
 
3
4
  /**
4
- * Parse Hono query parameters to handle arrays and nested objects
5
- * Hono provides c.req.queries() for arrays, but we need to handle dot notation for objects
5
+ * Parse Hono query parameters using qs bracket notation
6
+ * Supports nested objects, arrays, and deep nesting via standard bracket syntax
6
7
  */
7
8
  export function parseHonoQuery(c: Context): Record<string, any> {
8
- const allParams = c.req.query();
9
- const result: Record<string, any> = {};
10
-
11
- // First, handle all query parameters
12
- for (const [key, value] of Object.entries(allParams)) {
13
- if (key.includes('.')) {
14
- // Handle dot notation for objects
15
- const parts = key.split('.');
16
- let current = result;
17
-
18
- // Navigate/create the nested structure
19
- for (let i = 0; i < parts.length - 1; i++) {
20
- const part = parts[i];
21
- if (!part) continue;
22
- if (
23
- !current[part] ||
24
- typeof current[part] !== 'object' ||
25
- Array.isArray(current[part])
26
- ) {
27
- current[part] = {};
28
- }
29
- current = current[part];
30
- }
31
-
32
- // Set the final value, checking for arrays in nested keys
33
- const lastPart = parts[parts.length - 1];
34
- if (!lastPart) continue;
35
- const multipleValues = c.req.queries(key);
36
- if (multipleValues && multipleValues.length > 1) {
37
- current[lastPart] = multipleValues;
38
- } else {
39
- current[lastPart] = value;
40
- }
41
- } else {
42
- // For regular keys, check if there are multiple values
43
- const multipleValues = c.req.queries(key);
44
- if (multipleValues && multipleValues.length > 1) {
45
- result[key] = multipleValues;
46
- } else {
47
- result[key] = value;
48
- }
49
- }
9
+ const url = c.req.url;
10
+ const queryIndex = url.indexOf('?');
11
+ if (queryIndex === -1) {
12
+ return {};
50
13
  }
51
-
52
- return result;
14
+ const queryString = url.slice(queryIndex + 1);
15
+ return qs.parse(queryString) as Record<string, any>;
53
16
  }
@@ -1,9 +1,11 @@
1
+ import qs from 'qs';
2
+
1
3
  /**
2
4
  * Parse query parameters from a flat object into a nested structure
3
- * Handles arrays (multiple values with same key) and objects (dot notation)
5
+ * Uses qs bracket notation for standard interoperability
4
6
  *
5
7
  * @example
6
- * parseQueryParams({ 'tags': ['a', 'b'], 'filter.name': 'john' })
8
+ * parseQueryParams({ 'tags[]': ['a', 'b'], 'filter[name]': 'john' })
7
9
  * // Returns: { tags: ['a', 'b'], filter: { name: 'john' } }
8
10
  */
9
11
  export function parseQueryParams(
@@ -13,41 +15,18 @@ export function parseQueryParams(
13
15
  return {};
14
16
  }
15
17
 
16
- const result: Record<string, any> = {};
17
-
18
+ // Reconstruct a query string from the flat object so qs can parse bracket notation
19
+ const parts: string[] = [];
18
20
  for (const [key, value] of Object.entries(queryParams)) {
19
- if (value === undefined) {
20
- continue;
21
- }
22
-
23
- // Check if the key contains dot notation
24
- if (key.includes('.')) {
25
- const parts = key.split('.');
26
- let current = result;
27
-
28
- // Navigate/create the nested structure
29
- for (let i = 0; i < parts.length - 1; i++) {
30
- const part = parts[i];
31
- if (!part) continue;
32
- if (
33
- !current[part] ||
34
- typeof current[part] !== 'object' ||
35
- Array.isArray(current[part])
36
- ) {
37
- current[part] = {};
38
- }
39
- current = current[part];
21
+ if (value === undefined) continue;
22
+ if (Array.isArray(value)) {
23
+ for (const v of value) {
24
+ parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(v)}`);
40
25
  }
41
-
42
- // Set the final value
43
- const lastPart = parts[parts.length - 1];
44
- if (!lastPart) continue;
45
- current[lastPart] = value;
46
26
  } else {
47
- // Simple key, just assign the value
48
- result[key] = value;
27
+ parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
49
28
  }
50
29
  }
51
30
 
52
- return result;
31
+ return qs.parse(parts.join('&')) as Record<string, any>;
53
32
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayEndpointAdaptor-1XyivLJs.cjs","names":["envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction\n\t\t>","options: AmazonApiGatewayEndpointOptions","UnprocessableEntityError","UnauthorizedError","event: Event<TEvent, TInput, TServices, TLogger, TSession>","db: any","ResponseBuilder","metadata","output","trx: any","result","lambdaResponse: AmazonApiGatewayEndpointHandlerResponse","setCookieHeaders: string[]","ctx: any","event: TEvent","context: Context"],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":["import type { AuditableAction, AuditStorage } from '@geekmidas/audit';\nimport { withRlsContext } from '@geekmidas/db/rls';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { Logger } from '@geekmidas/logger';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n\tAPIGatewayProxyEvent,\n\tAPIGatewayProxyEventV2,\n\tContext,\n} from 'aws-lambda';\nimport set from 'lodash.set';\nimport type { Telemetry } from '../telemetry';\nimport type { HttpMethod } from '../types';\nimport { Endpoint, type EndpointSchemas, ResponseBuilder } from './Endpoint';\n\n/**\n * Telescope integration for request recording.\n * Uses Middy middleware pattern for compatibility with existing telescope package.\n */\nexport interface TelescopeIntegration {\n\tmiddleware: MiddlewareObj<any, any, Error, Context>;\n}\n\nimport {\n\tUnauthorizedError,\n\tUnprocessableEntityError,\n\twrapError,\n} from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type {\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\trunWithRequestContext,\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport { publishConstructEvents } from '../publisher';\nimport type { MappedAudit } from './audit';\nimport type { CookieFn, HeaderFn } from './Endpoint';\nimport {\n\tcreateAuditContext,\n\texecuteWithAuditTransaction,\n} from './processAudits';\n\n// Helper function to publish events\n\n/**\n * Options for Amazon API Gateway endpoint adaptors\n */\nexport interface AmazonApiGatewayEndpointOptions {\n\t/**\n\t * Telescope integration for request recording and monitoring.\n\t *\n\t * @example\n\t * ```typescript\n\t * import { telescopeMiddleware } from '@geekmidas/telescope/lambda';\n\t *\n\t * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {\n\t * telescope: { middleware: telescopeMiddleware(telescope) },\n\t * });\n\t * ```\n\t */\n\ttelescope?: TelescopeIntegration;\n\n\t/**\n\t * Telemetry integration for distributed tracing.\n\t * Works with any OpenTelemetry-compatible backend.\n\t *\n\t * @example\n\t * ```typescript\n\t * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';\n\t *\n\t * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {\n\t * telemetry: new OTelTelemetry(),\n\t * });\n\t * ```\n\t */\n\ttelemetry?: Telemetry;\n}\n\nexport abstract class AmazonApiGatewayEndpoint<\n\tTHandler extends\n\t\t| AmazonApiGatewayV1EndpointHandler\n\t\t| AmazonApiGatewayV2EndpointHandler,\n\tTEvent extends HandlerEvent<THandler>,\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\tprotected options: AmazonApiGatewayEndpointOptions;\n\n\tconstructor(\n\t\tprotected envParser: EnvironmentParser<{}>,\n\t\tprotected readonly endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction\n\t\t>,\n\t\toptions: AmazonApiGatewayEndpointOptions = {},\n\t) {\n\t\tthis.options = options;\n\t}\n\n\tprivate error(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\t(req.event.logger || this.endpoint.logger).error(\n\t\t\t\t\treq.error || {},\n\t\t\t\t\t'Error processing request',\n\t\t\t\t);\n\t\t\t\tconst wrappedError = wrapError(req.error);\n\n\t\t\t\t// Set the response with the proper status code from the HttpError\n\t\t\t\treq.response = {\n\t\t\t\t\tstatusCode: wrappedError.statusCode,\n\t\t\t\t\tbody: wrappedError.body,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\tabstract getInput(e: TEvent): GetInputResponse;\n\n\tprivate input(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { body, query, params } = this.getInput(req.event);\n\t\t\t\t\tconst headers = req.event.headers as Record<string, string>;\n\t\t\t\t\tconst header = Endpoint.createHeaders(headers);\n\t\t\t\t\tconst cookie = Endpoint.createCookies(headers.cookie);\n\n\t\t\t\t\tset(req.event, 'body', await this.endpoint.parseInput(body, 'body'));\n\n\t\t\t\t\tset(\n\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t'query',\n\t\t\t\t\t\tawait this.endpoint.parseInput(query, 'query'),\n\t\t\t\t\t);\n\t\t\t\t\tset(\n\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t'params',\n\t\t\t\t\t\tawait this.endpoint.parseInput(params, 'params'),\n\t\t\t\t\t);\n\t\t\t\t\tset(req.event, 'header', header);\n\t\t\t\t\tset(req.event, 'cookie', cookie);\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Convert validation errors to 422 Unprocessable Entity\n\t\t\t\t\tif (error && typeof error === 'object' && Array.isArray(error)) {\n\t\t\t\t\t\tthrow new UnprocessableEntityError('Validation failed', error);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tabstract getLoggerContext(data: TEvent, context: Context): LoggerContext;\n\n\tprivate logger(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\treq.event.logger = this.endpoint.logger.child({\n\t\t\t\t\troute: this.endpoint.route,\n\t\t\t\t\thost: req.event.headers?.host,\n\t\t\t\t\tmethod: this.endpoint.method,\n\t\t\t\t\t...this.getLoggerContext(req.event, req.context),\n\t\t\t\t}) as TLogger;\n\t\t\t},\n\t\t};\n\t}\n\tprivate services(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst _logger = req.event.logger as TLogger;\n\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t>(this.envParser);\n\n\t\t\t\tconst services = await serviceDiscovery.register(\n\t\t\t\t\tthis.endpoint.services,\n\t\t\t\t);\n\n\t\t\t\treq.event.services = services;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate authorize(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst logger = req.event.logger as TLogger;\n\t\t\t\tconst services = req.event.services;\n\t\t\t\tconst header = req.event.header;\n\t\t\t\tconst cookie = req.event.cookie;\n\t\t\t\tconst session = req.event.session as TSession;\n\n\t\t\t\tconst isAuthorized = await this.endpoint.authorize({\n\t\t\t\t\theader,\n\t\t\t\t\tcookie,\n\t\t\t\t\tservices,\n\t\t\t\t\tlogger,\n\t\t\t\t\tsession,\n\t\t\t\t});\n\n\t\t\t\tif (!isAuthorized) {\n\t\t\t\t\tlogger.warn('Unauthorized access attempt');\n\t\t\t\t\tthrow new UnauthorizedError(\n\t\t\t\t\t\t'Unauthorized access to the endpoint',\n\t\t\t\t\t\t'You do not have permission to access this resource.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tif (!this.endpoint.databaseService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst _logger = req.event.logger as TLogger;\n\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t>(this.envParser);\n\n\t\t\t\tconst db = await serviceDiscovery\n\t\t\t\t\t.register([this.endpoint.databaseService])\n\t\t\t\t\t.then(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\ts[this.endpoint.databaseService?.serviceName as keyof typeof s],\n\t\t\t\t\t);\n\n\t\t\t\t(req.event as any).db = db;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate session(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst logger = req.event.logger as TLogger;\n\t\t\t\tconst services = req.event.services;\n\t\t\t\tconst db = (req.event as any).db;\n\t\t\t\treq.event.session = (await this.endpoint.getSession({\n\t\t\t\t\tlogger,\n\t\t\t\t\tservices,\n\t\t\t\t\theader: req.event.header,\n\t\t\t\t\tcookie: req.event.cookie,\n\t\t\t\t\t...(db !== undefined && { db }),\n\t\t\t\t} as any)) as TSession;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst event = req.event;\n\t\t\t\tconst response = (event as any)\n\t\t\t\t\t.__response as InferStandardSchema<TOutSchema>;\n\t\t\t\tconst statusCode = req.response?.statusCode ?? this.endpoint.status;\n\n\t\t\t\t// Only publish events on successful responses (2xx status codes)\n\t\t\t\t// Note: Audits are processed inside the handler's transaction\n\t\t\t\tif (Endpoint.isSuccessStatus(statusCode)) {\n\t\t\t\t\tconst logger = event.logger as TLogger;\n\t\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t\t>(this.envParser);\n\n\t\t\t\t\t// Publish events\n\t\t\t\t\tawait publishConstructEvents(\n\t\t\t\t\t\tthis.endpoint,\n\t\t\t\t\t\tresponse,\n\t\t\t\t\t\tserviceDiscovery,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler(\n\t\tevent: Event<TEvent, TInput, TServices, TLogger, TSession>,\n\t) {\n\t\tconst input = this.endpoint.refineInput(event);\n\t\tconst logger = event.logger as TLogger;\n\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\tServiceRecord<TServices>\n\t\t>(this.envParser);\n\n\t\t// Create audit context if audit storage is configured\n\t\tconst auditContext = await createAuditContext(\n\t\t\tthis.endpoint,\n\t\t\tserviceDiscovery,\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\tsession: event.session,\n\t\t\t\theader: event.header,\n\t\t\t\tcookie: event.cookie,\n\t\t\t\tservices: event.services as Record<string, unknown>,\n\t\t\t},\n\t\t);\n\n\t\t// Warn if declarative audits are configured but no audit storage\n\t\tconst audits = this.endpoint.audits as MappedAudit<\n\t\t\tTAuditAction,\n\t\t\tTOutSchema\n\t\t>[];\n\t\tif (!auditContext && audits?.length) {\n\t\t\tlogger.warn('No auditor storage service available');\n\t\t}\n\n\t\t// Get pre-resolved database from middleware\n\t\tconst rawDb = (event as any).db;\n\n\t\t// Extract RLS context if configured and not bypassed\n\t\tconst rlsActive =\n\t\t\tthis.endpoint.rlsConfig &&\n\t\t\t!this.endpoint.rlsBypass &&\n\t\t\trawDb !== undefined;\n\t\tconst rlsContext = rlsActive\n\t\t\t? await this.endpoint.rlsConfig?.extractor({\n\t\t\t\t\tservices: event.services as ServiceRecord<TServices>,\n\t\t\t\t\tsession: event.session,\n\t\t\t\t\theader: event.header,\n\t\t\t\t\tcookie: event.cookie,\n\t\t\t\t\tlogger,\n\t\t\t\t})\n\t\t\t: undefined;\n\n\t\t// Execute handler with automatic audit transaction support\n\t\tconst result = await executeWithAuditTransaction(\n\t\t\tauditContext,\n\t\t\tasync (auditor) => {\n\t\t\t\t// Use audit transaction as db only if the storage uses the same database service\n\t\t\t\tconst sameDatabase =\n\t\t\t\t\tauditContext?.storage?.databaseServiceName &&\n\t\t\t\t\tauditContext.storage.databaseServiceName ===\n\t\t\t\t\t\tthis.endpoint.databaseService?.serviceName;\n\t\t\t\tconst baseDb = sameDatabase\n\t\t\t\t\t? (auditor?.getTransaction?.() ?? rawDb)\n\t\t\t\t\t: rawDb;\n\n\t\t\t\t// Helper to execute handler with given db\n\t\t\t\tconst executeHandler = async (db: any) => {\n\t\t\t\t\tconst responseBuilder = new ResponseBuilder();\n\t\t\t\t\tconst response = await this.endpoint.handler(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theader: event.header,\n\t\t\t\t\t\t\tcookie: event.cookie,\n\t\t\t\t\t\t\tlogger: event.logger,\n\t\t\t\t\t\t\tservices: event.services,\n\t\t\t\t\t\t\tsession: event.session,\n\t\t\t\t\t\t\tauditor,\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t} as any,\n\t\t\t\t\t\tresponseBuilder,\n\t\t\t\t\t);\n\n\t\t\t\t\t// Check if response has metadata\n\t\t\t\t\tlet data = response;\n\t\t\t\t\tlet metadata = responseBuilder.getMetadata();\n\n\t\t\t\t\tif (Endpoint.hasMetadata(response)) {\n\t\t\t\t\t\tdata = response.data;\n\t\t\t\t\t\tmetadata = response.metadata;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst output = this.endpoint.outputSchema\n\t\t\t\t\t\t? await this.endpoint.parseOutput(data)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\treturn { output, metadata, responseBuilder };\n\t\t\t\t};\n\n\t\t\t\t// If RLS is active, wrap handler with RLS context\n\t\t\t\tif (rlsActive && rlsContext && baseDb) {\n\t\t\t\t\treturn withRlsContext(\n\t\t\t\t\t\tbaseDb,\n\t\t\t\t\t\trlsContext,\n\t\t\t\t\t\tasync (trx: any) => executeHandler(trx),\n\t\t\t\t\t\t{ prefix: this.endpoint.rlsConfig?.prefix },\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn executeHandler(baseDb);\n\t\t\t},\n\t\t\t// Process declarative audits after handler (inside transaction)\n\t\t\tasync (result, auditor) => {\n\t\t\t\tif (!audits?.length) return;\n\n\t\t\t\tfor (const audit of audits) {\n\t\t\t\t\tif (audit.when && !audit.when(result.output as any)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst payload = audit.payload(result.output as any);\n\t\t\t\t\tconst entityId = audit.entityId?.(result.output as any);\n\t\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\t\ttable: audit.table,\n\t\t\t\t\t\tentityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Pass rawDb so storage can reuse existing transactions\n\t\t\t{ db: rawDb },\n\t\t);\n\n\t\tconst { output, metadata } = result;\n\t\tconst body = output !== undefined ? JSON.stringify(output) : undefined;\n\n\t\t// Store response for middleware access\n\t\t(event as any).__response = output;\n\n\t\t// Build response with metadata\n\t\tconst lambdaResponse: AmazonApiGatewayEndpointHandlerResponse = {\n\t\t\tstatusCode: metadata.status ?? this.endpoint.status,\n\t\t\tbody,\n\t\t};\n\n\t\t// Add custom headers\n\t\tif (metadata.headers && Object.keys(metadata.headers).length > 0) {\n\t\t\tlambdaResponse.headers = { ...metadata.headers };\n\t\t}\n\n\t\t// Format cookies as Set-Cookie headers\n\t\tif (metadata.cookies && metadata.cookies.size > 0) {\n\t\t\tconst setCookieHeaders: string[] = [];\n\t\t\tfor (const [name, { value, options }] of metadata.cookies) {\n\t\t\t\tsetCookieHeaders.push(\n\t\t\t\t\tEndpoint.formatCookieHeader(name, value, options),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (setCookieHeaders.length > 0) {\n\t\t\t\tlambdaResponse.multiValueHeaders = {\n\t\t\t\t\t...lambdaResponse.multiValueHeaders,\n\t\t\t\t\t'Set-Cookie': setCookieHeaders,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn lambdaResponse;\n\t}\n\n\t/**\n\t * Convert Telemetry interface to Middy middleware\n\t */\n\tprivate telemetry(): Middleware<TEvent, TInput, TServices, TLogger> | null {\n\t\tif (!this.options.telemetry) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst telemetry = this.options.telemetry;\n\t\tlet ctx: any;\n\n\t\treturn {\n\t\t\tbefore: (request) => {\n\t\t\t\tctx = telemetry.onRequestStart({\n\t\t\t\t\tevent: request.event,\n\t\t\t\t\tcontext: request.context,\n\t\t\t\t});\n\t\t\t},\n\t\t\tafter: (request) => {\n\t\t\t\tif (ctx) {\n\t\t\t\t\ttelemetry.onRequestEnd(ctx, {\n\t\t\t\t\t\tstatusCode: request.response?.statusCode ?? 200,\n\t\t\t\t\t\tbody: request.response?.body,\n\t\t\t\t\t\theaders: request.response?.headers,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (request) => {\n\t\t\t\tif (ctx && request.error) {\n\t\t\t\t\ttelemetry.onRequestError(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\trequest.error instanceof Error\n\t\t\t\t\t\t\t? request.error\n\t\t\t\t\t\t\t: new Error(String(request.error)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tget handler() {\n\t\tconst handler = this._handler.bind(this);\n\t\tlet chain = middy(handler)\n\t\t\t.use(this.logger())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.input())\n\t\t\t.use(this.database())\n\t\t\t.use(this.session())\n\t\t\t.use(this.authorize())\n\t\t\t.use(this.events());\n\n\t\t// Add telemetry middleware if configured (runs early for span creation)\n\t\tconst telemetryMiddleware = this.telemetry();\n\t\tif (telemetryMiddleware) {\n\t\t\tchain = chain.use(telemetryMiddleware);\n\t\t}\n\n\t\t// Add Telescope middleware if configured (runs first/last in chain)\n\t\tif (this.options.telescope?.middleware) {\n\t\t\tchain = chain.use(this.options.telescope.middleware);\n\t\t}\n\n\t\t// Wrap entire Middy chain in request context for service access\n\t\tconst wrappedHandler = async (event: TEvent, context: Context) => {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst requestId = context.awsRequestId;\n\t\t\tconst logger = this.endpoint.logger.child({ requestId }) as TLogger;\n\n\t\t\t// Cast event to any since Middy middlewares enrich the event with\n\t\t\t// services, logger, session, etc. during the middleware chain execution\n\t\t\treturn runWithRequestContext({ logger, requestId, startTime }, () =>\n\t\t\t\tchain(event as unknown as Parameters<typeof chain>[0], context),\n\t\t\t);\n\t\t};\n\n\t\treturn wrappedHandler as unknown as THandler;\n\t}\n}\n\nexport type Event<\n\tTEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n\tsession: TSession;\n} & TEvent &\n\tInferComposableStandardSchema<TInput>;\n\ntype Middleware<\n\tTEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = MiddlewareObj<Event<TEvent, TInput, TServices, TLogger, TSession>>;\n\nexport type AmazonApiGatewayEndpointHandlerResponse = {\n\tstatusCode: number;\n\tbody: string | undefined;\n\theaders?: Record<string, string>;\n\tmultiValueHeaders?: Record<string, string[]>;\n};\n\nexport type LoggerContext = {\n\tfn: {\n\t\tname: string;\n\t\tversion: string;\n\t};\n\treq: {\n\t\tid: string | undefined;\n\t\tawsRequestId: string;\n\t\tpath: string;\n\t\tip: string | undefined;\n\t\tuserAgent: string | undefined;\n\t};\n};\n\nexport type GetInputResponse = {\n\tbody: any;\n\tquery: any;\n\tparams: any;\n};\n\nexport type AmazonApiGatewayV1EndpointHandler = (\n\tevent: APIGatewayProxyEvent,\n\tcontext: Context,\n) => Promise<AmazonApiGatewayEndpointHandlerResponse>;\n\nexport type AmazonApiGatewayV2EndpointHandler = (\n\tevent: APIGatewayProxyEventV2,\n\tcontext: Context,\n) => Promise<AmazonApiGatewayEndpointHandlerResponse>;\n\nexport type HandlerEvent<T extends Function> = T extends (\n\tevent: infer E,\n\tcontext: Context,\n) => any\n\t? E\n\t: never;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayEndpointAdaptor-BPxHm8Tg.mjs","names":["envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction\n\t\t>","options: AmazonApiGatewayEndpointOptions","event: Event<TEvent, TInput, TServices, TLogger, TSession>","db: any","metadata","output","trx: any","result","lambdaResponse: AmazonApiGatewayEndpointHandlerResponse","setCookieHeaders: string[]","ctx: any","event: TEvent","context: Context"],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":["import type { AuditableAction, AuditStorage } from '@geekmidas/audit';\nimport { withRlsContext } from '@geekmidas/db/rls';\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { Logger } from '@geekmidas/logger';\nimport middy, { type MiddlewareObj } from '@middy/core';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type {\n\tAPIGatewayProxyEvent,\n\tAPIGatewayProxyEventV2,\n\tContext,\n} from 'aws-lambda';\nimport set from 'lodash.set';\nimport type { Telemetry } from '../telemetry';\nimport type { HttpMethod } from '../types';\nimport { Endpoint, type EndpointSchemas, ResponseBuilder } from './Endpoint';\n\n/**\n * Telescope integration for request recording.\n * Uses Middy middleware pattern for compatibility with existing telescope package.\n */\nexport interface TelescopeIntegration {\n\tmiddleware: MiddlewareObj<any, any, Error, Context>;\n}\n\nimport {\n\tUnauthorizedError,\n\tUnprocessableEntityError,\n\twrapError,\n} from '@geekmidas/errors';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type {\n\tInferComposableStandardSchema,\n\tInferStandardSchema,\n} from '@geekmidas/schema';\nimport {\n\trunWithRequestContext,\n\ttype Service,\n\tServiceDiscovery,\n\ttype ServiceRecord,\n} from '@geekmidas/services';\nimport { publishConstructEvents } from '../publisher';\nimport type { MappedAudit } from './audit';\nimport type { CookieFn, HeaderFn } from './Endpoint';\nimport {\n\tcreateAuditContext,\n\texecuteWithAuditTransaction,\n} from './processAudits';\n\n// Helper function to publish events\n\n/**\n * Options for Amazon API Gateway endpoint adaptors\n */\nexport interface AmazonApiGatewayEndpointOptions {\n\t/**\n\t * Telescope integration for request recording and monitoring.\n\t *\n\t * @example\n\t * ```typescript\n\t * import { telescopeMiddleware } from '@geekmidas/telescope/lambda';\n\t *\n\t * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {\n\t * telescope: { middleware: telescopeMiddleware(telescope) },\n\t * });\n\t * ```\n\t */\n\ttelescope?: TelescopeIntegration;\n\n\t/**\n\t * Telemetry integration for distributed tracing.\n\t * Works with any OpenTelemetry-compatible backend.\n\t *\n\t * @example\n\t * ```typescript\n\t * import { OTelTelemetry } from '@geekmidas/telescope/instrumentation';\n\t *\n\t * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {\n\t * telemetry: new OTelTelemetry(),\n\t * });\n\t * ```\n\t */\n\ttelemetry?: Telemetry;\n}\n\nexport abstract class AmazonApiGatewayEndpoint<\n\tTHandler extends\n\t\t| AmazonApiGatewayV1EndpointHandler\n\t\t| AmazonApiGatewayV2EndpointHandler,\n\tTEvent extends HandlerEvent<THandler>,\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTAuditStorage extends AuditStorage | undefined = undefined,\n\tTAuditStorageServiceName extends string = string,\n\tTAuditAction extends AuditableAction<string, unknown> = AuditableAction<\n\t\tstring,\n\t\tunknown\n\t>,\n> {\n\tprotected options: AmazonApiGatewayEndpointOptions;\n\n\tconstructor(\n\t\tprotected envParser: EnvironmentParser<{}>,\n\t\tprotected readonly endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTAuditStorage,\n\t\t\tTAuditStorageServiceName,\n\t\t\tTAuditAction\n\t\t>,\n\t\toptions: AmazonApiGatewayEndpointOptions = {},\n\t) {\n\t\tthis.options = options;\n\t}\n\n\tprivate error(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tonError: (req) => {\n\t\t\t\t(req.event.logger || this.endpoint.logger).error(\n\t\t\t\t\treq.error || {},\n\t\t\t\t\t'Error processing request',\n\t\t\t\t);\n\t\t\t\tconst wrappedError = wrapError(req.error);\n\n\t\t\t\t// Set the response with the proper status code from the HttpError\n\t\t\t\treq.response = {\n\t\t\t\t\tstatusCode: wrappedError.statusCode,\n\t\t\t\t\tbody: wrappedError.body,\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t}\n\tabstract getInput(e: TEvent): GetInputResponse;\n\n\tprivate input(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { body, query, params } = this.getInput(req.event);\n\t\t\t\t\tconst headers = req.event.headers as Record<string, string>;\n\t\t\t\t\tconst header = Endpoint.createHeaders(headers);\n\t\t\t\t\tconst cookie = Endpoint.createCookies(headers.cookie);\n\n\t\t\t\t\tset(req.event, 'body', await this.endpoint.parseInput(body, 'body'));\n\n\t\t\t\t\tset(\n\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t'query',\n\t\t\t\t\t\tawait this.endpoint.parseInput(query, 'query'),\n\t\t\t\t\t);\n\t\t\t\t\tset(\n\t\t\t\t\t\treq.event,\n\t\t\t\t\t\t'params',\n\t\t\t\t\t\tawait this.endpoint.parseInput(params, 'params'),\n\t\t\t\t\t);\n\t\t\t\t\tset(req.event, 'header', header);\n\t\t\t\t\tset(req.event, 'cookie', cookie);\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Convert validation errors to 422 Unprocessable Entity\n\t\t\t\t\tif (error && typeof error === 'object' && Array.isArray(error)) {\n\t\t\t\t\t\tthrow new UnprocessableEntityError('Validation failed', error);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tabstract getLoggerContext(data: TEvent, context: Context): LoggerContext;\n\n\tprivate logger(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: (req) => {\n\t\t\t\treq.event.logger = this.endpoint.logger.child({\n\t\t\t\t\troute: this.endpoint.route,\n\t\t\t\t\thost: req.event.headers?.host,\n\t\t\t\t\tmethod: this.endpoint.method,\n\t\t\t\t\t...this.getLoggerContext(req.event, req.context),\n\t\t\t\t}) as TLogger;\n\t\t\t},\n\t\t};\n\t}\n\tprivate services(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst _logger = req.event.logger as TLogger;\n\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t>(this.envParser);\n\n\t\t\t\tconst services = await serviceDiscovery.register(\n\t\t\t\t\tthis.endpoint.services,\n\t\t\t\t);\n\n\t\t\t\treq.event.services = services;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate authorize(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst logger = req.event.logger as TLogger;\n\t\t\t\tconst services = req.event.services;\n\t\t\t\tconst header = req.event.header;\n\t\t\t\tconst cookie = req.event.cookie;\n\t\t\t\tconst session = req.event.session as TSession;\n\n\t\t\t\tconst isAuthorized = await this.endpoint.authorize({\n\t\t\t\t\theader,\n\t\t\t\t\tcookie,\n\t\t\t\t\tservices,\n\t\t\t\t\tlogger,\n\t\t\t\t\tsession,\n\t\t\t\t});\n\n\t\t\t\tif (!isAuthorized) {\n\t\t\t\t\tlogger.warn('Unauthorized access attempt');\n\t\t\t\t\tthrow new UnauthorizedError(\n\t\t\t\t\t\t'Unauthorized access to the endpoint',\n\t\t\t\t\t\t'You do not have permission to access this resource.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate database(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tif (!this.endpoint.databaseService) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst _logger = req.event.logger as TLogger;\n\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t>(this.envParser);\n\n\t\t\t\tconst db = await serviceDiscovery\n\t\t\t\t\t.register([this.endpoint.databaseService])\n\t\t\t\t\t.then(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\ts[this.endpoint.databaseService?.serviceName as keyof typeof s],\n\t\t\t\t\t);\n\n\t\t\t\t(req.event as any).db = db;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate session(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tbefore: async (req) => {\n\t\t\t\tconst logger = req.event.logger as TLogger;\n\t\t\t\tconst services = req.event.services;\n\t\t\t\tconst db = (req.event as any).db;\n\t\t\t\treq.event.session = (await this.endpoint.getSession({\n\t\t\t\t\tlogger,\n\t\t\t\t\tservices,\n\t\t\t\t\theader: req.event.header,\n\t\t\t\t\tcookie: req.event.cookie,\n\t\t\t\t\t...(db !== undefined && { db }),\n\t\t\t\t} as any)) as TSession;\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate events(): Middleware<TEvent, TInput, TServices, TLogger> {\n\t\treturn {\n\t\t\tafter: async (req) => {\n\t\t\t\tconst event = req.event;\n\t\t\t\tconst response = (event as any)\n\t\t\t\t\t.__response as InferStandardSchema<TOutSchema>;\n\t\t\t\tconst statusCode = req.response?.statusCode ?? this.endpoint.status;\n\n\t\t\t\t// Only publish events on successful responses (2xx status codes)\n\t\t\t\t// Note: Audits are processed inside the handler's transaction\n\t\t\t\tif (Endpoint.isSuccessStatus(statusCode)) {\n\t\t\t\t\tconst logger = event.logger as TLogger;\n\t\t\t\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\t\t\t\tServiceRecord<TServices>\n\t\t\t\t\t>(this.envParser);\n\n\t\t\t\t\t// Publish events\n\t\t\t\t\tawait publishConstructEvents(\n\t\t\t\t\t\tthis.endpoint,\n\t\t\t\t\t\tresponse,\n\t\t\t\t\t\tserviceDiscovery,\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async _handler(\n\t\tevent: Event<TEvent, TInput, TServices, TLogger, TSession>,\n\t) {\n\t\tconst input = this.endpoint.refineInput(event);\n\t\tconst logger = event.logger as TLogger;\n\t\tconst serviceDiscovery = ServiceDiscovery.getInstance<\n\t\t\tServiceRecord<TServices>\n\t\t>(this.envParser);\n\n\t\t// Create audit context if audit storage is configured\n\t\tconst auditContext = await createAuditContext(\n\t\t\tthis.endpoint,\n\t\t\tserviceDiscovery,\n\t\t\tlogger,\n\t\t\t{\n\t\t\t\tsession: event.session,\n\t\t\t\theader: event.header,\n\t\t\t\tcookie: event.cookie,\n\t\t\t\tservices: event.services as Record<string, unknown>,\n\t\t\t},\n\t\t);\n\n\t\t// Warn if declarative audits are configured but no audit storage\n\t\tconst audits = this.endpoint.audits as MappedAudit<\n\t\t\tTAuditAction,\n\t\t\tTOutSchema\n\t\t>[];\n\t\tif (!auditContext && audits?.length) {\n\t\t\tlogger.warn('No auditor storage service available');\n\t\t}\n\n\t\t// Get pre-resolved database from middleware\n\t\tconst rawDb = (event as any).db;\n\n\t\t// Extract RLS context if configured and not bypassed\n\t\tconst rlsActive =\n\t\t\tthis.endpoint.rlsConfig &&\n\t\t\t!this.endpoint.rlsBypass &&\n\t\t\trawDb !== undefined;\n\t\tconst rlsContext = rlsActive\n\t\t\t? await this.endpoint.rlsConfig?.extractor({\n\t\t\t\t\tservices: event.services as ServiceRecord<TServices>,\n\t\t\t\t\tsession: event.session,\n\t\t\t\t\theader: event.header,\n\t\t\t\t\tcookie: event.cookie,\n\t\t\t\t\tlogger,\n\t\t\t\t})\n\t\t\t: undefined;\n\n\t\t// Execute handler with automatic audit transaction support\n\t\tconst result = await executeWithAuditTransaction(\n\t\t\tauditContext,\n\t\t\tasync (auditor) => {\n\t\t\t\t// Use audit transaction as db only if the storage uses the same database service\n\t\t\t\tconst sameDatabase =\n\t\t\t\t\tauditContext?.storage?.databaseServiceName &&\n\t\t\t\t\tauditContext.storage.databaseServiceName ===\n\t\t\t\t\t\tthis.endpoint.databaseService?.serviceName;\n\t\t\t\tconst baseDb = sameDatabase\n\t\t\t\t\t? (auditor?.getTransaction?.() ?? rawDb)\n\t\t\t\t\t: rawDb;\n\n\t\t\t\t// Helper to execute handler with given db\n\t\t\t\tconst executeHandler = async (db: any) => {\n\t\t\t\t\tconst responseBuilder = new ResponseBuilder();\n\t\t\t\t\tconst response = await this.endpoint.handler(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\theader: event.header,\n\t\t\t\t\t\t\tcookie: event.cookie,\n\t\t\t\t\t\t\tlogger: event.logger,\n\t\t\t\t\t\t\tservices: event.services,\n\t\t\t\t\t\t\tsession: event.session,\n\t\t\t\t\t\t\tauditor,\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t} as any,\n\t\t\t\t\t\tresponseBuilder,\n\t\t\t\t\t);\n\n\t\t\t\t\t// Check if response has metadata\n\t\t\t\t\tlet data = response;\n\t\t\t\t\tlet metadata = responseBuilder.getMetadata();\n\n\t\t\t\t\tif (Endpoint.hasMetadata(response)) {\n\t\t\t\t\t\tdata = response.data;\n\t\t\t\t\t\tmetadata = response.metadata;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst output = this.endpoint.outputSchema\n\t\t\t\t\t\t? await this.endpoint.parseOutput(data)\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\treturn { output, metadata, responseBuilder };\n\t\t\t\t};\n\n\t\t\t\t// If RLS is active, wrap handler with RLS context\n\t\t\t\tif (rlsActive && rlsContext && baseDb) {\n\t\t\t\t\treturn withRlsContext(\n\t\t\t\t\t\tbaseDb,\n\t\t\t\t\t\trlsContext,\n\t\t\t\t\t\tasync (trx: any) => executeHandler(trx),\n\t\t\t\t\t\t{ prefix: this.endpoint.rlsConfig?.prefix },\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn executeHandler(baseDb);\n\t\t\t},\n\t\t\t// Process declarative audits after handler (inside transaction)\n\t\t\tasync (result, auditor) => {\n\t\t\t\tif (!audits?.length) return;\n\n\t\t\t\tfor (const audit of audits) {\n\t\t\t\t\tif (audit.when && !audit.when(result.output as any)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst payload = audit.payload(result.output as any);\n\t\t\t\t\tconst entityId = audit.entityId?.(result.output as any);\n\t\t\t\t\tauditor.audit(audit.type as any, payload as any, {\n\t\t\t\t\t\ttable: audit.table,\n\t\t\t\t\t\tentityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Pass rawDb so storage can reuse existing transactions\n\t\t\t{ db: rawDb },\n\t\t);\n\n\t\tconst { output, metadata } = result;\n\t\tconst body = output !== undefined ? JSON.stringify(output) : undefined;\n\n\t\t// Store response for middleware access\n\t\t(event as any).__response = output;\n\n\t\t// Build response with metadata\n\t\tconst lambdaResponse: AmazonApiGatewayEndpointHandlerResponse = {\n\t\t\tstatusCode: metadata.status ?? this.endpoint.status,\n\t\t\tbody,\n\t\t};\n\n\t\t// Add custom headers\n\t\tif (metadata.headers && Object.keys(metadata.headers).length > 0) {\n\t\t\tlambdaResponse.headers = { ...metadata.headers };\n\t\t}\n\n\t\t// Format cookies as Set-Cookie headers\n\t\tif (metadata.cookies && metadata.cookies.size > 0) {\n\t\t\tconst setCookieHeaders: string[] = [];\n\t\t\tfor (const [name, { value, options }] of metadata.cookies) {\n\t\t\t\tsetCookieHeaders.push(\n\t\t\t\t\tEndpoint.formatCookieHeader(name, value, options),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (setCookieHeaders.length > 0) {\n\t\t\t\tlambdaResponse.multiValueHeaders = {\n\t\t\t\t\t...lambdaResponse.multiValueHeaders,\n\t\t\t\t\t'Set-Cookie': setCookieHeaders,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn lambdaResponse;\n\t}\n\n\t/**\n\t * Convert Telemetry interface to Middy middleware\n\t */\n\tprivate telemetry(): Middleware<TEvent, TInput, TServices, TLogger> | null {\n\t\tif (!this.options.telemetry) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst telemetry = this.options.telemetry;\n\t\tlet ctx: any;\n\n\t\treturn {\n\t\t\tbefore: (request) => {\n\t\t\t\tctx = telemetry.onRequestStart({\n\t\t\t\t\tevent: request.event,\n\t\t\t\t\tcontext: request.context,\n\t\t\t\t});\n\t\t\t},\n\t\t\tafter: (request) => {\n\t\t\t\tif (ctx) {\n\t\t\t\t\ttelemetry.onRequestEnd(ctx, {\n\t\t\t\t\t\tstatusCode: request.response?.statusCode ?? 200,\n\t\t\t\t\t\tbody: request.response?.body,\n\t\t\t\t\t\theaders: request.response?.headers,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tonError: (request) => {\n\t\t\t\tif (ctx && request.error) {\n\t\t\t\t\ttelemetry.onRequestError(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\trequest.error instanceof Error\n\t\t\t\t\t\t\t? request.error\n\t\t\t\t\t\t\t: new Error(String(request.error)),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tget handler() {\n\t\tconst handler = this._handler.bind(this);\n\t\tlet chain = middy(handler)\n\t\t\t.use(this.logger())\n\t\t\t.use(this.error())\n\t\t\t.use(this.services())\n\t\t\t.use(this.input())\n\t\t\t.use(this.database())\n\t\t\t.use(this.session())\n\t\t\t.use(this.authorize())\n\t\t\t.use(this.events());\n\n\t\t// Add telemetry middleware if configured (runs early for span creation)\n\t\tconst telemetryMiddleware = this.telemetry();\n\t\tif (telemetryMiddleware) {\n\t\t\tchain = chain.use(telemetryMiddleware);\n\t\t}\n\n\t\t// Add Telescope middleware if configured (runs first/last in chain)\n\t\tif (this.options.telescope?.middleware) {\n\t\t\tchain = chain.use(this.options.telescope.middleware);\n\t\t}\n\n\t\t// Wrap entire Middy chain in request context for service access\n\t\tconst wrappedHandler = async (event: TEvent, context: Context) => {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst requestId = context.awsRequestId;\n\t\t\tconst logger = this.endpoint.logger.child({ requestId }) as TLogger;\n\n\t\t\t// Cast event to any since Middy middlewares enrich the event with\n\t\t\t// services, logger, session, etc. during the middleware chain execution\n\t\t\treturn runWithRequestContext({ logger, requestId, startTime }, () =>\n\t\t\t\tchain(event as unknown as Parameters<typeof chain>[0], context),\n\t\t\t);\n\t\t};\n\n\t\treturn wrappedHandler as unknown as THandler;\n\t}\n}\n\nexport type Event<\n\tTEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = {\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n\theader: HeaderFn;\n\tcookie: CookieFn;\n\tsession: TSession;\n} & TEvent &\n\tInferComposableStandardSchema<TInput>;\n\ntype Middleware<\n\tTEvent extends APIGatewayProxyEvent | APIGatewayProxyEventV2,\n\tTInput extends EndpointSchemas = {},\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n> = MiddlewareObj<Event<TEvent, TInput, TServices, TLogger, TSession>>;\n\nexport type AmazonApiGatewayEndpointHandlerResponse = {\n\tstatusCode: number;\n\tbody: string | undefined;\n\theaders?: Record<string, string>;\n\tmultiValueHeaders?: Record<string, string[]>;\n};\n\nexport type LoggerContext = {\n\tfn: {\n\t\tname: string;\n\t\tversion: string;\n\t};\n\treq: {\n\t\tid: string | undefined;\n\t\tawsRequestId: string;\n\t\tpath: string;\n\t\tip: string | undefined;\n\t\tuserAgent: string | undefined;\n\t};\n};\n\nexport type GetInputResponse = {\n\tbody: any;\n\tquery: any;\n\tparams: any;\n};\n\nexport type AmazonApiGatewayV1EndpointHandler = (\n\tevent: APIGatewayProxyEvent,\n\tcontext: Context,\n) => Promise<AmazonApiGatewayEndpointHandlerResponse>;\n\nexport type AmazonApiGatewayV2EndpointHandler = (\n\tevent: APIGatewayProxyEventV2,\n\tcontext: Context,\n) => Promise<AmazonApiGatewayEndpointHandlerResponse>;\n\nexport type HandlerEvent<T extends Function> = T extends (\n\tevent: infer E,\n\tcontext: Context,\n) => any\n\t? E\n\t: never;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayEndpointAdaptor-Bxvs-F0F.d.cts","names":[],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayEndpointAdaptor-CQSZArI6.d.mts","names":[],"sources":["../src/endpoints/AmazonApiGatewayEndpointAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;UAoBiB,oBAAA;EAAA,UAAA,EACJ,aADwB,CAAA,GAAA,EAAA,GAAA,EACA,KADA,EACO,OADP,CAAA;;AAiCrC;;;AA4Ba,UA5BI,+BAAA,CA4BJ;EAAS;AAGtB;;;;;;;;;;;EAUuB,SAAG,CAAA,EA5Bb,oBA4Ba;EAAM;;;;;;;;;;;;;EAuBd,SACf,CAAA,EArCU,SAqCV;;AAEA,uBApCmB,wBAoCnB,CAAA,iBAlCC,iCAkCD,GAjCC,iCAiCD,EAAA,eAhCa,YAgCb,CAhC0B,QAgC1B,CAAA,EAAA,eAAA,MAAA,EAAA,gBA9Bc,UA8Bd,EAAA,eA7Ba,eA6Bb,GAAA,CAAA,CAAA,EAAA,mBA5BiB,gBA4BjB,GAAA,SAAA,GAAA,SAAA,EAAA,kBA3BgB,OA2BhB,EAAA,GAAA,EAAA,EAAA,gBA1Bc,MA0Bd,GA1BuB,MA0BvB,EAAA,WAAA,OAAA,EAAA,wBAxBsB,cAwBtB,CAAA,GAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,mCAAA,MAAA,GAAA,MAAA,EAAA,sBAtBoB,YAsBpB,GAAA,SAAA,GAAA,SAAA,EAAA,iCAAA,MAAA,GAAA,MAAA,EAAA,qBApBmB,eAoBnB,CAAA,MAAA,EAAA,OAAA,CAAA,GApBsD,eAoBtD,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA;EAAwB,UACxB,SAAA,EAboB,iBAapB,CAAA,CAAA,CAAA,CAAA;EAAY,mBAZgB,QAAA,EAAA,QAAA,CAC5B,MAD4B,EAE5B,OAF4B,EAG5B,MAH4B,EAI5B,UAJ4B,EAK5B,SAL4B,EAM5B,OAN4B,EAO5B,QAP4B,EAQ5B,eAR4B,EAS5B,0BAT4B,EAU5B,aAV4B,EAW5B,wBAX4B,EAY5B,YAZ4B,CAAA;EAAQ,UAJnB,OAAA,EAAA,+BAAA;EAA+B,WAG5B,CAAA,SAAA,EAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,EACQ,QADR,CAEpB,MAFoB,EAGpB,OAHoB,EAIpB,MAJoB,EAKpB,UALoB,EAMpB,SANoB,EAOpB,OAPoB,EAQpB,QARoB,EASpB,eAToB,EAUpB,0BAVoB,EAWpB,aAXoB,EAYpB,wBAZoB,EAapB,YAboB,CAAA,EAAA,OAAA,CAAA,EAeZ,+BAfY;EAAiB,QAErC,KAAA;EAAM,SACN,QAAA,CAAA,CAAA,EAkCmB,MAlCnB,CAAA,EAkC4B,gBAlC5B;EAAO,QACP,KAAA;EAAM,SACN,gBAAA,CAAA,IAAA,EAoE8B,MApE9B,EAAA,OAAA,EAoE+C,OApE/C,CAAA,EAoEyD,aApEzD;EAAU,QACV,MAAA;EAAS,QACT,QAAA;EAAO,QACP,SAAA;EAAQ,QACR,QAAA;EAAe,QACf,OAAA;EAA0B,QAC1B,MAAA;EAAa,QACb,QAAA;EAAwB;;;EAGoB,QAsBzB,SAAA;EAAM,IAAG,OAAA,CAAA,CAAA,EAoZO,QApZP;;AAoCmB,KAoXtC,KApXsC,CAAA,eAqXlC,oBArXkC,GAqXX,sBArXW,EAAA,eAsXlC,eAtXkC,GAAA,CAAA,CAAA,EAAA,kBAuX/B,OAvX+B,EAAA,GAAA,EAAA,EAAA,gBAwXjC,MAxXiC,GAwXxB,MAxXwB,EAAA,WAAA,OAAA,CAAA,GAAA;EAAO,QAAG,EA2XjD,aA3XiD,CA2XnC,SA3XmC,CAAA;EAAa,MAgXnC,EAY7B,OAZ6B;EAAQ,MAAA,EAarC,QAbqC;EAIlC,MAAA,EAUH,QAVQ;EAAA,OAAA,EAWP,QAXO;CAAA,GAYb,MAXY,GAYf,6BAZe,CAYe,MAZf,CAAA;AAAuB,KAsB3B,uCAAA,GAtB2B;EAAsB,UAC7C,EAAA,MAAA;EAAe,IACZ,EAAA,MAAA,GAAA,SAAA;EAAO,OACT,CAAA,EAsBN,MAtBM,CAAA,MAAA,EAAA,MAAA,CAAA;EAAM,iBAAG,CAAA,EAuBL,MAvBK,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA;CAAM;AAGrB,KAuBC,aAAA,GAvBD;EAAa,EAAA,EACf;IACA,IAAA,EAAA,MAAA;IACA,OAAA,EAAA,MAAA;EAAQ,CAAA;EACC,GACd,EAAA;IAC2B,EAAA,EAAA,MAAA,GAAA,SAAA;IAA9B,YAAA,EAAA,MAAA;IAA6B,IAAA,EAAA,MAAA;IAUlB,EAAA,EAAA,MAAA,GAAA,SAAA;IAAuC,SAAA,EAAA,MAAA,GAAA,SAAA;EAAA,CAAA;CAGlC;AACU,KAiBf,gBAAA,GAjBe;EAGf,IAAA,EAAA,GAAA;EAcA,KAAA,EAAA,GAAA;EAMA,MAAA,EAAA,GAAA;CAAiC;AACrC,KADI,iCAAA,GACJ,CAAA,KAAA,EAAA,oBAAA,EAAA,OAAA,EACE,OADF,EAAA,GAEH,OAFG,CAEK,uCAFL,CAAA;AACE,KAGE,iCAAA,GAHF,CAAA,KAAA,EAIF,sBAJE,EAAA,OAAA,EAKA,OALA,EAAA,GAML,OANK,CAMG,uCANH,CAAA;AACG,KAOD,YAPC,CAAA,UAOsB,QAPtB,CAAA,GAOkC,CAPlC,UAAA,CAAA,KAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EASH,OATG,EAAA,GAAA,GAAA,IAWV,CAXU,GAAA,KAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayV2EndpointAdaptor-BBayh2_k.d.mts","names":[],"sources":["../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;cAiBa,kEAEI,2BACD,yCACI,4DACD,gCACF,SAAS,oDAED,qDACf,yBACT,mCACA,wBACA,QACA,SACA,QACA,YACA,WACA,SACA,UACA;uBA4C+B;EA/DnB,mBAAA,QAAA,EAgE2B,QAhED,CAiEpC,MAjEoC,EAkEpC,OAlEoC,EAmEpC,MAnEoC,EAoEpC,UApEoC,EAqEpC,SArEoC,EAsEpC,OAtEoC,EAuEpC,QAvEoC,EAwEpC,eAxEoC,CAAA;EAAA,QAAA,CAAA,CAAA,EAqBjB,sBArBiB,CAAA,EAqBQ,gBArBR;EAAA,gBAEtB,CAAA,KAAA,EA2CR,sBA3CQ,EAAA,OAAA,EA4CN,OA5CM,CAAA,EA6Cb,aA7Ca;EAAU,WACX,CAAA,SAAA,EA4DgB,iBA5DhB,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,EA6DwB,QA7DxB,CA8Db,MA9Da,EA+Db,OA/Da,EAgEb,MAhEa,EAiEb,UAjEa,EAkEb,SAlEa,EAmEb,OAnEa,EAoEb,QApEa,EAqEb,eArEa,CAAA,EAAA,OAAA,CAAA,EAuEL,+BAvEK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayV2EndpointAdaptor-CHi3Qe1s.d.cts","names":[],"sources":["../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;cAiBa,kEAEI,2BACD,yCACI,4DACD,gCACF,SAAS,oDAED,qDACf,yBACT,mCACA,wBACA,QACA,SACA,QACA,YACA,WACA,SACA,UACA;uBA4C+B;EA/DnB,mBAAA,QAAA,EAgE2B,QAhED,CAiEpC,MAjEoC,EAkEpC,OAlEoC,EAmEpC,MAnEoC,EAoEpC,UApEoC,EAqEpC,SArEoC,EAsEpC,OAtEoC,EAuEpC,QAvEoC,EAwEpC,eAxEoC,CAAA;EAAA,QAAA,CAAA,CAAA,EAqBjB,sBArBiB,CAAA,EAqBQ,gBArBR;EAAA,gBAEtB,CAAA,KAAA,EA2CR,sBA3CQ,EAAA,OAAA,EA4CN,OA5CM,CAAA,EA6Cb,aA7Ca;EAAU,WACX,CAAA,SAAA,EA4DgB,iBA5DhB,CAAA,CAAA,CAAA,CAAA,EAAA,QAAA,EA6DwB,QA7DxB,CA8Db,MA9Da,EA+Db,OA/Da,EAgEb,MAhEa,EAiEb,UAjEa,EAkEb,SAlEa,EAmEb,OAnEa,EAoEb,QApEa,EAqEb,eArEa,CAAA,EAAA,OAAA,CAAA,EAuEL,+BAvEK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayV2EndpointAdaptor-CjPCxIb1.cjs","names":["AmazonApiGatewayEndpoint","e: APIGatewayProxyEventV2","processedParams: Record<string, string | string[]>","event: APIGatewayProxyEventV2","context: Context","envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher\n\t\t>","options: AmazonApiGatewayEndpointOptions"],"sources":["../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { APIGatewayProxyEventV2, Context } from 'aws-lambda';\nimport type { HttpMethod } from '../types';\nimport {\n\tAmazonApiGatewayEndpoint,\n\ttype AmazonApiGatewayEndpointOptions,\n\ttype AmazonApiGatewayV2EndpointHandler,\n\ttype GetInputResponse,\n\ttype LoggerContext,\n} from './AmazonApiGatewayEndpointAdaptor';\nimport type { Endpoint, EndpointSchemas } from './Endpoint';\nimport { parseQueryParams } from './parseQueryParams';\n\nexport class AmazonApiGatewayV2Endpoint<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n> extends AmazonApiGatewayEndpoint<\n\tAmazonApiGatewayV2EndpointHandler,\n\tAPIGatewayProxyEventV2,\n\tTRoute,\n\tTMethod,\n\tTInput,\n\tTOutSchema,\n\tTServices,\n\tTLogger,\n\tTSession,\n\tTEventPublisher\n> {\n\toverride getInput(e: APIGatewayProxyEventV2): GetInputResponse {\n\t\t// API Gateway V2 handles arrays as comma-separated values\n\t\tconst queryParams = e.queryStringParameters || {};\n\t\tconst processedParams: Record<string, string | string[]> = {};\n\n\t\tfor (const [key, value] of Object.entries(queryParams)) {\n\t\t\tif (value !== undefined) {\n\t\t\t\t// Check if value contains comma and could be an array\n\t\t\t\t// Be careful not to split values that legitimately contain commas\n\t\t\t\tif (value.includes(',') && !value.includes('\"')) {\n\t\t\t\t\tprocessedParams[key] = value.split(',').map((v) => v.trim());\n\t\t\t\t} else {\n\t\t\t\t\tprocessedParams[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tbody: e.body ? JSON.parse(e.body) : undefined,\n\t\t\tquery: parseQueryParams(processedParams),\n\t\t\tparams: e.pathParameters || {},\n\t\t};\n\t}\n\toverride getLoggerContext(\n\t\tevent: APIGatewayProxyEventV2,\n\t\tcontext: Context,\n\t): LoggerContext {\n\t\treturn {\n\t\t\tfn: {\n\t\t\t\tname: context.functionName,\n\t\t\t\tversion: context.functionVersion,\n\t\t\t},\n\t\t\treq: {\n\t\t\t\tid: event.requestContext.requestId,\n\t\t\t\tawsRequestId: context.awsRequestId,\n\t\t\t\tip: event.requestContext.http.sourceIp,\n\t\t\t\tuserAgent: event.requestContext.http.userAgent || undefined,\n\t\t\t\tpath: event.requestContext.http.path,\n\t\t\t},\n\t\t};\n\t}\n\tconstructor(\n\t\tprotected override envParser: EnvironmentParser<{}>,\n\t\tprotected override readonly endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher\n\t\t>,\n\t\toptions: AmazonApiGatewayEndpointOptions = {},\n\t) {\n\t\tsuper(envParser, endpoint, options);\n\t}\n}\n\n// Re-export options type for convenience\nexport type { AmazonApiGatewayEndpointOptions };\n"],"mappings":";;;;AAiBA,IAAa,6BAAb,cASUA,iEAWR;CACD,AAAS,SAASC,GAA6C;EAE9D,MAAM,cAAc,EAAE,yBAAyB,CAAE;EACjD,MAAMC,kBAAqD,CAAE;AAE7D,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,YAAY,CACrD,KAAI,iBAGH,KAAI,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,KAAI,CAC9C,iBAAgB,OAAO,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;MAE5D,iBAAgB,OAAO;AAK1B,SAAO;GACN,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,KAAK;GACjC,OAAO,0CAAiB,gBAAgB;GACxC,QAAQ,EAAE,kBAAkB,CAAE;EAC9B;CACD;CACD,AAAS,iBACRC,OACAC,SACgB;AAChB,SAAO;GACN,IAAI;IACH,MAAM,QAAQ;IACd,SAAS,QAAQ;GACjB;GACD,KAAK;IACJ,IAAI,MAAM,eAAe;IACzB,cAAc,QAAQ;IACtB,IAAI,MAAM,eAAe,KAAK;IAC9B,WAAW,MAAM,eAAe,KAAK;IACrC,MAAM,MAAM,eAAe,KAAK;GAChC;EACD;CACD;CACD,YACoBC,WACSC,UAU5BC,UAA2C,CAAE,GAC5C;AACD,QAAM,WAAW,UAAU,QAAQ;EAbhB;EACS;CAa5B;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmazonApiGatewayV2EndpointAdaptor-DrbEaZ2_.mjs","names":["e: APIGatewayProxyEventV2","processedParams: Record<string, string | string[]>","event: APIGatewayProxyEventV2","context: Context","envParser: EnvironmentParser<{}>","endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher\n\t\t>","options: AmazonApiGatewayEndpointOptions"],"sources":["../src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts"],"sourcesContent":["import type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport type { APIGatewayProxyEventV2, Context } from 'aws-lambda';\nimport type { HttpMethod } from '../types';\nimport {\n\tAmazonApiGatewayEndpoint,\n\ttype AmazonApiGatewayEndpointOptions,\n\ttype AmazonApiGatewayV2EndpointHandler,\n\ttype GetInputResponse,\n\ttype LoggerContext,\n} from './AmazonApiGatewayEndpointAdaptor';\nimport type { Endpoint, EndpointSchemas } from './Endpoint';\nimport { parseQueryParams } from './parseQueryParams';\n\nexport class AmazonApiGatewayV2Endpoint<\n\tTRoute extends string,\n\tTMethod extends HttpMethod,\n\tTInput extends EndpointSchemas = {},\n\tTOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tTSession = unknown,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n> extends AmazonApiGatewayEndpoint<\n\tAmazonApiGatewayV2EndpointHandler,\n\tAPIGatewayProxyEventV2,\n\tTRoute,\n\tTMethod,\n\tTInput,\n\tTOutSchema,\n\tTServices,\n\tTLogger,\n\tTSession,\n\tTEventPublisher\n> {\n\toverride getInput(e: APIGatewayProxyEventV2): GetInputResponse {\n\t\t// API Gateway V2 handles arrays as comma-separated values\n\t\tconst queryParams = e.queryStringParameters || {};\n\t\tconst processedParams: Record<string, string | string[]> = {};\n\n\t\tfor (const [key, value] of Object.entries(queryParams)) {\n\t\t\tif (value !== undefined) {\n\t\t\t\t// Check if value contains comma and could be an array\n\t\t\t\t// Be careful not to split values that legitimately contain commas\n\t\t\t\tif (value.includes(',') && !value.includes('\"')) {\n\t\t\t\t\tprocessedParams[key] = value.split(',').map((v) => v.trim());\n\t\t\t\t} else {\n\t\t\t\t\tprocessedParams[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tbody: e.body ? JSON.parse(e.body) : undefined,\n\t\t\tquery: parseQueryParams(processedParams),\n\t\t\tparams: e.pathParameters || {},\n\t\t};\n\t}\n\toverride getLoggerContext(\n\t\tevent: APIGatewayProxyEventV2,\n\t\tcontext: Context,\n\t): LoggerContext {\n\t\treturn {\n\t\t\tfn: {\n\t\t\t\tname: context.functionName,\n\t\t\t\tversion: context.functionVersion,\n\t\t\t},\n\t\t\treq: {\n\t\t\t\tid: event.requestContext.requestId,\n\t\t\t\tawsRequestId: context.awsRequestId,\n\t\t\t\tip: event.requestContext.http.sourceIp,\n\t\t\t\tuserAgent: event.requestContext.http.userAgent || undefined,\n\t\t\t\tpath: event.requestContext.http.path,\n\t\t\t},\n\t\t};\n\t}\n\tconstructor(\n\t\tprotected override envParser: EnvironmentParser<{}>,\n\t\tprotected override readonly endpoint: Endpoint<\n\t\t\tTRoute,\n\t\t\tTMethod,\n\t\t\tTInput,\n\t\t\tTOutSchema,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tTSession,\n\t\t\tTEventPublisher\n\t\t>,\n\t\toptions: AmazonApiGatewayEndpointOptions = {},\n\t) {\n\t\tsuper(envParser, endpoint, options);\n\t}\n}\n\n// Re-export options type for convenience\nexport type { AmazonApiGatewayEndpointOptions };\n"],"mappings":";;;;AAiBA,IAAa,6BAAb,cASU,yBAWR;CACD,AAAS,SAASA,GAA6C;EAE9D,MAAM,cAAc,EAAE,yBAAyB,CAAE;EACjD,MAAMC,kBAAqD,CAAE;AAE7D,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,YAAY,CACrD,KAAI,iBAGH,KAAI,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,KAAI,CAC9C,iBAAgB,OAAO,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;MAE5D,iBAAgB,OAAO;AAK1B,SAAO;GACN,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,KAAK;GACjC,OAAO,iBAAiB,gBAAgB;GACxC,QAAQ,EAAE,kBAAkB,CAAE;EAC9B;CACD;CACD,AAAS,iBACRC,OACAC,SACgB;AAChB,SAAO;GACN,IAAI;IACH,MAAM,QAAQ;IACd,SAAS,QAAQ;GACjB;GACD,KAAK;IACJ,IAAI,MAAM,eAAe;IACzB,cAAc,QAAQ;IACtB,IAAI,MAAM,eAAe,KAAK;IAC9B,WAAW,MAAM,eAAe,KAAK;IACrC,MAAM,MAAM,eAAe,KAAK;GAChC;EACD;CACD;CACD,YACoBC,WACSC,UAU5BC,UAA2C,CAAE,GAC5C;AACD,QAAM,WAAW,UAAU,QAAQ;EAbhB;EACS;CAa5B;AACD"}
@@ -1,12 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-D_7f5MfS.cjs";
2
- import * as _geekmidas_audit5 from "@geekmidas/audit";
3
- import * as _geekmidas_logger4 from "@geekmidas/logger";
4
- import * as _geekmidas_schema3 from "@geekmidas/schema";
5
-
6
- //#region src/functions/index.d.ts
7
- declare const f: FunctionBuilder<_geekmidas_schema3.ComposableStandardSchema, undefined, [], _geekmidas_logger4.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit5.AuditableAction<string, unknown>>;
8
- //# sourceMappingURL=index.d.ts.map
9
-
10
- //#endregion
11
- export { f };
12
- //# sourceMappingURL=index-BfeupgMl.d.cts.map
@@ -1,12 +0,0 @@
1
- import { FunctionBuilder } from "./FunctionBuilder-m5BNA2Ap.mjs";
2
- import * as _geekmidas_audit2 from "@geekmidas/audit";
3
- import * as _geekmidas_logger1 from "@geekmidas/logger";
4
- import * as _geekmidas_schema0 from "@geekmidas/schema";
5
-
6
- //#region src/functions/index.d.ts
7
- declare const f: FunctionBuilder<_geekmidas_schema0.ComposableStandardSchema, undefined, [], _geekmidas_logger1.Logger, undefined, string, undefined, string, undefined, string, _geekmidas_audit2.AuditableAction<string, unknown>>;
8
- //# sourceMappingURL=index.d.ts.map
9
-
10
- //#endregion
11
- export { f };
12
- //# sourceMappingURL=index-_5DYCNAt.d.mts.map
@@ -1,39 +0,0 @@
1
-
2
- //#region src/endpoints/parseHonoQuery.ts
3
- /**
4
- * Parse Hono query parameters to handle arrays and nested objects
5
- * Hono provides c.req.queries() for arrays, but we need to handle dot notation for objects
6
- */
7
- function parseHonoQuery(c) {
8
- const allParams = c.req.query();
9
- const result = {};
10
- for (const [key, value] of Object.entries(allParams)) if (key.includes(".")) {
11
- const parts = key.split(".");
12
- let current = result;
13
- for (let i = 0; i < parts.length - 1; i++) {
14
- const part = parts[i];
15
- if (!part) continue;
16
- if (!current[part] || typeof current[part] !== "object" || Array.isArray(current[part])) current[part] = {};
17
- current = current[part];
18
- }
19
- const lastPart = parts[parts.length - 1];
20
- if (!lastPart) continue;
21
- const multipleValues = c.req.queries(key);
22
- if (multipleValues && multipleValues.length > 1) current[lastPart] = multipleValues;
23
- else current[lastPart] = value;
24
- } else {
25
- const multipleValues = c.req.queries(key);
26
- if (multipleValues && multipleValues.length > 1) result[key] = multipleValues;
27
- else result[key] = value;
28
- }
29
- return result;
30
- }
31
-
32
- //#endregion
33
- Object.defineProperty(exports, 'parseHonoQuery', {
34
- enumerable: true,
35
- get: function () {
36
- return parseHonoQuery;
37
- }
38
- });
39
- //# sourceMappingURL=parseHonoQuery-D4MhxTRc.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseHonoQuery-D4MhxTRc.cjs","names":["c: Context","result: Record<string, any>"],"sources":["../src/endpoints/parseHonoQuery.ts"],"sourcesContent":["import type { Context } from 'hono';\n\n/**\n * Parse Hono query parameters to handle arrays and nested objects\n * Hono provides c.req.queries() for arrays, but we need to handle dot notation for objects\n */\nexport function parseHonoQuery(c: Context): Record<string, any> {\n\tconst allParams = c.req.query();\n\tconst result: Record<string, any> = {};\n\n\t// First, handle all query parameters\n\tfor (const [key, value] of Object.entries(allParams)) {\n\t\tif (key.includes('.')) {\n\t\t\t// Handle dot notation for objects\n\t\t\tconst parts = key.split('.');\n\t\t\tlet current = result;\n\n\t\t\t// Navigate/create the nested structure\n\t\t\tfor (let i = 0; i < parts.length - 1; i++) {\n\t\t\t\tconst part = parts[i];\n\t\t\t\tif (!part) continue;\n\t\t\t\tif (\n\t\t\t\t\t!current[part] ||\n\t\t\t\t\ttypeof current[part] !== 'object' ||\n\t\t\t\t\tArray.isArray(current[part])\n\t\t\t\t) {\n\t\t\t\t\tcurrent[part] = {};\n\t\t\t\t}\n\t\t\t\tcurrent = current[part];\n\t\t\t}\n\n\t\t\t// Set the final value, checking for arrays in nested keys\n\t\t\tconst lastPart = parts[parts.length - 1];\n\t\t\tif (!lastPart) continue;\n\t\t\tconst multipleValues = c.req.queries(key);\n\t\t\tif (multipleValues && multipleValues.length > 1) {\n\t\t\t\tcurrent[lastPart] = multipleValues;\n\t\t\t} else {\n\t\t\t\tcurrent[lastPart] = value;\n\t\t\t}\n\t\t} else {\n\t\t\t// For regular keys, check if there are multiple values\n\t\t\tconst multipleValues = c.req.queries(key);\n\t\t\tif (multipleValues && multipleValues.length > 1) {\n\t\t\t\tresult[key] = multipleValues;\n\t\t\t} else {\n\t\t\t\tresult[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,eAAeA,GAAiC;CAC/D,MAAM,YAAY,EAAE,IAAI,OAAO;CAC/B,MAAMC,SAA8B,CAAE;AAGtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,UAAU,CACnD,KAAI,IAAI,SAAS,IAAI,EAAE;EAEtB,MAAM,QAAQ,IAAI,MAAM,IAAI;EAC5B,IAAI,UAAU;AAGd,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;GAC1C,MAAM,OAAO,MAAM;AACnB,QAAK,KAAM;AACX,QACE,QAAQ,gBACF,QAAQ,UAAU,YACzB,MAAM,QAAQ,QAAQ,MAAM,CAE5B,SAAQ,QAAQ,CAAE;AAEnB,aAAU,QAAQ;EAClB;EAGD,MAAM,WAAW,MAAM,MAAM,SAAS;AACtC,OAAK,SAAU;EACf,MAAM,iBAAiB,EAAE,IAAI,QAAQ,IAAI;AACzC,MAAI,kBAAkB,eAAe,SAAS,EAC7C,SAAQ,YAAY;MAEpB,SAAQ,YAAY;CAErB,OAAM;EAEN,MAAM,iBAAiB,EAAE,IAAI,QAAQ,IAAI;AACzC,MAAI,kBAAkB,eAAe,SAAS,EAC7C,QAAO,OAAO;MAEd,QAAO,OAAO;CAEf;AAGF,QAAO;AACP"}