@geekmidas/constructs 3.0.6 → 3.0.8

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 (449) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{Construct-BXG8cFSm.cjs → Construct-B14miJ6P.cjs} +95 -10
  3. package/dist/Construct-B14miJ6P.cjs.map +1 -0
  4. package/dist/{Construct-C2SyofdS.d.mts → Construct-CXqvzglu.d.cts} +11 -6
  5. package/dist/{Construct-C2SyofdS.d.mts.map → Construct-CXqvzglu.d.cts.map} +1 -1
  6. package/dist/{Construct-CQ9zV58W.mjs → Construct-CdJY2DJS.mjs} +83 -9
  7. package/dist/Construct-CdJY2DJS.mjs.map +1 -0
  8. package/dist/{Construct-CX7HyFfT.d.cts → Construct-D0n7QTaI.d.mts} +13 -8
  9. package/dist/Construct-D0n7QTaI.d.mts.map +1 -0
  10. package/dist/{Endpoint-DtFQFL63.d.mts → Endpoint-C991gK3T.d.cts} +133 -30
  11. package/dist/Endpoint-C991gK3T.d.cts.map +1 -0
  12. package/dist/{Endpoint-CGdCGJkC.d.cts → Endpoint-CRHpLPV3.d.mts} +133 -30
  13. package/dist/Endpoint-CRHpLPV3.d.mts.map +1 -0
  14. package/dist/{HonoEndpointAdaptor-B5fKdLi7.cjs → HonoEndpointAdaptor-BDz1qM4z.cjs} +81 -24
  15. package/dist/HonoEndpointAdaptor-BDz1qM4z.cjs.map +1 -0
  16. package/dist/{HonoEndpointAdaptor-DOUODM7n.mjs → HonoEndpointAdaptor-DPBfEPZj.mjs} +64 -7
  17. package/dist/HonoEndpointAdaptor-DPBfEPZj.mjs.map +1 -0
  18. package/dist/{Subscriber-1rDE7HuM.d.cts → Subscriber-D8WkA8np.d.cts} +3 -3
  19. package/dist/{Subscriber-1rDE7HuM.d.cts.map → Subscriber-D8WkA8np.d.cts.map} +1 -1
  20. package/dist/{Subscriber-BgB3RRxb.d.mts → Subscriber-Tft61-YG.d.mts} +5 -5
  21. package/dist/Subscriber-Tft61-YG.d.mts.map +1 -0
  22. package/dist/adaptors/aws.cjs +737 -21
  23. package/dist/adaptors/aws.cjs.map +1 -0
  24. package/dist/adaptors/aws.d.cts +221 -17
  25. package/dist/adaptors/aws.d.cts.map +1 -0
  26. package/dist/adaptors/aws.d.mts +221 -17
  27. package/dist/adaptors/aws.d.mts.map +1 -0
  28. package/dist/adaptors/aws.mjs +734 -18
  29. package/dist/adaptors/aws.mjs.map +1 -0
  30. package/dist/adaptors/hono.cjs +5 -12
  31. package/dist/adaptors/hono.d.cts +52 -10
  32. package/dist/adaptors/hono.d.cts.map +1 -0
  33. package/dist/adaptors/hono.d.mts +52 -10
  34. package/dist/adaptors/hono.d.mts.map +1 -0
  35. package/dist/adaptors/hono.mjs +5 -12
  36. package/dist/adaptors/testing.cjs +392 -15
  37. package/dist/adaptors/testing.cjs.map +1 -0
  38. package/dist/adaptors/testing.d.cts +177 -13
  39. package/dist/adaptors/testing.d.cts.map +1 -0
  40. package/dist/adaptors/testing.d.mts +177 -13
  41. package/dist/adaptors/testing.d.mts.map +1 -0
  42. package/dist/adaptors/testing.mjs +389 -14
  43. package/dist/adaptors/testing.mjs.map +1 -0
  44. package/dist/crons/index.cjs +82 -10
  45. package/dist/crons/index.cjs.map +1 -1
  46. package/dist/crons/index.d.cts +48 -11
  47. package/dist/crons/index.d.cts.map +1 -1
  48. package/dist/crons/index.d.mts +45 -11
  49. package/dist/crons/index.d.mts.map +1 -1
  50. package/dist/crons/index.mjs +79 -7
  51. package/dist/crons/index.mjs.map +1 -1
  52. package/dist/endpoints/index.cjs +717 -23
  53. package/dist/endpoints/index.cjs.map +1 -1
  54. package/dist/endpoints/index.d.cts +316 -14
  55. package/dist/endpoints/index.d.cts.map +1 -1
  56. package/dist/endpoints/index.d.mts +315 -14
  57. package/dist/endpoints/index.d.mts.map +1 -1
  58. package/dist/endpoints/index.mjs +706 -12
  59. package/dist/endpoints/index.mjs.map +1 -1
  60. package/dist/functions/index.cjs +5 -8
  61. package/dist/functions/index.d.cts +2 -5
  62. package/dist/functions/index.d.mts +2 -5
  63. package/dist/functions/index.mjs +2 -5
  64. package/dist/functions-DiaRAdfp.cjs +2893 -0
  65. package/dist/functions-DiaRAdfp.cjs.map +1 -0
  66. package/dist/functions-GmSHFbpr.mjs +2864 -0
  67. package/dist/functions-GmSHFbpr.mjs.map +1 -0
  68. package/dist/index-Cq4fz8uM.d.mts +132 -0
  69. package/dist/index-Cq4fz8uM.d.mts.map +1 -0
  70. package/dist/index-CzIMpK-e.d.cts +135 -0
  71. package/dist/index-CzIMpK-e.d.cts.map +1 -0
  72. package/dist/index.cjs +1 -1
  73. package/dist/index.d.cts +3 -3
  74. package/dist/index.d.mts +3 -3
  75. package/dist/index.mjs +1 -1
  76. package/dist/lazyAccessors-CJZYs9uM.mjs +1887 -0
  77. package/dist/lazyAccessors-CJZYs9uM.mjs.map +1 -0
  78. package/dist/lazyAccessors-DHvDeww0.cjs +1964 -0
  79. package/dist/lazyAccessors-DHvDeww0.cjs.map +1 -0
  80. package/dist/processAudits-B0PbJf1Z.mjs +80 -0
  81. package/dist/processAudits-B0PbJf1Z.mjs.map +1 -0
  82. package/dist/processAudits-CUko08pi.cjs +92 -0
  83. package/dist/processAudits-CUko08pi.cjs.map +1 -0
  84. package/dist/subscribers/index.cjs +77 -6
  85. package/dist/subscribers/index.cjs.map +1 -1
  86. package/dist/subscribers/index.d.cts +27 -5
  87. package/dist/subscribers/index.d.cts.map +1 -1
  88. package/dist/subscribers/index.d.mts +26 -5
  89. package/dist/subscribers/index.d.mts.map +1 -1
  90. package/dist/subscribers/index.mjs +74 -3
  91. package/dist/subscribers/index.mjs.map +1 -1
  92. package/dist/{telemetry-BTaiRqPo.d.cts → telemetry-Bt0vK4ma.d.cts} +1 -1
  93. package/dist/{telemetry-BTaiRqPo.d.cts.map → telemetry-Bt0vK4ma.d.cts.map} +1 -1
  94. package/dist/{telemetry-C-kNOW3C.d.mts → telemetry-COvVBKBM.d.mts} +1 -1
  95. package/dist/{telemetry-C-kNOW3C.d.mts.map → telemetry-COvVBKBM.d.mts.map} +1 -1
  96. package/dist/{types-B5H3piDg.d.cts → types-B8YlI4cx.d.cts} +1 -1
  97. package/dist/{types-B5H3piDg.d.cts.map → types-B8YlI4cx.d.cts.map} +1 -1
  98. package/dist/{types-aFmq5cKh.d.mts → types-BA3eK4xj.d.mts} +1 -1
  99. package/dist/{types-aFmq5cKh.d.mts.map → types-BA3eK4xj.d.mts.map} +1 -1
  100. package/dist/types.d.cts +1 -1
  101. package/dist/types.d.mts +1 -1
  102. package/package.json +18 -13
  103. package/src/Construct.ts +26 -8
  104. package/src/__tests__/Construct.environment.spec.ts +123 -0
  105. package/src/adaptors/testing.ts +7 -0
  106. package/src/endpoints/MswEndpointAdaptor.ts +226 -0
  107. package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +211 -0
  108. package/tsdown.config.ts +30 -1
  109. package/dist/AWSLambdaFunction-BF1gJJjG.d.mts +0 -32
  110. package/dist/AWSLambdaFunction-BF1gJJjG.d.mts.map +0 -1
  111. package/dist/AWSLambdaFunction-CPEAl5nZ.cjs +0 -120
  112. package/dist/AWSLambdaFunction-CPEAl5nZ.cjs.map +0 -1
  113. package/dist/AWSLambdaFunction-DJiCAPAf.mjs +0 -114
  114. package/dist/AWSLambdaFunction-DJiCAPAf.mjs.map +0 -1
  115. package/dist/AWSLambdaFunction-tzqv5XU6.d.cts +0 -32
  116. package/dist/AWSLambdaFunction-tzqv5XU6.d.cts.map +0 -1
  117. package/dist/AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts +0 -36
  118. package/dist/AWSLambdaSubscriberAdaptor-Cj1wjkUP.d.cts.map +0 -1
  119. package/dist/AWSLambdaSubscriberAdaptor-OQvj2lKI.d.mts +0 -36
  120. package/dist/AWSLambdaSubscriberAdaptor-OQvj2lKI.d.mts.map +0 -1
  121. package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs +0 -172
  122. package/dist/AWSLambdaSubscriberAdaptor-RKwKYLl1.mjs.map +0 -1
  123. package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs +0 -178
  124. package/dist/AWSLambdaSubscriberAdaptor-eZ3qoKvK.cjs.map +0 -1
  125. package/dist/AmazonApiGatewayEndpointAdaptor-BIltcbAc.cjs +0 -277
  126. package/dist/AmazonApiGatewayEndpointAdaptor-BIltcbAc.cjs.map +0 -1
  127. package/dist/AmazonApiGatewayEndpointAdaptor-BpYtYCeW.mjs +0 -271
  128. package/dist/AmazonApiGatewayEndpointAdaptor-BpYtYCeW.mjs.map +0 -1
  129. package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts +0 -124
  130. package/dist/AmazonApiGatewayEndpointAdaptor-DqNcQGMf.d.cts.map +0 -1
  131. package/dist/AmazonApiGatewayEndpointAdaptor-Hi8Pbp2d.d.mts +0 -124
  132. package/dist/AmazonApiGatewayEndpointAdaptor-Hi8Pbp2d.d.mts.map +0 -1
  133. package/dist/AmazonApiGatewayV1EndpointAdaptor-CRwyWT6t.mjs +0 -42
  134. package/dist/AmazonApiGatewayV1EndpointAdaptor-CRwyWT6t.mjs.map +0 -1
  135. package/dist/AmazonApiGatewayV1EndpointAdaptor-DEETT6Wj.cjs +0 -47
  136. package/dist/AmazonApiGatewayV1EndpointAdaptor-DEETT6Wj.cjs.map +0 -1
  137. package/dist/AmazonApiGatewayV1EndpointAdaptor-DcN2fYsv.d.cts +0 -23
  138. package/dist/AmazonApiGatewayV1EndpointAdaptor-DcN2fYsv.d.cts.map +0 -1
  139. package/dist/AmazonApiGatewayV1EndpointAdaptor-cpwJzU4W.d.mts +0 -23
  140. package/dist/AmazonApiGatewayV1EndpointAdaptor-cpwJzU4W.d.mts.map +0 -1
  141. package/dist/AmazonApiGatewayV2EndpointAdaptor-C2qO8FN6.cjs +0 -48
  142. package/dist/AmazonApiGatewayV2EndpointAdaptor-C2qO8FN6.cjs.map +0 -1
  143. package/dist/AmazonApiGatewayV2EndpointAdaptor-Cn9UoRgB.d.cts +0 -22
  144. package/dist/AmazonApiGatewayV2EndpointAdaptor-Cn9UoRgB.d.cts.map +0 -1
  145. package/dist/AmazonApiGatewayV2EndpointAdaptor-LzH3hkB-.d.mts +0 -22
  146. package/dist/AmazonApiGatewayV2EndpointAdaptor-LzH3hkB-.d.mts.map +0 -1
  147. package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs +0 -42
  148. package/dist/AmazonApiGatewayV2EndpointAdaptor-m9YKI294.mjs.map +0 -1
  149. package/dist/Authorizer-4unKN3Xn.mjs +0 -68
  150. package/dist/Authorizer-4unKN3Xn.mjs.map +0 -1
  151. package/dist/Authorizer-DBsrDTuf.d.mts +0 -126
  152. package/dist/Authorizer-DBsrDTuf.d.mts.map +0 -1
  153. package/dist/Authorizer-DWtwC8we.d.cts +0 -126
  154. package/dist/Authorizer-DWtwC8we.d.cts.map +0 -1
  155. package/dist/Authorizer-Dx57psuM.cjs +0 -92
  156. package/dist/Authorizer-Dx57psuM.cjs.map +0 -1
  157. package/dist/BaseFunctionBuilder-C-4hYTfj.d.cts +0 -42
  158. package/dist/BaseFunctionBuilder-C-4hYTfj.d.cts.map +0 -1
  159. package/dist/BaseFunctionBuilder-C3rQMoWb.mjs +0 -70
  160. package/dist/BaseFunctionBuilder-C3rQMoWb.mjs.map +0 -1
  161. package/dist/BaseFunctionBuilder-CsvFjzA8.d.mts +0 -42
  162. package/dist/BaseFunctionBuilder-CsvFjzA8.d.mts.map +0 -1
  163. package/dist/BaseFunctionBuilder-DXf6HK-N.cjs +0 -76
  164. package/dist/BaseFunctionBuilder-DXf6HK-N.cjs.map +0 -1
  165. package/dist/Construct-BXG8cFSm.cjs.map +0 -1
  166. package/dist/Construct-CQ9zV58W.mjs.map +0 -1
  167. package/dist/Construct-CX7HyFfT.d.cts.map +0 -1
  168. package/dist/Construct.cjs +0 -6
  169. package/dist/Construct.d.cts +0 -2
  170. package/dist/Construct.d.mts +0 -2
  171. package/dist/Construct.mjs +0 -3
  172. package/dist/Cron-B3vrGuaD.mjs +0 -20
  173. package/dist/Cron-B3vrGuaD.mjs.map +0 -1
  174. package/dist/Cron-BDxW6fYg.d.cts +0 -26
  175. package/dist/Cron-BDxW6fYg.d.cts.map +0 -1
  176. package/dist/Cron-CWxjO2Fg.d.mts +0 -26
  177. package/dist/Cron-CWxjO2Fg.d.mts.map +0 -1
  178. package/dist/Cron-DEKZg5j4.cjs +0 -25
  179. package/dist/Cron-DEKZg5j4.cjs.map +0 -1
  180. package/dist/CronBuilder-BHpY6w3b.cjs +0 -74
  181. package/dist/CronBuilder-BHpY6w3b.cjs.map +0 -1
  182. package/dist/CronBuilder-CginrW3H.d.cts +0 -32
  183. package/dist/CronBuilder-CginrW3H.d.cts.map +0 -1
  184. package/dist/CronBuilder-DJnXbDGK.d.mts +0 -32
  185. package/dist/CronBuilder-DJnXbDGK.d.mts.map +0 -1
  186. package/dist/CronBuilder-VXpyNfp2.mjs +0 -68
  187. package/dist/CronBuilder-VXpyNfp2.mjs.map +0 -1
  188. package/dist/Endpoint-BcxvF4F3.cjs +0 -440
  189. package/dist/Endpoint-BcxvF4F3.cjs.map +0 -1
  190. package/dist/Endpoint-CGdCGJkC.d.cts.map +0 -1
  191. package/dist/Endpoint-DtFQFL63.d.mts.map +0 -1
  192. package/dist/Endpoint-DvY3aqAy.mjs +0 -422
  193. package/dist/Endpoint-DvY3aqAy.mjs.map +0 -1
  194. package/dist/EndpointBuilder-CMzbGG2c.mjs +0 -262
  195. package/dist/EndpointBuilder-CMzbGG2c.mjs.map +0 -1
  196. package/dist/EndpointBuilder-DIAsH97h.d.mts +0 -146
  197. package/dist/EndpointBuilder-DIAsH97h.d.mts.map +0 -1
  198. package/dist/EndpointBuilder-Dzqcm8Yv.d.cts +0 -146
  199. package/dist/EndpointBuilder-Dzqcm8Yv.d.cts.map +0 -1
  200. package/dist/EndpointBuilder-QdDf3x87.cjs +0 -268
  201. package/dist/EndpointBuilder-QdDf3x87.cjs.map +0 -1
  202. package/dist/EndpointFactory-AsfUsn-v.cjs +0 -393
  203. package/dist/EndpointFactory-AsfUsn-v.cjs.map +0 -1
  204. package/dist/EndpointFactory-C1rh407J.d.cts +0 -142
  205. package/dist/EndpointFactory-C1rh407J.d.cts.map +0 -1
  206. package/dist/EndpointFactory-CkPaFZA0.mjs +0 -381
  207. package/dist/EndpointFactory-CkPaFZA0.mjs.map +0 -1
  208. package/dist/EndpointFactory-pCuCu_1H.d.mts +0 -142
  209. package/dist/EndpointFactory-pCuCu_1H.d.mts.map +0 -1
  210. package/dist/Function-CZw1DRQ6.d.mts +0 -76
  211. package/dist/Function-CZw1DRQ6.d.mts.map +0 -1
  212. package/dist/Function-CwlB89lS.d.cts +0 -76
  213. package/dist/Function-CwlB89lS.d.cts.map +0 -1
  214. package/dist/Function-DgQ_no6B.cjs +0 -84
  215. package/dist/Function-DgQ_no6B.cjs.map +0 -1
  216. package/dist/Function-xfQbftdE.mjs +0 -72
  217. package/dist/Function-xfQbftdE.mjs.map +0 -1
  218. package/dist/FunctionBuilder-CBeqX18X.mjs +0 -80
  219. package/dist/FunctionBuilder-CBeqX18X.mjs.map +0 -1
  220. package/dist/FunctionBuilder-C_xG9As7.cjs +0 -86
  221. package/dist/FunctionBuilder-C_xG9As7.cjs.map +0 -1
  222. package/dist/FunctionBuilder-D_7f5MfS.d.cts +0 -40
  223. package/dist/FunctionBuilder-D_7f5MfS.d.cts.map +0 -1
  224. package/dist/FunctionBuilder-m5BNA2Ap.d.mts +0 -40
  225. package/dist/FunctionBuilder-m5BNA2Ap.d.mts.map +0 -1
  226. package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs +0 -101
  227. package/dist/FunctionExecutionWrapper-B0ZAssiy.mjs.map +0 -1
  228. package/dist/FunctionExecutionWrapper-C7yYXIq-.d.mts +0 -50
  229. package/dist/FunctionExecutionWrapper-C7yYXIq-.d.mts.map +0 -1
  230. package/dist/FunctionExecutionWrapper-Cg8HjuHL.d.cts +0 -50
  231. package/dist/FunctionExecutionWrapper-Cg8HjuHL.d.cts.map +0 -1
  232. package/dist/FunctionExecutionWrapper-KKHP6fDY.cjs +0 -107
  233. package/dist/FunctionExecutionWrapper-KKHP6fDY.cjs.map +0 -1
  234. package/dist/HonoEndpointAdaptor-B5fKdLi7.cjs.map +0 -1
  235. package/dist/HonoEndpointAdaptor-BXga7Jqh.d.mts +0 -50
  236. package/dist/HonoEndpointAdaptor-BXga7Jqh.d.mts.map +0 -1
  237. package/dist/HonoEndpointAdaptor-D3IgM-0B.d.cts +0 -50
  238. package/dist/HonoEndpointAdaptor-D3IgM-0B.d.cts.map +0 -1
  239. package/dist/HonoEndpointAdaptor-DOUODM7n.mjs.map +0 -1
  240. package/dist/Subscriber-BEhOdNQi.mjs +0 -28
  241. package/dist/Subscriber-BEhOdNQi.mjs.map +0 -1
  242. package/dist/Subscriber-BgB3RRxb.d.mts.map +0 -1
  243. package/dist/Subscriber-Scz7hrV6.cjs +0 -34
  244. package/dist/Subscriber-Scz7hrV6.cjs.map +0 -1
  245. package/dist/SubscriberBuilder-B82h4v-S.cjs +0 -60
  246. package/dist/SubscriberBuilder-B82h4v-S.cjs.map +0 -1
  247. package/dist/SubscriberBuilder-B9uva8fZ.d.cts +0 -28
  248. package/dist/SubscriberBuilder-B9uva8fZ.d.cts.map +0 -1
  249. package/dist/SubscriberBuilder-DaQkh2Nt.d.mts +0 -28
  250. package/dist/SubscriberBuilder-DaQkh2Nt.d.mts.map +0 -1
  251. package/dist/SubscriberBuilder-DlUaG0Ej.mjs +0 -54
  252. package/dist/SubscriberBuilder-DlUaG0Ej.mjs.map +0 -1
  253. package/dist/TestEndpointAdaptor-Clz_L8Xj.d.cts +0 -45
  254. package/dist/TestEndpointAdaptor-Clz_L8Xj.d.cts.map +0 -1
  255. package/dist/TestEndpointAdaptor-DxXJoBBf.d.mts +0 -45
  256. package/dist/TestEndpointAdaptor-DxXJoBBf.d.mts.map +0 -1
  257. package/dist/TestEndpointAdaptor-G2T789bH.mjs +0 -174
  258. package/dist/TestEndpointAdaptor-G2T789bH.mjs.map +0 -1
  259. package/dist/TestEndpointAdaptor-YlwOEisx.cjs +0 -180
  260. package/dist/TestEndpointAdaptor-YlwOEisx.cjs.map +0 -1
  261. package/dist/TestFunctionAdaptor-BHk2bDOV.d.cts +0 -30
  262. package/dist/TestFunctionAdaptor-BHk2bDOV.d.cts.map +0 -1
  263. package/dist/TestFunctionAdaptor-C5CLuR-9.mjs +0 -75
  264. package/dist/TestFunctionAdaptor-C5CLuR-9.mjs.map +0 -1
  265. package/dist/TestFunctionAdaptor-CH6-gO_B.cjs +0 -81
  266. package/dist/TestFunctionAdaptor-CH6-gO_B.cjs.map +0 -1
  267. package/dist/TestFunctionAdaptor-DzT8GRdR.d.mts +0 -30
  268. package/dist/TestFunctionAdaptor-DzT8GRdR.d.mts.map +0 -1
  269. package/dist/TestSubscriberAdaptor-CPEiqSfE.d.mts +0 -26
  270. package/dist/TestSubscriberAdaptor-CPEiqSfE.d.mts.map +0 -1
  271. package/dist/TestSubscriberAdaptor-CwP3qNJ4.mjs +0 -51
  272. package/dist/TestSubscriberAdaptor-CwP3qNJ4.mjs.map +0 -1
  273. package/dist/TestSubscriberAdaptor-DQk5xzb0.d.cts +0 -26
  274. package/dist/TestSubscriberAdaptor-DQk5xzb0.d.cts.map +0 -1
  275. package/dist/TestSubscriberAdaptor-Dgxr_0vL.cjs +0 -57
  276. package/dist/TestSubscriberAdaptor-Dgxr_0vL.cjs.map +0 -1
  277. package/dist/chunk-CUT6urMc.cjs +0 -30
  278. package/dist/crons/Cron.cjs +0 -8
  279. package/dist/crons/Cron.d.cts +0 -7
  280. package/dist/crons/Cron.d.mts +0 -7
  281. package/dist/crons/Cron.mjs +0 -8
  282. package/dist/crons/CronBuilder.cjs +0 -9
  283. package/dist/crons/CronBuilder.d.cts +0 -8
  284. package/dist/crons/CronBuilder.d.mts +0 -8
  285. package/dist/crons/CronBuilder.mjs +0 -9
  286. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +0 -11
  287. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +0 -11
  288. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +0 -11
  289. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +0 -11
  290. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +0 -13
  291. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +0 -12
  292. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +0 -12
  293. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +0 -13
  294. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +0 -13
  295. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +0 -12
  296. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +0 -12
  297. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +0 -13
  298. package/dist/endpoints/Authorizer.cjs +0 -6
  299. package/dist/endpoints/Authorizer.d.cts +0 -2
  300. package/dist/endpoints/Authorizer.d.mts +0 -2
  301. package/dist/endpoints/Authorizer.mjs +0 -3
  302. package/dist/endpoints/Endpoint.cjs +0 -10
  303. package/dist/endpoints/Endpoint.d.cts +0 -9
  304. package/dist/endpoints/Endpoint.d.mts +0 -9
  305. package/dist/endpoints/Endpoint.mjs +0 -8
  306. package/dist/endpoints/EndpointBuilder.cjs +0 -11
  307. package/dist/endpoints/EndpointBuilder.d.cts +0 -10
  308. package/dist/endpoints/EndpointBuilder.d.mts +0 -10
  309. package/dist/endpoints/EndpointBuilder.mjs +0 -11
  310. package/dist/endpoints/EndpointFactory.cjs +0 -13
  311. package/dist/endpoints/EndpointFactory.d.cts +0 -11
  312. package/dist/endpoints/EndpointFactory.d.mts +0 -11
  313. package/dist/endpoints/EndpointFactory.mjs +0 -12
  314. package/dist/endpoints/HonoEndpointAdaptor.cjs +0 -14
  315. package/dist/endpoints/HonoEndpointAdaptor.d.cts +0 -10
  316. package/dist/endpoints/HonoEndpointAdaptor.d.mts +0 -10
  317. package/dist/endpoints/HonoEndpointAdaptor.mjs +0 -14
  318. package/dist/endpoints/TestEndpointAdaptor.cjs +0 -12
  319. package/dist/endpoints/TestEndpointAdaptor.d.cts +0 -10
  320. package/dist/endpoints/TestEndpointAdaptor.d.mts +0 -10
  321. package/dist/endpoints/TestEndpointAdaptor.mjs +0 -12
  322. package/dist/endpoints/audit.cjs +0 -0
  323. package/dist/endpoints/audit.d.cts +0 -9
  324. package/dist/endpoints/audit.d.mts +0 -9
  325. package/dist/endpoints/audit.mjs +0 -0
  326. package/dist/endpoints/helpers.cjs +0 -10
  327. package/dist/endpoints/helpers.d.cts +0 -60
  328. package/dist/endpoints/helpers.d.cts.map +0 -1
  329. package/dist/endpoints/helpers.d.mts +0 -60
  330. package/dist/endpoints/helpers.d.mts.map +0 -1
  331. package/dist/endpoints/helpers.mjs +0 -9
  332. package/dist/endpoints/lazyAccessors.cjs +0 -10
  333. package/dist/endpoints/lazyAccessors.d.cts +0 -10
  334. package/dist/endpoints/lazyAccessors.d.mts +0 -10
  335. package/dist/endpoints/lazyAccessors.mjs +0 -3
  336. package/dist/endpoints/parseHonoQuery.cjs +0 -3
  337. package/dist/endpoints/parseHonoQuery.d.cts +0 -14
  338. package/dist/endpoints/parseHonoQuery.d.cts.map +0 -1
  339. package/dist/endpoints/parseHonoQuery.d.mts +0 -14
  340. package/dist/endpoints/parseHonoQuery.d.mts.map +0 -1
  341. package/dist/endpoints/parseHonoQuery.mjs +0 -3
  342. package/dist/endpoints/parseQueryParams.cjs +0 -3
  343. package/dist/endpoints/parseQueryParams.d.cts +0 -14
  344. package/dist/endpoints/parseQueryParams.d.cts.map +0 -1
  345. package/dist/endpoints/parseQueryParams.d.mts +0 -14
  346. package/dist/endpoints/parseQueryParams.d.mts.map +0 -1
  347. package/dist/endpoints/parseQueryParams.mjs +0 -3
  348. package/dist/endpoints/processAudits.cjs +0 -5
  349. package/dist/endpoints/processAudits.d.cts +0 -95
  350. package/dist/endpoints/processAudits.d.cts.map +0 -1
  351. package/dist/endpoints/processAudits.d.mts +0 -95
  352. package/dist/endpoints/processAudits.d.mts.map +0 -1
  353. package/dist/endpoints/processAudits.mjs +0 -3
  354. package/dist/endpoints/rls.cjs +0 -3
  355. package/dist/endpoints/rls.d.cts +0 -9
  356. package/dist/endpoints/rls.d.mts +0 -9
  357. package/dist/endpoints/rls.mjs +0 -3
  358. package/dist/functions/AWSLambdaFunction.cjs +0 -9
  359. package/dist/functions/AWSLambdaFunction.d.cts +0 -5
  360. package/dist/functions/AWSLambdaFunction.d.mts +0 -5
  361. package/dist/functions/AWSLambdaFunction.mjs +0 -9
  362. package/dist/functions/BaseFunctionBuilder.cjs +0 -4
  363. package/dist/functions/BaseFunctionBuilder.d.cts +0 -3
  364. package/dist/functions/BaseFunctionBuilder.d.mts +0 -3
  365. package/dist/functions/BaseFunctionBuilder.mjs +0 -4
  366. package/dist/functions/Function.cjs +0 -5
  367. package/dist/functions/Function.d.cts +0 -3
  368. package/dist/functions/Function.d.mts +0 -3
  369. package/dist/functions/Function.mjs +0 -4
  370. package/dist/functions/FunctionBuilder.cjs +0 -6
  371. package/dist/functions/FunctionBuilder.d.cts +0 -5
  372. package/dist/functions/FunctionBuilder.d.mts +0 -5
  373. package/dist/functions/FunctionBuilder.mjs +0 -6
  374. package/dist/functions/FunctionExecutionWrapper.cjs +0 -8
  375. package/dist/functions/FunctionExecutionWrapper.d.cts +0 -4
  376. package/dist/functions/FunctionExecutionWrapper.d.mts +0 -4
  377. package/dist/functions/FunctionExecutionWrapper.mjs +0 -8
  378. package/dist/functions/TestFunctionAdaptor.cjs +0 -8
  379. package/dist/functions/TestFunctionAdaptor.d.cts +0 -4
  380. package/dist/functions/TestFunctionAdaptor.d.mts +0 -4
  381. package/dist/functions/TestFunctionAdaptor.mjs +0 -8
  382. package/dist/functions-B1mrMoUH.mjs +0 -8
  383. package/dist/functions-B1mrMoUH.mjs.map +0 -1
  384. package/dist/functions-rOD3pXQd.cjs +0 -13
  385. package/dist/functions-rOD3pXQd.cjs.map +0 -1
  386. package/dist/helpers-BYyX0qTA.cjs +0 -95
  387. package/dist/helpers-BYyX0qTA.cjs.map +0 -1
  388. package/dist/helpers-BtwC2IW8.mjs +0 -83
  389. package/dist/helpers-BtwC2IW8.mjs.map +0 -1
  390. package/dist/index-BfeupgMl.d.cts +0 -12
  391. package/dist/index-BfeupgMl.d.cts.map +0 -1
  392. package/dist/index-DQo_Csy7.d.mts +0 -12
  393. package/dist/index-DQo_Csy7.d.mts.map +0 -1
  394. package/dist/lazyAccessors-BVEtB9lU.cjs +0 -223
  395. package/dist/lazyAccessors-BVEtB9lU.cjs.map +0 -1
  396. package/dist/lazyAccessors-Bled3FVc.d.mts +0 -49
  397. package/dist/lazyAccessors-Bled3FVc.d.mts.map +0 -1
  398. package/dist/lazyAccessors-C8AF1hNi.d.cts +0 -49
  399. package/dist/lazyAccessors-C8AF1hNi.d.cts.map +0 -1
  400. package/dist/lazyAccessors-DM6HcXQk.mjs +0 -175
  401. package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
  402. package/dist/parseHonoQuery-BBs8CX-H.cjs +0 -24
  403. package/dist/parseHonoQuery-BBs8CX-H.cjs.map +0 -1
  404. package/dist/parseHonoQuery-Cp8CII0P.mjs +0 -18
  405. package/dist/parseHonoQuery-Cp8CII0P.mjs.map +0 -1
  406. package/dist/parseQueryParams-B4RK1za3.cjs +0 -31
  407. package/dist/parseQueryParams-B4RK1za3.cjs.map +0 -1
  408. package/dist/parseQueryParams-DS3Qmrbd.mjs +0 -25
  409. package/dist/parseQueryParams-DS3Qmrbd.mjs.map +0 -1
  410. package/dist/processAudits-CzHkPokQ.cjs +0 -180
  411. package/dist/processAudits-CzHkPokQ.cjs.map +0 -1
  412. package/dist/processAudits-Dj8UGqcW.mjs +0 -162
  413. package/dist/processAudits-Dj8UGqcW.mjs.map +0 -1
  414. package/dist/publisher-BrzPGnm4.d.cts +0 -16
  415. package/dist/publisher-BrzPGnm4.d.cts.map +0 -1
  416. package/dist/publisher-Bw4770Hi.mjs +0 -41
  417. package/dist/publisher-Bw4770Hi.mjs.map +0 -1
  418. package/dist/publisher-CP4gpv-4.d.mts +0 -16
  419. package/dist/publisher-CP4gpv-4.d.mts.map +0 -1
  420. package/dist/publisher-lFQleddL.cjs +0 -53
  421. package/dist/publisher-lFQleddL.cjs.map +0 -1
  422. package/dist/publisher.cjs +0 -4
  423. package/dist/publisher.d.cts +0 -3
  424. package/dist/publisher.d.mts +0 -3
  425. package/dist/publisher.mjs +0 -3
  426. package/dist/rls-7XXX7DvY.mjs +0 -9
  427. package/dist/rls-7XXX7DvY.mjs.map +0 -1
  428. package/dist/rls-DxFqdIA0.cjs +0 -15
  429. package/dist/rls-DxFqdIA0.cjs.map +0 -1
  430. package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +0 -3
  431. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.cts +0 -4
  432. package/dist/subscribers/AWSLambdaSubscriberAdaptor.d.mts +0 -4
  433. package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +0 -3
  434. package/dist/subscribers/Subscriber.cjs +0 -4
  435. package/dist/subscribers/Subscriber.d.cts +0 -3
  436. package/dist/subscribers/Subscriber.d.mts +0 -3
  437. package/dist/subscribers/Subscriber.mjs +0 -4
  438. package/dist/subscribers/SubscriberBuilder.cjs +0 -5
  439. package/dist/subscribers/SubscriberBuilder.d.cts +0 -4
  440. package/dist/subscribers/SubscriberBuilder.d.mts +0 -4
  441. package/dist/subscribers/SubscriberBuilder.mjs +0 -5
  442. package/dist/subscribers/TestSubscriberAdaptor.cjs +0 -4
  443. package/dist/subscribers/TestSubscriberAdaptor.d.cts +0 -4
  444. package/dist/subscribers/TestSubscriberAdaptor.d.mts +0 -4
  445. package/dist/subscribers/TestSubscriberAdaptor.mjs +0 -4
  446. package/dist/telemetry.cjs +0 -0
  447. package/dist/telemetry.d.cts +0 -2
  448. package/dist/telemetry.d.mts +0 -2
  449. package/dist/telemetry.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["SubscriberBuilder"],"sources":["../../src/subscribers/index.ts"],"sourcesContent":["import { SubscriberBuilder } from './SubscriberBuilder';\n\nexport { Subscriber } from './Subscriber';\nexport { SubscriberBuilder };\n\nexport const s = new SubscriberBuilder();\n"],"mappings":";;;;;AAKA,MAAa,IAAI,IAAIA"}
1
+ {"version":3,"file":"index.cjs","names":["DEFAULT_LOGGER","ConsoleLogger","Construct","obj: any","ConstructType","handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>","DEFAULT_LOGGER","timeout: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>"],"sources":["../../src/subscribers/Subscriber.ts","../../src/subscribers/SubscriberBuilder.ts","../../src/subscribers/index.ts"],"sourcesContent":["import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Construct, ConstructType } from '../Construct';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n\tTPublisher extends EventPublisher<any> | undefined,\n\tTEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n\t? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n\t: never;\n\nexport class Subscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends\n\t\tExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n\tTLogger,\n\tTEventPublisherServiceName,\n\tTEventPublisher,\n\tOutSchema,\n\tTServices\n> {\n\t__IS_SUBSCRIBER__ = true;\n\n\tstatic isSubscriber(\n\t\tobj: any,\n\t): obj is Subscriber<any, any, any, any, any, any> {\n\t\treturn Boolean(\n\t\t\tobj &&\n\t\t\t\tobj.__IS_SUBSCRIBER__ === true &&\n\t\t\t\tobj.type === ConstructType.Subscriber,\n\t\t);\n\t}\n\n\tconstructor(\n\t\tpublic readonly handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t\tpublic override readonly timeout: number = 30000,\n\t\tprotected _subscribedEvents?: TSubscribedEvents,\n\t\tpublic override readonly outputSchema?: OutSchema,\n\t\tpublic override readonly services: TServices = [] as unknown as TServices,\n\t\tpublic override readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n\t\tpublic override readonly publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>,\n\t) {\n\t\tsuper(\n\t\t\tConstructType.Subscriber,\n\t\t\tlogger,\n\t\t\tservices,\n\t\t\t[],\n\t\t\tpublisherService,\n\t\t\toutputSchema,\n\t\t);\n\t}\n\n\tget subscribedEvents(): TSubscribedEvents | undefined {\n\t\treturn this._subscribedEvents;\n\t}\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n\tctx: SubscriberContext<\n\t\tTEventPublisher,\n\t\tTSubscribedEvents,\n\t\tTServices,\n\t\tTLogger\n\t>,\n) => OutSchema extends StandardSchemaV1\n\t? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n\t: any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n> = {\n\tevents: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n","import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _subscribedEvents: TSubscribedEvents = [] as any;\n\tprivate _timeout?: number;\n\tprivate outputSchema?: OutSchema;\n\tprivate _services: TServices = [] as Service[] as TServices;\n\tprivate _logger: TLogger = DEFAULT_LOGGER;\n\tprivate _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n\tconstructor() {\n\t\tthis._timeout = 30000; // Default timeout\n\t}\n\n\ttimeout(timeout: number): this {\n\t\tthis._timeout = timeout;\n\t\treturn this;\n\t}\n\n\toutput<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis.outputSchema = schema as unknown as OutSchema;\n\t\treturn this as any;\n\t}\n\n\tservices<T extends Service[]>(\n\t\tservices: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis._services = [...this._services, ...services] as any;\n\t\treturn this as any;\n\t}\n\n\tlogger<T extends Logger>(\n\t\tlogger: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis._logger = logger as unknown as TLogger;\n\t\treturn this as any;\n\t}\n\n\tpublisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tT,\n\t\tTName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis._publisher = publisher as any;\n\t\treturn this as any;\n\t}\n\n\tsubscribe<\n\t\tTEvent extends TEventPublisher extends EventPublisher<any>\n\t\t\t?\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type']\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type'][]\n\t\t\t: never,\n\t>(\n\t\tevent: TEvent,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTEvent extends any[]\n\t\t\t? [...TSubscribedEvents, ...TEvent]\n\t\t\t: [...TSubscribedEvents, TEvent]\n\t> {\n\t\tconst eventsToAdd = Array.isArray(event) ? event : [event];\n\t\tthis._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd] as any;\n\t\treturn this as any;\n\t}\n\n\thandle(\n\t\tfn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t): Subscriber<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tconst subscriber = new Subscriber(\n\t\t\tfn,\n\t\t\tthis._timeout,\n\t\t\tthis._subscribedEvents,\n\t\t\tthis.outputSchema,\n\t\t\tthis._services,\n\t\t\tthis._logger,\n\t\t\tthis._publisher,\n\t\t);\n\n\t\t// Reset builder state after creating the subscriber to prevent pollution\n\t\tthis._services = [] as Service[] as TServices;\n\t\tthis._logger = DEFAULT_LOGGER;\n\t\tthis._publisher = undefined;\n\t\tthis._subscribedEvents = [] as any;\n\t\tthis._timeout = 30000; // Reset to default\n\t\tthis.outputSchema = undefined;\n\n\t\treturn subscriber;\n\t}\n}\n","import { SubscriberBuilder } from './SubscriberBuilder';\n\nexport { Subscriber } from './Subscriber';\nexport { SubscriberBuilder };\n\nexport const s = new SubscriberBuilder();\n"],"mappings":";;;;AAWA,MAAMA,mBAAiB,IAAIC;AAU3B,IAAa,aAAb,cAQUC,4BAMR;CACD,oBAAoB;CAEpB,OAAO,aACNC,KACkD;AAClD,SAAO,QACN,OACC,IAAI,sBAAsB,QAC1B,IAAI,SAASC,gCAAc,WAC5B;CACD;CAED,YACiBC,SAOSC,UAAkB,KACjCC,mBACeC,cACAC,WAAsB,CAAE,GACxBC,SAAkBV,kBAClBW,kBAIxB;AACD,QACCP,gCAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,aACA;EAxBe;EAOS;EACf;EACe;EACA;EACA;EACA;CAazB;CAED,IAAI,mBAAkD;AACrD,SAAO,KAAK;CACZ;AACD;;;;ACrED,IAAa,oBAAb,MAOE;CACD,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;CACjC,AAAQ,UAAmBQ;CAC3B,AAAQ;CAER,cAAc;AACb,OAAK,WAAW;CAChB;CAED,QAAQC,SAAuB;AAC9B,OAAK,WAAW;AAChB,SAAO;CACP;CAED,OACCC,QAQC;AACD,OAAK,eAAe;AACpB,SAAO;CACP;CAED,SACCC,UAQC;AACD,OAAK,YAAY,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;AACjD,SAAO;CACP;CAED,OACCC,QAQC;AACD,OAAK,UAAU;AACf,SAAO;CACP;CAED,UACCC,WAQC;AACD,OAAK,aAAa;AAClB,SAAO;CACP;CAED,UAOCC,OAUC;EACD,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,OAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY;AACpE,SAAO;CACP;CAED,OACCC,IAcC;EACD,MAAM,aAAa,IAAI,WACtB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK;AAIN,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUP;AACf,OAAK;AACL,OAAK,oBAAoB,CAAE;AAC3B,OAAK,WAAW;AAChB,OAAK;AAEL,SAAO;CACP;AACD;;;;AChJD,MAAa,IAAI,IAAI"}
@@ -1,10 +1,32 @@
1
- import "../Construct-CX7HyFfT.cjs";
2
- import { Subscriber } from "../Subscriber-1rDE7HuM.cjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-B9uva8fZ.cjs";
4
- import * as _geekmidas_logger10 from "@geekmidas/logger";
1
+ import "../Construct-CXqvzglu.cjs";
2
+ import { Subscriber, SubscriberHandler } from "../Subscriber-D8WkA8np.cjs";
3
+ import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
4
+ import * as _geekmidas_logger8 from "@geekmidas/logger";
5
+ import { Logger } from "@geekmidas/logger";
6
+ import { Service } from "@geekmidas/services";
7
+ import { StandardSchemaV1 } from "@standard-schema/spec";
5
8
 
9
+ //#region src/subscribers/SubscriberBuilder.d.ts
10
+ declare class SubscriberBuilder<TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends any[] = []> {
11
+ private _subscribedEvents;
12
+ private _timeout?;
13
+ private outputSchema?;
14
+ private _services;
15
+ private _logger;
16
+ private _publisher?;
17
+ constructor();
18
+ timeout(timeout: number): this;
19
+ output<T extends StandardSchemaV1>(schema: T): SubscriberBuilder<TServices, TLogger, T, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
20
+ services<T extends Service[]>(services: T): SubscriberBuilder<[...TServices, ...T], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
21
+ logger<T extends Logger>(logger: T): SubscriberBuilder<TServices, T, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
22
+ publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): SubscriberBuilder<TServices, TLogger, OutSchema, T, TName, TSubscribedEvents>;
23
+ subscribe<TEvent extends (TEventPublisher extends EventPublisher<any> ? ExtractPublisherMessage<TEventPublisher>['type'] | ExtractPublisherMessage<TEventPublisher>['type'][] : never)>(event: TEvent): SubscriberBuilder<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TEvent extends any[] ? [...TSubscribedEvents, ...TEvent] : [...TSubscribedEvents, TEvent]>;
24
+ handle(fn: SubscriberHandler<TEventPublisher, TSubscribedEvents, TServices, TLogger, OutSchema>): Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
25
+ }
26
+ //# sourceMappingURL=SubscriberBuilder.d.ts.map
27
+ //#endregion
6
28
  //#region src/subscribers/index.d.ts
7
- declare const s: SubscriberBuilder<[], _geekmidas_logger10.Logger, undefined, undefined, string, []>;
29
+ declare const s: SubscriberBuilder<[], _geekmidas_logger8.Logger, undefined, undefined, string, []>;
8
30
  //# sourceMappingURL=index.d.ts.map
9
31
 
10
32
  //#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/SubscriberBuilder.ts","../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;cAUa,oCACM,gCACF,SAAS,0BACP,kEACM;;;;EAJZ,QAAA,SAAA;EAAiB,QAAA,OAAA;EAAA,QACX,UAAA;EAAO,WACT,CAAA;EAAM,OAAG,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAM,MACb,CAAA,UAqBD,gBArBC,CAAA,CAAA,MAAA,EAsBT,CAtBS,CAAA,EAuBf,iBAvBe,CAwBjB,SAxBiB,EAyBjB,OAzBiB,EA0BjB,CA1BiB,EA2BjB,eA3BiB,EA4BjB,0BA5BiB,EA6BjB,iBA7BiB,CAAA;EAAgB,QACV,CAAA,UAkCL,OAlCK,EAAA,CAAA,CAAA,QAAA,EAmCb,CAnCa,CAAA,EAoCrB,iBApCqB,CAAA,CAoBP,GAiBZ,SAjBY,EACR,GAgBU,CAhBV,CAAC,EAiBT,OAfA,EAgBA,SAhBA,EAiBA,eAjBA,EAkBA,0BAlBA,EAmBA,iBAnBA,CAAA;EAAS,MACT,CAAA,UAwBgB,MAxBhB,CAAA,CAAA,MAAA,EAyBQ,CAzBR,CAAA,EA0BE,iBA1BF,CA2BA,SA3BA,EA4BA,CA5BA,EA6BA,SA7BA,EA8BA,eA9BA,EA+BA,0BA/BA,EAgCA,iBAhCA,CAAA;EAAO,SACP,CAAA,UAqCmB,cArCnB,CAAA,GAAA,CAAA,EAAA,cAAA,MAAA,CAAA,CAAA,SAAA,EAsCW,OAtCX,CAsCmB,KAtCnB,EAsC0B,CAtC1B,CAAA,CAAA,EAuCE,iBAvCF,CAwCA,SAxCA,EAyCA,OAzCA,EA0CA,SA1CA,EA2CA,CA3CA,EA4CA,KA5CA,EA6CA,iBA7CA,CAAA;EAAC,SACD,CAAA,gBAmDe,eAnDf,SAmDuC,cAnDvC,CAAA,GAAA,CAAA,GAqDK,uBArDL,CAqD6B,eArD7B,CAAA,CAAA,MAAA,CAAA,GAsDK,uBAtDL,CAsD6B,eAtD7B,CAAA,CAAA,MAAA,CAAA,EAAA,GAAA,KAAA,EAAA,CAAA,KAAA,EAyDO,MAzDP,CAAA,EA0DE,iBA1DF,CA2DA,SA3DA,EA4DA,OA5DA,EA6DA,SA7DA,EA8DA,eA9DA,EA+DA,0BA/DA,EAgEA,MAhEA,SAAA,GAAA,EAAA,GAAA,CAAA,GAiEO,iBAjEP,EAAA,GAiE6B,MAjE7B,CAAA,GAAA,CAAA,GAkEO,iBAlEP,EAkE0B,MAlE1B,CAAA,CAAA;EAAe,MACf,CAAA,EAAA,EAyEI,iBAzEJ,CA0EC,eA1ED,EA2EC,iBA3ED,EA4EC,SA5ED,EA6EC,OA7ED,EA8EC,SA9ED,CAAA,CAAA,EAgFE,UAhFF,CAiFA,SAjFA,EAkFA,OAlFA,EAmFA,SAnFA,EAoFA,eApFA,EAqFA,0BArFA,EAsFA,iBAtFA,CAAA;;;;;cCpCW,GAAC,sBAA0B,kBAAA,CAA1B,MAAA"}
@@ -1,10 +1,31 @@
1
- import "../Construct-C2SyofdS.mjs";
2
- import { Subscriber } from "../Subscriber-BgB3RRxb.mjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-DaQkh2Nt.mjs";
4
- import * as _geekmidas_logger8 from "@geekmidas/logger";
1
+ import "../Construct-D0n7QTaI.mjs";
2
+ import { Subscriber, SubscriberHandler } from "../Subscriber-Tft61-YG.mjs";
3
+ import { Service } from "@geekmidas/services";
4
+ import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
5
+ import { Logger as Logger$1 } from "@geekmidas/logger";
6
+ import { StandardSchemaV1 } from "@standard-schema/spec";
5
7
 
8
+ //#region src/subscribers/SubscriberBuilder.d.ts
9
+ declare class SubscriberBuilder<TServices extends Service[] = [], TLogger extends Logger$1 = Logger$1, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TSubscribedEvents extends any[] = []> {
10
+ private _subscribedEvents;
11
+ private _timeout?;
12
+ private outputSchema?;
13
+ private _services;
14
+ private _logger;
15
+ private _publisher?;
16
+ constructor();
17
+ timeout(timeout: number): this;
18
+ output<T extends StandardSchemaV1>(schema: T): SubscriberBuilder<TServices, TLogger, T, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
19
+ services<T extends Service[]>(services: T): SubscriberBuilder<[...TServices, ...T], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
20
+ logger<T extends Logger$1>(logger: T): SubscriberBuilder<TServices, T, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
21
+ publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): SubscriberBuilder<TServices, TLogger, OutSchema, T, TName, TSubscribedEvents>;
22
+ subscribe<TEvent extends (TEventPublisher extends EventPublisher<any> ? ExtractPublisherMessage<TEventPublisher>['type'] | ExtractPublisherMessage<TEventPublisher>['type'][] : never)>(event: TEvent): SubscriberBuilder<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TEvent extends any[] ? [...TSubscribedEvents, ...TEvent] : [...TSubscribedEvents, TEvent]>;
23
+ handle(fn: SubscriberHandler<TEventPublisher, TSubscribedEvents, TServices, TLogger, OutSchema>): Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
24
+ }
25
+ //# sourceMappingURL=SubscriberBuilder.d.ts.map
26
+ //#endregion
6
27
  //#region src/subscribers/index.d.ts
7
- declare const s: SubscriberBuilder<[], _geekmidas_logger8.Logger, undefined, undefined, string, []>;
28
+ declare const s: SubscriberBuilder<[], Logger, undefined, undefined, string, []>;
8
29
  //# sourceMappingURL=index.d.ts.map
9
30
 
10
31
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAKa,GAAC,sBAA0B,kBAAA,CAA1B,MAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/subscribers/SubscriberBuilder.ts","../../src/subscribers/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;cAUa,oCACM,gCACF,WAAS,4BACP,kEACM;;;EAJZ,QAAA,YAAiB;EAAA,QAAA,SAAA;EAAA,QACX,OAAA;EAAO,QACT,UAAA;EAAM,WAAG,CAAA;EAAM,OACb,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAgB,MACV,CAAA,UAoBP,gBApBO,CAAA,CAAA,MAAA,EAqBf,CArBe,CAAA,EAsBrB,iBAtBqB,CAuBvB,SAvBuB,EAwBvB,OAxBuB,EAyBvB,CAzBuB,EA0BvB,eA1BuB,EA2BvB,0BA3BuB,EA4BvB,iBA5BuB,CAAA;EAAc,QAoBrB,CAAA,UAcE,OAdF,EAAA,CAAA,CAAA,QAAA,EAeN,CAfM,CAAA,EAgBd,iBAhBc,CAAA,CACR,GAgBJ,SAhBI,EAER,GAckB,CAdlB,CAAS,EAeT,OAdA,EAeA,SAfA,EAgBA,eAhBA,EAiBA,0BAjBA,EAkBA,iBAlBA,CAAA;EAAO,MACP,CAAA,UAuBgB,QAvBhB,CAAA,CAAA,MAAA,EAwBQ,CAxBR,CAAA,EAyBE,iBAzBF,CA0BA,SA1BA,EA2BA,CA3BA,EA4BA,SA5BA,EA6BA,eA7BA,EA8BA,0BA9BA,EA+BA,iBA/BA,CAAA;EAAC,SACD,CAAA,UAoCmB,cApCnB,CAAA,GAAA,CAAA,EAAA,cAAA,MAAA,CAAA,CAAA,SAAA,EAqCW,OArCX,CAqCmB,KArCnB,EAqC0B,CArC1B,CAAA,CAAA,EAsCE,iBAtCF,CAuCA,SAvCA,EAwCA,OAxCA,EAyCA,SAzCA,EA0CA,CA1CA,EA2CA,KA3CA,EA4CA,iBA5CA,CAAA;EAAe,SACf,CAAA,gBAkDe,eAlDf,SAkDuC,cAlDvC,CAAA,GAAA,CAAA,GAoDK,uBApDL,CAoD6B,eApD7B,CAAA,CAAA,MAAA,CAAA,GAqDK,uBArDL,CAqD6B,eArD7B,CAAA,CAAA,MAAA,CAAA,EAAA,GAAA,KAAA,EAAA,CAAA,KAAA,EAwDO,MAxDP,CAAA,EAyDE,iBAzDF,CA0DA,SA1DA,EA2DA,OA3DA,EA4DA,SA5DA,EA6DA,eA7DA,EA8DA,0BA9DA,EA+DA,MA/DA,SAAA,GAAA,EAAA,GAAA,CAAA,GAgEO,iBAhEP,EAAA,GAgE6B,MAhE7B,CAAA,GAAA,CAAA,GAiEO,iBAjEP,EAiE0B,MAjE1B,CAAA,CAAA;EAA0B,MAC1B,CAAA,EAAA,EAwEI,iBAxEJ,CAyEC,eAzED,EA0EC,iBA1ED,EA2EC,SA3ED,EA4EC,OA5ED,EA6EC,SA7ED,CAAA,CAAA,EA+EE,UA/EF,CAgFA,SAhFA,EAiFA,OAjFA,EAkFA,SAlFA,EAmFA,eAnFA,EAoFA,0BApFA,EAqFA,iBArFA,CAAA;;;;;cCrCW,GAAC,sBAAA"}
@@ -1,7 +1,78 @@
1
- import "../Construct-CQ9zV58W.mjs";
2
- import { Subscriber } from "../Subscriber-BEhOdNQi.mjs";
3
- import { SubscriberBuilder } from "../SubscriberBuilder-DlUaG0Ej.mjs";
1
+ import { Construct, ConstructType } from "../Construct-CdJY2DJS.mjs";
2
+ import { ConsoleLogger, DEFAULT_LOGGER } from "@geekmidas/logger/console";
4
3
 
4
+ //#region src/subscribers/Subscriber.ts
5
+ const DEFAULT_LOGGER$1 = new ConsoleLogger();
6
+ var Subscriber = class extends Construct {
7
+ __IS_SUBSCRIBER__ = true;
8
+ static isSubscriber(obj) {
9
+ return Boolean(obj && obj.__IS_SUBSCRIBER__ === true && obj.type === ConstructType.Subscriber);
10
+ }
11
+ constructor(handler, timeout = 3e4, _subscribedEvents, outputSchema, services = [], logger = DEFAULT_LOGGER$1, publisherService) {
12
+ super(ConstructType.Subscriber, logger, services, [], publisherService, outputSchema);
13
+ this.handler = handler;
14
+ this.timeout = timeout;
15
+ this._subscribedEvents = _subscribedEvents;
16
+ this.outputSchema = outputSchema;
17
+ this.services = services;
18
+ this.logger = logger;
19
+ this.publisherService = publisherService;
20
+ }
21
+ get subscribedEvents() {
22
+ return this._subscribedEvents;
23
+ }
24
+ };
25
+
26
+ //#endregion
27
+ //#region src/subscribers/SubscriberBuilder.ts
28
+ var SubscriberBuilder = class {
29
+ _subscribedEvents = [];
30
+ _timeout;
31
+ outputSchema;
32
+ _services = [];
33
+ _logger = DEFAULT_LOGGER;
34
+ _publisher;
35
+ constructor() {
36
+ this._timeout = 3e4;
37
+ }
38
+ timeout(timeout) {
39
+ this._timeout = timeout;
40
+ return this;
41
+ }
42
+ output(schema) {
43
+ this.outputSchema = schema;
44
+ return this;
45
+ }
46
+ services(services) {
47
+ this._services = [...this._services, ...services];
48
+ return this;
49
+ }
50
+ logger(logger) {
51
+ this._logger = logger;
52
+ return this;
53
+ }
54
+ publisher(publisher) {
55
+ this._publisher = publisher;
56
+ return this;
57
+ }
58
+ subscribe(event) {
59
+ const eventsToAdd = Array.isArray(event) ? event : [event];
60
+ this._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd];
61
+ return this;
62
+ }
63
+ handle(fn) {
64
+ const subscriber = new Subscriber(fn, this._timeout, this._subscribedEvents, this.outputSchema, this._services, this._logger, this._publisher);
65
+ this._services = [];
66
+ this._logger = DEFAULT_LOGGER;
67
+ this._publisher = void 0;
68
+ this._subscribedEvents = [];
69
+ this._timeout = 3e4;
70
+ this.outputSchema = void 0;
71
+ return subscriber;
72
+ }
73
+ };
74
+
75
+ //#endregion
5
76
  //#region src/subscribers/index.ts
6
77
  const s = new SubscriberBuilder();
7
78
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/subscribers/index.ts"],"sourcesContent":["import { SubscriberBuilder } from './SubscriberBuilder';\n\nexport { Subscriber } from './Subscriber';\nexport { SubscriberBuilder };\n\nexport const s = new SubscriberBuilder();\n"],"mappings":";;;;;AAKA,MAAa,IAAI,IAAI"}
1
+ {"version":3,"file":"index.mjs","names":["DEFAULT_LOGGER","obj: any","handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>","timeout: number","_subscribedEvents?: TSubscribedEvents","outputSchema?: OutSchema","services: TServices","logger: TLogger","publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>","timeout: number","schema: T","services: T","logger: T","publisher: Service<TName, T>","event: TEvent","fn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>"],"sources":["../../src/subscribers/Subscriber.ts","../../src/subscribers/SubscriberBuilder.ts","../../src/subscribers/index.ts"],"sourcesContent":["import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Construct, ConstructType } from '../Construct';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\n// Helper type to extract payload types for subscribed events\ntype ExtractEventPayloads<\n\tTPublisher extends EventPublisher<any> | undefined,\n\tTEventTypes extends any[],\n> = TPublisher extends EventPublisher<any>\n\t? Extract<ExtractPublisherMessage<TPublisher>, { type: TEventTypes[number] }>\n\t: never;\n\nexport class Subscriber<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends\n\t\tExtractPublisherMessage<TEventPublisher>['type'][] = ExtractPublisherMessage<TEventPublisher>['type'][],\n> extends Construct<\n\tTLogger,\n\tTEventPublisherServiceName,\n\tTEventPublisher,\n\tOutSchema,\n\tTServices\n> {\n\t__IS_SUBSCRIBER__ = true;\n\n\tstatic isSubscriber(\n\t\tobj: any,\n\t): obj is Subscriber<any, any, any, any, any, any> {\n\t\treturn Boolean(\n\t\t\tobj &&\n\t\t\t\tobj.__IS_SUBSCRIBER__ === true &&\n\t\t\t\tobj.type === ConstructType.Subscriber,\n\t\t);\n\t}\n\n\tconstructor(\n\t\tpublic readonly handler: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t\tpublic override readonly timeout: number = 30000,\n\t\tprotected _subscribedEvents?: TSubscribedEvents,\n\t\tpublic override readonly outputSchema?: OutSchema,\n\t\tpublic override readonly services: TServices = [] as unknown as TServices,\n\t\tpublic override readonly logger: TLogger = DEFAULT_LOGGER as TLogger,\n\t\tpublic override readonly publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>,\n\t) {\n\t\tsuper(\n\t\t\tConstructType.Subscriber,\n\t\t\tlogger,\n\t\t\tservices,\n\t\t\t[],\n\t\t\tpublisherService,\n\t\t\toutputSchema,\n\t\t);\n\t}\n\n\tget subscribedEvents(): TSubscribedEvents | undefined {\n\t\treturn this._subscribedEvents;\n\t}\n}\n\n// Handler type for subscribers that receives an array of events\nexport type SubscriberHandler<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n> = (\n\tctx: SubscriberContext<\n\t\tTEventPublisher,\n\t\tTSubscribedEvents,\n\t\tTServices,\n\t\tTLogger\n\t>,\n) => OutSchema extends StandardSchemaV1\n\t? InferStandardSchema<OutSchema> | Promise<InferStandardSchema<OutSchema>>\n\t: any | Promise<any>;\n\n// Context type for subscriber handlers\nexport type SubscriberContext<\n\tTEventPublisher extends EventPublisher<any> | undefined,\n\tTSubscribedEvents extends ExtractPublisherMessage<TEventPublisher>['type'][],\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n> = {\n\tevents: ExtractEventPayloads<TEventPublisher, TSubscribedEvents>[];\n\tservices: ServiceRecord<TServices>;\n\tlogger: TLogger;\n};\n","import type {\n\tEventPublisher,\n\tExtractPublisherMessage,\n} from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Subscriber, type SubscriberHandler } from './Subscriber';\n\nexport class SubscriberBuilder<\n\tTServices extends Service[] = [],\n\tTLogger extends Logger = Logger,\n\tOutSchema extends StandardSchemaV1 | undefined = undefined,\n\tTEventPublisher extends EventPublisher<any> | undefined = undefined,\n\tTEventPublisherServiceName extends string = string,\n\tTSubscribedEvents extends any[] = [],\n> {\n\tprivate _subscribedEvents: TSubscribedEvents = [] as any;\n\tprivate _timeout?: number;\n\tprivate outputSchema?: OutSchema;\n\tprivate _services: TServices = [] as Service[] as TServices;\n\tprivate _logger: TLogger = DEFAULT_LOGGER;\n\tprivate _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\n\tconstructor() {\n\t\tthis._timeout = 30000; // Default timeout\n\t}\n\n\ttimeout(timeout: number): this {\n\t\tthis._timeout = timeout;\n\t\treturn this;\n\t}\n\n\toutput<T extends StandardSchemaV1>(\n\t\tschema: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tT,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis.outputSchema = schema as unknown as OutSchema;\n\t\treturn this as any;\n\t}\n\n\tservices<T extends Service[]>(\n\t\tservices: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...T],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis._services = [...this._services, ...services] as any;\n\t\treturn this as any;\n\t}\n\n\tlogger<T extends Logger>(\n\t\tlogger: T,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tT,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis._logger = logger as unknown as TLogger;\n\t\treturn this as any;\n\t}\n\n\tpublisher<T extends EventPublisher<any>, TName extends string>(\n\t\tpublisher: Service<TName, T>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tT,\n\t\tTName,\n\t\tTSubscribedEvents\n\t> {\n\t\tthis._publisher = publisher as any;\n\t\treturn this as any;\n\t}\n\n\tsubscribe<\n\t\tTEvent extends TEventPublisher extends EventPublisher<any>\n\t\t\t?\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type']\n\t\t\t\t\t| ExtractPublisherMessage<TEventPublisher>['type'][]\n\t\t\t: never,\n\t>(\n\t\tevent: TEvent,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTEvent extends any[]\n\t\t\t? [...TSubscribedEvents, ...TEvent]\n\t\t\t: [...TSubscribedEvents, TEvent]\n\t> {\n\t\tconst eventsToAdd = Array.isArray(event) ? event : [event];\n\t\tthis._subscribedEvents = [...this._subscribedEvents, ...eventsToAdd] as any;\n\t\treturn this as any;\n\t}\n\n\thandle(\n\t\tfn: SubscriberHandler<\n\t\t\tTEventPublisher,\n\t\t\tTSubscribedEvents,\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema\n\t\t>,\n\t): Subscriber<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\tconst subscriber = new Subscriber(\n\t\t\tfn,\n\t\t\tthis._timeout,\n\t\t\tthis._subscribedEvents,\n\t\t\tthis.outputSchema,\n\t\t\tthis._services,\n\t\t\tthis._logger,\n\t\t\tthis._publisher,\n\t\t);\n\n\t\t// Reset builder state after creating the subscriber to prevent pollution\n\t\tthis._services = [] as Service[] as TServices;\n\t\tthis._logger = DEFAULT_LOGGER;\n\t\tthis._publisher = undefined;\n\t\tthis._subscribedEvents = [] as any;\n\t\tthis._timeout = 30000; // Reset to default\n\t\tthis.outputSchema = undefined;\n\n\t\treturn subscriber;\n\t}\n}\n","import { SubscriberBuilder } from './SubscriberBuilder';\n\nexport { Subscriber } from './Subscriber';\nexport { SubscriberBuilder };\n\nexport const s = new SubscriberBuilder();\n"],"mappings":";;;;AAWA,MAAMA,mBAAiB,IAAI;AAU3B,IAAa,aAAb,cAQU,UAMR;CACD,oBAAoB;CAEpB,OAAO,aACNC,KACkD;AAClD,SAAO,QACN,OACC,IAAI,sBAAsB,QAC1B,IAAI,SAAS,cAAc,WAC5B;CACD;CAED,YACiBC,SAOSC,UAAkB,KACjCC,mBACeC,cACAC,WAAsB,CAAE,GACxBC,SAAkBP,kBAClBQ,kBAIxB;AACD,QACC,cAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,aACA;EAxBe;EAOS;EACf;EACe;EACA;EACA;EACA;CAazB;CAED,IAAI,mBAAkD;AACrD,SAAO,KAAK;CACZ;AACD;;;;ACrED,IAAa,oBAAb,MAOE;CACD,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;CACjC,AAAQ,UAAmB;CAC3B,AAAQ;CAER,cAAc;AACb,OAAK,WAAW;CAChB;CAED,QAAQC,SAAuB;AAC9B,OAAK,WAAW;AAChB,SAAO;CACP;CAED,OACCC,QAQC;AACD,OAAK,eAAe;AACpB,SAAO;CACP;CAED,SACCC,UAQC;AACD,OAAK,YAAY,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;AACjD,SAAO;CACP;CAED,OACCC,QAQC;AACD,OAAK,UAAU;AACf,SAAO;CACP;CAED,UACCC,WAQC;AACD,OAAK,aAAa;AAClB,SAAO;CACP;CAED,UAOCC,OAUC;EACD,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,OAAK,oBAAoB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY;AACpE,SAAO;CACP;CAED,OACCC,IAcC;EACD,MAAM,aAAa,IAAI,WACtB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK;AAIN,OAAK,YAAY,CAAE;AACnB,OAAK,UAAU;AACf,OAAK;AACL,OAAK,oBAAoB,CAAE;AAC3B,OAAK,WAAW;AAChB,OAAK;AAEL,SAAO;CACP;AACD;;;;AChJD,MAAa,IAAI,IAAI"}
@@ -92,4 +92,4 @@ interface Telemetry {
92
92
  //# sourceMappingURL=telemetry.d.ts.map
93
93
  //#endregion
94
94
  export { Telemetry, TelemetryContext, TelemetryRequest, TelemetryResponse };
95
- //# sourceMappingURL=telemetry-BTaiRqPo.d.cts.map
95
+ //# sourceMappingURL=telemetry-Bt0vK4ma.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-BTaiRqPo.d.cts","names":[],"sources":["../src/telemetry.ts"],"sourcesContent":[],"mappings":";;;;;;;AA6FmB,UAlFF,gBAAA,CAkFE;EAAgB;;;EAQgB,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;;UAhFlC,gBAAA;;;;;;;;WASP;;;;;UAMO,iBAAA;;;;;;;;;;;;YAcN;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BM,SAAA;;;;;;;0BAOQ,mBAAmB;;;;;;;oBAQzB,4BAA4B;;;;;;;sBAQ1B,yBAAyB"}
1
+ {"version":3,"file":"telemetry-Bt0vK4ma.d.cts","names":[],"sources":["../src/telemetry.ts"],"sourcesContent":[],"mappings":";;;;;;;AA6FmB,UAlFF,gBAAA,CAkFE;EAAgB;;;EAQgB,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;;UAhFlC,gBAAA;;;;;;;;WASP;;;;;UAMO,iBAAA;;;;;;;;;;;;YAcN;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BM,SAAA;;;;;;;0BAOQ,mBAAmB;;;;;;;oBAQzB,4BAA4B;;;;;;;sBAQ1B,yBAAyB"}
@@ -92,4 +92,4 @@ interface Telemetry {
92
92
  //# sourceMappingURL=telemetry.d.ts.map
93
93
  //#endregion
94
94
  export { Telemetry, TelemetryContext, TelemetryRequest, TelemetryResponse };
95
- //# sourceMappingURL=telemetry-C-kNOW3C.d.mts.map
95
+ //# sourceMappingURL=telemetry-COvVBKBM.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-C-kNOW3C.d.mts","names":[],"sources":["../src/telemetry.ts"],"sourcesContent":[],"mappings":";;;;;;;AA6FmB,UAlFF,gBAAA,CAkFE;EAAgB;;;EAQgB,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;;UAhFlC,gBAAA;;;;;;;;WASP;;;;;UAMO,iBAAA;;;;;;;;;;;;YAcN;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BM,SAAA;;;;;;;0BAOQ,mBAAmB;;;;;;;oBAQzB,4BAA4B;;;;;;;sBAQ1B,yBAAyB"}
1
+ {"version":3,"file":"telemetry-COvVBKBM.d.mts","names":[],"sources":["../src/telemetry.ts"],"sourcesContent":[],"mappings":";;;;;;;AA6FmB,UAlFF,gBAAA,CAkFE;EAAgB;;;EAQgB,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;;UAhFlC,gBAAA;;;;;;;;WASP;;;;;UAMO,iBAAA;;;;;;;;;;;;YAcN;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BM,SAAA;;;;;;;0BAOQ,mBAAmB;;;;;;;oBAQzB,4BAA4B;;;;;;;sBAQ1B,yBAAyB"}
@@ -6,4 +6,4 @@ type LowerHttpMethod<T extends HttpMethod> = Lowercase<T>;
6
6
 
7
7
  //#endregion
8
8
  export { HttpMethod, LowerHttpMethod, RemoveUndefined };
9
- //# sourceMappingURL=types-B5H3piDg.d.cts.map
9
+ //# sourceMappingURL=types-B8YlI4cx.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-B5H3piDg.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";KAAY,6BAAA,MACC,CADD,IACM,CADS,CACP,CADO,CAAA,SAAA,SAAA,GAAA,KAAA,GACwB,CADxB,GAC4B,CAD5B,CAC8B,CAD9B,CAAA,EAAA;AACd,KAGD,UAAA,GAHC,KAAA,GAAA,MAAA,GAAA,KAAA,GAAA,OAAA,GAAA,QAAA,GAAA,SAAA;AAAK,KAWN,eAXM,CAAA,UAWoB,UAXpB,CAAA,GAWkC,SAXlC,CAW4C,CAX5C,CAAA"}
1
+ {"version":3,"file":"types-B8YlI4cx.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";KAAY,6BAAA,MACC,CADD,IACM,CADS,CACP,CADO,CAAA,SAAA,SAAA,GAAA,KAAA,GACwB,CADxB,GAC4B,CAD5B,CAC8B,CAD9B,CAAA,EAAA;AACd,KAGD,UAAA,GAHC,KAAA,GAAA,MAAA,GAAA,KAAA,GAAA,OAAA,GAAA,QAAA,GAAA,SAAA;AAAK,KAWN,eAXM,CAAA,UAWoB,UAXpB,CAAA,GAWkC,SAXlC,CAW4C,CAX5C,CAAA"}
@@ -6,4 +6,4 @@ type LowerHttpMethod<T extends HttpMethod> = Lowercase<T>;
6
6
 
7
7
  //#endregion
8
8
  export { HttpMethod, LowerHttpMethod, RemoveUndefined };
9
- //# sourceMappingURL=types-aFmq5cKh.d.mts.map
9
+ //# sourceMappingURL=types-BA3eK4xj.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-aFmq5cKh.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";KAAY,6BAAA,MACC,CADD,IACM,CADS,CACP,CADO,CAAA,SAAA,SAAA,GAAA,KAAA,GACwB,CADxB,GAC4B,CAD5B,CAC8B,CAD9B,CAAA,EAAA;AACd,KAGD,UAAA,GAHC,KAAA,GAAA,MAAA,GAAA,KAAA,GAAA,OAAA,GAAA,QAAA,GAAA,SAAA;AAAK,KAWN,eAXM,CAAA,UAWoB,UAXpB,CAAA,GAWkC,SAXlC,CAW4C,CAX5C,CAAA"}
1
+ {"version":3,"file":"types-BA3eK4xj.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";KAAY,6BAAA,MACC,CADD,IACM,CADS,CACP,CADO,CAAA,SAAA,SAAA,GAAA,KAAA,GACwB,CADxB,GAC4B,CAD5B,CAC8B,CAD9B,CAAA,EAAA;AACd,KAGD,UAAA,GAHC,KAAA,GAAA,MAAA,GAAA,KAAA,GAAA,OAAA,GAAA,QAAA,GAAA,SAAA;AAAK,KAWN,eAXM,CAAA,UAWoB,UAXpB,CAAA,GAWkC,SAXlC,CAW4C,CAX5C,CAAA"}
package/dist/types.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-B5H3piDg.cjs";
1
+ import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-B8YlI4cx.cjs";
2
2
  export { HttpMethod, LowerHttpMethod, RemoveUndefined };
package/dist/types.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-aFmq5cKh.mjs";
1
+ import { HttpMethod, LowerHttpMethod, RemoveUndefined } from "./types-BA3eK4xj.mjs";
2
2
  export { HttpMethod, LowerHttpMethod, RemoveUndefined };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekmidas/constructs",
3
- "version": "3.0.6",
3
+ "version": "3.0.8",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -79,33 +79,35 @@
79
79
  "better-auth": "~1.4.18",
80
80
  "kysely": "~0.28.8",
81
81
  "pg": "~8.16.3",
82
+ "msw": "~2.10.3",
82
83
  "zod": "~4.1.13",
83
84
  "@geekmidas/audit": "^2.0.0",
84
85
  "@geekmidas/cache": "^1.1.0",
85
- "@geekmidas/envkit": "^1.0.4",
86
- "@geekmidas/errors": "^1.0.0",
87
86
  "@geekmidas/db": "^1.0.1",
88
- "@geekmidas/rate-limit": "^2.0.0",
89
- "@geekmidas/services": "^1.0.1",
90
- "@geekmidas/testkit": "^1.0.5",
87
+ "@geekmidas/errors": "^1.0.0",
88
+ "@geekmidas/envkit": "^1.0.5",
91
89
  "@geekmidas/events": "^1.1.0",
90
+ "@geekmidas/logger": "^1.0.1",
91
+ "@geekmidas/rate-limit": "^2.0.0",
92
92
  "@geekmidas/schema": "^1.0.0",
93
- "@geekmidas/logger": "^1.0.0"
93
+ "@geekmidas/testkit": "^1.0.5",
94
+ "@geekmidas/services": "^1.0.1"
94
95
  },
95
96
  "peerDependencies": {
96
97
  "@middy/core": ">=6.3.1",
97
98
  "@types/aws-lambda": ">=8.10.92",
98
99
  "hono": ">=4.8.2",
100
+ "msw": ">=2.0.0",
99
101
  "@geekmidas/audit": "^2.0.0",
100
- "@geekmidas/envkit": "^1.0.4",
101
102
  "@geekmidas/cache": "^1.1.0",
102
- "@geekmidas/events": "^1.1.0",
103
- "@geekmidas/schema": "^1.0.0",
104
- "@geekmidas/rate-limit": "^2.0.0",
105
103
  "@geekmidas/db": "^1.0.1",
104
+ "@geekmidas/envkit": "^1.0.5",
106
105
  "@geekmidas/errors": "^1.0.0",
107
- "@geekmidas/services": "^1.0.1",
108
- "@geekmidas/logger": "^1.0.0"
106
+ "@geekmidas/events": "^1.1.0",
107
+ "@geekmidas/logger": "^1.0.1",
108
+ "@geekmidas/rate-limit": "^2.0.0",
109
+ "@geekmidas/schema": "^1.0.0",
110
+ "@geekmidas/services": "^1.0.1"
109
111
  },
110
112
  "peerDependenciesMeta": {
111
113
  "@geekmidas/audit": {
@@ -146,6 +148,9 @@
146
148
  },
147
149
  "hono": {
148
150
  "optional": true
151
+ },
152
+ "msw": {
153
+ "optional": true
149
154
  }
150
155
  },
151
156
  "scripts": {
package/src/Construct.ts CHANGED
@@ -11,8 +11,12 @@ import type { StandardSchemaV1 } from '@standard-schema/spec';
11
11
  import compact from 'lodash.compact';
12
12
 
13
13
  // Cache for service environment variables to handle singleton services
14
- // Key: service class/constructor, Value: array of env var names
15
- const serviceEnvCache = new Map<Service, string[]>();
14
+ // Stores both the full list and the optional subset so the same sniff result
15
+ // can satisfy both getEnvironment() and getEnvironment({ markOptional: true }).
16
+ const serviceEnvCache = new Map<
17
+ Service,
18
+ { envVars: string[]; optionalEnvVars: string[] }
19
+ >();
16
20
 
17
21
  /**
18
22
  * Noop context for environment sniffing.
@@ -80,6 +84,8 @@ export abstract class Construct<
80
84
  * Results are cached per service class to handle singleton patterns where
81
85
  * subsequent register() calls may short-circuit and not access env vars.
82
86
  *
87
+ * @param markOptional - When true, optional vars (those accessed via `.optional()` or
88
+ * `.default()`) are suffixed with `?` in the returned array (e.g. `'PORT?'`).
83
89
  * @returns Promise that resolves to array of environment variable names, sorted alphabetically
84
90
  *
85
91
  * @example
@@ -89,11 +95,16 @@ export abstract class Construct<
89
95
  * .get('/users')
90
96
  * .handle(async () => []);
91
97
  *
92
- * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']
98
+ * await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']
99
+ * await endpoint.getEnvironment({ markOptional: true }); // ['AUTH_SECRET', 'DATABASE_URL', 'PORT?']
93
100
  * ```
94
101
  */
95
- async getEnvironment(): Promise<string[]> {
102
+ async getEnvironment(
103
+ opts: { markOptional?: boolean } = {},
104
+ ): Promise<string[]> {
105
+ const { markOptional = false } = opts;
96
106
  const envVars = new Set<string>();
107
+ const optionalVars = new Set<string>();
97
108
  const services: Service[] = compact([
98
109
  ...this.services,
99
110
  this.publisherService,
@@ -107,7 +118,8 @@ export abstract class Construct<
107
118
  // Check cache first - handles singleton services that short-circuit
108
119
  if (serviceEnvCache.has(service)) {
109
120
  const cached = serviceEnvCache.get(service)!;
110
- cached.forEach((v) => envVars.add(v));
121
+ cached.envVars.forEach((v) => envVars.add(v));
122
+ cached.optionalEnvVars.forEach((v) => optionalVars.add(v));
111
123
  continue;
112
124
  }
113
125
 
@@ -131,12 +143,18 @@ export abstract class Construct<
131
143
  );
132
144
  }
133
145
 
134
- // Cache and collect the env vars
135
- serviceEnvCache.set(service, result.envVars);
146
+ // Cache and collect env vars (both required and optional)
147
+ serviceEnvCache.set(service, {
148
+ envVars: result.envVars,
149
+ optionalEnvVars: result.optionalEnvVars,
150
+ });
136
151
  result.envVars.forEach((v) => envVars.add(v));
152
+ result.optionalEnvVars.forEach((v) => optionalVars.add(v));
137
153
  }
138
154
 
139
- return Array.from(envVars).sort();
155
+ const sorted = Array.from(envVars).sort();
156
+ if (!markOptional || optionalVars.size === 0) return sorted;
157
+ return sorted.map((v) => (optionalVars.has(v) ? `${v}?` : v));
140
158
  } catch (error) {
141
159
  this.logger.error(
142
160
  { error },
@@ -578,4 +578,127 @@ describe('Construct environment getter', () => {
578
578
  expect(envVars).toEqual(['VAR_1', 'VAR_2', 'VAR_3']);
579
579
  });
580
580
  });
581
+
582
+ describe('markOptional option', () => {
583
+ const dbService = {
584
+ serviceName: 'db' as const,
585
+ register({ envParser }) {
586
+ return envParser
587
+ .create((get) => ({
588
+ url: get('DATABASE_URL').string(),
589
+ pool: get('DB_POOL_SIZE').string().transform(Number).default(10),
590
+ }))
591
+ .parse();
592
+ },
593
+ } satisfies Service<'db', any>;
594
+
595
+ const authService = {
596
+ serviceName: 'auth' as const,
597
+ register({ envParser }) {
598
+ return envParser
599
+ .create((get) => ({
600
+ secret: get('JWT_SECRET').string(),
601
+ ttl: get('JWT_TTL').string().optional(),
602
+ }))
603
+ .parse();
604
+ },
605
+ } satisfies Service<'auth', any>;
606
+
607
+ it('returns plain var names when markOptional is false (default)', async () => {
608
+ const fn = f
609
+ .services([dbService])
610
+ .handle(async () => ({ success: true }));
611
+
612
+ expect(await fn.getEnvironment()).toEqual([
613
+ 'DATABASE_URL',
614
+ 'DB_POOL_SIZE',
615
+ ]);
616
+ expect(await fn.getEnvironment({ markOptional: false })).toEqual([
617
+ 'DATABASE_URL',
618
+ 'DB_POOL_SIZE',
619
+ ]);
620
+ });
621
+
622
+ it('suffixes optional vars with ? when markOptional is true', async () => {
623
+ const fn = f
624
+ .services([dbService])
625
+ .handle(async () => ({ success: true }));
626
+
627
+ expect(await fn.getEnvironment({ markOptional: true })).toEqual([
628
+ 'DATABASE_URL',
629
+ 'DB_POOL_SIZE?',
630
+ ]);
631
+ });
632
+
633
+ it('marks vars with .optional() as optional', async () => {
634
+ const fn = f
635
+ .services([authService])
636
+ .handle(async () => ({ success: true }));
637
+
638
+ expect(await fn.getEnvironment({ markOptional: true })).toEqual([
639
+ 'JWT_SECRET',
640
+ 'JWT_TTL?',
641
+ ]);
642
+ });
643
+
644
+ it('marks optional vars across multiple services', async () => {
645
+ const fn = f
646
+ .services([dbService, authService])
647
+ .handle(async () => ({ success: true }));
648
+
649
+ expect(await fn.getEnvironment({ markOptional: true })).toEqual([
650
+ 'DATABASE_URL',
651
+ 'DB_POOL_SIZE?',
652
+ 'JWT_SECRET',
653
+ 'JWT_TTL?',
654
+ ]);
655
+ });
656
+
657
+ it('works on Endpoint constructs', async () => {
658
+ const endpoint = e
659
+ .services([dbService])
660
+ .get('/users')
661
+ .handle(async () => []);
662
+
663
+ expect(await endpoint.getEnvironment({ markOptional: true })).toEqual([
664
+ 'DATABASE_URL',
665
+ 'DB_POOL_SIZE?',
666
+ ]);
667
+ });
668
+
669
+ it('works on Cron constructs', async () => {
670
+ const cron = c
671
+ .schedule('rate(1 hour)')
672
+ .services([authService])
673
+ .handle(async () => {});
674
+
675
+ expect(await cron.getEnvironment({ markOptional: true })).toEqual([
676
+ 'JWT_SECRET',
677
+ 'JWT_TTL?',
678
+ ]);
679
+ });
680
+
681
+ it('required-only vars have no ? suffix', async () => {
682
+ const requiredOnly = {
683
+ serviceName: 'required' as const,
684
+ register({ envParser }) {
685
+ return envParser
686
+ .create((get) => ({
687
+ a: get('VAR_A').string(),
688
+ b: get('VAR_B').string(),
689
+ }))
690
+ .parse();
691
+ },
692
+ } satisfies Service<'required', any>;
693
+
694
+ const fn = f
695
+ .services([requiredOnly])
696
+ .handle(async () => ({ success: true }));
697
+
698
+ expect(await fn.getEnvironment({ markOptional: true })).toEqual([
699
+ 'VAR_A',
700
+ 'VAR_B',
701
+ ]);
702
+ });
703
+ });
581
704
  });
@@ -1,3 +1,10 @@
1
+ export {
2
+ type CreateMswHandlersOptions,
3
+ type CreateMswHandlersResult,
4
+ createMswHandlers,
5
+ type RegisterContextOptions,
6
+ TEST_CONTEXT_HEADER,
7
+ } from '../endpoints/MswEndpointAdaptor';
1
8
  export { TestEndpointAdaptor } from '../endpoints/TestEndpointAdaptor';
2
9
  export { TestFunctionAdaptor } from '../functions/TestFunctionAdaptor';
3
10
  export { TestSubscriberAdaptor } from '../subscribers/TestSubscriberAdaptor';