@geekmidas/constructs 9.0.2 → 10.0.0-alpha.0

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 (385) hide show
  1. package/README.md +71 -44
  2. package/dist/{AWSScheduledFunction-Bn99MceY.d.cts → AWSScheduledFunction-BvFvBsBN.d.cts} +8 -3
  3. package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts.map → AWSScheduledFunction-BvFvBsBN.d.cts.map} +1 -1
  4. package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts → AWSScheduledFunction-CVccZO-L.d.mts} +9 -4
  5. package/dist/{AWSScheduledFunction-Bn99MceY.d.cts.map → AWSScheduledFunction-CVccZO-L.d.mts.map} +1 -1
  6. package/dist/{AWSScheduledFunction-CufMMhGB.mjs → AWSScheduledFunction-Db1lttJH.mjs} +3 -3
  7. package/dist/{AWSScheduledFunction-CufMMhGB.mjs.map → AWSScheduledFunction-Db1lttJH.mjs.map} +1 -1
  8. package/dist/{AWSScheduledFunction-DbkDr8CA.cjs → AWSScheduledFunction-qu4ieRZR.cjs} +9 -9
  9. package/dist/{AWSScheduledFunction-DbkDr8CA.cjs.map → AWSScheduledFunction-qu4ieRZR.cjs.map} +1 -1
  10. package/dist/{Construct-_1wX7p_Y.d.cts → Construct-B-xc0SE9.d.mts} +27 -5
  11. package/dist/Construct-B-xc0SE9.d.mts.map +1 -0
  12. package/dist/{Construct-r0U2zBwW.mjs → Construct-HmWM6YYu.mjs} +4 -3
  13. package/dist/Construct-HmWM6YYu.mjs.map +1 -0
  14. package/dist/{Construct-DCMuYOox.d.mts → Construct-WhCXIOPV.d.cts} +29 -7
  15. package/dist/Construct-WhCXIOPV.d.cts.map +1 -0
  16. package/dist/{Construct-vXMZJgRp.cjs → Construct-roId57cU.cjs} +7 -43
  17. package/dist/Construct-roId57cU.cjs.map +1 -0
  18. package/dist/{lazyAccessors-DmTG8sQH.cjs → Endpoint-BBkV6l0k.cjs} +869 -1079
  19. package/dist/Endpoint-BBkV6l0k.cjs.map +1 -0
  20. package/dist/{lazyAccessors-DfqZR6C4.mjs → Endpoint-BGwpNEX4.mjs} +840 -1003
  21. package/dist/Endpoint-BGwpNEX4.mjs.map +1 -0
  22. package/dist/{Endpoint-DgfRslct.d.cts → Endpoint-BnxZqIX-.d.cts} +53 -4
  23. package/dist/Endpoint-BnxZqIX-.d.cts.map +1 -0
  24. package/dist/{Endpoint-CLPSIl6S.d.mts → Endpoint-ROcXU-eH.d.mts} +55 -6
  25. package/dist/Endpoint-ROcXU-eH.d.mts.map +1 -0
  26. package/dist/EndpointFactory-DYoGLaIT.cjs +850 -0
  27. package/dist/EndpointFactory-DYoGLaIT.cjs.map +1 -0
  28. package/dist/EndpointFactory-Di0X9AWp.mjs +808 -0
  29. package/dist/EndpointFactory-Di0X9AWp.mjs.map +1 -0
  30. package/dist/{HonoEndpointAdaptor-DJDT3PMx.mjs → HonoEndpointAdaptor-DFKIIG2o.mjs} +5 -4
  31. package/dist/HonoEndpointAdaptor-DFKIIG2o.mjs.map +1 -0
  32. package/dist/{HonoEndpointAdaptor-CkJENANP.cjs → HonoEndpointAdaptor-wMsCyMgt.cjs} +24 -23
  33. package/dist/HonoEndpointAdaptor-wMsCyMgt.cjs.map +1 -0
  34. package/dist/{Queue-DaxjwmOQ.d.cts → Queue-D6WeziRD.d.cts} +43 -4
  35. package/dist/Queue-D6WeziRD.d.cts.map +1 -0
  36. package/dist/{Queue-HBDf0fqz.d.mts → Queue-DpUeqdC8.d.mts} +43 -4
  37. package/dist/Queue-DpUeqdC8.d.mts.map +1 -0
  38. package/dist/{Subscriber-B69ngPwl.d.cts → Subscriber-4rBJgDKI.d.mts} +9 -4
  39. package/dist/{Subscriber-B69ngPwl.d.cts.map → Subscriber-4rBJgDKI.d.mts.map} +1 -1
  40. package/dist/{Subscriber-D8Xm-86W.d.mts → Subscriber-DVQowdyj.d.cts} +11 -6
  41. package/dist/Subscriber-DVQowdyj.d.cts.map +1 -0
  42. package/dist/{Topic-C5ZMfveW.d.cts → Topic-Ohx9dvWr.d.cts} +33 -2
  43. package/dist/Topic-Ohx9dvWr.d.cts.map +1 -0
  44. package/dist/{Topic-DT10AqHk.d.mts → Topic-cmy2jOUy.d.mts} +33 -2
  45. package/dist/Topic-cmy2jOUy.d.mts.map +1 -0
  46. package/dist/adaptors/aws.cjs +39 -26
  47. package/dist/adaptors/aws.cjs.map +1 -1
  48. package/dist/adaptors/aws.d.cts +24 -16
  49. package/dist/adaptors/aws.d.cts.map +1 -1
  50. package/dist/adaptors/aws.d.mts +25 -17
  51. package/dist/adaptors/aws.d.mts.map +1 -1
  52. package/dist/adaptors/aws.mjs +26 -14
  53. package/dist/adaptors/aws.mjs.map +1 -1
  54. package/dist/adaptors/hono.cjs +9 -6
  55. package/dist/adaptors/hono.d.cts +7 -6
  56. package/dist/adaptors/hono.d.cts.map +1 -1
  57. package/dist/adaptors/hono.d.mts +8 -7
  58. package/dist/adaptors/hono.d.mts.map +1 -1
  59. package/dist/adaptors/hono.mjs +9 -6
  60. package/dist/adaptors/testing.cjs +18 -14
  61. package/dist/adaptors/testing.cjs.map +1 -1
  62. package/dist/adaptors/testing.d.cts +7 -6
  63. package/dist/adaptors/testing.d.cts.map +1 -1
  64. package/dist/adaptors/testing.d.mts +11 -10
  65. package/dist/adaptors/testing.d.mts.map +1 -1
  66. package/dist/adaptors/testing.mjs +10 -7
  67. package/dist/adaptors/testing.mjs.map +1 -1
  68. package/dist/auth.cjs +165 -0
  69. package/dist/auth.cjs.map +1 -0
  70. package/dist/auth.d.cts +108 -0
  71. package/dist/auth.d.cts.map +1 -0
  72. package/dist/auth.d.mts +108 -0
  73. package/dist/auth.d.mts.map +1 -0
  74. package/dist/auth.mjs +164 -0
  75. package/dist/auth.mjs.map +1 -0
  76. package/dist/cache-0ANvRQnD.mjs +51 -0
  77. package/dist/cache-0ANvRQnD.mjs.map +1 -0
  78. package/dist/cache-3WSvAulx.cjs +57 -0
  79. package/dist/cache-3WSvAulx.cjs.map +1 -0
  80. package/dist/cache-CdQ7OLpR.d.cts +47 -0
  81. package/dist/cache-CdQ7OLpR.d.cts.map +1 -0
  82. package/dist/cache-DYoJFcfd.d.mts +47 -0
  83. package/dist/cache-DYoJFcfd.d.mts.map +1 -0
  84. package/dist/cache.cjs +3 -0
  85. package/dist/cache.d.cts +3 -0
  86. package/dist/cache.d.mts +3 -0
  87. package/dist/cache.mjs +3 -0
  88. package/dist/chunk-DWy1uDak.cjs +39 -0
  89. package/dist/clone-DblgEZZa.mjs +39 -0
  90. package/dist/clone-DblgEZZa.mjs.map +1 -0
  91. package/dist/clone-Dy0cR2SZ.cjs +45 -0
  92. package/dist/clone-Dy0cR2SZ.cjs.map +1 -0
  93. package/dist/construct-interface-BfjcOD_E.cjs +117 -0
  94. package/dist/construct-interface-BfjcOD_E.cjs.map +1 -0
  95. package/dist/construct-interface-BqwRNYA2.d.mts +131 -0
  96. package/dist/construct-interface-BqwRNYA2.d.mts.map +1 -0
  97. package/dist/construct-interface-D2nNkHUN.d.cts +131 -0
  98. package/dist/construct-interface-D2nNkHUN.d.cts.map +1 -0
  99. package/dist/construct-interface-Z4CpS8tK.mjs +81 -0
  100. package/dist/construct-interface-Z4CpS8tK.mjs.map +1 -0
  101. package/dist/construct-interface.cjs +8 -0
  102. package/dist/construct-interface.d.cts +2 -0
  103. package/dist/construct-interface.d.mts +2 -0
  104. package/dist/construct-interface.mjs +3 -0
  105. package/dist/credential.cjs +96 -0
  106. package/dist/credential.cjs.map +1 -0
  107. package/dist/credential.d.cts +61 -0
  108. package/dist/credential.d.cts.map +1 -0
  109. package/dist/credential.d.mts +61 -0
  110. package/dist/credential.d.mts.map +1 -0
  111. package/dist/credential.mjs +94 -0
  112. package/dist/credential.mjs.map +1 -0
  113. package/dist/crons/index.cjs +39 -37
  114. package/dist/crons/index.cjs.map +1 -1
  115. package/dist/crons/index.d.cts +21 -8
  116. package/dist/crons/index.d.cts.map +1 -1
  117. package/dist/crons/index.d.mts +29 -13
  118. package/dist/crons/index.d.mts.map +1 -1
  119. package/dist/crons/index.mjs +37 -36
  120. package/dist/crons/index.mjs.map +1 -1
  121. package/dist/database/kysely.cjs +181 -0
  122. package/dist/database/kysely.cjs.map +1 -0
  123. package/dist/database/kysely.d.cts +152 -0
  124. package/dist/database/kysely.d.cts.map +1 -0
  125. package/dist/database/kysely.d.mts +152 -0
  126. package/dist/database/kysely.d.mts.map +1 -0
  127. package/dist/database/kysely.mjs +180 -0
  128. package/dist/database/kysely.mjs.map +1 -0
  129. package/dist/email.cjs +59 -0
  130. package/dist/email.cjs.map +1 -0
  131. package/dist/email.d.cts +50 -0
  132. package/dist/email.d.cts.map +1 -0
  133. package/dist/email.d.mts +50 -0
  134. package/dist/email.d.mts.map +1 -0
  135. package/dist/email.mjs +58 -0
  136. package/dist/email.mjs.map +1 -0
  137. package/dist/endpoints/index.cjs +21 -747
  138. package/dist/endpoints/index.d.cts +7 -343
  139. package/dist/endpoints/index.d.mts +7 -342
  140. package/dist/endpoints/index.mjs +11 -738
  141. package/dist/file-server.cjs +154 -0
  142. package/dist/file-server.cjs.map +1 -0
  143. package/dist/file-server.d.cts +156 -0
  144. package/dist/file-server.d.cts.map +1 -0
  145. package/dist/file-server.d.mts +156 -0
  146. package/dist/file-server.d.mts.map +1 -0
  147. package/dist/file-server.mjs +152 -0
  148. package/dist/file-server.mjs.map +1 -0
  149. package/dist/functions/index.cjs +4 -2
  150. package/dist/functions/index.d.cts +3 -2
  151. package/dist/functions/index.d.mts +3 -2
  152. package/dist/functions/index.mjs +4 -2
  153. package/dist/{functions-B-qt91O7.mjs → functions-CvT_q7Y4.mjs} +55 -51
  154. package/dist/functions-CvT_q7Y4.mjs.map +1 -0
  155. package/dist/{functions-C8i1kCMM.cjs → functions-DukjG8ov.cjs} +62 -57
  156. package/dist/functions-DukjG8ov.cjs.map +1 -0
  157. package/dist/index-7OcOWe75.d.cts +419 -0
  158. package/dist/index-7OcOWe75.d.cts.map +1 -0
  159. package/dist/index-Bt-F7u8L.d.mts +419 -0
  160. package/dist/index-Bt-F7u8L.d.mts.map +1 -0
  161. package/dist/{index-DP6fqv0I.d.mts → index-CPeqtKgq.d.mts} +48 -19
  162. package/dist/index-CPeqtKgq.d.mts.map +1 -0
  163. package/dist/{index-BVs9DvIj.d.cts → index-Dadljnh_.d.cts} +36 -9
  164. package/dist/index-Dadljnh_.d.cts.map +1 -0
  165. package/dist/index.cjs +1 -1
  166. package/dist/index.d.cts +3 -3
  167. package/dist/index.d.mts +3 -3
  168. package/dist/index.mjs +1 -1
  169. package/dist/lazyAccessors-DM6HcXQk.mjs +175 -0
  170. package/dist/lazyAccessors-DM6HcXQk.mjs.map +1 -0
  171. package/dist/lazyAccessors-DrJj8NpA.cjs +223 -0
  172. package/dist/lazyAccessors-DrJj8NpA.cjs.map +1 -0
  173. package/dist/object-storage.cjs +48 -0
  174. package/dist/object-storage.cjs.map +1 -0
  175. package/dist/object-storage.d.cts +36 -0
  176. package/dist/object-storage.d.cts.map +1 -0
  177. package/dist/object-storage.d.mts +36 -0
  178. package/dist/object-storage.d.mts.map +1 -0
  179. package/dist/object-storage.mjs +47 -0
  180. package/dist/object-storage.mjs.map +1 -0
  181. package/dist/{processAudits-CKjjivyz.cjs → processAudits-Bc8rz6Ev.cjs} +3 -3
  182. package/dist/{processAudits-CKjjivyz.cjs.map → processAudits-Bc8rz6Ev.cjs.map} +1 -1
  183. package/dist/{processAudits-ySnizdMG.mjs → processAudits-D89tICM4.mjs} +1 -1
  184. package/dist/{processAudits-ySnizdMG.mjs.map → processAudits-D89tICM4.mjs.map} +1 -1
  185. package/dist/{publisher-BrFOF847.mjs → publisher-CGEo8UKD.mjs} +1 -1
  186. package/dist/{publisher-BrFOF847.mjs.map → publisher-CGEo8UKD.mjs.map} +1 -1
  187. package/dist/{publisher-lFQleddL.cjs → publisher-CqGsXB2X.cjs} +1 -1
  188. package/dist/{publisher-lFQleddL.cjs.map → publisher-CqGsXB2X.cjs.map} +1 -1
  189. package/dist/queue/index.cjs +92 -30
  190. package/dist/queue/index.cjs.map +1 -1
  191. package/dist/queue/index.d.cts +19 -4
  192. package/dist/queue/index.d.cts.map +1 -1
  193. package/dist/queue/index.d.mts +22 -6
  194. package/dist/queue/index.d.mts.map +1 -1
  195. package/dist/queue/index.mjs +90 -29
  196. package/dist/queue/index.mjs.map +1 -1
  197. package/dist/rest-api.cjs +187 -0
  198. package/dist/rest-api.cjs.map +1 -0
  199. package/dist/rest-api.d.cts +221 -0
  200. package/dist/rest-api.d.cts.map +1 -0
  201. package/dist/rest-api.d.mts +221 -0
  202. package/dist/rest-api.d.mts.map +1 -0
  203. package/dist/rest-api.mjs +186 -0
  204. package/dist/rest-api.mjs.map +1 -0
  205. package/dist/site.cjs +48 -0
  206. package/dist/site.cjs.map +1 -0
  207. package/dist/site.d.cts +101 -0
  208. package/dist/site.d.cts.map +1 -0
  209. package/dist/site.d.mts +101 -0
  210. package/dist/site.d.mts.map +1 -0
  211. package/dist/site.mjs +47 -0
  212. package/dist/site.mjs.map +1 -0
  213. package/dist/subscribers/index.cjs +35 -27
  214. package/dist/subscribers/index.cjs.map +1 -1
  215. package/dist/subscribers/index.d.cts +20 -5
  216. package/dist/subscribers/index.d.cts.map +1 -1
  217. package/dist/subscribers/index.d.mts +23 -7
  218. package/dist/subscribers/index.d.mts.map +1 -1
  219. package/dist/subscribers/index.mjs +34 -27
  220. package/dist/subscribers/index.mjs.map +1 -1
  221. package/dist/surfaceEnv-BFXEms2f.cjs +39 -0
  222. package/dist/surfaceEnv-BFXEms2f.cjs.map +1 -0
  223. package/dist/surfaceEnv-C3Ktahea.mjs +27 -0
  224. package/dist/surfaceEnv-C3Ktahea.mjs.map +1 -0
  225. package/dist/{telemetry-3vdxGn4q.d.mts → telemetry-C3L0iS28.d.cts} +2 -2
  226. package/dist/{telemetry-3vdxGn4q.d.mts.map → telemetry-C3L0iS28.d.cts.map} +1 -1
  227. package/dist/{telemetry-Dqx-D3F7.d.cts → telemetry-D7bVFLGi.d.mts} +2 -2
  228. package/dist/{telemetry-Dqx-D3F7.d.cts.map → telemetry-D7bVFLGi.d.mts.map} +1 -1
  229. package/dist/topic/index.cjs +56 -13
  230. package/dist/topic/index.cjs.map +1 -1
  231. package/dist/topic/index.d.cts +2 -2
  232. package/dist/topic/index.d.cts.map +1 -1
  233. package/dist/topic/index.d.mts +2 -2
  234. package/dist/topic/index.d.mts.map +1 -1
  235. package/dist/topic/index.mjs +54 -12
  236. package/dist/topic/index.mjs.map +1 -1
  237. package/dist/{types-BDNGr7pv.d.mts → types-BlAkSuGI.d.cts} +1 -1
  238. package/dist/{types-BDNGr7pv.d.mts.map → types-BlAkSuGI.d.cts.map} +1 -1
  239. package/dist/{types-BdAaYDvd.d.cts → types-aKksMEWL.d.mts} +1 -1
  240. package/dist/{types-BdAaYDvd.d.cts.map → types-aKksMEWL.d.mts.map} +1 -1
  241. package/dist/types.d.cts +1 -1
  242. package/dist/types.d.mts +1 -1
  243. package/package.json +155 -23
  244. package/CHANGELOG.md +0 -396
  245. package/dist/Construct-DCMuYOox.d.mts.map +0 -1
  246. package/dist/Construct-_1wX7p_Y.d.cts.map +0 -1
  247. package/dist/Construct-r0U2zBwW.mjs.map +0 -1
  248. package/dist/Construct-vXMZJgRp.cjs.map +0 -1
  249. package/dist/Endpoint-CLPSIl6S.d.mts.map +0 -1
  250. package/dist/Endpoint-DgfRslct.d.cts.map +0 -1
  251. package/dist/HonoEndpointAdaptor-CkJENANP.cjs.map +0 -1
  252. package/dist/HonoEndpointAdaptor-DJDT3PMx.mjs.map +0 -1
  253. package/dist/Queue-DaxjwmOQ.d.cts.map +0 -1
  254. package/dist/Queue-HBDf0fqz.d.mts.map +0 -1
  255. package/dist/Subscriber-D8Xm-86W.d.mts.map +0 -1
  256. package/dist/Topic-C5ZMfveW.d.cts.map +0 -1
  257. package/dist/Topic-DT10AqHk.d.mts.map +0 -1
  258. package/dist/endpoints/index.cjs.map +0 -1
  259. package/dist/endpoints/index.d.cts.map +0 -1
  260. package/dist/endpoints/index.d.mts.map +0 -1
  261. package/dist/endpoints/index.mjs.map +0 -1
  262. package/dist/functions-B-qt91O7.mjs.map +0 -1
  263. package/dist/functions-C8i1kCMM.cjs.map +0 -1
  264. package/dist/index-BVs9DvIj.d.cts.map +0 -1
  265. package/dist/index-DP6fqv0I.d.mts.map +0 -1
  266. package/dist/lazyAccessors-DfqZR6C4.mjs.map +0 -1
  267. package/dist/lazyAccessors-DmTG8sQH.cjs.map +0 -1
  268. package/src/Construct.ts +0 -204
  269. package/src/__benchmarks__/build-time-optimization.bench.ts +0 -274
  270. package/src/__benchmarks__/endpoint.bench.ts +0 -494
  271. package/src/__benchmarks__/fixtures.ts +0 -241
  272. package/src/__benchmarks__/hono-adaptor.bench.ts +0 -533
  273. package/src/__benchmarks__/hono-server.bench.ts +0 -249
  274. package/src/__benchmarks__/response-builder.bench.ts +0 -428
  275. package/src/__benchmarks__/strategies/strategy-a-lazy-services.ts +0 -319
  276. package/src/__benchmarks__/strategies/strategy-c-middleware.ts +0 -530
  277. package/src/__benchmarks__/strategies/strategy-d-opt-in-events.ts +0 -567
  278. package/src/__tests__/Construct.environment.spec.ts +0 -704
  279. package/src/__tests__/publisher.setting.spec.ts +0 -508
  280. package/src/__tests__/publisher.spec.ts +0 -452
  281. package/src/adaptors/aws.ts +0 -6
  282. package/src/adaptors/hono.ts +0 -1
  283. package/src/adaptors/testing.ts +0 -11
  284. package/src/crons/AWSScheduledFunction.ts +0 -73
  285. package/src/crons/Cron.ts +0 -149
  286. package/src/crons/CronBuilder.ts +0 -271
  287. package/src/crons/__tests__/AWSScheduledFunction.spec.ts +0 -152
  288. package/src/crons/__tests__/Cron.spec.ts +0 -464
  289. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +0 -227
  290. package/src/crons/index.ts +0 -12
  291. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +0 -677
  292. package/src/endpoints/AmazonApiGatewayV1EndpointAdaptor.ts +0 -105
  293. package/src/endpoints/AmazonApiGatewayV2EndpointAdaptor.ts +0 -97
  294. package/src/endpoints/Authorizer.ts +0 -152
  295. package/src/endpoints/Endpoint.ts +0 -1287
  296. package/src/endpoints/EndpointBuilder.ts +0 -758
  297. package/src/endpoints/EndpointFactory.ts +0 -1148
  298. package/src/endpoints/HonoEndpointAdaptor.ts +0 -677
  299. package/src/endpoints/MswEndpointAdaptor.ts +0 -226
  300. package/src/endpoints/TestEndpointAdaptor.ts +0 -422
  301. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.audits.spec.ts +0 -499
  302. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.events.spec.ts +0 -560
  303. package/src/endpoints/__tests__/AmazonApiGatewayV1EndpointAdaptor.spec.ts +0 -1304
  304. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.audits.spec.ts +0 -626
  305. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.events.spec.ts +0 -732
  306. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.factory-publisher.spec.ts +0 -296
  307. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.kysely-audit.integration.spec.ts +0 -951
  308. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.responseType.spec.ts +0 -111
  309. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.rls.spec.ts +0 -307
  310. package/src/endpoints/__tests__/AmazonApiGatewayV2EndpointAdaptor.spec.ts +0 -629
  311. package/src/endpoints/__tests__/Authorizer.spec.ts +0 -286
  312. package/src/endpoints/__tests__/Endpoint.cookies.spec.ts +0 -207
  313. package/src/endpoints/__tests__/Endpoint.headers.spec.ts +0 -187
  314. package/src/endpoints/__tests__/Endpoint.manifest.spec.ts +0 -175
  315. package/src/endpoints/__tests__/Endpoint.spec.ts +0 -857
  316. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +0 -448
  317. package/src/endpoints/__tests__/EndpointBuilder.responseType.spec.ts +0 -47
  318. package/src/endpoints/__tests__/EndpointBuilder.spec.ts +0 -523
  319. package/src/endpoints/__tests__/EndpointFactory.authorizers.spec.ts +0 -492
  320. package/src/endpoints/__tests__/EndpointFactory.database-auditor.spec.ts +0 -509
  321. package/src/endpoints/__tests__/EndpointFactory.reference-audit.spec.ts +0 -190
  322. package/src/endpoints/__tests__/EndpointFactory.spec.ts +0 -479
  323. package/src/endpoints/__tests__/EndpointFactory.state-isolation.spec.ts +0 -155
  324. package/src/endpoints/__tests__/HonoEndpointAdaptor.audit-transactions.spec.ts +0 -703
  325. package/src/endpoints/__tests__/HonoEndpointAdaptor.audits.spec.ts +0 -632
  326. package/src/endpoints/__tests__/HonoEndpointAdaptor.events.spec.ts +0 -577
  327. package/src/endpoints/__tests__/HonoEndpointAdaptor.kysely-audit.integration.spec.ts +0 -1067
  328. package/src/endpoints/__tests__/HonoEndpointAdaptor.openapi.spec.ts +0 -317
  329. package/src/endpoints/__tests__/HonoEndpointAdaptor.pgboss-publisher.spec.ts +0 -289
  330. package/src/endpoints/__tests__/HonoEndpointAdaptor.responseType.spec.ts +0 -128
  331. package/src/endpoints/__tests__/HonoEndpointAdaptor.spec.ts +0 -1207
  332. package/src/endpoints/__tests__/MswEndpointAdaptor.spec.ts +0 -211
  333. package/src/endpoints/__tests__/ResponseBuilder.spec.ts +0 -235
  334. package/src/endpoints/__tests__/TestEndpointAdaptor.audits.spec.ts +0 -602
  335. package/src/endpoints/__tests__/TestEndpointAdaptor.spec.ts +0 -1044
  336. package/src/endpoints/__tests__/__snapshots__/HonoEndpointAdaptor.spec.ts.snap +0 -54
  337. package/src/endpoints/__tests__/endpoint-types.test.ts +0 -88
  338. package/src/endpoints/__tests__/helpers.spec.ts +0 -37
  339. package/src/endpoints/__tests__/lazyAccessors.spec.ts +0 -330
  340. package/src/endpoints/__tests__/processAudits.spec.ts +0 -631
  341. package/src/endpoints/audit.ts +0 -87
  342. package/src/endpoints/helpers.ts +0 -98
  343. package/src/endpoints/index.ts +0 -42
  344. package/src/endpoints/lazyAccessors.ts +0 -241
  345. package/src/endpoints/parseHonoQuery.ts +0 -16
  346. package/src/endpoints/parseQueryParams.ts +0 -32
  347. package/src/endpoints/processAudits.ts +0 -371
  348. package/src/endpoints/rls.ts +0 -67
  349. package/src/functions/AWSLambdaFunction.ts +0 -348
  350. package/src/functions/BaseFunctionBuilder.ts +0 -201
  351. package/src/functions/Function.ts +0 -238
  352. package/src/functions/FunctionBuilder.ts +0 -391
  353. package/src/functions/FunctionExecutionWrapper.ts +0 -216
  354. package/src/functions/TestFunctionAdaptor.ts +0 -217
  355. package/src/functions/__tests__/AWSLambdaFunctionAdaptor.spec.ts +0 -513
  356. package/src/functions/__tests__/Function.audits.spec.ts +0 -393
  357. package/src/functions/__tests__/Function.spec.ts +0 -477
  358. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +0 -207
  359. package/src/functions/__tests__/TestFunctionAdaptor.spec.ts +0 -480
  360. package/src/functions/index.ts +0 -12
  361. package/src/index.ts +0 -23
  362. package/src/publisher.ts +0 -93
  363. package/src/queue/AWSLambdaQueueAdaptor.ts +0 -162
  364. package/src/queue/Queue.ts +0 -128
  365. package/src/queue/QueueBuilder.ts +0 -115
  366. package/src/queue/TestQueueAdaptor.ts +0 -63
  367. package/src/queue/__tests__/QueueBuilder.spec.ts +0 -137
  368. package/src/queue/index.ts +0 -12
  369. package/src/subscribers/AWSLambdaSubscriberAdaptor.ts +0 -342
  370. package/src/subscribers/Subscriber.ts +0 -117
  371. package/src/subscribers/SubscriberBuilder.ts +0 -186
  372. package/src/subscribers/TestSubscriberAdaptor.ts +0 -133
  373. package/src/subscribers/__tests__/AWSLambdaSubscriberAdaptor.spec.ts +0 -1018
  374. package/src/subscribers/__tests__/Subscriber.spec.ts +0 -430
  375. package/src/subscribers/__tests__/TestSubscriberAdaptor.spec.ts +0 -652
  376. package/src/subscribers/index.ts +0 -6
  377. package/src/telemetry.ts +0 -103
  378. package/src/topic/Topic.ts +0 -103
  379. package/src/topic/TopicBuilder.ts +0 -51
  380. package/src/topic/__tests__/TopicBuilder.spec.ts +0 -82
  381. package/src/topic/index.ts +0 -11
  382. package/src/types.ts +0 -13
  383. package/test.ts +0 -91
  384. package/tsconfig.json +0 -9
  385. package/tsdown.config.ts +0 -34
package/src/telemetry.ts DELETED
@@ -1,103 +0,0 @@
1
- /**
2
- * Telemetry interface for endpoint instrumentation
3
- *
4
- * This provides a framework-agnostic way to add telemetry to endpoints.
5
- * Implementations can use OpenTelemetry, DataDog, or any other system.
6
- */
7
- import type { Context as LambdaContext } from 'aws-lambda';
8
-
9
- /**
10
- * Context object returned by onRequestStart, passed to subsequent hooks
11
- */
12
- export interface TelemetryContext {
13
- /**
14
- * Any data the telemetry implementation needs to track across the request lifecycle
15
- */
16
- [key: string]: unknown;
17
- }
18
-
19
- /**
20
- * Request information passed to telemetry hooks
21
- */
22
- export interface TelemetryRequest {
23
- /**
24
- * The raw Lambda event
25
- */
26
- event: any;
27
-
28
- /**
29
- * The Lambda context
30
- */
31
- context: LambdaContext;
32
- }
33
-
34
- /**
35
- * Response information passed to onRequestEnd
36
- */
37
- export interface TelemetryResponse {
38
- /**
39
- * HTTP status code
40
- */
41
- statusCode: number;
42
-
43
- /**
44
- * Response body (may be stringified JSON)
45
- */
46
- body?: string;
47
-
48
- /**
49
- * Response headers
50
- */
51
- headers?: Record<string, string>;
52
- }
53
-
54
- /**
55
- * Telemetry interface for instrumenting endpoint requests
56
- *
57
- * @example
58
- * ```typescript
59
- * const telemetry: Telemetry = {
60
- * onRequestStart(req) {
61
- * const span = tracer.startSpan('http.request');
62
- * return { span };
63
- * },
64
- * onRequestEnd(ctx, response) {
65
- * ctx.span.setStatus(response.statusCode);
66
- * ctx.span.end();
67
- * },
68
- * onRequestError(ctx, error) {
69
- * ctx.span.recordException(error);
70
- * ctx.span.end();
71
- * },
72
- * };
73
- *
74
- * const adaptor = new AmazonApiGatewayV2Endpoint(envParser, endpoint, {
75
- * telemetry,
76
- * });
77
- * ```
78
- */
79
- export interface Telemetry {
80
- /**
81
- * Called at the start of each request
82
- *
83
- * @param request - The incoming request information
84
- * @returns Context object that will be passed to onRequestEnd/onRequestError
85
- */
86
- onRequestStart(request: TelemetryRequest): TelemetryContext;
87
-
88
- /**
89
- * Called when the request completes successfully
90
- *
91
- * @param ctx - The context returned by onRequestStart
92
- * @param response - The response information
93
- */
94
- onRequestEnd(ctx: TelemetryContext, response: TelemetryResponse): void;
95
-
96
- /**
97
- * Called when the request fails with an error
98
- *
99
- * @param ctx - The context returned by onRequestStart
100
- * @param error - The error that occurred
101
- */
102
- onRequestError(ctx: TelemetryContext, error: Error): void;
103
- }
@@ -1,103 +0,0 @@
1
- import { environmentCase } from '@geekmidas/envkit';
2
- import {
3
- type EventPublisher,
4
- type EventPublisherConnectionString,
5
- type PublishableMessage,
6
- Publisher,
7
- } from '@geekmidas/events';
8
- import type { Logger } from '@geekmidas/logger';
9
- import { ConsoleLogger } from '@geekmidas/logger/console';
10
- import type { InferStandardSchema } from '@geekmidas/schema';
11
- import type { Service } from '@geekmidas/services';
12
- import type { StandardSchemaV1 } from '@standard-schema/spec';
13
- import { Construct, ConstructType } from '../Construct';
14
-
15
- const DEFAULT_LOGGER = new ConsoleLogger() as unknown as Logger;
16
-
17
- /** A topic's event contract — a map of event type → payload schema. */
18
- export type TopicEvents = Record<string, StandardSchemaV1>;
19
-
20
- /**
21
- * The union of wire messages a topic carries, derived from its event map:
22
- * `{ type: 'user.created'; payload: … } | { type: 'user.updated'; payload: … }`.
23
- */
24
- export type TopicMessage<TEvents extends TopicEvents> = {
25
- [K in keyof TEvents & string]: PublishableMessage<
26
- K,
27
- InferStandardSchema<TEvents[K]>
28
- >;
29
- }[keyof TEvents & string];
30
-
31
- /**
32
- * A topic — pub/sub fan-out. Unlike a `Queue` (point-to-point, one consumer), a
33
- * topic is a *resource* owned by no single handler: it declares the event
34
- * contract, derives a typed producer (`topic.publisher`), and any number of
35
- * subscribers (`s.topic(topic)`) bind to it. `gkm build` discovers it into the
36
- * manifest's `topics` field; infra provisions an SNS topic.
37
- *
38
- * This replaces hand-writing a publisher `Service`: the publisher is *derived*
39
- * from the declared event contract, the same way `Queue` derives its publisher.
40
- */
41
- export class Topic<
42
- TName extends string = string,
43
- TEvents extends TopicEvents = TopicEvents,
44
- > extends Construct {
45
- __IS_TOPIC__ = true;
46
-
47
- static isTopic(obj: unknown): obj is Topic<string, TopicEvents> {
48
- return Boolean(
49
- obj &&
50
- (obj as { __IS_TOPIC__?: boolean }).__IS_TOPIC__ === true &&
51
- (obj as Construct).type === ConstructType.Topic,
52
- );
53
- }
54
-
55
- constructor(
56
- public readonly name: TName,
57
- /**
58
- * The event contract — a map of event type → payload schema. Named
59
- * `eventSchemas` (not `events`) to avoid clashing with `Construct.events`,
60
- * which is the array of `MappedEvent`s a construct *publishes*.
61
- */
62
- public readonly eventSchemas: TEvents,
63
- logger: Logger = DEFAULT_LOGGER,
64
- ) {
65
- super(ConstructType.Topic, logger, [], []);
66
- }
67
-
68
- /** The event type names this topic carries. */
69
- get eventTypes(): (keyof TEvents & string)[] {
70
- return Object.keys(this.eventSchemas) as (keyof TEvents & string)[];
71
- }
72
-
73
- /**
74
- * The producer side — a `Service` exposing an `EventPublisher` typed to the
75
- * union of this topic's events. Inject via `.publisher(topic.publisher)` (for
76
- * declarative `.event(...)`) or `.services([topic.publisher])` (to publish
77
- * imperatively). Reads `<NAME>_PUBLISHER_CONNECTION_STRING` and selects the
78
- * transport from the URL protocol — `pgboss://` locally, `sns://` deployed.
79
- *
80
- * Because it's a `Service`, the connection-string requirement is sniffed into
81
- * the manifest of whatever construct injects it (least-privilege linking).
82
- */
83
- get publisher(): Service<
84
- `${TName}Publisher`,
85
- EventPublisher<TopicMessage<TEvents>>
86
- > {
87
- const envVar = `${environmentCase(this.name)}_PUBLISHER_CONNECTION_STRING`;
88
- return {
89
- serviceName: `${this.name}Publisher`,
90
- async register({ envParser }) {
91
- const { connectionString } = envParser
92
- .create((get) => ({
93
- connectionString: get(envVar).string(),
94
- }))
95
- .parse();
96
-
97
- return Publisher.fromConnectionString<TopicMessage<TEvents>>(
98
- connectionString as EventPublisherConnectionString,
99
- );
100
- },
101
- };
102
- }
103
- }
@@ -1,51 +0,0 @@
1
- import type { Logger } from '@geekmidas/logger';
2
- import { DEFAULT_LOGGER } from '@geekmidas/logger/console';
3
- import { Topic, type TopicEvents } from './Topic';
4
-
5
- /**
6
- * Builds a {@link Topic} — `t.topic('users').events({ 'user.created': schema, … })`.
7
- * The event map is the topic's contract: it types the derived `topic.publisher`
8
- * and the subscribers that bind via `s.topic(topic)`.
9
- */
10
- export class TopicBuilder<
11
- TName extends string = string,
12
- TEvents extends TopicEvents = TopicEvents,
13
- > {
14
- private _name?: string;
15
- private _logger: Logger = DEFAULT_LOGGER;
16
-
17
- /** The topic name — drives the infra topic and its `<NAME>_*` env vars. */
18
- topic<T extends string>(name: T): TopicBuilder<T, TEvents> {
19
- this._name = name;
20
- return this as unknown as TopicBuilder<T, TEvents>;
21
- }
22
-
23
- logger(logger: Logger): this {
24
- this._logger = logger;
25
- return this;
26
- }
27
-
28
- /**
29
- * The event contract — a map of event type → payload schema. Building the
30
- * topic requires this; it's what types the publisher and subscribers.
31
- */
32
- events<T extends TopicEvents>(events: T): Topic<TName, T> {
33
- if (!this._name) {
34
- throw new Error(
35
- 'Topic requires a name — call .topic(name) before .events().',
36
- );
37
- }
38
-
39
- const topic = new Topic<TName, T>(
40
- this._name as TName,
41
- events,
42
- this._logger,
43
- );
44
-
45
- // Reset builder state to prevent pollution across reuse.
46
- this._name = undefined;
47
- this._logger = DEFAULT_LOGGER;
48
-
49
- return topic;
50
- }
51
- }
@@ -1,82 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { z } from 'zod';
3
- import { s } from '../../subscribers';
4
- import { Topic } from '../Topic';
5
- import { TopicBuilder } from '../TopicBuilder';
6
-
7
- const events = {
8
- 'user.created': z.object({ userId: z.string(), email: z.string() }),
9
- 'user.updated': z.object({
10
- userId: z.string(),
11
- changes: z.array(z.string()),
12
- }),
13
- };
14
-
15
- describe('TopicBuilder', () => {
16
- it('builds a Topic from .topic().events()', () => {
17
- const topic = new TopicBuilder().topic('users').events(events);
18
-
19
- expect(Topic.isTopic(topic)).toBe(true);
20
- expect(topic.name).toBe('users');
21
- expect(topic.eventSchemas).toBe(events);
22
- expect(topic.eventTypes.sort()).toEqual(['user.created', 'user.updated']);
23
- });
24
-
25
- it('throws when the name is missing', () => {
26
- expect(() => new TopicBuilder().events(events)).toThrow(/name/);
27
- });
28
-
29
- it('resets builder state after events()', () => {
30
- const builder = new TopicBuilder();
31
- builder.topic('first').events(events);
32
- expect(() => builder.events(events)).toThrow(/name/);
33
- });
34
- });
35
-
36
- describe('Topic.publisher', () => {
37
- it('exposes a `<name>Publisher` producer service', () => {
38
- const topic = new TopicBuilder().topic('users').events(events);
39
- expect(topic.publisher.serviceName).toBe('usersPublisher');
40
- });
41
-
42
- it('requires the namespaced connection-string env var when injected', async () => {
43
- const topic = new TopicBuilder().topic('userEvents').events(events);
44
-
45
- // A construct that injects the publisher (a producer) requires its env var.
46
- const producer = s
47
- .services([topic.publisher])
48
- .subscribe('noop')
49
- .handle(async () => {});
50
-
51
- const env = await producer.getEnvironment();
52
- expect(env).toContain('USER_EVENTS_PUBLISHER_CONNECTION_STRING');
53
- });
54
- });
55
-
56
- describe('subscriber .topic() binding', () => {
57
- it('binds the topic name and does NOT require the publisher env (least privilege)', async () => {
58
- const topic = new TopicBuilder().topic('users').events(events);
59
-
60
- const subscriber = s
61
- .topic(topic)
62
- .subscribe(['user.created', 'user.updated'])
63
- .handle(async ({ events }) => {
64
- // payloads are typed from the topic contract
65
- for (const event of events) {
66
- if (event.type === 'user.created') {
67
- void event.payload.email;
68
- }
69
- }
70
- });
71
-
72
- expect(subscriber.topicName).toBe('users');
73
- expect(subscriber.subscribedEvents).toEqual([
74
- 'user.created',
75
- 'user.updated',
76
- ]);
77
-
78
- // A consumer does not publish, so binding a topic requires no publisher env.
79
- const env = await subscriber.getEnvironment();
80
- expect(env).not.toContain('USERS_PUBLISHER_CONNECTION_STRING');
81
- });
82
- });
@@ -1,11 +0,0 @@
1
- export {
2
- Topic,
3
- type TopicEvents,
4
- type TopicMessage,
5
- } from './Topic';
6
-
7
- import { TopicBuilder } from './TopicBuilder';
8
-
9
- export { TopicBuilder } from './TopicBuilder';
10
-
11
- export const t = new TopicBuilder();
package/src/types.ts DELETED
@@ -1,13 +0,0 @@
1
- export type RemoveUndefined<T> = {
2
- [K in keyof T as T[K] extends undefined ? never : K]: T[K];
3
- };
4
-
5
- export type HttpMethod =
6
- | 'GET'
7
- | 'POST'
8
- | 'PUT'
9
- | 'PATCH'
10
- | 'DELETE'
11
- | 'OPTIONS';
12
-
13
- export type LowerHttpMethod<T extends HttpMethod> = Lowercase<T>;
package/test.ts DELETED
@@ -1,91 +0,0 @@
1
- import type { Cache } from '@geekmidas/cache';
2
- import { UpstashCache } from '@geekmidas/cache/upstash';
3
- import { e } from '@geekmidas/constructs/endpoints';
4
- import type { EnvironmentParser } from '@geekmidas/envkit';
5
- import { UnauthorizedError } from '@geekmidas/errors';
6
- import type { EventPublisher } from '@geekmidas/events';
7
- import { ConsoleLogger } from '@geekmidas/logger/console';
8
- import z4 from 'zod/v4';
9
- import { isValidJWT } from 'zod/v4/core';
10
-
11
- export type CacheClient = Cache<string>;
12
-
13
- export class CacheService {
14
- private static client: CacheClient;
15
- static serviceName = 'cache' as const;
16
-
17
- private static config = (envParser: EnvironmentParser<{}>) =>
18
- envParser.create((get) => ({
19
- url: get('UPSTASH_URL').string(),
20
- token: get('UPSTASH_TOKEN').string(),
21
- }));
22
-
23
- static register(envParser: EnvironmentParser<{}>): CacheClient {
24
- if (!CacheService.client) {
25
- const config = CacheService.config(envParser).parse();
26
- CacheService.client = new UpstashCache(config.url, config.token);
27
- }
28
- return CacheService.client;
29
- }
30
- }
31
-
32
- export class EventsService {
33
- public static instance: ShortstaffEventPublisher;
34
- static serviceName = 'events' as const;
35
-
36
- public static config = (envParser: EnvironmentParser<{}>) =>
37
- envParser.create((get) => ({
38
- topicArn: get('NOTIFICATION_TOPIC_ARN').string(),
39
- region: get('AWS_REGION').string(),
40
- accessKeyId: get('AWS_ACCESS_KEY_ID').string().optional(),
41
- secretAccessKey: get('AWS_SECRET_ACCESS_KEY').string().optional(),
42
- endpoint: get('AWS_ENDPOINT_URL').string().optional(),
43
- }));
44
-
45
- static register(_envParser: EnvironmentParser<{}>): ShortstaffEventPublisher {
46
- return EventsService.instance;
47
- }
48
- }
49
-
50
- export type ShortstaffEventPublisher = EventPublisher<{
51
- type: 'user';
52
- payload: {};
53
- }>;
54
-
55
- export const r = e
56
- .logger(new ConsoleLogger())
57
- .services([CacheService])
58
- .publisher(EventsService);
59
-
60
- export const sessionRouter = r.session(async ({ header, services }) => {
61
- const authHeader = header('authorization');
62
-
63
- if (!authHeader || !authHeader.startsWith('Bearer ')) {
64
- throw new UnauthorizedError('Authorization header required');
65
- }
66
-
67
- const token = authHeader.substring(7);
68
-
69
- if (!isValidJWT(token)) {
70
- throw new UnauthorizedError('Invalid token format');
71
- }
72
-
73
- return { token };
74
- });
75
-
76
- const LoginUserSchema = z4.object({
77
- username: z4.string().min(3),
78
- password: z4.string().min(6),
79
- });
80
-
81
- const LoginResponseSchema = z4.object({
82
- token: z4.string(),
83
- });
84
-
85
- export const login = r
86
- .post('/auth/login')
87
- .body(LoginUserSchema)
88
- .output(LoginResponseSchema)
89
- .handle(async ({ body, services, header }, _res) => {
90
- return { token: 'mock-jwt-token' };
91
- });
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "./dist",
5
- "rootDir": "./src",
6
- "composite": true
7
- },
8
- "include": ["src/**/*"]
9
- }
package/tsdown.config.ts DELETED
@@ -1,34 +0,0 @@
1
- import { defineConfig } from 'tsdown';
2
-
3
- export default defineConfig({
4
- entry: [
5
- 'src/index.ts',
6
- 'src/types.ts',
7
- 'src/endpoints/index.ts',
8
- 'src/functions/index.ts',
9
- 'src/crons/index.ts',
10
- 'src/subscribers/index.ts',
11
- 'src/queue/index.ts',
12
- 'src/topic/index.ts',
13
- 'src/adaptors/hono.ts',
14
- 'src/adaptors/aws.ts',
15
- 'src/adaptors/testing.ts',
16
- ],
17
- clean: true,
18
- outDir: 'dist',
19
- format: ['cjs', 'esm'],
20
- sourcemap: true,
21
- dts: true,
22
- outExtensions: (ctx) => ({
23
- js: ctx.format === 'es' ? '.mjs' : '.cjs',
24
- }),
25
- // Bundle lodash utilities — they are not hoisted to the workspace root
26
- // and would fail to resolve when consumers load the dist from the root context.
27
- noExternal: [
28
- 'lodash.compact',
29
- 'lodash.get',
30
- 'lodash.pick',
31
- 'lodash.set',
32
- 'lodash.uniqby',
33
- ],
34
- });