@geekmidas/constructs 3.0.0 → 3.0.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 (179) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/AWSLambdaFunction-BF1gJJjG.d.mts.map +1 -1
  3. package/dist/{AWSLambdaFunction-wtE9Lx_-.cjs → AWSLambdaFunction-CPEAl5nZ.cjs} +15 -3
  4. package/dist/AWSLambdaFunction-CPEAl5nZ.cjs.map +1 -0
  5. package/dist/{AWSLambdaFunction-BDL7Thi_.mjs → AWSLambdaFunction-DJiCAPAf.mjs} +15 -3
  6. package/dist/AWSLambdaFunction-DJiCAPAf.mjs.map +1 -0
  7. package/dist/AWSLambdaFunction-tzqv5XU6.d.cts.map +1 -1
  8. package/dist/{AWSLambdaSubscriberAdaptor-DsRmmGm1.mjs → AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs} +14 -3
  9. package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs.map +1 -0
  10. package/dist/{AWSLambdaSubscriberAdaptor-BtBKExsh.cjs → AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs} +13 -2
  11. package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs.map +1 -0
  12. package/dist/{AmazonApiGatewayEndpointAdaptor-CQSZArI6.d.mts → AmazonApiGatewayEndpointAdaptor-B30TqZRX.d.mts} +2 -1
  13. package/dist/AmazonApiGatewayEndpointAdaptor-B30TqZRX.d.mts.map +1 -0
  14. package/dist/{AmazonApiGatewayEndpointAdaptor-Bxvs-F0F.d.cts → AmazonApiGatewayEndpointAdaptor-D4lAuXA-.d.cts} +2 -1
  15. package/dist/AmazonApiGatewayEndpointAdaptor-D4lAuXA-.d.cts.map +1 -0
  16. package/dist/{AmazonApiGatewayEndpointAdaptor-BPxHm8Tg.mjs → AmazonApiGatewayEndpointAdaptor-ciUHVvPX.mjs} +6 -2
  17. package/dist/AmazonApiGatewayEndpointAdaptor-ciUHVvPX.mjs.map +1 -0
  18. package/dist/{AmazonApiGatewayEndpointAdaptor-1XyivLJs.cjs → AmazonApiGatewayEndpointAdaptor-jDYqkgFE.cjs} +6 -2
  19. package/dist/AmazonApiGatewayEndpointAdaptor-jDYqkgFE.cjs.map +1 -0
  20. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D9zY3nHe.d.cts → AmazonApiGatewayV1EndpointAdaptor-B5xFYauV.d.cts} +2 -2
  21. package/dist/{AmazonApiGatewayV1EndpointAdaptor-D9zY3nHe.d.cts.map → AmazonApiGatewayV1EndpointAdaptor-B5xFYauV.d.cts.map} +1 -1
  22. package/dist/{AmazonApiGatewayV1EndpointAdaptor-xTrFYt48.d.mts → AmazonApiGatewayV1EndpointAdaptor-CG1UJoAK.d.mts} +2 -2
  23. package/dist/{AmazonApiGatewayV1EndpointAdaptor-xTrFYt48.d.mts.map → AmazonApiGatewayV1EndpointAdaptor-CG1UJoAK.d.mts.map} +1 -1
  24. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CQ0dtx1M.mjs → AmazonApiGatewayV1EndpointAdaptor-COLHHAsd.mjs} +2 -2
  25. package/dist/{AmazonApiGatewayV1EndpointAdaptor-CQ0dtx1M.mjs.map → AmazonApiGatewayV1EndpointAdaptor-COLHHAsd.mjs.map} +1 -1
  26. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Cm2wieNy.cjs → AmazonApiGatewayV1EndpointAdaptor-CW0BCUkm.cjs} +2 -2
  27. package/dist/{AmazonApiGatewayV1EndpointAdaptor-Cm2wieNy.cjs.map → AmazonApiGatewayV1EndpointAdaptor-CW0BCUkm.cjs.map} +1 -1
  28. package/dist/{AmazonApiGatewayV2EndpointAdaptor-CjPCxIb1.cjs → AmazonApiGatewayV2EndpointAdaptor-C7ZrwcTX.cjs} +6 -2
  29. package/dist/{AmazonApiGatewayV2EndpointAdaptor-CjPCxIb1.cjs.map → AmazonApiGatewayV2EndpointAdaptor-C7ZrwcTX.cjs.map} +1 -1
  30. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DrbEaZ2_.mjs → AmazonApiGatewayV2EndpointAdaptor-Cl9ERGyi.mjs} +6 -2
  31. package/dist/{AmazonApiGatewayV2EndpointAdaptor-DrbEaZ2_.mjs.map → AmazonApiGatewayV2EndpointAdaptor-Cl9ERGyi.mjs.map} +1 -1
  32. package/dist/{AmazonApiGatewayV2EndpointAdaptor-CHi3Qe1s.d.cts → AmazonApiGatewayV2EndpointAdaptor-OkwjABOz.d.cts} +4 -3
  33. package/dist/AmazonApiGatewayV2EndpointAdaptor-OkwjABOz.d.cts.map +1 -0
  34. package/dist/{AmazonApiGatewayV2EndpointAdaptor-BBayh2_k.d.mts → AmazonApiGatewayV2EndpointAdaptor-ofjuxcPV.d.mts} +4 -3
  35. package/dist/AmazonApiGatewayV2EndpointAdaptor-ofjuxcPV.d.mts.map +1 -0
  36. package/dist/{FunctionExecutionWrapper-Ba0Z-iwe.mjs → FunctionExecutionWrapper-B0ZAssiy.mjs} +1 -1
  37. package/dist/{FunctionExecutionWrapper-Ba0Z-iwe.mjs.map → FunctionExecutionWrapper-B0ZAssiy.mjs.map} +1 -1
  38. package/dist/{FunctionExecutionWrapper-7B-CufYj.cjs → FunctionExecutionWrapper-KKHP6fDY.cjs} +1 -1
  39. package/dist/{FunctionExecutionWrapper-7B-CufYj.cjs.map → FunctionExecutionWrapper-KKHP6fDY.cjs.map} +1 -1
  40. package/dist/{HonoEndpointAdaptor-vI3LPiyu.d.cts → HonoEndpointAdaptor-BCql3gLP.d.cts} +3 -3
  41. package/dist/{HonoEndpointAdaptor-vI3LPiyu.d.cts.map → HonoEndpointAdaptor-BCql3gLP.d.cts.map} +1 -1
  42. package/dist/{HonoEndpointAdaptor-B4NMwHkr.cjs → HonoEndpointAdaptor-CavBd6P2.cjs} +4 -4
  43. package/dist/{HonoEndpointAdaptor-B4NMwHkr.cjs.map → HonoEndpointAdaptor-CavBd6P2.cjs.map} +1 -1
  44. package/dist/{HonoEndpointAdaptor-CNlb-KGz.mjs → HonoEndpointAdaptor-y9fCIxaz.mjs} +4 -4
  45. package/dist/{HonoEndpointAdaptor-CNlb-KGz.mjs.map → HonoEndpointAdaptor-y9fCIxaz.mjs.map} +1 -1
  46. package/dist/{TestEndpointAdaptor-DJdmYxMn.mjs → TestEndpointAdaptor-CDOhCmIk.mjs} +2 -2
  47. package/dist/{TestEndpointAdaptor-DJdmYxMn.mjs.map → TestEndpointAdaptor-CDOhCmIk.mjs.map} +1 -1
  48. package/dist/{TestEndpointAdaptor-Bsqn6T0k.cjs → TestEndpointAdaptor-DjQSuxRq.cjs} +2 -2
  49. package/dist/{TestEndpointAdaptor-Bsqn6T0k.cjs.map → TestEndpointAdaptor-DjQSuxRq.cjs.map} +1 -1
  50. package/dist/TestFunctionAdaptor-BHk2bDOV.d.cts.map +1 -1
  51. package/dist/{TestFunctionAdaptor-CK-dbKpO.mjs → TestFunctionAdaptor-C5CLuR-9.mjs} +25 -17
  52. package/dist/TestFunctionAdaptor-C5CLuR-9.mjs.map +1 -0
  53. package/dist/{TestFunctionAdaptor-CSMX7myB.cjs → TestFunctionAdaptor-CH6-gO_B.cjs} +24 -16
  54. package/dist/TestFunctionAdaptor-CH6-gO_B.cjs.map +1 -0
  55. package/dist/TestFunctionAdaptor-DzT8GRdR.d.mts.map +1 -1
  56. package/dist/TestSubscriberAdaptor-CPEiqSfE.d.mts.map +1 -1
  57. package/dist/{TestSubscriberAdaptor-CrqLkyUE.mjs → TestSubscriberAdaptor-CwP3qNJ4.mjs} +22 -14
  58. package/dist/TestSubscriberAdaptor-CwP3qNJ4.mjs.map +1 -0
  59. package/dist/TestSubscriberAdaptor-DQk5xzb0.d.cts.map +1 -1
  60. package/dist/{TestSubscriberAdaptor-1m-2bM_j.cjs → TestSubscriberAdaptor-Dgxr_0vL.cjs} +21 -13
  61. package/dist/TestSubscriberAdaptor-Dgxr_0vL.cjs.map +1 -0
  62. package/dist/adaptors/aws.cjs +7 -6
  63. package/dist/adaptors/aws.d.cts +4 -4
  64. package/dist/adaptors/aws.d.mts +4 -4
  65. package/dist/adaptors/aws.mjs +7 -6
  66. package/dist/adaptors/hono.cjs +3 -3
  67. package/dist/adaptors/hono.d.cts +2 -2
  68. package/dist/adaptors/hono.d.mts +1 -1
  69. package/dist/adaptors/hono.mjs +3 -3
  70. package/dist/adaptors/testing.cjs +4 -4
  71. package/dist/adaptors/testing.d.cts +1 -1
  72. package/dist/adaptors/testing.d.mts +1 -1
  73. package/dist/adaptors/testing.mjs +4 -4
  74. package/dist/crons/Cron.d.cts +1 -1
  75. package/dist/crons/Cron.d.mts +1 -1
  76. package/dist/crons/CronBuilder.d.cts +1 -1
  77. package/dist/crons/CronBuilder.d.mts +1 -1
  78. package/dist/crons/index.d.cts +5 -5
  79. package/dist/crons/index.d.mts +5 -5
  80. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +1 -1
  81. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +2 -2
  82. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +2 -2
  83. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +1 -1
  84. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +2 -2
  85. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +3 -3
  86. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +3 -3
  87. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +2 -2
  88. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +3 -2
  89. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +3 -3
  90. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +3 -3
  91. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +3 -2
  92. package/dist/endpoints/Endpoint.d.cts +1 -1
  93. package/dist/endpoints/Endpoint.d.mts +1 -1
  94. package/dist/endpoints/EndpointBuilder.d.cts +1 -1
  95. package/dist/endpoints/EndpointBuilder.d.mts +1 -1
  96. package/dist/endpoints/EndpointFactory.d.cts +1 -1
  97. package/dist/endpoints/EndpointFactory.d.mts +1 -1
  98. package/dist/endpoints/HonoEndpointAdaptor.cjs +3 -3
  99. package/dist/endpoints/HonoEndpointAdaptor.d.cts +2 -2
  100. package/dist/endpoints/HonoEndpointAdaptor.d.mts +1 -1
  101. package/dist/endpoints/HonoEndpointAdaptor.mjs +3 -3
  102. package/dist/endpoints/TestEndpointAdaptor.cjs +2 -2
  103. package/dist/endpoints/TestEndpointAdaptor.d.cts +1 -1
  104. package/dist/endpoints/TestEndpointAdaptor.d.mts +1 -1
  105. package/dist/endpoints/TestEndpointAdaptor.mjs +2 -2
  106. package/dist/endpoints/audit.d.cts +1 -1
  107. package/dist/endpoints/audit.d.mts +1 -1
  108. package/dist/endpoints/helpers.cjs +1 -1
  109. package/dist/endpoints/helpers.d.cts +1 -1
  110. package/dist/endpoints/helpers.d.mts +1 -1
  111. package/dist/endpoints/helpers.mjs +1 -1
  112. package/dist/endpoints/index.cjs +1 -1
  113. package/dist/endpoints/index.d.cts +3 -3
  114. package/dist/endpoints/index.d.mts +3 -3
  115. package/dist/endpoints/index.mjs +1 -1
  116. package/dist/endpoints/lazyAccessors.cjs +1 -1
  117. package/dist/endpoints/lazyAccessors.d.cts +1 -1
  118. package/dist/endpoints/lazyAccessors.d.mts +1 -1
  119. package/dist/endpoints/lazyAccessors.mjs +1 -1
  120. package/dist/endpoints/processAudits.d.cts +1 -1
  121. package/dist/endpoints/processAudits.d.mts +1 -1
  122. package/dist/endpoints/rls.d.cts +1 -1
  123. package/dist/endpoints/rls.d.mts +1 -1
  124. package/dist/functions/AWSLambdaFunction.cjs +2 -2
  125. package/dist/functions/AWSLambdaFunction.mjs +2 -2
  126. package/dist/functions/FunctionExecutionWrapper.cjs +1 -1
  127. package/dist/functions/FunctionExecutionWrapper.mjs +1 -1
  128. package/dist/functions/TestFunctionAdaptor.cjs +1 -1
  129. package/dist/functions/TestFunctionAdaptor.mjs +1 -1
  130. package/dist/functions/index.d.cts +1 -1
  131. package/dist/functions/index.d.mts +1 -1
  132. package/dist/{helpers-Ciyi6Aap.cjs → helpers-BYyX0qTA.cjs} +1 -1
  133. package/dist/{helpers-Ciyi6Aap.cjs.map → helpers-BYyX0qTA.cjs.map} +1 -1
  134. package/dist/{helpers-C5j_GRBz.mjs → helpers-BtwC2IW8.mjs} +1 -1
  135. package/dist/{helpers-C5j_GRBz.mjs.map → helpers-BtwC2IW8.mjs.map} +1 -1
  136. package/dist/index-BRoc67OX.d.cts +12 -0
  137. package/dist/{index-BnoOaBQV.d.cts.map → index-BRoc67OX.d.cts.map} +1 -1
  138. package/dist/index-_5DYCNAt.d.mts +12 -0
  139. package/dist/{index-DQo_Csy7.d.mts.map → index-_5DYCNAt.d.mts.map} +1 -1
  140. package/dist/{lazyAccessors-B8Hhras9.cjs → lazyAccessors-BVEtB9lU.cjs} +1 -1
  141. package/dist/{lazyAccessors-B8Hhras9.cjs.map → lazyAccessors-BVEtB9lU.cjs.map} +1 -1
  142. package/dist/{lazyAccessors-B-Jgkg2o.mjs → lazyAccessors-DM6HcXQk.mjs} +1 -1
  143. package/dist/{lazyAccessors-B-Jgkg2o.mjs.map → lazyAccessors-DM6HcXQk.mjs.map} +1 -1
  144. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
  145. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
  146. package/dist/subscribers/TestSubscriberAdaptor.cjs +1 -1
  147. package/dist/subscribers/TestSubscriberAdaptor.mjs +1 -1
  148. package/dist/subscribers/index.d.cts +2 -2
  149. package/dist/subscribers/index.d.cts.map +1 -1
  150. package/dist/subscribers/index.d.mts +2 -2
  151. package/dist/subscribers/index.d.mts.map +1 -1
  152. package/package.json +7 -7
  153. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +6 -1
  154. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +9 -1
  155. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +83 -11
  156. package/src/functions/AWSLambdaFunction.ts +16 -2
  157. package/src/functions/TestFunctionAdaptor.ts +38 -31
  158. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +55 -0
  159. package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +82 -0
  160. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +17 -2
  161. package/src/subscribers/TestSubscriberAdaptor.ts +35 -29
  162. package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +64 -0
  163. package/src/subscribers/__tests__/TestSubscriberAdaptor.spec.ts +94 -0
  164. package/dist/AWSLambdaFunction-BDL7Thi_.mjs.map +0 -1
  165. package/dist/AWSLambdaFunction-wtE9Lx_-.cjs.map +0 -1
  166. package/dist/AWSLambdaSubscriberAdaptor-BtBKExsh.cjs.map +0 -1
  167. package/dist/AWSLambdaSubscriberAdaptor-DsRmmGm1.mjs.map +0 -1
  168. package/dist/AmazonApiGatewayEndpointAdaptor-1XyivLJs.cjs.map +0 -1
  169. package/dist/AmazonApiGatewayEndpointAdaptor-BPxHm8Tg.mjs.map +0 -1
  170. package/dist/AmazonApiGatewayEndpointAdaptor-Bxvs-F0F.d.cts.map +0 -1
  171. package/dist/AmazonApiGatewayEndpointAdaptor-CQSZArI6.d.mts.map +0 -1
  172. package/dist/AmazonApiGatewayV2EndpointAdaptor-BBayh2_k.d.mts.map +0 -1
  173. package/dist/AmazonApiGatewayV2EndpointAdaptor-CHi3Qe1s.d.cts.map +0 -1
  174. package/dist/TestFunctionAdaptor-CK-dbKpO.mjs.map +0 -1
  175. package/dist/TestFunctionAdaptor-CSMX7myB.cjs.map +0 -1
  176. package/dist/TestSubscriberAdaptor-1m-2bM_j.cjs.map +0 -1
  177. package/dist/TestSubscriberAdaptor-CrqLkyUE.mjs.map +0 -1
  178. package/dist/index-BnoOaBQV.d.cts +0 -12
  179. package/dist/index-DQo_Csy7.d.mts +0 -12
@@ -1,4 +1,4 @@
1
1
  import "../publisher-Bw4770Hi.mjs";
2
- import { TestSubscriberAdaptor } from "../TestSubscriberAdaptor-CrqLkyUE.mjs";
2
+ import { TestSubscriberAdaptor } from "../TestSubscriberAdaptor-CwP3qNJ4.mjs";
3
3
 
4
4
  export { TestSubscriberAdaptor };
@@ -1,10 +1,10 @@
1
1
  import "../Construct-CX7HyFfT.cjs";
2
2
  import { Subscriber } from "../Subscriber-1rDE7HuM.cjs";
3
3
  import { SubscriberBuilder } from "../SubscriberBuilder-B9uva8fZ.cjs";
4
- import * as _geekmidas_logger10 from "@geekmidas/logger";
4
+ import * as _geekmidas_logger5 from "@geekmidas/logger";
5
5
 
6
6
  //#region src/subscribers/index.d.ts
7
- declare const s: SubscriberBuilder<[], _geekmidas_logger10.Logger, undefined, undefined, string, []>;
7
+ declare const s: SubscriberBuilder<[], _geekmidas_logger5.Logger, undefined, undefined, string, []>;
8
8
  //# sourceMappingURL=index.d.ts.map
9
9
 
10
10
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,mBAAA,CAA1B,MAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,kBAAA,CAA1B,MAAA"}
@@ -1,10 +1,10 @@
1
1
  import "../Construct-C2SyofdS.mjs";
2
2
  import { Subscriber } from "../Subscriber-BgB3RRxb.mjs";
3
3
  import { SubscriberBuilder } from "../SubscriberBuilder-DaQkh2Nt.mjs";
4
- import * as _geekmidas_logger10 from "@geekmidas/logger";
4
+ import * as _geekmidas_logger8 from "@geekmidas/logger";
5
5
 
6
6
  //#region src/subscribers/index.d.ts
7
- declare const s: SubscriberBuilder<[], _geekmidas_logger10.Logger, undefined, undefined, string, []>;
7
+ declare const s: SubscriberBuilder<[], _geekmidas_logger8.Logger, undefined, undefined, string, []>;
8
8
  //# sourceMappingURL=index.d.ts.map
9
9
 
10
10
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,mBAAA,CAA1B,MAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,kBAAA,CAA1B,MAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekmidas/constructs",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -78,17 +78,17 @@
78
78
  "kysely": "~0.28.8",
79
79
  "pg": "~8.16.3",
80
80
  "zod": "~4.1.13",
81
+ "@geekmidas/envkit": "^1.0.3",
81
82
  "@geekmidas/audit": "^2.0.0",
82
- "@geekmidas/cache": "^1.1.0",
83
83
  "@geekmidas/db": "^1.0.0",
84
- "@geekmidas/envkit": "^1.0.3",
84
+ "@geekmidas/cache": "^1.1.0",
85
85
  "@geekmidas/errors": "^1.0.0",
86
86
  "@geekmidas/events": "^1.1.0",
87
87
  "@geekmidas/logger": "^1.0.0",
88
- "@geekmidas/rate-limit": "^2.0.0",
89
88
  "@geekmidas/schema": "^1.0.0",
90
- "@geekmidas/services": "^1.0.1",
91
- "@geekmidas/testkit": "^1.0.2"
89
+ "@geekmidas/rate-limit": "^2.0.0",
90
+ "@geekmidas/testkit": "^1.0.2",
91
+ "@geekmidas/services": "^1.0.1"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "@middy/core": ">=6.3.1",
@@ -97,8 +97,8 @@
97
97
  "@geekmidas/audit": "^2.0.0",
98
98
  "@geekmidas/cache": "^1.1.0",
99
99
  "@geekmidas/db": "^1.0.0",
100
- "@geekmidas/envkit": "^1.0.3",
101
100
  "@geekmidas/errors": "^1.0.0",
101
+ "@geekmidas/envkit": "^1.0.3",
102
102
  "@geekmidas/events": "^1.1.0",
103
103
  "@geekmidas/logger": "^1.0.0",
104
104
  "@geekmidas/rate-limit": "^2.0.0",
@@ -145,6 +145,11 @@ export abstract class AmazonApiGatewayEndpoint<
145
145
  }
146
146
  abstract getInput(e: TEvent): GetInputResponse;
147
147
 
148
+ protected getCookies(e: TEvent): CookieFn {
149
+ const headers = e.headers as Record<string, string>;
150
+ return Endpoint.createCookies(headers?.cookie);
151
+ }
152
+
148
153
  private input(): Middleware<TEvent, TInput, TServices, TLogger> {
149
154
  return {
150
155
  before: async (req) => {
@@ -152,7 +157,7 @@ export abstract class AmazonApiGatewayEndpoint<
152
157
  const { body, query, params } = this.getInput(req.event);
153
158
  const headers = req.event.headers as Record<string, string>;
154
159
  const header = Endpoint.createHeaders(headers);
155
- const cookie = Endpoint.createCookies(headers.cookie);
160
+ const cookie = this.getCookies(req.event);
156
161
 
157
162
  set(req.event, 'body', await this.endpoint.parseInput(body, 'body'));
158
163
 
@@ -12,7 +12,8 @@ import {
12
12
  type GetInputResponse,
13
13
  type LoggerContext,
14
14
  } from './AmazonApiGatewayEndpointAdaptor';
15
- import type { Endpoint, EndpointSchemas } from './Endpoint';
15
+ import type { CookieFn, Endpoint, EndpointSchemas } from './Endpoint';
16
+ import { createApiGatewayCookies } from './lazyAccessors';
16
17
  import { parseQueryParams } from './parseQueryParams';
17
18
 
18
19
  export class AmazonApiGatewayV2Endpoint<
@@ -36,6 +37,13 @@ export class AmazonApiGatewayV2Endpoint<
36
37
  TSession,
37
38
  TEventPublisher
38
39
  > {
40
+ override getCookies(e: APIGatewayProxyEventV2): CookieFn {
41
+ return createApiGatewayCookies(
42
+ e.cookies,
43
+ (e.headers as Record<string, string>)?.cookie,
44
+ );
45
+ }
46
+
39
47
  override getInput(e: APIGatewayProxyEventV2): GetInputResponse {
40
48
  // API Gateway V2 handles arrays as comma-separated values
41
49
  const queryParams = e.queryStringParameters || {};
@@ -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({
@@ -170,7 +170,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
170
170
  limit: '20',
171
171
  },
172
172
  });
173
- // @ts-expect-error
173
+
174
174
  const response = await adapter.handler(event, mockContext);
175
175
 
176
176
  expect(response).toEqual({
@@ -216,7 +216,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
216
216
  'filter.active': 'true',
217
217
  },
218
218
  });
219
- // @ts-expect-error
219
+
220
220
  const response = await adapter.handler(event, mockContext);
221
221
 
222
222
  expect(response).toEqual({
@@ -250,7 +250,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
250
250
  queryStringParameters: { include: 'profile' },
251
251
  pathParameters: { id: '123' },
252
252
  });
253
- // @ts-expect-error
253
+
254
254
  const response = await adapter.handler(event, mockContext);
255
255
 
256
256
  expect(response).toEqual({
@@ -274,7 +274,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
274
274
 
275
275
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
276
276
  const event = createMockV2Event();
277
- // @ts-expect-error
277
+
278
278
  const response = await adapter.handler(event, mockContext);
279
279
 
280
280
  expect(response.multiValueHeaders?.['Set-Cookie']).toEqual([
@@ -296,7 +296,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
296
296
 
297
297
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
298
298
  const event = createMockV2Event();
299
- // @ts-expect-error
299
+
300
300
  const response = await adapter.handler(event, mockContext);
301
301
 
302
302
  expect(response.headers).toEqual({
@@ -316,7 +316,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
316
316
 
317
317
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
318
318
  const event = createMockV2Event({ routeKey: 'POST /test' });
319
- // @ts-expect-error
319
+
320
320
  const response = await adapter.handler(event, mockContext);
321
321
 
322
322
  expect(response.statusCode).toBe(201);
@@ -337,7 +337,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
337
337
 
338
338
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
339
339
  const event = createMockV2Event({ routeKey: 'POST /test' });
340
- // @ts-expect-error
340
+
341
341
  const response = await adapter.handler(event, mockContext);
342
342
 
343
343
  expect(response.statusCode).toBe(201);
@@ -362,7 +362,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
362
362
 
363
363
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
364
364
  const event = createMockV2Event();
365
- // @ts-expect-error
365
+
366
366
  const response = await adapter.handler(event, mockContext);
367
367
 
368
368
  expect(response.multiValueHeaders?.['Set-Cookie']).toEqual([
@@ -384,7 +384,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
384
384
 
385
385
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
386
386
  const event = createMockV2Event();
387
- // @ts-expect-error
387
+
388
388
  const response = await adapter.handler(event, mockContext);
389
389
 
390
390
  expect(response.statusCode).toBe(201);
@@ -403,7 +403,7 @@ describe('AmazonApiGatewayV2Endpoint', () => {
403
403
 
404
404
  const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
405
405
  const event = createMockV2Event();
406
- // @ts-expect-error
406
+
407
407
  const response = await adapter.handler(event, mockContext);
408
408
 
409
409
  expect(response).toEqual({
@@ -414,5 +414,77 @@ describe('AmazonApiGatewayV2Endpoint', () => {
414
414
  expect(response.multiValueHeaders).toBeUndefined();
415
415
  });
416
416
  });
417
+
418
+ describe('request cookies', () => {
419
+ it('should load cookies from V2 cookies array', async () => {
420
+ const endpoint = e
421
+ .get('/test')
422
+ .output(z.object({ session: z.string(), theme: z.string() }))
423
+ .handle(async ({ cookie }) => ({
424
+ session: cookie('session') ?? '',
425
+ theme: cookie('theme') ?? '',
426
+ }));
427
+
428
+ const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
429
+ const event = createMockV2Event({
430
+ cookies: ['session=abc123', 'theme=dark'],
431
+ });
432
+
433
+ const response = await adapter.handler(event, mockContext);
434
+
435
+ expect(JSON.parse(response.body!)).toEqual({
436
+ session: 'abc123',
437
+ theme: 'dark',
438
+ });
439
+ });
440
+
441
+ it('should fall back to headers.cookie when cookies array is absent', async () => {
442
+ const endpoint = e
443
+ .get('/test')
444
+ .output(z.object({ session: z.string() }))
445
+ .handle(async ({ cookie }) => ({
446
+ session: cookie('session') ?? '',
447
+ }));
448
+
449
+ const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
450
+ const event = createMockV2Event({
451
+ cookies: undefined,
452
+ headers: {
453
+ 'content-type': 'application/json',
454
+ cookie: 'session=from-header',
455
+ },
456
+ });
457
+
458
+ const response = await adapter.handler(event, mockContext);
459
+
460
+ expect(JSON.parse(response.body!)).toEqual({
461
+ session: 'from-header',
462
+ });
463
+ });
464
+
465
+ it('should prefer V2 cookies array over headers.cookie', async () => {
466
+ const endpoint = e
467
+ .get('/test')
468
+ .output(z.object({ session: z.string() }))
469
+ .handle(async ({ cookie }) => ({
470
+ session: cookie('session') ?? '',
471
+ }));
472
+
473
+ const adapter = new AmazonApiGatewayV2Endpoint(envParser, endpoint);
474
+ const event = createMockV2Event({
475
+ cookies: ['session=from-array'],
476
+ headers: {
477
+ 'content-type': 'application/json',
478
+ cookie: 'session=from-header',
479
+ },
480
+ });
481
+
482
+ const response = await adapter.handler(event, mockContext);
483
+
484
+ expect(JSON.parse(response.body!)).toEqual({
485
+ session: 'from-array',
486
+ });
487
+ });
488
+ });
417
489
  });
418
490
  });
@@ -9,6 +9,7 @@ import type {
9
9
  InferStandardSchema,
10
10
  } from '@geekmidas/schema';
11
11
  import type { Service, ServiceRecord } from '@geekmidas/services';
12
+ import { runWithRequestContext } from '@geekmidas/services';
12
13
  import middy, { type MiddlewareObj } from '@middy/core';
13
14
  import type { StandardSchemaV1 } from '@standard-schema/spec';
14
15
  import type { Context, Handler } from 'aws-lambda';
@@ -321,7 +322,7 @@ export class AWSLambdaFunction<
321
322
  const handler = this._handler.bind(this);
322
323
 
323
324
  // Apply middleware in order
324
- return middy(handler)
325
+ const chain = middy(handler)
325
326
  .use(this.loggerMiddleware())
326
327
  .use(this.baseInput())
327
328
  .use(this.error())
@@ -329,6 +330,19 @@ export class AWSLambdaFunction<
329
330
  .use(this.database())
330
331
  .use(this.auditor())
331
332
  .use(this.input())
332
- .use(this.events()) as unknown as AWSLambdaHandler;
333
+ .use(this.events());
334
+
335
+ // Wrap entire Middy chain in request context for service access
336
+ const wrappedHandler = async (event: unknown, context: Context) => {
337
+ const startTime = Date.now();
338
+ const requestId = context.awsRequestId;
339
+ const logger = this.fn.logger.child({ requestId }) as TLogger;
340
+
341
+ return runWithRequestContext({ logger, requestId, startTime }, () =>
342
+ chain(event as Parameters<typeof chain>[0], context),
343
+ );
344
+ };
345
+
346
+ return wrappedHandler as unknown as AWSLambdaHandler;
333
347
  }
334
348
  }
@@ -9,6 +9,7 @@ import type {
9
9
  InferStandardSchema,
10
10
  } from '@geekmidas/schema';
11
11
  import {
12
+ runWithRequestContext,
12
13
  type Service,
13
14
  ServiceDiscovery,
14
15
  type ServiceRecord,
@@ -153,41 +154,47 @@ export class TestFunctionAdaptor<
153
154
  });
154
155
  }
155
156
 
156
- // Execute the function
157
- const response = await this.fn.fn({
158
- input: parsedInput,
159
- services,
160
- logger,
161
- db,
162
- auditor,
163
- } as any);
164
-
165
- // Parse output if schema is provided
166
- const output = await this.fn.parseOutput(response);
167
-
168
- // Flush audits if any were recorded
169
- if (auditor) {
170
- const records = auditor.getRecords();
171
- if (records.length > 0) {
172
- logger.debug(
173
- { auditCount: records.length },
174
- 'Flushing function audits',
175
- );
176
- await auditor.flush();
157
+ // Wrap execution in request context for service access via context.getLogger()
158
+ const requestId = `test-${Date.now()}`;
159
+ const startTime = Date.now();
160
+
161
+ return runWithRequestContext({ logger, requestId, startTime }, async () => {
162
+ // Execute the function
163
+ const response = await this.fn.fn({
164
+ input: parsedInput,
165
+ services,
166
+ logger,
167
+ db,
168
+ auditor,
169
+ } as any);
170
+
171
+ // Parse output if schema is provided
172
+ const output = await this.fn.parseOutput(response);
173
+
174
+ // Flush audits if any were recorded
175
+ if (auditor) {
176
+ const records = auditor.getRecords();
177
+ if (records.length > 0) {
178
+ logger.debug(
179
+ { auditCount: records.length },
180
+ 'Flushing function audits',
181
+ );
182
+ await auditor.flush();
183
+ }
177
184
  }
178
- }
179
185
 
180
- // Register publisher service if provided in context
186
+ // Register publisher service if provided in context
181
187
 
182
- await publishEvents(
183
- logger,
184
- this.serviceDiscovery,
185
- this.fn.events,
186
- output,
187
- this.fn.publisherService,
188
- );
188
+ await publishEvents(
189
+ logger,
190
+ this.serviceDiscovery,
191
+ this.fn.events,
192
+ output,
193
+ this.fn.publisherService,
194
+ );
189
195
 
190
- return output;
196
+ return output;
197
+ }) as Promise<InferStandardSchema<TOutSchema>>;
191
198
  }
192
199
  }
193
200
 
@@ -2,6 +2,7 @@ import { EnvironmentParser } from '@geekmidas/envkit';
2
2
  import type { EventPublisher, PublishableMessage } from '@geekmidas/events';
3
3
  import { ConsoleLogger } from '@geekmidas/logger/console';
4
4
  import type { Service } from '@geekmidas/services';
5
+ import { serviceContext } from '@geekmidas/services';
5
6
  import type { Context } from 'aws-lambda';
6
7
  import { beforeEach, describe, expect, it, vi } from 'vitest';
7
8
  import { z } from 'zod/v4';
@@ -455,4 +456,58 @@ describe('AWSLambdaFunction', () => {
455
456
  expect(result).toEqual({ hasDb: false });
456
457
  });
457
458
  });
459
+
460
+ describe('request context', () => {
461
+ it('should make serviceContext.getLogger() available inside handler', async () => {
462
+ let contextLogger: any;
463
+ let contextRequestId: string | undefined;
464
+
465
+ const fn = new Function(
466
+ async () => {
467
+ contextLogger = serviceContext.getLogger();
468
+ contextRequestId = serviceContext.getRequestId();
469
+ return { success: true };
470
+ },
471
+ undefined,
472
+ undefined,
473
+ undefined,
474
+ undefined,
475
+ [],
476
+ logger,
477
+ );
478
+
479
+ const adaptor = new AWSLambdaFunction(envParser, fn);
480
+ const handler = adaptor.handler;
481
+
482
+ const context = createMockContext();
483
+ await handler({}, context, vi.fn());
484
+
485
+ expect(contextLogger).toBeDefined();
486
+ expect(contextRequestId).toBe('test-request-id');
487
+ });
488
+
489
+ it('should make serviceContext.hasContext() return true inside handler', async () => {
490
+ let hasContext = false;
491
+
492
+ const fn = new Function(
493
+ async () => {
494
+ hasContext = serviceContext.hasContext();
495
+ return { success: true };
496
+ },
497
+ undefined,
498
+ undefined,
499
+ undefined,
500
+ undefined,
501
+ [],
502
+ logger,
503
+ );
504
+
505
+ const adaptor = new AWSLambdaFunction(envParser, fn);
506
+ const handler = adaptor.handler;
507
+
508
+ await handler({}, createMockContext(), vi.fn());
509
+
510
+ expect(hasContext).toBe(true);
511
+ });
512
+ });
458
513
  });
@@ -1,6 +1,7 @@
1
1
  import type { EventPublisher, PublishableMessage } from '@geekmidas/events';
2
2
  import { ConsoleLogger } from '@geekmidas/logger/console';
3
3
  import type { Service } from '@geekmidas/services';
4
+ import { serviceContext } from '@geekmidas/services';
4
5
  import { beforeEach, describe, expect, it, vi } from 'vitest';
5
6
  import { z } from 'zod/v4';
6
7
 
@@ -395,4 +396,85 @@ describe.skip('TestFunctionAdaptor', () => {
395
396
  ).rejects.toThrow('Function failed');
396
397
  });
397
398
  });
399
+
400
+ describe('request context', () => {
401
+ it('should make serviceContext.getLogger() available inside handler', async () => {
402
+ let contextLogger: any;
403
+
404
+ const fn = new Function(
405
+ async () => {
406
+ contextLogger = serviceContext.getLogger();
407
+ return { success: true };
408
+ },
409
+ undefined,
410
+ undefined,
411
+ undefined,
412
+ undefined,
413
+ [],
414
+ logger,
415
+ );
416
+
417
+ const adaptor = new TestFunctionAdaptor(fn);
418
+
419
+ await adaptor.invoke({
420
+ input: {},
421
+ services: {},
422
+ });
423
+
424
+ expect(contextLogger).toBeDefined();
425
+ });
426
+
427
+ it('should make serviceContext.hasContext() return true inside handler', async () => {
428
+ let hasContext = false;
429
+
430
+ const fn = new Function(
431
+ async () => {
432
+ hasContext = serviceContext.hasContext();
433
+ return { success: true };
434
+ },
435
+ undefined,
436
+ undefined,
437
+ undefined,
438
+ undefined,
439
+ [],
440
+ logger,
441
+ );
442
+
443
+ const adaptor = new TestFunctionAdaptor(fn);
444
+
445
+ await adaptor.invoke({
446
+ input: {},
447
+ services: {},
448
+ });
449
+
450
+ expect(hasContext).toBe(true);
451
+ });
452
+
453
+ it('should provide a request ID starting with test-', async () => {
454
+ let requestId: string | undefined;
455
+
456
+ const fn = new Function(
457
+ async () => {
458
+ requestId = serviceContext.getRequestId();
459
+ return { success: true };
460
+ },
461
+ undefined,
462
+ undefined,
463
+ undefined,
464
+ undefined,
465
+ [],
466
+ logger,
467
+ );
468
+
469
+ const adaptor = new TestFunctionAdaptor(fn);
470
+
471
+ await adaptor.invoke({
472
+ input: {},
473
+ services: {},
474
+ });
475
+
476
+ expect(requestId).toBeDefined();
477
+ expect(requestId).toMatch(/^test-/);
478
+ });
479
+ });
398
480
  });
@@ -4,7 +4,7 @@ import type { EventPublisher } from '@geekmidas/events';
4
4
  import type { Logger } from '@geekmidas/logger';
5
5
  import type { InferStandardSchema } from '@geekmidas/schema';
6
6
  import type { Service, ServiceRecord } from '@geekmidas/services';
7
- import { ServiceDiscovery } from '@geekmidas/services';
7
+ import { runWithRequestContext, ServiceDiscovery } from '@geekmidas/services';
8
8
  import middy, { type MiddlewareObj } from '@middy/core';
9
9
  import type { StandardSchemaV1 } from '@standard-schema/spec';
10
10
  import type {
@@ -318,10 +318,25 @@ export class AWSLambdaSubscriber<
318
318
  const handler = this._handler.bind(this);
319
319
 
320
320
  // Apply middleware in order
321
- return middy(handler)
321
+ const chain = middy(handler)
322
322
  .use(this.loggerMiddleware())
323
323
  .use(this.parseEvents())
324
324
  .use(this.error())
325
325
  .use(this.services());
326
+
327
+ // Wrap entire Middy chain in request context for service access
328
+ const wrappedHandler = async (event: unknown, context: Context) => {
329
+ const startTime = Date.now();
330
+ const requestId = context.awsRequestId;
331
+ const logger = this.subscriber.logger.child({
332
+ requestId,
333
+ }) as TLogger;
334
+
335
+ return runWithRequestContext({ logger, requestId, startTime }, () =>
336
+ chain(event as Parameters<typeof chain>[0], context),
337
+ );
338
+ };
339
+
340
+ return wrappedHandler as unknown as AWSLambdaHandler;
326
341
  }
327
342
  }