@geekmidas/constructs 10.0.0-alpha.0 → 10.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/{Construct-HmWM6YYu.mjs → Construct-BD5neF7w.mjs} +15 -2
  2. package/dist/Construct-BD5neF7w.mjs.map +1 -0
  3. package/dist/{Construct-WhCXIOPV.d.cts → Construct-C0ijr2qp.d.cts} +14 -1
  4. package/dist/Construct-C0ijr2qp.d.cts.map +1 -0
  5. package/dist/{Construct-B-xc0SE9.d.mts → Construct-Ct8nalEi.d.mts} +14 -1
  6. package/dist/Construct-Ct8nalEi.d.mts.map +1 -0
  7. package/dist/{Construct-roId57cU.cjs → Construct-CyS3RpTL.cjs} +14 -1
  8. package/dist/Construct-CyS3RpTL.cjs.map +1 -0
  9. package/dist/Cron-ByxdOfpE.d.mts +31 -0
  10. package/dist/Cron-ByxdOfpE.d.mts.map +1 -0
  11. package/dist/Cron-Wqh464aO.d.cts +31 -0
  12. package/dist/Cron-Wqh464aO.d.cts.map +1 -0
  13. package/dist/CronBuilder-BL0AP6fs.d.mts +44 -0
  14. package/dist/CronBuilder-BL0AP6fs.d.mts.map +1 -0
  15. package/dist/CronBuilder-BmABazzH.mjs +84 -0
  16. package/dist/CronBuilder-BmABazzH.mjs.map +1 -0
  17. package/dist/CronBuilder-BqpEzMPQ.d.cts +44 -0
  18. package/dist/CronBuilder-BqpEzMPQ.d.cts.map +1 -0
  19. package/dist/CronBuilder-CkXPJiGO.cjs +96 -0
  20. package/dist/CronBuilder-CkXPJiGO.cjs.map +1 -0
  21. package/dist/{Endpoint-ROcXU-eH.d.mts → Endpoint-2Wg7T7Cq.d.mts} +2 -2
  22. package/dist/{Endpoint-ROcXU-eH.d.mts.map → Endpoint-2Wg7T7Cq.d.mts.map} +1 -1
  23. package/dist/{Endpoint-BBkV6l0k.cjs → Endpoint-BiaaMEn_.cjs} +3 -3
  24. package/dist/{Endpoint-BBkV6l0k.cjs.map → Endpoint-BiaaMEn_.cjs.map} +1 -1
  25. package/dist/{Endpoint-BnxZqIX-.d.cts → Endpoint-CH9Fn1AD.d.cts} +2 -2
  26. package/dist/{Endpoint-BnxZqIX-.d.cts.map → Endpoint-CH9Fn1AD.d.cts.map} +1 -1
  27. package/dist/{Endpoint-BGwpNEX4.mjs → Endpoint-VIOpSo0S.mjs} +3 -3
  28. package/dist/{Endpoint-BGwpNEX4.mjs.map → Endpoint-VIOpSo0S.mjs.map} +1 -1
  29. package/dist/{EndpointFactory-DYoGLaIT.cjs → EndpointFactory-ChxLZllA.cjs} +7 -5
  30. package/dist/EndpointFactory-ChxLZllA.cjs.map +1 -0
  31. package/dist/{EndpointFactory-Di0X9AWp.mjs → EndpointFactory-DTTCkGEL.mjs} +7 -5
  32. package/dist/EndpointFactory-DTTCkGEL.mjs.map +1 -0
  33. package/dist/{HonoEndpointAdaptor-wMsCyMgt.cjs → HonoEndpointAdaptor-D233Jvpk.cjs} +5 -6
  34. package/dist/{HonoEndpointAdaptor-wMsCyMgt.cjs.map → HonoEndpointAdaptor-D233Jvpk.cjs.map} +1 -1
  35. package/dist/{HonoEndpointAdaptor-DFKIIG2o.mjs → HonoEndpointAdaptor-NKQQQbBY.mjs} +4 -5
  36. package/dist/{HonoEndpointAdaptor-DFKIIG2o.mjs.map → HonoEndpointAdaptor-NKQQQbBY.mjs.map} +1 -1
  37. package/dist/{Queue-D6WeziRD.d.cts → Queue-D7ZuwBhy.d.cts} +2 -2
  38. package/dist/{Queue-D6WeziRD.d.cts.map → Queue-D7ZuwBhy.d.cts.map} +1 -1
  39. package/dist/{Queue-DpUeqdC8.d.mts → Queue-gVGfi2Yk.d.mts} +2 -2
  40. package/dist/{Queue-DpUeqdC8.d.mts.map → Queue-gVGfi2Yk.d.mts.map} +1 -1
  41. package/dist/{Subscriber-4rBJgDKI.d.mts → Subscriber-2mEi0ImH.d.cts} +3 -3
  42. package/dist/{Subscriber-4rBJgDKI.d.mts.map → Subscriber-2mEi0ImH.d.cts.map} +1 -1
  43. package/dist/{Subscriber-DVQowdyj.d.cts → Subscriber-xTJ9ayPN.d.mts} +3 -3
  44. package/dist/{Subscriber-DVQowdyj.d.cts.map → Subscriber-xTJ9ayPN.d.mts.map} +1 -1
  45. package/dist/SubscriberBuilder-4OPehf2R.cjs +120 -0
  46. package/dist/SubscriberBuilder-4OPehf2R.cjs.map +1 -0
  47. package/dist/SubscriberBuilder-BjkbeT9l.mjs +108 -0
  48. package/dist/SubscriberBuilder-BjkbeT9l.mjs.map +1 -0
  49. package/dist/SubscriberBuilder-Dptmo-1A.d.mts +62 -0
  50. package/dist/SubscriberBuilder-Dptmo-1A.d.mts.map +1 -0
  51. package/dist/SubscriberBuilder-waNhzjSM.d.cts +62 -0
  52. package/dist/SubscriberBuilder-waNhzjSM.d.cts.map +1 -0
  53. package/dist/{Topic-Ohx9dvWr.d.cts → Topic-19QeHBIR.d.cts} +2 -2
  54. package/dist/{Topic-Ohx9dvWr.d.cts.map → Topic-19QeHBIR.d.cts.map} +1 -1
  55. package/dist/{Topic-cmy2jOUy.d.mts → Topic-DuFeqkBh.d.mts} +2 -2
  56. package/dist/{Topic-cmy2jOUy.d.mts.map → Topic-DuFeqkBh.d.mts.map} +1 -1
  57. package/dist/adaptors/aws.cjs +243 -10
  58. package/dist/adaptors/aws.cjs.map +1 -1
  59. package/dist/adaptors/aws.d.cts +99 -10
  60. package/dist/adaptors/aws.d.cts.map +1 -1
  61. package/dist/adaptors/aws.d.mts +99 -10
  62. package/dist/adaptors/aws.d.mts.map +1 -1
  63. package/dist/adaptors/aws.mjs +240 -7
  64. package/dist/adaptors/aws.mjs.map +1 -1
  65. package/dist/adaptors/hono.cjs +6 -7
  66. package/dist/adaptors/hono.d.cts +6 -6
  67. package/dist/adaptors/hono.d.mts +6 -6
  68. package/dist/adaptors/hono.mjs +6 -7
  69. package/dist/adaptors/testing.cjs +9 -10
  70. package/dist/adaptors/testing.cjs.map +1 -1
  71. package/dist/adaptors/testing.d.cts +6 -6
  72. package/dist/adaptors/testing.d.mts +6 -6
  73. package/dist/adaptors/testing.mjs +6 -7
  74. package/dist/adaptors/testing.mjs.map +1 -1
  75. package/dist/auth.d.cts +1 -1
  76. package/dist/auth.d.mts +1 -1
  77. package/dist/{cache-CdQ7OLpR.d.cts → cache-BrRz3fEB.d.mts} +3 -3
  78. package/dist/{cache-CdQ7OLpR.d.cts.map → cache-BrRz3fEB.d.mts.map} +1 -1
  79. package/dist/{cache-DYoJFcfd.d.mts → cache-BtZY_tHe.d.cts} +3 -3
  80. package/dist/{cache-DYoJFcfd.d.mts.map → cache-BtZY_tHe.d.cts.map} +1 -1
  81. package/dist/cache.d.cts +2 -2
  82. package/dist/cache.d.mts +2 -2
  83. package/dist/{construct-interface-BqwRNYA2.d.mts → construct-interface-D9d4Gm4p.d.cts} +2 -2
  84. package/dist/{construct-interface-BqwRNYA2.d.mts.map → construct-interface-D9d4Gm4p.d.cts.map} +1 -1
  85. package/dist/{construct-interface-D2nNkHUN.d.cts → construct-interface-g5GM5pwR.d.mts} +2 -2
  86. package/dist/{construct-interface-D2nNkHUN.d.cts.map → construct-interface-g5GM5pwR.d.mts.map} +1 -1
  87. package/dist/construct-interface.d.cts +1 -1
  88. package/dist/construct-interface.d.mts +1 -1
  89. package/dist/credential.d.cts +1 -1
  90. package/dist/credential.d.mts +1 -1
  91. package/dist/crons/index.cjs +8 -87
  92. package/dist/crons/index.cjs.map +1 -1
  93. package/dist/crons/index.d.cts +10 -46
  94. package/dist/crons/index.d.cts.map +1 -1
  95. package/dist/crons/index.d.mts +10 -46
  96. package/dist/crons/index.d.mts.map +1 -1
  97. package/dist/crons/index.mjs +6 -83
  98. package/dist/crons/index.mjs.map +1 -1
  99. package/dist/database/kysely.d.cts +2 -2
  100. package/dist/database/kysely.d.mts +2 -2
  101. package/dist/email.d.cts +1 -1
  102. package/dist/email.d.mts +1 -1
  103. package/dist/endpoints/index.cjs +6 -7
  104. package/dist/endpoints/index.d.cts +5 -5
  105. package/dist/endpoints/index.d.mts +5 -5
  106. package/dist/endpoints/index.mjs +5 -6
  107. package/dist/file-server.d.cts +1 -1
  108. package/dist/file-server.d.mts +1 -1
  109. package/dist/functions/index.cjs +2 -2
  110. package/dist/functions/index.d.cts +3 -3
  111. package/dist/functions/index.d.mts +3 -3
  112. package/dist/functions/index.mjs +2 -2
  113. package/dist/{functions-DukjG8ov.cjs → functions-Bd3TPxid.cjs} +10 -2
  114. package/dist/{functions-DukjG8ov.cjs.map → functions-Bd3TPxid.cjs.map} +1 -1
  115. package/dist/{functions-CvT_q7Y4.mjs → functions-Cxbo-pEd.mjs} +10 -2
  116. package/dist/{functions-CvT_q7Y4.mjs.map → functions-Cxbo-pEd.mjs.map} +1 -1
  117. package/dist/{index-Bt-F7u8L.d.mts → index-BxHDdy6a.d.mts} +5 -5
  118. package/dist/{index-7OcOWe75.d.cts.map → index-BxHDdy6a.d.mts.map} +1 -1
  119. package/dist/{index-Dadljnh_.d.cts → index-CubPzHd9.d.mts} +16 -9
  120. package/dist/index-CubPzHd9.d.mts.map +1 -0
  121. package/dist/{index-CPeqtKgq.d.mts → index-JSf9xNIJ.d.cts} +22 -14
  122. package/dist/index-JSf9xNIJ.d.cts.map +1 -0
  123. package/dist/{index-7OcOWe75.d.cts → index-V2nksZIJ.d.cts} +5 -5
  124. package/dist/{index-Bt-F7u8L.d.mts.map → index-V2nksZIJ.d.cts.map} +1 -1
  125. package/dist/index.cjs +1 -1
  126. package/dist/index.d.cts +1 -1
  127. package/dist/index.d.mts +1 -1
  128. package/dist/index.mjs +1 -1
  129. package/dist/{lazyAccessors-DM6HcXQk.mjs → lazyAccessors-BoJN3SMd.mjs} +41 -2
  130. package/dist/lazyAccessors-BoJN3SMd.mjs.map +1 -0
  131. package/dist/{lazyAccessors-DrJj8NpA.cjs → lazyAccessors-e3j2oE2m.cjs} +52 -1
  132. package/dist/lazyAccessors-e3j2oE2m.cjs.map +1 -0
  133. package/dist/object-storage.d.cts +1 -1
  134. package/dist/object-storage.d.mts +1 -1
  135. package/dist/{processAudits-Bc8rz6Ev.cjs → processAudits-CGqttuXm.cjs} +1 -1
  136. package/dist/{processAudits-Bc8rz6Ev.cjs.map → processAudits-CGqttuXm.cjs.map} +1 -1
  137. package/dist/{processAudits-D89tICM4.mjs → processAudits-Dmts9H_b.mjs} +1 -1
  138. package/dist/{processAudits-D89tICM4.mjs.map → processAudits-Dmts9H_b.mjs.map} +1 -1
  139. package/dist/queue/index.cjs +1 -1
  140. package/dist/queue/index.d.cts +5 -5
  141. package/dist/queue/index.d.mts +5 -5
  142. package/dist/queue/index.mjs +1 -1
  143. package/dist/rest-api.cjs +4 -4
  144. package/dist/rest-api.d.cts +5 -5
  145. package/dist/rest-api.d.mts +11 -11
  146. package/dist/rest-api.d.mts.map +1 -1
  147. package/dist/rest-api.mjs +4 -4
  148. package/dist/site.d.cts +1 -1
  149. package/dist/site.d.mts +1 -1
  150. package/dist/subscribers/index.cjs +7 -103
  151. package/dist/subscribers/index.cjs.map +1 -1
  152. package/dist/subscribers/index.d.cts +7 -56
  153. package/dist/subscribers/index.d.cts.map +1 -1
  154. package/dist/subscribers/index.d.mts +7 -56
  155. package/dist/subscribers/index.d.mts.map +1 -1
  156. package/dist/subscribers/index.mjs +4 -99
  157. package/dist/subscribers/index.mjs.map +1 -1
  158. package/dist/topic/index.cjs +1 -1
  159. package/dist/topic/index.d.cts +2 -2
  160. package/dist/topic/index.d.mts +2 -2
  161. package/dist/topic/index.mjs +1 -1
  162. package/dist/worker.cjs +91 -0
  163. package/dist/worker.cjs.map +1 -0
  164. package/dist/worker.d.cts +95 -0
  165. package/dist/worker.d.cts.map +1 -0
  166. package/dist/worker.d.mts +95 -0
  167. package/dist/worker.d.mts.map +1 -0
  168. package/dist/worker.mjs +90 -0
  169. package/dist/worker.mjs.map +1 -0
  170. package/package.json +44 -52
  171. package/dist/AWSScheduledFunction-BvFvBsBN.d.cts +0 -122
  172. package/dist/AWSScheduledFunction-BvFvBsBN.d.cts.map +0 -1
  173. package/dist/AWSScheduledFunction-CVccZO-L.d.mts +0 -122
  174. package/dist/AWSScheduledFunction-CVccZO-L.d.mts.map +0 -1
  175. package/dist/AWSScheduledFunction-Db1lttJH.mjs +0 -243
  176. package/dist/AWSScheduledFunction-Db1lttJH.mjs.map +0 -1
  177. package/dist/AWSScheduledFunction-qu4ieRZR.cjs +0 -255
  178. package/dist/AWSScheduledFunction-qu4ieRZR.cjs.map +0 -1
  179. package/dist/Construct-B-xc0SE9.d.mts.map +0 -1
  180. package/dist/Construct-HmWM6YYu.mjs.map +0 -1
  181. package/dist/Construct-WhCXIOPV.d.cts.map +0 -1
  182. package/dist/Construct-roId57cU.cjs.map +0 -1
  183. package/dist/EndpointFactory-DYoGLaIT.cjs.map +0 -1
  184. package/dist/EndpointFactory-Di0X9AWp.mjs.map +0 -1
  185. package/dist/index-CPeqtKgq.d.mts.map +0 -1
  186. package/dist/index-Dadljnh_.d.cts.map +0 -1
  187. package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
  188. package/dist/lazyAccessors-DrJj8NpA.cjs.map +0 -1
  189. package/dist/publisher-CGEo8UKD.mjs +0 -41
  190. package/dist/publisher-CGEo8UKD.mjs.map +0 -1
  191. package/dist/publisher-CqGsXB2X.cjs +0 -53
  192. package/dist/publisher-CqGsXB2X.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriberBuilder-4OPehf2R.cjs","names":["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","DEFAULT_LOGGER","publisherService?: Service<\n\t\t\tTEventPublisherServiceName,\n\t\t\tTEventPublisher\n\t\t>","topicName?: string","constructs: string[]","DEFAULT_LOGGER","topic: Topic<TName, TEvents>","timeout: number","schema: T","constructs: 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"],"sourcesContent":["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 { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Construct, ConstructType } from '../Construct';\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\t/**\n\t\t * The name of the {@link Topic} this subscriber binds to (via\n\t\t * `s.topic(topic)`), recorded for the manifest so infra wires the SNS\n\t\t * subscription. Undefined when the subscriber's events are typed from a\n\t\t * (hand-written) publisher instead.\n\t\t */\n\t\tpublic readonly topicName?: string,\n\t\t/**\n\t\t * The construct ids `.dependsOn()` named — last, so no existing positional\n\t\t * argument moves.\n\t\t */\n\t\tconstructs: string[] = [],\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\ttimeout,\n\t\t\tundefined, // memorySize\n\t\t\tundefined, // auditorStorageService\n\t\t\tconstructs,\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 { cloneWith } from '../clone';\nimport {\n\ttype Consumable,\n\tidsOf,\n\ttype ServicesOf,\n\tservicesOf,\n} from '../construct-interface';\nimport type { Topic, TopicEvents, TopicMessage } from '../topic/Topic';\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\t/** The construct ids `.dependsOn()` named — what the manifest records. */\n\tpublic _constructs: string[] = [];\n\tprivate _logger: TLogger = DEFAULT_LOGGER;\n\t/**\n\t * The deploy unit that runs this, by construct id. Seeded by the factory a\n\t * `Worker` hands out, so a subscriber is not owned by its directory.\n\t */\n\tpublic _owner?: string;\n\tprivate _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tprivate _topicName?: string;\n\n\tconstructor() {\n\t\tthis._timeout = 30000; // Default timeout\n\t}\n\n\t/**\n\t * Bind this subscriber to a {@link Topic} — the preferred way to type and wire\n\t * a fan-out consumer. It supplies the subscribable event types (and their\n\t * payloads) from the topic's contract and records the binding for the manifest,\n\t * so infra wires the SNS subscription.\n\t *\n\t * Prefer this over typing via a hand-written publisher service: a consumer does\n\t * not publish, so binding a topic does *not* require the topic's publisher\n\t * connection string (least privilege). Use `.publisher(...)` only when the\n\t * subscriber actually publishes follow-up events.\n\t */\n\ttopic<TName extends string, TEvents extends TopicEvents>(\n\t\ttopic: Topic<TName, TEvents>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\t_topicName: topic.name,\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\n\t}\n\n\ttimeout(timeout: number): this {\n\t\treturn cloneWith(this, { _timeout: timeout });\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\treturn cloneWith(this, {\n\t\t\toutputSchema: schema as unknown as OutSchema,\n\t\t}) as any;\n\t}\n\n\t/**\n\t * Depend on constructs — a database, a bucket, a mail sender, a queue, a\n\t * topic.\n\t *\n\t * It records the edge and dissolves each construct's client into the\n\t * handler's service record under the construct's own id, so\n\t * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.\n\t *\n\t * Constructs only. A `Service` does not match the shape, which is what keeps\n\t * env sniffing confined to `.services()` and the explicit lift.\n\t */\n\tdependsOn<const T extends readonly Consumable[]>(\n\t\tconstructs: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...ServicesOf<T>],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\t// Both halves of the edge, from one call and one clone: the services the\n\t\t// handler runs with, and the ids the manifest records. Recording them\n\t\t// separately is what let them drift apart.\n\t\t//\n\t\t// `servicesOf` is the half that validates, so it runs first — recording\n\t\t// ids ahead of it left a caught `NotAConstruct` with `undefined` already\n\t\t// on a `string[]`.\n\t\tconst services = servicesOf(constructs) as unknown as Service[];\n\n\t\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services],\n\t\t\t_constructs: idsOf(constructs, this._constructs),\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\t[...TServices, ...ServicesOf<T>],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\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\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services] as any,\n\t\t}) 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\treturn cloneWith(this, { _logger: logger as unknown as TLogger }) 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\treturn cloneWith(this, { _publisher: publisher as any }) 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\treturn cloneWith(this, {\n\t\t\t_subscribedEvents: [...this._subscribedEvents, ...eventsToAdd] as any,\n\t\t}) 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\tthis._topicName,\n\t\t\tthis._constructs,\n\t\t);\n\n\t\t// Which process runs it. Carried from the factory rather than inferred\n\t\t// from the directory the file happens to sit in.\n\t\tsubscriber.owner = this._owner;\n\n\t\t// No reset: `.handle()` reads this builder and leaves it alone, so a\n\t\t// configured base stays usable for the next subscriber.\n\t\treturn subscriber;\n\t}\n}\n"],"mappings":";;;;;;;AAmBA,IAAa,aAAb,cAQUA,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,SAAkBC,2CAClBC,kBAUTC,WAKhBC,aAAuB,CAAE,GACxB;AACD,QACCV,gCAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,cACA,yBAGA,WACA;EAxCe;EAOS;EACf;EACe;EACA;EACA;EACA;EAUT;CAmBhB;CAED,IAAI,mBAAkD;AACrD,SAAO,KAAK;CACZ;AACD;;;;AC3ED,IAAa,oBAAb,MAOE;CACD,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;;CAEjC,AAAO,cAAwB,CAAE;CACjC,AAAQ,UAAmBW;;;;;CAK3B,AAAO;CACP,AAAQ;CACR,AAAQ;CAER,cAAc;AACb,OAAK,WAAW;CAChB;;;;;;;;;;;;CAaD,MACCC,OAQC;AACD,SAAO,wBAAU,MAAM,EACtB,YAAY,MAAM,KAClB,EAAC;CAQF;CAED,QAAQC,SAAuB;AAC9B,SAAO,wBAAU,MAAM,EAAE,UAAU,QAAS,EAAC;CAC7C;CAED,OACCC,QAQC;AACD,SAAO,wBAAU,MAAM,EACtB,cAAc,OACd,EAAC;CACF;;;;;;;;;;;;CAaD,UACCC,YAQC;EAQD,MAAM,WAAW,uCAAW,WAAW;AAEvC,SAAO,wBAAU,MAAM;GACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;GAC3C,aAAa,kCAAM,YAAY,KAAK,YAAY;EAChD,EAAC;CAQF;CAED,SACCC,UAQC;AACD,SAAO,wBAAU,MAAM,EACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,EAC3C,EAAC;CACF;CAED,OACCC,QAQC;AACD,SAAO,wBAAU,MAAM,EAAE,SAAS,OAA8B,EAAC;CACjE;CAED,UACCC,WAQC;AACD,SAAO,wBAAU,MAAM,EAAE,YAAY,UAAkB,EAAC;CACxD;CAED,UAOCC,OAUC;EACD,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,SAAO,wBAAU,MAAM,EACtB,mBAAmB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY,EAC9D,EAAC;CACF;CAED,OACCC,IAcC;EACD,MAAM,aAAa,IAAI,WACtB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,YACL,KAAK;AAKN,aAAW,QAAQ,KAAK;AAIxB,SAAO;CACP;AACD"}
@@ -0,0 +1,108 @@
1
+ import { Construct, ConstructType } from "./Construct-BD5neF7w.mjs";
2
+ import { idsOf, servicesOf } from "./construct-interface-Z4CpS8tK.mjs";
3
+ import { cloneWith } from "./clone-DblgEZZa.mjs";
4
+ import { DEFAULT_LOGGER } from "@geekmidas/logger/console";
5
+
6
+ //#region src/subscribers/Subscriber.ts
7
+ var Subscriber = class extends Construct {
8
+ __IS_SUBSCRIBER__ = true;
9
+ static isSubscriber(obj) {
10
+ return Boolean(obj && obj.__IS_SUBSCRIBER__ === true && obj.type === ConstructType.Subscriber);
11
+ }
12
+ constructor(handler, timeout = 3e4, _subscribedEvents, outputSchema, services = [], logger = DEFAULT_LOGGER, publisherService, topicName, constructs = []) {
13
+ super(ConstructType.Subscriber, logger, services, [], publisherService, outputSchema, timeout, void 0, void 0, constructs);
14
+ this.handler = handler;
15
+ this.timeout = timeout;
16
+ this._subscribedEvents = _subscribedEvents;
17
+ this.outputSchema = outputSchema;
18
+ this.services = services;
19
+ this.logger = logger;
20
+ this.publisherService = publisherService;
21
+ this.topicName = topicName;
22
+ }
23
+ get subscribedEvents() {
24
+ return this._subscribedEvents;
25
+ }
26
+ };
27
+
28
+ //#endregion
29
+ //#region src/subscribers/SubscriberBuilder.ts
30
+ var SubscriberBuilder = class {
31
+ _subscribedEvents = [];
32
+ _timeout;
33
+ outputSchema;
34
+ _services = [];
35
+ /** The construct ids `.dependsOn()` named — what the manifest records. */
36
+ _constructs = [];
37
+ _logger = DEFAULT_LOGGER;
38
+ /**
39
+ * The deploy unit that runs this, by construct id. Seeded by the factory a
40
+ * `Worker` hands out, so a subscriber is not owned by its directory.
41
+ */
42
+ _owner;
43
+ _publisher;
44
+ _topicName;
45
+ constructor() {
46
+ this._timeout = 3e4;
47
+ }
48
+ /**
49
+ * Bind this subscriber to a {@link Topic} — the preferred way to type and wire
50
+ * a fan-out consumer. It supplies the subscribable event types (and their
51
+ * payloads) from the topic's contract and records the binding for the manifest,
52
+ * so infra wires the SNS subscription.
53
+ *
54
+ * Prefer this over typing via a hand-written publisher service: a consumer does
55
+ * not publish, so binding a topic does *not* require the topic's publisher
56
+ * connection string (least privilege). Use `.publisher(...)` only when the
57
+ * subscriber actually publishes follow-up events.
58
+ */
59
+ topic(topic) {
60
+ return cloneWith(this, { _topicName: topic.name });
61
+ }
62
+ timeout(timeout) {
63
+ return cloneWith(this, { _timeout: timeout });
64
+ }
65
+ output(schema) {
66
+ return cloneWith(this, { outputSchema: schema });
67
+ }
68
+ /**
69
+ * Depend on constructs — a database, a bucket, a mail sender, a queue, a
70
+ * topic.
71
+ *
72
+ * It records the edge and dissolves each construct's client into the
73
+ * handler's service record under the construct's own id, so
74
+ * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
75
+ *
76
+ * Constructs only. A `Service` does not match the shape, which is what keeps
77
+ * env sniffing confined to `.services()` and the explicit lift.
78
+ */
79
+ dependsOn(constructs) {
80
+ const services = servicesOf(constructs);
81
+ return cloneWith(this, {
82
+ _services: [...this._services, ...services],
83
+ _constructs: idsOf(constructs, this._constructs)
84
+ });
85
+ }
86
+ services(services) {
87
+ return cloneWith(this, { _services: [...this._services, ...services] });
88
+ }
89
+ logger(logger) {
90
+ return cloneWith(this, { _logger: logger });
91
+ }
92
+ publisher(publisher) {
93
+ return cloneWith(this, { _publisher: publisher });
94
+ }
95
+ subscribe(event) {
96
+ const eventsToAdd = Array.isArray(event) ? event : [event];
97
+ return cloneWith(this, { _subscribedEvents: [...this._subscribedEvents, ...eventsToAdd] });
98
+ }
99
+ handle(fn) {
100
+ const subscriber = new Subscriber(fn, this._timeout, this._subscribedEvents, this.outputSchema, this._services, this._logger, this._publisher, this._topicName, this._constructs);
101
+ subscriber.owner = this._owner;
102
+ return subscriber;
103
+ }
104
+ };
105
+
106
+ //#endregion
107
+ export { Subscriber, SubscriberBuilder };
108
+ //# sourceMappingURL=SubscriberBuilder-BjkbeT9l.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriberBuilder-BjkbeT9l.mjs","names":["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>","topicName?: string","constructs: string[]","topic: Topic<TName, TEvents>","timeout: number","schema: T","constructs: 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"],"sourcesContent":["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 { InferStandardSchema } from '@geekmidas/schema';\nimport type { Service, ServiceRecord } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Construct, ConstructType } from '../Construct';\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\t/**\n\t\t * The name of the {@link Topic} this subscriber binds to (via\n\t\t * `s.topic(topic)`), recorded for the manifest so infra wires the SNS\n\t\t * subscription. Undefined when the subscriber's events are typed from a\n\t\t * (hand-written) publisher instead.\n\t\t */\n\t\tpublic readonly topicName?: string,\n\t\t/**\n\t\t * The construct ids `.dependsOn()` named — last, so no existing positional\n\t\t * argument moves.\n\t\t */\n\t\tconstructs: string[] = [],\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\ttimeout,\n\t\t\tundefined, // memorySize\n\t\t\tundefined, // auditorStorageService\n\t\t\tconstructs,\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 { cloneWith } from '../clone';\nimport {\n\ttype Consumable,\n\tidsOf,\n\ttype ServicesOf,\n\tservicesOf,\n} from '../construct-interface';\nimport type { Topic, TopicEvents, TopicMessage } from '../topic/Topic';\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\t/** The construct ids `.dependsOn()` named — what the manifest records. */\n\tpublic _constructs: string[] = [];\n\tprivate _logger: TLogger = DEFAULT_LOGGER;\n\t/**\n\t * The deploy unit that runs this, by construct id. Seeded by the factory a\n\t * `Worker` hands out, so a subscriber is not owned by its directory.\n\t */\n\tpublic _owner?: string;\n\tprivate _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n\tprivate _topicName?: string;\n\n\tconstructor() {\n\t\tthis._timeout = 30000; // Default timeout\n\t}\n\n\t/**\n\t * Bind this subscriber to a {@link Topic} — the preferred way to type and wire\n\t * a fan-out consumer. It supplies the subscribable event types (and their\n\t * payloads) from the topic's contract and records the binding for the manifest,\n\t * so infra wires the SNS subscription.\n\t *\n\t * Prefer this over typing via a hand-written publisher service: a consumer does\n\t * not publish, so binding a topic does *not* require the topic's publisher\n\t * connection string (least privilege). Use `.publisher(...)` only when the\n\t * subscriber actually publishes follow-up events.\n\t */\n\ttopic<TName extends string, TEvents extends TopicEvents>(\n\t\ttopic: Topic<TName, TEvents>,\n\t): SubscriberBuilder<\n\t\tTServices,\n\t\tTLogger,\n\t\tOutSchema,\n\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\treturn cloneWith(this, {\n\t\t\t_topicName: topic.name,\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\tTServices,\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tEventPublisher<TopicMessage<TEvents>>,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\n\t}\n\n\ttimeout(timeout: number): this {\n\t\treturn cloneWith(this, { _timeout: timeout });\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\treturn cloneWith(this, {\n\t\t\toutputSchema: schema as unknown as OutSchema,\n\t\t}) as any;\n\t}\n\n\t/**\n\t * Depend on constructs — a database, a bucket, a mail sender, a queue, a\n\t * topic.\n\t *\n\t * It records the edge and dissolves each construct's client into the\n\t * handler's service record under the construct's own id, so\n\t * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.\n\t *\n\t * Constructs only. A `Service` does not match the shape, which is what keeps\n\t * env sniffing confined to `.services()` and the explicit lift.\n\t */\n\tdependsOn<const T extends readonly Consumable[]>(\n\t\tconstructs: T,\n\t): SubscriberBuilder<\n\t\t[...TServices, ...ServicesOf<T>],\n\t\tTLogger,\n\t\tOutSchema,\n\t\tTEventPublisher,\n\t\tTEventPublisherServiceName,\n\t\tTSubscribedEvents\n\t> {\n\t\t// Both halves of the edge, from one call and one clone: the services the\n\t\t// handler runs with, and the ids the manifest records. Recording them\n\t\t// separately is what let them drift apart.\n\t\t//\n\t\t// `servicesOf` is the half that validates, so it runs first — recording\n\t\t// ids ahead of it left a caught `NotAConstruct` with `undefined` already\n\t\t// on a `string[]`.\n\t\tconst services = servicesOf(constructs) as unknown as Service[];\n\n\t\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services],\n\t\t\t_constructs: idsOf(constructs, this._constructs),\n\t\t}) as unknown as SubscriberBuilder<\n\t\t\t[...TServices, ...ServicesOf<T>],\n\t\t\tTLogger,\n\t\t\tOutSchema,\n\t\t\tTEventPublisher,\n\t\t\tTEventPublisherServiceName,\n\t\t\tTSubscribedEvents\n\t\t>;\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\treturn cloneWith(this, {\n\t\t\t_services: [...this._services, ...services] as any,\n\t\t}) 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\treturn cloneWith(this, { _logger: logger as unknown as TLogger }) 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\treturn cloneWith(this, { _publisher: publisher as any }) 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\treturn cloneWith(this, {\n\t\t\t_subscribedEvents: [...this._subscribedEvents, ...eventsToAdd] as any,\n\t\t}) 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\tthis._topicName,\n\t\t\tthis._constructs,\n\t\t);\n\n\t\t// Which process runs it. Carried from the factory rather than inferred\n\t\t// from the directory the file happens to sit in.\n\t\tsubscriber.owner = this._owner;\n\n\t\t// No reset: `.handle()` reads this builder and leaves it alone, so a\n\t\t// configured base stays usable for the next subscriber.\n\t\treturn subscriber;\n\t}\n}\n"],"mappings":";;;;;;AAmBA,IAAa,aAAb,cAQU,UAMR;CACD,oBAAoB;CAEpB,OAAO,aACNA,KACkD;AAClD,SAAO,QACN,OACC,IAAI,sBAAsB,QAC1B,IAAI,SAAS,cAAc,WAC5B;CACD;CAED,YACiBC,SAOSC,UAAkB,KACjCC,mBACeC,cACAC,WAAsB,CAAE,GACxBC,SAAkB,gBAClBC,kBAUTC,WAKhBC,aAAuB,CAAE,GACxB;AACD,QACC,cAAc,YACd,QACA,UACA,CAAE,GACF,kBACA,cACA,yBAGA,WACA;EAxCe;EAOS;EACf;EACe;EACA;EACA;EACA;EAUT;CAmBhB;CAED,IAAI,mBAAkD;AACrD,SAAO,KAAK;CACZ;AACD;;;;AC3ED,IAAa,oBAAb,MAOE;CACD,AAAQ,oBAAuC,CAAE;CACjD,AAAQ;CACR,AAAQ;CACR,AAAQ,YAAuB,CAAE;;CAEjC,AAAO,cAAwB,CAAE;CACjC,AAAQ,UAAmB;;;;;CAK3B,AAAO;CACP,AAAQ;CACR,AAAQ;CAER,cAAc;AACb,OAAK,WAAW;CAChB;;;;;;;;;;;;CAaD,MACCC,OAQC;AACD,SAAO,UAAU,MAAM,EACtB,YAAY,MAAM,KAClB,EAAC;CAQF;CAED,QAAQC,SAAuB;AAC9B,SAAO,UAAU,MAAM,EAAE,UAAU,QAAS,EAAC;CAC7C;CAED,OACCC,QAQC;AACD,SAAO,UAAU,MAAM,EACtB,cAAc,OACd,EAAC;CACF;;;;;;;;;;;;CAaD,UACCC,YAQC;EAQD,MAAM,WAAW,WAAW,WAAW;AAEvC,SAAO,UAAU,MAAM;GACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS;GAC3C,aAAa,MAAM,YAAY,KAAK,YAAY;EAChD,EAAC;CAQF;CAED,SACCC,UAQC;AACD,SAAO,UAAU,MAAM,EACtB,WAAW,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,EAC3C,EAAC;CACF;CAED,OACCC,QAQC;AACD,SAAO,UAAU,MAAM,EAAE,SAAS,OAA8B,EAAC;CACjE;CAED,UACCC,WAQC;AACD,SAAO,UAAU,MAAM,EAAE,YAAY,UAAkB,EAAC;CACxD;CAED,UAOCC,OAUC;EACD,MAAM,cAAc,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,KAAM;AAC1D,SAAO,UAAU,MAAM,EACtB,mBAAmB,CAAC,GAAG,KAAK,mBAAmB,GAAG,WAAY,EAC9D,EAAC;CACF;CAED,OACCC,IAcC;EACD,MAAM,aAAa,IAAI,WACtB,IACA,KAAK,UACL,KAAK,mBACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,YACL,KAAK;AAKN,aAAW,QAAQ,KAAK;AAIxB,SAAO;CACP;AACD"}
@@ -0,0 +1,62 @@
1
+ import { Consumable, ServicesOf } from "./construct-interface-g5GM5pwR.mjs";
2
+ import { Subscriber, SubscriberHandler } from "./Subscriber-xTJ9ayPN.mjs";
3
+ import { Topic, TopicEvents, TopicMessage } from "./Topic-DuFeqkBh.mjs";
4
+ import { Service } from "@geekmidas/services";
5
+ import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
6
+ import { Logger } from "@geekmidas/logger";
7
+ import { StandardSchemaV1 } from "@standard-schema/spec";
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
+ /** The construct ids `.dependsOn()` named — what the manifest records. */
16
+ _constructs: string[];
17
+ private _logger;
18
+ /**
19
+ * The deploy unit that runs this, by construct id. Seeded by the factory a
20
+ * `Worker` hands out, so a subscriber is not owned by its directory.
21
+ */
22
+ _owner?: string;
23
+ private _publisher?;
24
+ private _topicName?;
25
+ constructor();
26
+ /**
27
+ * Bind this subscriber to a {@link Topic} — the preferred way to type and wire
28
+ * a fan-out consumer. It supplies the subscribable event types (and their
29
+ * payloads) from the topic's contract and records the binding for the manifest,
30
+ * so infra wires the SNS subscription.
31
+ *
32
+ * Prefer this over typing via a hand-written publisher service: a consumer does
33
+ * not publish, so binding a topic does *not* require the topic's publisher
34
+ * connection string (least privilege). Use `.publisher(...)` only when the
35
+ * subscriber actually publishes follow-up events.
36
+ */
37
+ topic<TName extends string, TEvents extends TopicEvents>(topic: Topic<TName, TEvents>): SubscriberBuilder<TServices, TLogger, OutSchema, EventPublisher<TopicMessage<TEvents>>, TEventPublisherServiceName, TSubscribedEvents>;
38
+ timeout(timeout: number): this;
39
+ output<T extends StandardSchemaV1>(schema: T): SubscriberBuilder<TServices, TLogger, T, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
40
+ /**
41
+ * Depend on constructs — a database, a bucket, a mail sender, a queue, a
42
+ * topic.
43
+ *
44
+ * It records the edge and dissolves each construct's client into the
45
+ * handler's service record under the construct's own id, so
46
+ * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
47
+ *
48
+ * Constructs only. A `Service` does not match the shape, which is what keeps
49
+ * env sniffing confined to `.services()` and the explicit lift.
50
+ */
51
+ dependsOn<const T extends readonly Consumable[]>(constructs: T): SubscriberBuilder<[...TServices, ...ServicesOf<T>], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
52
+ services<T extends Service[]>(services: T): SubscriberBuilder<[...TServices, ...T], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
53
+ logger<T extends Logger>(logger: T): SubscriberBuilder<TServices, T, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
54
+ publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): SubscriberBuilder<TServices, TLogger, OutSchema, T, TName, TSubscribedEvents>;
55
+ 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]>;
56
+ handle(fn: SubscriberHandler<TEventPublisher, TSubscribedEvents, TServices, TLogger, OutSchema>): Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
57
+ }
58
+ //# sourceMappingURL=SubscriberBuilder.d.ts.map
59
+
60
+ //#endregion
61
+ export { SubscriberBuilder };
62
+ //# sourceMappingURL=SubscriberBuilder-Dptmo-1A.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriberBuilder-Dptmo-1A.d.mts","names":[],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { Consumable, ServicesOf } from "./construct-interface-D9d4Gm4p.cjs";
2
+ import { Subscriber, SubscriberHandler } from "./Subscriber-2mEi0ImH.cjs";
3
+ import { Topic, TopicEvents, TopicMessage } from "./Topic-19QeHBIR.cjs";
4
+ import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
5
+ import { Logger } from "@geekmidas/logger";
6
+ import { Service } from "@geekmidas/services";
7
+ import { StandardSchemaV1 } from "@standard-schema/spec";
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
+ /** The construct ids `.dependsOn()` named — what the manifest records. */
16
+ _constructs: string[];
17
+ private _logger;
18
+ /**
19
+ * The deploy unit that runs this, by construct id. Seeded by the factory a
20
+ * `Worker` hands out, so a subscriber is not owned by its directory.
21
+ */
22
+ _owner?: string;
23
+ private _publisher?;
24
+ private _topicName?;
25
+ constructor();
26
+ /**
27
+ * Bind this subscriber to a {@link Topic} — the preferred way to type and wire
28
+ * a fan-out consumer. It supplies the subscribable event types (and their
29
+ * payloads) from the topic's contract and records the binding for the manifest,
30
+ * so infra wires the SNS subscription.
31
+ *
32
+ * Prefer this over typing via a hand-written publisher service: a consumer does
33
+ * not publish, so binding a topic does *not* require the topic's publisher
34
+ * connection string (least privilege). Use `.publisher(...)` only when the
35
+ * subscriber actually publishes follow-up events.
36
+ */
37
+ topic<TName extends string, TEvents extends TopicEvents>(topic: Topic<TName, TEvents>): SubscriberBuilder<TServices, TLogger, OutSchema, EventPublisher<TopicMessage<TEvents>>, TEventPublisherServiceName, TSubscribedEvents>;
38
+ timeout(timeout: number): this;
39
+ output<T extends StandardSchemaV1>(schema: T): SubscriberBuilder<TServices, TLogger, T, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
40
+ /**
41
+ * Depend on constructs — a database, a bucket, a mail sender, a queue, a
42
+ * topic.
43
+ *
44
+ * It records the edge and dissolves each construct's client into the
45
+ * handler's service record under the construct's own id, so
46
+ * `.dependsOn([uploads])` is what makes `services.uploads` exist and type.
47
+ *
48
+ * Constructs only. A `Service` does not match the shape, which is what keeps
49
+ * env sniffing confined to `.services()` and the explicit lift.
50
+ */
51
+ dependsOn<const T extends readonly Consumable[]>(constructs: T): SubscriberBuilder<[...TServices, ...ServicesOf<T>], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
52
+ services<T extends Service[]>(services: T): SubscriberBuilder<[...TServices, ...T], TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
53
+ logger<T extends Logger>(logger: T): SubscriberBuilder<TServices, T, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
54
+ publisher<T extends EventPublisher<any>, TName extends string>(publisher: Service<TName, T>): SubscriberBuilder<TServices, TLogger, OutSchema, T, TName, TSubscribedEvents>;
55
+ 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]>;
56
+ handle(fn: SubscriberHandler<TEventPublisher, TSubscribedEvents, TServices, TLogger, OutSchema>): Subscriber<TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, TSubscribedEvents>;
57
+ }
58
+ //# sourceMappingURL=SubscriberBuilder.d.ts.map
59
+
60
+ //#endregion
61
+ export { SubscriberBuilder };
62
+ //# sourceMappingURL=SubscriberBuilder-waNhzjSM.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriberBuilder-waNhzjSM.d.cts","names":[],"sources":["../src/subscribers/SubscriberBuilder.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Construct } from "./Construct-WhCXIOPV.cjs";
1
+ import { Construct } from "./Construct-C0ijr2qp.cjs";
2
2
  import { EventPublisher, PublishableMessage } from "@geekmidas/events";
3
3
  import { Logger } from "@geekmidas/logger";
4
4
  import { InferStandardSchema } from "@geekmidas/schema";
@@ -88,4 +88,4 @@ declare class Topic<TName extends string = string, TEvents extends TopicEvents =
88
88
  //# sourceMappingURL=Topic.d.ts.map
89
89
  //#endregion
90
90
  export { Topic, TopicEvents, TopicMessage };
91
- //# sourceMappingURL=Topic-Ohx9dvWr.d.cts.map
91
+ //# sourceMappingURL=Topic-19QeHBIR.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Topic-Ohx9dvWr.d.cts","names":[],"sources":["../src/topic/Topic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAoBY,WAAA,GAAc,eAAe;AAAzC;;;;AAAgC,KAMpB,YANoB,CAAA,gBAMS,WANT,CAAA,GAAA,QAMpB,MACC,OADW,GAAA,MAAA,GACQ,kBADR,CAEtB,CAFsB,EAGtB,mBAHsB,CAGF,OAHE,CAGM,CAHN,CAAA,CAAA,CAAA,EAAA,CAAA,MAKhB,OALgB,GAAA,MAAA,CAAA;;;;;;;;;AAKT;AAYf;AAAkB,cAAL,KAAK,CAAA,cAAA,MAAA,GAAA,MAAA,EAAA,gBAED,WAFC,GAEa,WAFb,CAAA,SAGR,SAAA,CAHQ;EAAA,SAED,IAAA,EA2BO,KA3BP;EAAW;;;;;EAIe,SAuBnB,YAAA,EAMQ,OANR;EAAK,YAMG,EAAA,OAAA;EAAO,OAC7B,OAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IA9B4B,KA8B5B,CAAA,MAAA,EA9B0C,WA8B1C,CAAA;EAAuB;;;;;;EA2DJ,SAA3B,EAAA,EAAA,MAAA;EAAc;;;;EAYa,iBAA3B,aAAA;EAAc,WAFE,CAAA,IAAA,EA5EM,KA4EN;EAAO;AAtGN;;;;gBAgCa,kBACtB;;;;;;;;aAeE;;2BAmBc;;;;;;;;;;;;;;;;;;;;iBAuBV,QACd,aAAa,QACb,eAAe,aAAa;mBAUZ,WACb,kBACH,eAAe,aAAa"}
1
+ {"version":3,"file":"Topic-19QeHBIR.d.cts","names":[],"sources":["../src/topic/Topic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAoBY,WAAA,GAAc,eAAe;AAAzC;;;;AAAgC,KAMpB,YANoB,CAAA,gBAMS,WANT,CAAA,GAAA,QAMpB,MACC,OADW,GAAA,MAAA,GACQ,kBADR,CAEtB,CAFsB,EAGtB,mBAHsB,CAGF,OAHE,CAGM,CAHN,CAAA,CAAA,CAAA,EAAA,CAAA,MAKhB,OALgB,GAAA,MAAA,CAAA;;;;;;;;;AAKT;AAYf;AAAkB,cAAL,KAAK,CAAA,cAAA,MAAA,GAAA,MAAA,EAAA,gBAED,WAFC,GAEa,WAFb,CAAA,SAGR,SAAA,CAHQ;EAAA,SAED,IAAA,EA2BO,KA3BP;EAAW;;;;;EAIe,SAuBnB,YAAA,EAMQ,OANR;EAAK,YAMG,EAAA,OAAA;EAAO,OAC7B,OAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IA9B4B,KA8B5B,CAAA,MAAA,EA9B0C,WA8B1C,CAAA;EAAuB;;;;;;EA2DJ,SAA3B,EAAA,EAAA,MAAA;EAAc;;;;EAYa,iBAA3B,aAAA;EAAc,WAFE,CAAA,IAAA,EA5EM,KA4EN;EAAO;AAtGN;;;;gBAgCa,kBACtB;;;;;;;;aAeE;;2BAmBc;;;;;;;;;;;;;;;;;;;;iBAuBV,QACd,aAAa,QACb,eAAe,aAAa;mBAUZ,WACb,kBACH,eAAe,aAAa"}
@@ -1,4 +1,4 @@
1
- import { Construct } from "./Construct-B-xc0SE9.mjs";
1
+ import { Construct } from "./Construct-Ct8nalEi.mjs";
2
2
  import { Declaration } from "@geekmidas/manifest";
3
3
  import { Service } from "@geekmidas/services";
4
4
  import { EventPublisher, PublishableMessage } from "@geekmidas/events";
@@ -88,4 +88,4 @@ declare class Topic<TName extends string = string, TEvents extends TopicEvents =
88
88
  //# sourceMappingURL=Topic.d.ts.map
89
89
  //#endregion
90
90
  export { Topic, TopicEvents, TopicMessage };
91
- //# sourceMappingURL=Topic-cmy2jOUy.d.mts.map
91
+ //# sourceMappingURL=Topic-DuFeqkBh.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Topic-cmy2jOUy.d.mts","names":[],"sources":["../src/topic/Topic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAoBY,WAAA,GAAc,eAAe;AAAzC;;;;AAAgC,KAMpB,YANoB,CAAA,gBAMS,WANT,CAAA,GAAA,QAMpB,MACC,OADW,GAAA,MAAA,GACQ,kBADR,CAEtB,CAFsB,EAGtB,mBAHsB,CAGF,OAHE,CAGM,CAHN,CAAA,CAAA,CAAA,EAAA,CAAA,MAKhB,OALgB,GAAA,MAAA,CAAA;;;;;;;;;AAKT;AAYf;AAAkB,cAAL,KAAK,CAAA,cAAA,MAAA,GAAA,MAAA,EAAA,gBAED,WAFC,GAEa,WAFb,CAAA,SAGR,SAAA,CAHQ;EAAA,SAED,IAAA,EA2BO,KA3BP;EAAW;;;;;EAIe,SAuBnB,YAAA,EAMQ,OANR;EAAK,YAMG,EAAA,OAAA;EAAO,OAC7B,OAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IA9B4B,KA8B5B,CAAA,MAAA,EA9B0C,WA8B1C,CAAA;EAAuB;;;;;;EA2DJ,SAA3B,EAAA,EAAA,MAAA;EAAc;;;;EAYa,iBAA3B,aAAA;EAAc,WAFE,CAAA,IAAA,EA5EM,KA4EN;EAAO;AAtGN;;;;gBAgCa,kBACtB;;;;;;;;aAeE;;2BAmBc;;;;;;;;;;;;;;;;;;;;iBAuBV,QACd,aAAa,QACb,eAAe,aAAa;mBAUZ,WACb,kBACH,eAAe,aAAa"}
1
+ {"version":3,"file":"Topic-DuFeqkBh.d.mts","names":[],"sources":["../src/topic/Topic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KAoBY,WAAA,GAAc,eAAe;AAAzC;;;;AAAgC,KAMpB,YANoB,CAAA,gBAMS,WANT,CAAA,GAAA,QAMpB,MACC,OADW,GAAA,MAAA,GACQ,kBADR,CAEtB,CAFsB,EAGtB,mBAHsB,CAGF,OAHE,CAGM,CAHN,CAAA,CAAA,CAAA,EAAA,CAAA,MAKhB,OALgB,GAAA,MAAA,CAAA;;;;;;;;;AAKT;AAYf;AAAkB,cAAL,KAAK,CAAA,cAAA,MAAA,GAAA,MAAA,EAAA,gBAED,WAFC,GAEa,WAFb,CAAA,SAGR,SAAA,CAHQ;EAAA,SAED,IAAA,EA2BO,KA3BP;EAAW;;;;;EAIe,SAuBnB,YAAA,EAMQ,OANR;EAAK,YAMG,EAAA,OAAA;EAAO,OAC7B,OAAA,CAAA,GAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IA9B4B,KA8B5B,CAAA,MAAA,EA9B0C,WA8B1C,CAAA;EAAuB;;;;;;EA2DJ,SAA3B,EAAA,EAAA,MAAA;EAAc;;;;EAYa,iBAA3B,aAAA;EAAc,WAFE,CAAA,IAAA,EA5EM,KA4EN;EAAO;AAtGN;;;;gBAgCa,kBACtB;;;;;;;;aAeE;;2BAmBc;;;;;;;;;;;;;;;;;;;;iBAuBV,QACd,aAAa,QACb,eAAe,aAAa;mBAUZ,WACb,kBACH,eAAe,aAAa"}
@@ -1,20 +1,253 @@
1
1
  const require_chunk = require('../chunk-DWy1uDak.cjs');
2
2
  require('../construct-interface-BfjcOD_E.cjs');
3
- require('../Construct-roId57cU.cjs');
4
- require('../functions-DukjG8ov.cjs');
3
+ require('../Construct-CyS3RpTL.cjs');
4
+ const require_functions = require('../functions-Bd3TPxid.cjs');
5
5
  require('../clone-Dy0cR2SZ.cjs');
6
- const require_Endpoint = require('../Endpoint-BBkV6l0k.cjs');
6
+ const require_Endpoint = require('../Endpoint-BiaaMEn_.cjs');
7
7
  const require_surfaceEnv = require('../surfaceEnv-BFXEms2f.cjs');
8
- const require_publisher = require('../publisher-CqGsXB2X.cjs');
9
- const require_AWSScheduledFunction = require('../AWSScheduledFunction-qu4ieRZR.cjs');
10
- const require_processAudits = require('../processAudits-Bc8rz6Ev.cjs');
11
- const require_lazyAccessors = require('../lazyAccessors-DrJj8NpA.cjs');
8
+ const require_lazyAccessors = require('../lazyAccessors-e3j2oE2m.cjs');
9
+ const require_processAudits = require('../processAudits-CGqttuXm.cjs');
12
10
  const __geekmidas_errors = require_chunk.__toESM(require("@geekmidas/errors"));
13
11
  const __geekmidas_services = require_chunk.__toESM(require("@geekmidas/services"));
14
12
  const __middy_core = require_chunk.__toESM(require("@middy/core"));
13
+ const __geekmidas_audit = require_chunk.__toESM(require("@geekmidas/audit"));
14
+ const __geekmidas_audit_kysely = require_chunk.__toESM(require("@geekmidas/audit/kysely"));
15
15
  const __geekmidas_db_rls = require_chunk.__toESM(require("@geekmidas/db/rls"));
16
16
  const qs = require_chunk.__toESM(require("qs"));
17
17
 
18
+ //#region src/functions/FunctionExecutionWrapper.ts
19
+ var FunctionExecutionWrapper = class {
20
+ constructor(envParser, fn) {
21
+ this.envParser = envParser;
22
+ this.fn = fn;
23
+ }
24
+ _logger;
25
+ get logger() {
26
+ return this._logger || this.fn.logger;
27
+ }
28
+ get serviceDiscovery() {
29
+ const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
30
+ return serviceDiscovery;
31
+ }
32
+ getServices() {
33
+ return this.serviceDiscovery.register(this.fn.services);
34
+ }
35
+ async getDatabase() {
36
+ if (!this.fn.databaseService) return void 0;
37
+ const services = await this.serviceDiscovery.register([this.fn.databaseService]);
38
+ return services[this.fn.databaseService.serviceName];
39
+ }
40
+ /**
41
+ * Get the audit storage service if configured.
42
+ * Returns undefined if no auditor storage is configured.
43
+ */
44
+ async getAuditStorage() {
45
+ if (!this.fn.auditorStorageService) return void 0;
46
+ const services = await this.serviceDiscovery.register([this.fn.auditorStorageService]);
47
+ return services[this.fn.auditorStorageService.serviceName];
48
+ }
49
+ /**
50
+ * Create an auditor instance for the function.
51
+ * Returns undefined if no auditor storage is configured.
52
+ */
53
+ async createAuditor() {
54
+ const storage = await this.getAuditStorage();
55
+ if (!storage) return void 0;
56
+ return new __geekmidas_audit.DefaultAuditor({
57
+ actor: {
58
+ id: "system",
59
+ type: "system"
60
+ },
61
+ storage,
62
+ metadata: { function: this.fn.type }
63
+ });
64
+ }
65
+ /**
66
+ * Execute handler with audit transaction support.
67
+ * If the audit storage has a database (via getDatabase()), wraps execution
68
+ * in a transaction so audits are atomic with handler's database operations.
69
+ *
70
+ * @param handler - The handler function to execute (receives auditor and db)
71
+ * @returns The handler result
72
+ */
73
+ async executeWithAudit(handler) {
74
+ const auditor = await this.createAuditor();
75
+ const storage = await this.getAuditStorage();
76
+ if (!auditor || !storage) {
77
+ const db$1 = await this.getDatabase();
78
+ return handler({ db: db$1 });
79
+ }
80
+ const storageDb = storage.getDatabase?.();
81
+ const databaseServiceName = this.fn.databaseService?.serviceName;
82
+ const auditDbServiceName = this.fn.auditorStorageService?.serviceName;
83
+ if (storageDb && databaseServiceName && auditDbServiceName) return (0, __geekmidas_audit_kysely.withAuditableTransaction)(storageDb, auditor, async (trx) => {
84
+ const response$1 = await handler({
85
+ auditor,
86
+ db: trx
87
+ });
88
+ return response$1;
89
+ });
90
+ const db = await this.getDatabase();
91
+ const response = await handler({
92
+ auditor,
93
+ db
94
+ });
95
+ await auditor.flush();
96
+ return response;
97
+ }
98
+ async getFunctionInput(event) {
99
+ const parsedInput = await require_functions.FunctionBuilder.parseComposableStandardSchema(event, this.fn.input);
100
+ return parsedInput;
101
+ }
102
+ async publishEvents(response) {
103
+ await require_lazyAccessors.publishEvents(this.logger, this.serviceDiscovery, this.fn.events, response, this.fn.publisherService);
104
+ }
105
+ async parseComposableStandardSchema(data, schema) {
106
+ return require_functions.FunctionBuilder.parseComposableStandardSchema(data, schema);
107
+ }
108
+ };
109
+
110
+ //#endregion
111
+ //#region src/functions/AWSLambdaFunction.ts
112
+ var AWSLambdaFunction = class extends FunctionExecutionWrapper {
113
+ constructor(envParser, fn) {
114
+ super(envParser, fn);
115
+ this.fn = fn;
116
+ }
117
+ error() {
118
+ return { onError: (req) => {
119
+ const logger = req.event?.logger || this.fn.logger;
120
+ logger.error(req.error || {}, "Error processing function");
121
+ throw (0, __geekmidas_errors.wrapError)(req.error);
122
+ } };
123
+ }
124
+ baseInput() {
125
+ return { before: (_req) => {} };
126
+ }
127
+ input() {
128
+ return { before: async (req) => {
129
+ try {
130
+ if (this.fn.input) {
131
+ const parsedInput = await require_functions.FunctionBuilder.parseComposableStandardSchema(req.event, this.fn.input);
132
+ req.event.parsedInput = parsedInput;
133
+ } else req.event.parsedInput = req.event;
134
+ } catch (error) {
135
+ this.logger.error({
136
+ error,
137
+ event: req.event
138
+ }, "Failed to parse input");
139
+ throw error;
140
+ }
141
+ } };
142
+ }
143
+ loggerMiddleware() {
144
+ return { before: (req) => {
145
+ this._logger = this.fn.logger.child({
146
+ fn: {
147
+ name: req.context.functionName,
148
+ version: req.context.functionVersion,
149
+ memory: req.context.memoryLimitInMB
150
+ },
151
+ req: { id: req.context.awsRequestId }
152
+ });
153
+ req.event.logger = this._logger;
154
+ } };
155
+ }
156
+ services() {
157
+ return { before: async (req) => {
158
+ req.event.services = await this.getServices();
159
+ } };
160
+ }
161
+ database() {
162
+ return { before: async (req) => {
163
+ req.event.db = await this.getDatabase();
164
+ } };
165
+ }
166
+ auditor() {
167
+ return {
168
+ before: async (req) => {
169
+ req.event.auditor = await this.createAuditor();
170
+ },
171
+ after: async (req) => {
172
+ if (req.event.auditor) {
173
+ const records = req.event.auditor.getRecords();
174
+ if (records.length > 0) {
175
+ this.logger.debug({ auditCount: records.length }, "Flushing function audits");
176
+ await req.event.auditor.flush();
177
+ }
178
+ }
179
+ }
180
+ };
181
+ }
182
+ events() {
183
+ return { after: async (req) => {
184
+ const response = req.response || void 0;
185
+ await this.publishEvents(response);
186
+ } };
187
+ }
188
+ async _handler(event) {
189
+ const result = await this.fn.fn({
190
+ input: event.parsedInput,
191
+ services: event.services,
192
+ logger: event.logger,
193
+ db: event.db,
194
+ auditor: event.auditor
195
+ });
196
+ const output = await this.fn.parseOutput(result);
197
+ return output;
198
+ }
199
+ get handler() {
200
+ const handler = this._handler.bind(this);
201
+ const chain = (0, __middy_core.default)(handler).use(this.loggerMiddleware()).use(this.baseInput()).use(this.error()).use(this.services()).use(this.database()).use(this.auditor()).use(this.input()).use(this.events());
202
+ const wrappedHandler = async (event, context) => {
203
+ const startTime = Date.now();
204
+ const requestId = context.awsRequestId;
205
+ const logger = this.fn.logger.child({ requestId });
206
+ return (0, __geekmidas_services.runWithRequestContext)({
207
+ logger,
208
+ requestId,
209
+ startTime
210
+ }, () => chain(event, context));
211
+ };
212
+ return wrappedHandler;
213
+ }
214
+ };
215
+
216
+ //#endregion
217
+ //#region src/crons/AWSScheduledFunction.ts
218
+ /**
219
+ * AWS Lambda adaptor for {@link Cron} constructs.
220
+ *
221
+ * A `Cron` is a {@link import('../functions').Function} that is invoked on a
222
+ * schedule (an EventBridge rule) rather than by an API request. Because of
223
+ * that, the runtime execution pipeline is identical to a regular Lambda
224
+ * function: input parsing, service/database/auditor wiring, event publishing,
225
+ * error handling, and the `runWithRequestContext` wrapper that powers
226
+ * request-scoped logging via `serviceContext.getLogger()`.
227
+ *
228
+ * This adaptor therefore reuses {@link AWSLambdaFunction} wholesale and only
229
+ * narrows the constructor to accept a `Cron`. The schedule expression itself
230
+ * (`cron.schedule`) is **deploy-time** infrastructure consumed by the CLI to
231
+ * provision the EventBridge rule — it is not needed at runtime.
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * import { AWSScheduledFunction } from '@geekmidas/constructs/crons';
236
+ * import { cancelPastBookings } from '../../../src/crons/cancelPastBookings.js';
237
+ * import { envParser } from '../../../src/env';
238
+ *
239
+ * const adapter = new AWSScheduledFunction(envParser, cancelPastBookings);
240
+ *
241
+ * export const handler = adapter.handler;
242
+ * ```
243
+ */
244
+ var AWSScheduledFunction = class extends AWSLambdaFunction {
245
+ constructor(envParser, cron) {
246
+ super(envParser, cron);
247
+ }
248
+ };
249
+
250
+ //#endregion
18
251
  //#region src/endpoints/AmazonApiGatewayEndpointAdaptor.ts
19
252
  var import_lodash = require_chunk.__toESM(require_Endpoint.require_lodash(), 1);
20
253
  var AmazonApiGatewayEndpoint = class {
@@ -154,7 +387,7 @@ var AmazonApiGatewayEndpoint = class {
154
387
  if (require_Endpoint.Endpoint.isSuccessStatus(statusCode)) {
155
388
  const logger = event.logger;
156
389
  const serviceDiscovery = __geekmidas_services.ServiceDiscovery.getInstance(this.envParser);
157
- await require_publisher.publishConstructEvents(this.endpoint, response, serviceDiscovery, logger);
390
+ await require_lazyAccessors.publishConstructEvents(this.endpoint, response, serviceDiscovery, logger);
158
391
  }
159
392
  } };
160
393
  }
@@ -652,10 +885,10 @@ var AWSLambdaSubscriber = class {
652
885
  };
653
886
 
654
887
  //#endregion
655
- exports.AWSLambdaFunction = require_AWSScheduledFunction.AWSLambdaFunction;
888
+ exports.AWSLambdaFunction = AWSLambdaFunction;
656
889
  exports.AWSLambdaQueue = AWSLambdaQueue;
657
890
  exports.AWSLambdaSubscriber = AWSLambdaSubscriber;
658
- exports.AWSScheduledFunction = require_AWSScheduledFunction.AWSScheduledFunction;
891
+ exports.AWSScheduledFunction = AWSScheduledFunction;
659
892
  exports.AmazonApiGatewayV1Endpoint = AmazonApiGatewayV1Endpoint;
660
893
  exports.AmazonApiGatewayV2Endpoint = AmazonApiGatewayV2Endpoint;
661
894
  //# sourceMappingURL=aws.cjs.map