@geekmidas/constructs 0.2.4 → 0.3.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 (152) hide show
  1. package/dist/{AWSLambdaFunction-H65WfXLt.mjs → AWSLambdaFunction-C54a1doJ.mjs} +3 -3
  2. package/dist/{AWSLambdaFunction-H65WfXLt.mjs.map → AWSLambdaFunction-C54a1doJ.mjs.map} +1 -1
  3. package/dist/{AWSLambdaFunction-C-fuCLA3.cjs → AWSLambdaFunction-EPGY4s7i.cjs} +3 -3
  4. package/dist/{AWSLambdaFunction-C-fuCLA3.cjs.map → AWSLambdaFunction-EPGY4s7i.cjs.map} +1 -1
  5. package/dist/{AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs → AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs} +2 -2
  6. package/dist/{AmazonApiGatewayEndpointAdaptor-pEWzF2uY.mjs.map → AmazonApiGatewayEndpointAdaptor-BT9JXihC.mjs.map} +1 -1
  7. package/dist/{AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs → AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs} +2 -2
  8. package/dist/{AmazonApiGatewayEndpointAdaptor-Bk6ssx3K.cjs.map → AmazonApiGatewayEndpointAdaptor-DNFvvdmW.cjs.map} +1 -1
  9. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs → AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs} +2 -2
  10. package/dist/{AmazonApiGatewayV1EndpointAdaptor-MJpRbIaQ.mjs.map → AmazonApiGatewayV1EndpointAdaptor-BbkfC1dk.mjs.map} +1 -1
  11. package/dist/{AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs → AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs} +2 -2
  12. package/dist/{AmazonApiGatewayV1EndpointAdaptor-uBp_4zLf.cjs.map → AmazonApiGatewayV1EndpointAdaptor-BiNzaAxD.cjs.map} +1 -1
  13. package/dist/{AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs → AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs} +2 -2
  14. package/dist/{AmazonApiGatewayV2EndpointAdaptor-I1W23Nvn.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DZclCykB.cjs.map} +1 -1
  15. package/dist/{AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs → AmazonApiGatewayV2EndpointAdaptor-jRrQrIdm.mjs} +2 -2
  16. package/dist/{AmazonApiGatewayV2EndpointAdaptor-ChO8BlDz.mjs.map → AmazonApiGatewayV2EndpointAdaptor-jRrQrIdm.mjs.map} +1 -1
  17. package/dist/{BaseFunctionBuilder-B5gkW0Kt.mjs → BaseFunctionBuilder-Czi1Jwza.mjs} +2 -2
  18. package/dist/{BaseFunctionBuilder-B5gkW0Kt.mjs.map → BaseFunctionBuilder-Czi1Jwza.mjs.map} +1 -1
  19. package/dist/{BaseFunctionBuilder-C5Se7pdL.cjs → BaseFunctionBuilder-MYG3C9ug.cjs} +2 -2
  20. package/dist/{BaseFunctionBuilder-C5Se7pdL.cjs.map → BaseFunctionBuilder-MYG3C9ug.cjs.map} +1 -1
  21. package/dist/{Construct-BYSPikVm.cjs → Construct-Ba5cMxib.cjs} +2 -2
  22. package/dist/{Construct-BYSPikVm.cjs.map → Construct-Ba5cMxib.cjs.map} +1 -1
  23. package/dist/{Construct-LWeB1rSQ.mjs → Construct-DdyGHuag.mjs} +2 -2
  24. package/dist/{Construct-LWeB1rSQ.mjs.map → Construct-DdyGHuag.mjs.map} +1 -1
  25. package/dist/Construct.cjs +1 -1
  26. package/dist/Construct.mjs +1 -1
  27. package/dist/{Cron-Dy_HW2Vv.mjs → Cron-BxhGs5up.mjs} +3 -3
  28. package/dist/{Cron-Dy_HW2Vv.mjs.map → Cron-BxhGs5up.mjs.map} +1 -1
  29. package/dist/{Cron-Bi3QOge_.cjs → Cron-CGF4YAfM.cjs} +3 -3
  30. package/dist/{Cron-Bi3QOge_.cjs.map → Cron-CGF4YAfM.cjs.map} +1 -1
  31. package/dist/{CronBuilder-Dv_w7Yri.cjs → CronBuilder-CcxKRtVP.cjs} +4 -4
  32. package/dist/{CronBuilder-Dv_w7Yri.cjs.map → CronBuilder-CcxKRtVP.cjs.map} +1 -1
  33. package/dist/{CronBuilder-Bl3A2Zp4.mjs → CronBuilder-d2jh-IB2.mjs} +4 -4
  34. package/dist/{CronBuilder-Bl3A2Zp4.mjs.map → CronBuilder-d2jh-IB2.mjs.map} +1 -1
  35. package/dist/{Endpoint-BJo9Hhwm.cjs → Endpoint-BVGZXFyV.cjs} +3 -3
  36. package/dist/{Endpoint-BJo9Hhwm.cjs.map → Endpoint-BVGZXFyV.cjs.map} +1 -1
  37. package/dist/{Endpoint-B70_KKhu.mjs → Endpoint-CuOEswxJ.mjs} +3 -3
  38. package/dist/{Endpoint-B70_KKhu.mjs.map → Endpoint-CuOEswxJ.mjs.map} +1 -1
  39. package/dist/{EndpointBuilder-DeswNQdG.cjs → EndpointBuilder-Cgj1P_ra.cjs} +4 -4
  40. package/dist/{EndpointBuilder-DeswNQdG.cjs.map → EndpointBuilder-Cgj1P_ra.cjs.map} +1 -1
  41. package/dist/{EndpointBuilder-FyyoFTJ5.mjs → EndpointBuilder-DnCB1h1j.mjs} +4 -4
  42. package/dist/{EndpointBuilder-FyyoFTJ5.mjs.map → EndpointBuilder-DnCB1h1j.mjs.map} +1 -1
  43. package/dist/{EndpointFactory-eZc-XpNm.cjs → EndpointFactory-CYj6BYok.cjs} +2 -2
  44. package/dist/{EndpointFactory-eZc-XpNm.cjs.map → EndpointFactory-CYj6BYok.cjs.map} +1 -1
  45. package/dist/{EndpointFactory-CAneQs06.mjs → EndpointFactory-CbdxPCIH.mjs} +2 -2
  46. package/dist/{EndpointFactory-CAneQs06.mjs.map → EndpointFactory-CbdxPCIH.mjs.map} +1 -1
  47. package/dist/{Function-DfKsM5Kx.mjs → Function-BVHqIDp9.mjs} +2 -2
  48. package/dist/{Function-DfKsM5Kx.mjs.map → Function-BVHqIDp9.mjs.map} +1 -1
  49. package/dist/{Function-DagDbeXo.cjs → Function-DDZb1525.cjs} +2 -2
  50. package/dist/{Function-DagDbeXo.cjs.map → Function-DDZb1525.cjs.map} +1 -1
  51. package/dist/{FunctionBuilder-CVT7bG2o.mjs → FunctionBuilder-CrDYgfiI.mjs} +4 -4
  52. package/dist/{FunctionBuilder-CVT7bG2o.mjs.map → FunctionBuilder-CrDYgfiI.mjs.map} +1 -1
  53. package/dist/{FunctionBuilder-DXvG_XD-.cjs → FunctionBuilder-DswJ-9sD.cjs} +4 -4
  54. package/dist/{FunctionBuilder-DXvG_XD-.cjs.map → FunctionBuilder-DswJ-9sD.cjs.map} +1 -1
  55. package/dist/{FunctionExecutionWrapper-DkNycmOh.cjs → FunctionExecutionWrapper-BYI2bGTL.cjs} +2 -2
  56. package/dist/{FunctionExecutionWrapper-DkNycmOh.cjs.map → FunctionExecutionWrapper-BYI2bGTL.cjs.map} +1 -1
  57. package/dist/{FunctionExecutionWrapper-Bubnr0zA.mjs → FunctionExecutionWrapper-CLDh7Z2_.mjs} +2 -2
  58. package/dist/{FunctionExecutionWrapper-Bubnr0zA.mjs.map → FunctionExecutionWrapper-CLDh7Z2_.mjs.map} +1 -1
  59. package/dist/{HonoEndpointAdaptor-BusUWu1w.d.cts → HonoEndpointAdaptor-Bx9Y1bCZ.d.cts} +3 -3
  60. package/dist/{HonoEndpointAdaptor-CcvXzoYV.mjs → HonoEndpointAdaptor-NLlQk5iU.mjs} +4 -5
  61. package/dist/{HonoEndpointAdaptor-CcvXzoYV.mjs.map → HonoEndpointAdaptor-NLlQk5iU.mjs.map} +1 -1
  62. package/dist/{HonoEndpointAdaptor-DodwLM0-.cjs → HonoEndpointAdaptor-e6l9eVDU.cjs} +4 -5
  63. package/dist/{HonoEndpointAdaptor-DodwLM0-.cjs.map → HonoEndpointAdaptor-e6l9eVDU.cjs.map} +1 -1
  64. package/dist/{HonoEndpointAdaptor-g8xxh3tS.d.mts → HonoEndpointAdaptor-kb1ByjUL.d.mts} +3 -3
  65. package/dist/{Subscriber-DOt3svUC.cjs → Subscriber-BiHjVXtM.cjs} +2 -2
  66. package/dist/{Subscriber-DOt3svUC.cjs.map → Subscriber-BiHjVXtM.cjs.map} +1 -1
  67. package/dist/{Subscriber-kCHbH2fZ.mjs → Subscriber-BmPf9GFb.mjs} +2 -2
  68. package/dist/{Subscriber-kCHbH2fZ.mjs.map → Subscriber-BmPf9GFb.mjs.map} +1 -1
  69. package/dist/{SubscriberBuilder-Cj2u9k5Q.cjs → SubscriberBuilder-Cp1C-xtT.cjs} +2 -2
  70. package/dist/{SubscriberBuilder-Cj2u9k5Q.cjs.map → SubscriberBuilder-Cp1C-xtT.cjs.map} +1 -1
  71. package/dist/{SubscriberBuilder-DmxMU89X.mjs → SubscriberBuilder-DJPEeYDJ.mjs} +2 -2
  72. package/dist/{SubscriberBuilder-DmxMU89X.mjs.map → SubscriberBuilder-DJPEeYDJ.mjs.map} +1 -1
  73. package/dist/{TestEndpointAdaptor-wA-fmq4v.cjs → TestEndpointAdaptor-opEisC30.cjs} +2 -2
  74. package/dist/{TestEndpointAdaptor-wA-fmq4v.cjs.map → TestEndpointAdaptor-opEisC30.cjs.map} +1 -1
  75. package/dist/{TestEndpointAdaptor-1pPixE6y.mjs → TestEndpointAdaptor-oq5mfglM.mjs} +2 -2
  76. package/dist/{TestEndpointAdaptor-1pPixE6y.mjs.map → TestEndpointAdaptor-oq5mfglM.mjs.map} +1 -1
  77. package/dist/adaptors/aws.cjs +11 -11
  78. package/dist/adaptors/aws.mjs +11 -11
  79. package/dist/adaptors/hono.cjs +8 -8
  80. package/dist/adaptors/hono.d.cts +1 -1
  81. package/dist/adaptors/hono.d.mts +1 -1
  82. package/dist/adaptors/hono.mjs +8 -8
  83. package/dist/adaptors/testing.cjs +7 -7
  84. package/dist/adaptors/testing.mjs +7 -7
  85. package/dist/crons/Cron.cjs +6 -6
  86. package/dist/crons/Cron.mjs +6 -6
  87. package/dist/crons/CronBuilder.cjs +7 -7
  88. package/dist/crons/CronBuilder.mjs +7 -7
  89. package/dist/crons/index.cjs +7 -7
  90. package/dist/crons/index.d.mts +4 -4
  91. package/dist/crons/index.mjs +7 -7
  92. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +7 -7
  93. package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +7 -7
  94. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +8 -8
  95. package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +8 -8
  96. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +8 -8
  97. package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +8 -8
  98. package/dist/endpoints/Endpoint.cjs +6 -6
  99. package/dist/endpoints/Endpoint.mjs +6 -6
  100. package/dist/endpoints/EndpointBuilder.cjs +7 -7
  101. package/dist/endpoints/EndpointBuilder.mjs +7 -7
  102. package/dist/endpoints/EndpointFactory.cjs +8 -8
  103. package/dist/endpoints/EndpointFactory.mjs +8 -8
  104. package/dist/endpoints/HonoEndpointAdaptor.cjs +8 -8
  105. package/dist/endpoints/HonoEndpointAdaptor.d.cts +1 -1
  106. package/dist/endpoints/HonoEndpointAdaptor.d.mts +1 -1
  107. package/dist/endpoints/HonoEndpointAdaptor.mjs +8 -8
  108. package/dist/endpoints/TestEndpointAdaptor.cjs +7 -7
  109. package/dist/endpoints/TestEndpointAdaptor.mjs +7 -7
  110. package/dist/endpoints/helpers.cjs +7 -7
  111. package/dist/endpoints/helpers.mjs +7 -7
  112. package/dist/endpoints/index.cjs +8 -8
  113. package/dist/endpoints/index.d.cts +2 -2
  114. package/dist/endpoints/index.d.mts +2 -2
  115. package/dist/endpoints/index.mjs +8 -8
  116. package/dist/functions/AWSLambdaFunction.cjs +6 -6
  117. package/dist/functions/AWSLambdaFunction.mjs +6 -6
  118. package/dist/functions/BaseFunctionBuilder.cjs +2 -2
  119. package/dist/functions/BaseFunctionBuilder.mjs +2 -2
  120. package/dist/functions/Function.cjs +2 -2
  121. package/dist/functions/Function.mjs +2 -2
  122. package/dist/functions/FunctionBuilder.cjs +4 -4
  123. package/dist/functions/FunctionBuilder.mjs +4 -4
  124. package/dist/functions/FunctionExecutionWrapper.cjs +5 -5
  125. package/dist/functions/FunctionExecutionWrapper.mjs +5 -5
  126. package/dist/functions/TestFunctionAdaptor.cjs +4 -4
  127. package/dist/functions/TestFunctionAdaptor.mjs +4 -4
  128. package/dist/functions/index.cjs +5 -5
  129. package/dist/functions/index.mjs +5 -5
  130. package/dist/functions-C6EK1xL6.mjs +8 -0
  131. package/dist/{functions-JhRsNoAZ.mjs.map → functions-C6EK1xL6.mjs.map} +1 -1
  132. package/dist/{functions-FCb-wWFC.cjs → functions-fTid0RMK.cjs} +2 -2
  133. package/dist/{functions-FCb-wWFC.cjs.map → functions-fTid0RMK.cjs.map} +1 -1
  134. package/dist/{helpers-DxxSpLfw.cjs → helpers-BcP1tXAi.cjs} +2 -2
  135. package/dist/{helpers-DxxSpLfw.cjs.map → helpers-BcP1tXAi.cjs.map} +1 -1
  136. package/dist/{helpers-C3B2lVrM.mjs → helpers-ByRTDO_m.mjs} +2 -2
  137. package/dist/{helpers-C3B2lVrM.mjs.map → helpers-ByRTDO_m.mjs.map} +1 -1
  138. package/dist/index.cjs +1 -1
  139. package/dist/index.mjs +1 -1
  140. package/dist/subscribers/Subscriber.cjs +2 -2
  141. package/dist/subscribers/Subscriber.mjs +2 -2
  142. package/dist/subscribers/SubscriberBuilder.cjs +3 -3
  143. package/dist/subscribers/SubscriberBuilder.mjs +3 -3
  144. package/dist/subscribers/index.cjs +3 -3
  145. package/dist/subscribers/index.d.cts +2 -2
  146. package/dist/subscribers/index.mjs +3 -3
  147. package/package.json +64 -13
  148. package/src/Construct.ts +3 -3
  149. package/src/__benchmarks__/endpoint.bench.ts +494 -0
  150. package/src/__benchmarks__/hono-server.bench.ts +249 -0
  151. package/src/endpoints/HonoEndpointAdaptor.ts +1 -2
  152. package/dist/functions-JhRsNoAZ.mjs +0 -8
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_Construct = require('./Construct-BYSPikVm.cjs');
2
+ const require_Construct = require('./Construct-Ba5cMxib.cjs');
3
3
  const __geekmidas_logger_console = require_chunk.__toESM(require("@geekmidas/logger/console"));
4
4
  const lodash_get = require_chunk.__toESM(require("lodash.get"));
5
5
 
@@ -73,4 +73,4 @@ Object.defineProperty(exports, 'BaseFunctionBuilder', {
73
73
  return BaseFunctionBuilder;
74
74
  }
75
75
  });
76
- //# sourceMappingURL=BaseFunctionBuilder-C5Se7pdL.cjs.map
76
+ //# sourceMappingURL=BaseFunctionBuilder-MYG3C9ug.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseFunctionBuilder-C5Se7pdL.cjs","names":["ConsoleLogger","s: unknown","data: unknown","schema: T","result: any","ConstructType","timeout: number","event: TEvent","publisher: Service<TName, T>","storage: Service<TName, T>","service: Service<TName, T>"],"sources":["../src/functions/BaseFunctionBuilder.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport get from 'lodash.get';\nimport { ConstructType } from '../Construct';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport abstract class BaseFunctionBuilder<\n TInput extends ComposableStandardSchema,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> {\n protected inputSchema?: TInput;\n protected outputSchema?: OutSchema;\n protected _timeout?: number;\n\n public _services: TServices = [] as Service[] as TServices;\n public _logger: TLogger = DEFAULT_LOGGER;\n\n protected _events: MappedEvent<TEventPublisher, OutSchema>[] = [];\n protected _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n protected _auditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;\n protected _databaseService?: Service<TDatabaseServiceName, TDatabase>;\n\n static isStandardSchemaV1(s: unknown): s is StandardSchemaV1 {\n const schema = (s as StandardSchemaV1)['~standard'];\n\n return schema && typeof schema.validate === 'function';\n }\n\n static async parseComposableStandardSchema<\n T extends ComposableStandardSchema | undefined,\n >(data: unknown, schema: T): Promise<InferComposableStandardSchema<T>> {\n if (BaseFunctionBuilder.isStandardSchemaV1(schema)) {\n const validated = await schema['~standard'].validate(data);\n\n if (validated.issues) {\n throw validated.issues;\n }\n\n return validated.value as InferComposableStandardSchema<T>;\n }\n\n const result: any = {};\n for (const key in schema) {\n const item = schema[key];\n if (BaseFunctionBuilder.isStandardSchemaV1(item)) {\n const value = get(data, key);\n const validated = await item['~standard'].validate(value);\n\n if (validated.issues) {\n throw validated.issues;\n }\n\n result[key] = validated.value;\n }\n }\n\n return result as InferComposableStandardSchema<T>;\n }\n\n constructor(public type = ConstructType.Function) {}\n\n abstract services<T extends Service[]>(services: T): any;\n\n abstract logger<T extends Logger>(logger: T): any;\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n abstract output<T extends StandardSchemaV1>(schema: T): any;\n\n abstract input<T extends ComposableStandardSchema>(schema: T): any;\n\n event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(\n event: TEvent,\n ): this {\n this._events.push(event);\n return this;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n auditor<T extends AuditStorage, TName extends string>(\n storage: Service<TName, T>,\n ): BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._auditorStorage = storage as unknown as Service<\n TAuditStorageServiceName,\n TAuditStorage\n >;\n\n return this as unknown as BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the database service for this function.\n * The database will be available in the handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName\n >;\n }\n}\n"],"mappings":";;;;;;AAaA,MAAM,iBAAiB,IAAIA;AAE3B,IAAsB,sBAAtB,MAAsB,oBAWpB;CACA,AAAU;CACV,AAAU;CACV,AAAU;CAEV,AAAO,YAAuB,CAAE;CAChC,AAAO,UAAmB;CAE1B,AAAU,UAAqD,CAAE;CACjE,AAAU;CACV,AAAU;CACV,AAAU;CAEV,OAAO,mBAAmBC,GAAmC;EAC3D,MAAM,SAAU,EAAuB;AAEvC,SAAO,iBAAiB,OAAO,aAAa;CAC7C;CAED,aAAa,8BAEXC,MAAeC,QAAsD;AACrE,MAAI,oBAAoB,mBAAmB,OAAO,EAAE;GAClD,MAAM,YAAY,MAAM,OAAO,aAAa,SAAS,KAAK;AAE1D,OAAI,UAAU,OACZ,OAAM,UAAU;AAGlB,UAAO,UAAU;EAClB;EAED,MAAMC,SAAc,CAAE;AACtB,OAAK,MAAM,OAAO,QAAQ;GACxB,MAAM,OAAO,OAAO;AACpB,OAAI,oBAAoB,mBAAmB,KAAK,EAAE;IAChD,MAAM,QAAQ,wBAAI,MAAM,IAAI;IAC5B,MAAM,YAAY,MAAM,KAAK,aAAa,SAAS,MAAM;AAEzD,QAAI,UAAU,OACZ,OAAM,UAAU;AAGlB,WAAO,OAAO,UAAU;GACzB;EACF;AAED,SAAO;CACR;CAED,YAAmB,OAAOC,gCAAc,UAAU;EAA/B;CAAiC;CAMpD,QAAQC,SAAuB;AAC7B,OAAK,WAAW;AAChB,SAAO;CACR;CAMD,MACEC,OACM;AACN,OAAK,QAAQ,KAAK,MAAM;AACxB,SAAO;CACR;CAED,UACEC,WAYA;AACA,OAAK,aAAa;AAKlB,SAAO;CAYR;CAED,QACEC,SAYA;AACA,OAAK,kBAAkB;AAKvB,SAAO;CAYR;;;;;CAMD,SACEC,SAYA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAYR;AACF"}
1
+ {"version":3,"file":"BaseFunctionBuilder-MYG3C9ug.cjs","names":["ConsoleLogger","s: unknown","data: unknown","schema: T","result: any","ConstructType","timeout: number","event: TEvent","publisher: Service<TName, T>","storage: Service<TName, T>","service: Service<TName, T>"],"sources":["../src/functions/BaseFunctionBuilder.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type {\n ComposableStandardSchema,\n InferComposableStandardSchema,\n} from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport get from 'lodash.get';\nimport { ConstructType } from '../Construct';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport abstract class BaseFunctionBuilder<\n TInput extends ComposableStandardSchema,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n TAuditStorageServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> {\n protected inputSchema?: TInput;\n protected outputSchema?: OutSchema;\n protected _timeout?: number;\n\n public _services: TServices = [] as Service[] as TServices;\n public _logger: TLogger = DEFAULT_LOGGER;\n\n protected _events: MappedEvent<TEventPublisher, OutSchema>[] = [];\n protected _publisher?: Service<TEventPublisherServiceName, TEventPublisher>;\n protected _auditorStorage?: Service<TAuditStorageServiceName, TAuditStorage>;\n protected _databaseService?: Service<TDatabaseServiceName, TDatabase>;\n\n static isStandardSchemaV1(s: unknown): s is StandardSchemaV1 {\n const schema = (s as StandardSchemaV1)['~standard'];\n\n return schema && typeof schema.validate === 'function';\n }\n\n static async parseComposableStandardSchema<\n T extends ComposableStandardSchema | undefined,\n >(data: unknown, schema: T): Promise<InferComposableStandardSchema<T>> {\n if (BaseFunctionBuilder.isStandardSchemaV1(schema)) {\n const validated = await schema['~standard'].validate(data);\n\n if (validated.issues) {\n throw validated.issues;\n }\n\n return validated.value as InferComposableStandardSchema<T>;\n }\n\n const result: any = {};\n for (const key in schema) {\n const item = schema[key];\n if (BaseFunctionBuilder.isStandardSchemaV1(item)) {\n const value = get(data, key);\n const validated = await item['~standard'].validate(value);\n\n if (validated.issues) {\n throw validated.issues;\n }\n\n result[key] = validated.value;\n }\n }\n\n return result as InferComposableStandardSchema<T>;\n }\n\n constructor(public type = ConstructType.Function) {}\n\n abstract services<T extends Service[]>(services: T): any;\n\n abstract logger<T extends Logger>(logger: T): any;\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n abstract output<T extends StandardSchemaV1>(schema: T): any;\n\n abstract input<T extends ComposableStandardSchema>(schema: T): any;\n\n event<TEvent extends MappedEvent<TEventPublisher, OutSchema>>(\n event: TEvent,\n ): this {\n this._events.push(event);\n return this;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n T,\n TName,\n TAuditStorage,\n TAuditStorageServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n auditor<T extends AuditStorage, TName extends string>(\n storage: Service<TName, T>,\n ): BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._auditorStorage = storage as unknown as Service<\n TAuditStorageServiceName,\n TAuditStorage\n >;\n\n return this as unknown as BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the database service for this function.\n * The database will be available in the handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as BaseFunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n TAuditStorage,\n TAuditStorageServiceName,\n T,\n TName\n >;\n }\n}\n"],"mappings":";;;;;;AAaA,MAAM,iBAAiB,IAAIA;AAE3B,IAAsB,sBAAtB,MAAsB,oBAWpB;CACA,AAAU;CACV,AAAU;CACV,AAAU;CAEV,AAAO,YAAuB,CAAE;CAChC,AAAO,UAAmB;CAE1B,AAAU,UAAqD,CAAE;CACjE,AAAU;CACV,AAAU;CACV,AAAU;CAEV,OAAO,mBAAmBC,GAAmC;EAC3D,MAAM,SAAU,EAAuB;AAEvC,SAAO,iBAAiB,OAAO,aAAa;CAC7C;CAED,aAAa,8BAEXC,MAAeC,QAAsD;AACrE,MAAI,oBAAoB,mBAAmB,OAAO,EAAE;GAClD,MAAM,YAAY,MAAM,OAAO,aAAa,SAAS,KAAK;AAE1D,OAAI,UAAU,OACZ,OAAM,UAAU;AAGlB,UAAO,UAAU;EAClB;EAED,MAAMC,SAAc,CAAE;AACtB,OAAK,MAAM,OAAO,QAAQ;GACxB,MAAM,OAAO,OAAO;AACpB,OAAI,oBAAoB,mBAAmB,KAAK,EAAE;IAChD,MAAM,QAAQ,wBAAI,MAAM,IAAI;IAC5B,MAAM,YAAY,MAAM,KAAK,aAAa,SAAS,MAAM;AAEzD,QAAI,UAAU,OACZ,OAAM,UAAU;AAGlB,WAAO,OAAO,UAAU;GACzB;EACF;AAED,SAAO;CACR;CAED,YAAmB,OAAOC,gCAAc,UAAU;EAA/B;CAAiC;CAMpD,QAAQC,SAAuB;AAC7B,OAAK,WAAW;AAChB,SAAO;CACR;CAMD,MACEC,OACM;AACN,OAAK,QAAQ,KAAK,MAAM;AACxB,SAAO;CACR;CAED,UACEC,WAYA;AACA,OAAK,aAAa;AAKlB,SAAO;CAYR;CAED,QACEC,SAYA;AACA,OAAK,kBAAkB;AAKvB,SAAO;CAYR;;;;;CAMD,SACEC,SAYA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAYR;AACF"}
@@ -61,7 +61,7 @@ var Construct = class {
61
61
  }
62
62
  return Array.from(envVars).sort();
63
63
  } catch (error) {
64
- console.error("Error determining environment variables for construct:", error);
64
+ this.logger.error({ error }, "Error determining environment variables for construct");
65
65
  return [];
66
66
  }
67
67
  }
@@ -87,4 +87,4 @@ Object.defineProperty(exports, 'ConstructType', {
87
87
  return ConstructType;
88
88
  }
89
89
  });
90
- //# sourceMappingURL=Construct-BYSPikVm.cjs.map
90
+ //# sourceMappingURL=Construct-Ba5cMxib.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Construct-BYSPikVm.cjs","names":["type: ConstructType","logger: TLogger","services: TServices","events: MappedEvent<T, any>[]","publisherService?: Service<TServiceName, T>","outputSchema?: OutSchema","timeout?: number","memorySize?: number","auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >","services: Service[]","SnifferEnvironmentParser"],"sources":["../src/Construct.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport compact from 'lodash.compact';\n\n// Cache for service environment variables to handle singleton services\n// Key: service class/constructor, Value: array of env var names\nconst serviceEnvCache = new Map<Service, string[]>();\n\nexport abstract class Construct<\n TLogger extends Logger = Logger,\n TServiceName extends string = string,\n T extends EventPublisher<any> | undefined = undefined,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TAuditStorageServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n> {\n constructor(\n public readonly type: ConstructType,\n public readonly logger: TLogger,\n public readonly services: TServices,\n public readonly events: MappedEvent<T, any>[] = [],\n\n public readonly publisherService?: Service<TServiceName, T>,\n public outputSchema?: OutSchema,\n public readonly timeout?: number,\n public readonly memorySize?: number,\n public readonly auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >,\n ) {}\n\n /**\n * Returns an array of environment variable names required by this construct's services.\n * This is determined by running a \"sniffer\" EnvironmentParser through each service's\n * register method to track which environment variables are accessed.\n *\n * Results are cached per service class to handle singleton patterns where\n * subsequent register() calls may short-circuit and not access env vars.\n *\n * @returns Promise that resolves to array of environment variable names, sorted alphabetically\n *\n * @example\n * ```typescript\n * const endpoint = e\n * .services([databaseService, authService])\n * .get('/users')\n * .handle(async () => []);\n *\n * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n * ```\n */\n async getEnvironment(): Promise<string[]> {\n const envVars = new Set<string>();\n const services: Service[] = compact([\n ...this.services,\n this.publisherService,\n this.auditorStorageService,\n ]);\n\n try {\n for (const service of services) {\n // Check cache first - handles singleton services that short-circuit\n if (serviceEnvCache.has(service)) {\n const cached = serviceEnvCache.get(service)!;\n cached.forEach((v) => envVars.add(v));\n continue;\n }\n\n // Sniff the service for env vars\n const sniffer = new SnifferEnvironmentParser();\n try {\n const result = service.register(sniffer as any);\n\n // Await if it's a Promise (async services)\n if (result && typeof result === 'object' && 'then' in result) {\n await Promise.resolve(result);\n }\n } catch {\n // Service registration may fail but env vars are still tracked\n }\n\n // Cache and collect the env vars\n const serviceEnvVars = sniffer.getEnvironmentVariables();\n serviceEnvCache.set(service, serviceEnvVars);\n serviceEnvVars.forEach((v) => envVars.add(v));\n }\n\n return Array.from(envVars).sort();\n } catch (error) {\n console.error(\n 'Error determining environment variables for construct:',\n error,\n );\n\n return [];\n }\n }\n}\n\nexport enum ConstructType {\n Cron = 'dev.geekmidas.function.cron',\n Endpoint = 'dev.geekmidas.function.endpoint',\n Function = 'dev.geekmidas.function.function',\n Subscriber = 'dev.geekmidas.function.subscriber',\n}\n"],"mappings":";;;;;AAUA,MAAM,kCAAkB,IAAI;AAE5B,IAAsB,YAAtB,MAQE;CACA,YACkBA,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIhB;EAbgB;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAId;;;;;;;;;;;;;;;;;;;;;CAsBJ,MAAM,iBAAoC;EACxC,MAAM,0BAAU,IAAI;EACpB,MAAMC,WAAsB,4BAAQ;GAClC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;EACN,EAAC;AAEF,MAAI;AACF,QAAK,MAAM,WAAW,UAAU;AAE9B,QAAI,gBAAgB,IAAI,QAAQ,EAAE;KAChC,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAC3C,YAAO,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AACrC;IACD;IAGD,MAAM,UAAU,IAAIC;AACpB,QAAI;KACF,MAAM,SAAS,QAAQ,SAAS,QAAe;AAG/C,SAAI,iBAAiB,WAAW,YAAY,UAAU,OACpD,OAAM,QAAQ,QAAQ,OAAO;IAEhC,QAAO,CAEP;IAGD,MAAM,iBAAiB,QAAQ,yBAAyB;AACxD,oBAAgB,IAAI,SAAS,eAAe;AAC5C,mBAAe,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;GAC9C;AAED,UAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;EAClC,SAAQ,OAAO;AACd,WAAQ,MACN,0DACA,MACD;AAED,UAAO,CAAE;EACV;CACF;AACF;AAED,IAAY,0DAAL;AACL;AACA;AACA;AACA;;AACD"}
1
+ {"version":3,"file":"Construct-Ba5cMxib.cjs","names":["type: ConstructType","logger: TLogger","services: TServices","events: MappedEvent<T, any>[]","publisherService?: Service<TServiceName, T>","outputSchema?: OutSchema","timeout?: number","memorySize?: number","auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >","services: Service[]","SnifferEnvironmentParser"],"sources":["../src/Construct.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport compact from 'lodash.compact';\n\n// Cache for service environment variables to handle singleton services\n// Key: service class/constructor, Value: array of env var names\nconst serviceEnvCache = new Map<Service, string[]>();\n\nexport abstract class Construct<\n TLogger extends Logger = Logger,\n TServiceName extends string = string,\n T extends EventPublisher<any> | undefined = undefined,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TAuditStorageServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n> {\n constructor(\n public readonly type: ConstructType,\n public readonly logger: TLogger,\n public readonly services: TServices,\n public readonly events: MappedEvent<T, any>[] = [],\n\n public readonly publisherService?: Service<TServiceName, T>,\n public outputSchema?: OutSchema,\n public readonly timeout?: number,\n public readonly memorySize?: number,\n public readonly auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >,\n ) {}\n\n /**\n * Returns an array of environment variable names required by this construct's services.\n * This is determined by running a \"sniffer\" EnvironmentParser through each service's\n * register method to track which environment variables are accessed.\n *\n * Results are cached per service class to handle singleton patterns where\n * subsequent register() calls may short-circuit and not access env vars.\n *\n * @returns Promise that resolves to array of environment variable names, sorted alphabetically\n *\n * @example\n * ```typescript\n * const endpoint = e\n * .services([databaseService, authService])\n * .get('/users')\n * .handle(async () => []);\n *\n * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n * ```\n */\n async getEnvironment(): Promise<string[]> {\n const envVars = new Set<string>();\n const services: Service[] = compact([\n ...this.services,\n this.publisherService,\n this.auditorStorageService,\n ]);\n\n try {\n for (const service of services) {\n // Check cache first - handles singleton services that short-circuit\n if (serviceEnvCache.has(service)) {\n const cached = serviceEnvCache.get(service)!;\n cached.forEach((v) => envVars.add(v));\n continue;\n }\n\n // Sniff the service for env vars\n const sniffer = new SnifferEnvironmentParser();\n try {\n const result = service.register(sniffer as any);\n\n // Await if it's a Promise (async services)\n if (result && typeof result === 'object' && 'then' in result) {\n await Promise.resolve(result);\n }\n } catch {\n // Service registration may fail but env vars are still tracked\n }\n\n // Cache and collect the env vars\n const serviceEnvVars = sniffer.getEnvironmentVariables();\n serviceEnvCache.set(service, serviceEnvVars);\n serviceEnvVars.forEach((v) => envVars.add(v));\n }\n\n return Array.from(envVars).sort();\n } catch (error) {\n this.logger.error(\n { error },\n 'Error determining environment variables for construct',\n );\n\n return [];\n }\n }\n}\n\nexport enum ConstructType {\n Cron = 'dev.geekmidas.function.cron',\n Endpoint = 'dev.geekmidas.function.endpoint',\n Function = 'dev.geekmidas.function.function',\n Subscriber = 'dev.geekmidas.function.subscriber',\n}\n"],"mappings":";;;;;AAUA,MAAM,kCAAkB,IAAI;AAE5B,IAAsB,YAAtB,MAQE;CACA,YACkBA,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIhB;EAbgB;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAId;;;;;;;;;;;;;;;;;;;;;CAsBJ,MAAM,iBAAoC;EACxC,MAAM,0BAAU,IAAI;EACpB,MAAMC,WAAsB,4BAAQ;GAClC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;EACN,EAAC;AAEF,MAAI;AACF,QAAK,MAAM,WAAW,UAAU;AAE9B,QAAI,gBAAgB,IAAI,QAAQ,EAAE;KAChC,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAC3C,YAAO,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AACrC;IACD;IAGD,MAAM,UAAU,IAAIC;AACpB,QAAI;KACF,MAAM,SAAS,QAAQ,SAAS,QAAe;AAG/C,SAAI,iBAAiB,WAAW,YAAY,UAAU,OACpD,OAAM,QAAQ,QAAQ,OAAO;IAEhC,QAAO,CAEP;IAGD,MAAM,iBAAiB,QAAQ,yBAAyB;AACxD,oBAAgB,IAAI,SAAS,eAAe;AAC5C,mBAAe,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;GAC9C;AAED,UAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;EAClC,SAAQ,OAAO;AACd,QAAK,OAAO,MACV,EAAE,MAAO,GACT,wDACD;AAED,UAAO,CAAE;EACV;CACF;AACF;AAED,IAAY,0DAAL;AACL;AACA;AACA;AACA;;AACD"}
@@ -60,7 +60,7 @@ var Construct = class {
60
60
  }
61
61
  return Array.from(envVars).sort();
62
62
  } catch (error) {
63
- console.error("Error determining environment variables for construct:", error);
63
+ this.logger.error({ error }, "Error determining environment variables for construct");
64
64
  return [];
65
65
  }
66
66
  }
@@ -75,4 +75,4 @@ let ConstructType = /* @__PURE__ */ function(ConstructType$1) {
75
75
 
76
76
  //#endregion
77
77
  export { Construct, ConstructType };
78
- //# sourceMappingURL=Construct-LWeB1rSQ.mjs.map
78
+ //# sourceMappingURL=Construct-DdyGHuag.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Construct-LWeB1rSQ.mjs","names":["type: ConstructType","logger: TLogger","services: TServices","events: MappedEvent<T, any>[]","publisherService?: Service<TServiceName, T>","outputSchema?: OutSchema","timeout?: number","memorySize?: number","auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >","services: Service[]"],"sources":["../src/Construct.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport compact from 'lodash.compact';\n\n// Cache for service environment variables to handle singleton services\n// Key: service class/constructor, Value: array of env var names\nconst serviceEnvCache = new Map<Service, string[]>();\n\nexport abstract class Construct<\n TLogger extends Logger = Logger,\n TServiceName extends string = string,\n T extends EventPublisher<any> | undefined = undefined,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TAuditStorageServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n> {\n constructor(\n public readonly type: ConstructType,\n public readonly logger: TLogger,\n public readonly services: TServices,\n public readonly events: MappedEvent<T, any>[] = [],\n\n public readonly publisherService?: Service<TServiceName, T>,\n public outputSchema?: OutSchema,\n public readonly timeout?: number,\n public readonly memorySize?: number,\n public readonly auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >,\n ) {}\n\n /**\n * Returns an array of environment variable names required by this construct's services.\n * This is determined by running a \"sniffer\" EnvironmentParser through each service's\n * register method to track which environment variables are accessed.\n *\n * Results are cached per service class to handle singleton patterns where\n * subsequent register() calls may short-circuit and not access env vars.\n *\n * @returns Promise that resolves to array of environment variable names, sorted alphabetically\n *\n * @example\n * ```typescript\n * const endpoint = e\n * .services([databaseService, authService])\n * .get('/users')\n * .handle(async () => []);\n *\n * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n * ```\n */\n async getEnvironment(): Promise<string[]> {\n const envVars = new Set<string>();\n const services: Service[] = compact([\n ...this.services,\n this.publisherService,\n this.auditorStorageService,\n ]);\n\n try {\n for (const service of services) {\n // Check cache first - handles singleton services that short-circuit\n if (serviceEnvCache.has(service)) {\n const cached = serviceEnvCache.get(service)!;\n cached.forEach((v) => envVars.add(v));\n continue;\n }\n\n // Sniff the service for env vars\n const sniffer = new SnifferEnvironmentParser();\n try {\n const result = service.register(sniffer as any);\n\n // Await if it's a Promise (async services)\n if (result && typeof result === 'object' && 'then' in result) {\n await Promise.resolve(result);\n }\n } catch {\n // Service registration may fail but env vars are still tracked\n }\n\n // Cache and collect the env vars\n const serviceEnvVars = sniffer.getEnvironmentVariables();\n serviceEnvCache.set(service, serviceEnvVars);\n serviceEnvVars.forEach((v) => envVars.add(v));\n }\n\n return Array.from(envVars).sort();\n } catch (error) {\n console.error(\n 'Error determining environment variables for construct:',\n error,\n );\n\n return [];\n }\n }\n}\n\nexport enum ConstructType {\n Cron = 'dev.geekmidas.function.cron',\n Endpoint = 'dev.geekmidas.function.endpoint',\n Function = 'dev.geekmidas.function.function',\n Subscriber = 'dev.geekmidas.function.subscriber',\n}\n"],"mappings":";;;;AAUA,MAAM,kCAAkB,IAAI;AAE5B,IAAsB,YAAtB,MAQE;CACA,YACkBA,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIhB;EAbgB;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAId;;;;;;;;;;;;;;;;;;;;;CAsBJ,MAAM,iBAAoC;EACxC,MAAM,0BAAU,IAAI;EACpB,MAAMC,WAAsB,QAAQ;GAClC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;EACN,EAAC;AAEF,MAAI;AACF,QAAK,MAAM,WAAW,UAAU;AAE9B,QAAI,gBAAgB,IAAI,QAAQ,EAAE;KAChC,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAC3C,YAAO,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AACrC;IACD;IAGD,MAAM,UAAU,IAAI;AACpB,QAAI;KACF,MAAM,SAAS,QAAQ,SAAS,QAAe;AAG/C,SAAI,iBAAiB,WAAW,YAAY,UAAU,OACpD,OAAM,QAAQ,QAAQ,OAAO;IAEhC,QAAO,CAEP;IAGD,MAAM,iBAAiB,QAAQ,yBAAyB;AACxD,oBAAgB,IAAI,SAAS,eAAe;AAC5C,mBAAe,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;GAC9C;AAED,UAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;EAClC,SAAQ,OAAO;AACd,WAAQ,MACN,0DACA,MACD;AAED,UAAO,CAAE;EACV;CACF;AACF;AAED,IAAY,0DAAL;AACL;AACA;AACA;AACA;;AACD"}
1
+ {"version":3,"file":"Construct-DdyGHuag.mjs","names":["type: ConstructType","logger: TLogger","services: TServices","events: MappedEvent<T, any>[]","publisherService?: Service<TServiceName, T>","outputSchema?: OutSchema","timeout?: number","memorySize?: number","auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >","services: Service[]"],"sources":["../src/Construct.ts"],"sourcesContent":["import type { AuditStorage } from '@geekmidas/audit';\nimport { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\nimport type { EventPublisher, MappedEvent } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport compact from 'lodash.compact';\n\n// Cache for service environment variables to handle singleton services\n// Key: service class/constructor, Value: array of env var names\nconst serviceEnvCache = new Map<Service, string[]>();\n\nexport abstract class Construct<\n TLogger extends Logger = Logger,\n TServiceName extends string = string,\n T extends EventPublisher<any> | undefined = undefined,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TServices extends Service[] = [],\n TAuditStorageServiceName extends string = string,\n TAuditStorage extends AuditStorage | undefined = undefined,\n> {\n constructor(\n public readonly type: ConstructType,\n public readonly logger: TLogger,\n public readonly services: TServices,\n public readonly events: MappedEvent<T, any>[] = [],\n\n public readonly publisherService?: Service<TServiceName, T>,\n public outputSchema?: OutSchema,\n public readonly timeout?: number,\n public readonly memorySize?: number,\n public readonly auditorStorageService?: Service<\n TAuditStorageServiceName,\n TAuditStorage\n >,\n ) {}\n\n /**\n * Returns an array of environment variable names required by this construct's services.\n * This is determined by running a \"sniffer\" EnvironmentParser through each service's\n * register method to track which environment variables are accessed.\n *\n * Results are cached per service class to handle singleton patterns where\n * subsequent register() calls may short-circuit and not access env vars.\n *\n * @returns Promise that resolves to array of environment variable names, sorted alphabetically\n *\n * @example\n * ```typescript\n * const endpoint = e\n * .services([databaseService, authService])\n * .get('/users')\n * .handle(async () => []);\n *\n * const envVars = await endpoint.getEnvironment(); // ['AUTH_SECRET', 'DATABASE_URL']\n * ```\n */\n async getEnvironment(): Promise<string[]> {\n const envVars = new Set<string>();\n const services: Service[] = compact([\n ...this.services,\n this.publisherService,\n this.auditorStorageService,\n ]);\n\n try {\n for (const service of services) {\n // Check cache first - handles singleton services that short-circuit\n if (serviceEnvCache.has(service)) {\n const cached = serviceEnvCache.get(service)!;\n cached.forEach((v) => envVars.add(v));\n continue;\n }\n\n // Sniff the service for env vars\n const sniffer = new SnifferEnvironmentParser();\n try {\n const result = service.register(sniffer as any);\n\n // Await if it's a Promise (async services)\n if (result && typeof result === 'object' && 'then' in result) {\n await Promise.resolve(result);\n }\n } catch {\n // Service registration may fail but env vars are still tracked\n }\n\n // Cache and collect the env vars\n const serviceEnvVars = sniffer.getEnvironmentVariables();\n serviceEnvCache.set(service, serviceEnvVars);\n serviceEnvVars.forEach((v) => envVars.add(v));\n }\n\n return Array.from(envVars).sort();\n } catch (error) {\n this.logger.error(\n { error },\n 'Error determining environment variables for construct',\n );\n\n return [];\n }\n }\n}\n\nexport enum ConstructType {\n Cron = 'dev.geekmidas.function.cron',\n Endpoint = 'dev.geekmidas.function.endpoint',\n Function = 'dev.geekmidas.function.function',\n Subscriber = 'dev.geekmidas.function.subscriber',\n}\n"],"mappings":";;;;AAUA,MAAM,kCAAkB,IAAI;AAE5B,IAAsB,YAAtB,MAQE;CACA,YACkBA,MACAC,QACAC,UACAC,SAAgC,CAAE,GAElCC,kBACTC,cACSC,SACAC,YACAC,uBAIhB;EAbgB;EACA;EACA;EACA;EAEA;EACT;EACS;EACA;EACA;CAId;;;;;;;;;;;;;;;;;;;;;CAsBJ,MAAM,iBAAoC;EACxC,MAAM,0BAAU,IAAI;EACpB,MAAMC,WAAsB,QAAQ;GAClC,GAAG,KAAK;GACR,KAAK;GACL,KAAK;EACN,EAAC;AAEF,MAAI;AACF,QAAK,MAAM,WAAW,UAAU;AAE9B,QAAI,gBAAgB,IAAI,QAAQ,EAAE;KAChC,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAC3C,YAAO,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;AACrC;IACD;IAGD,MAAM,UAAU,IAAI;AACpB,QAAI;KACF,MAAM,SAAS,QAAQ,SAAS,QAAe;AAG/C,SAAI,iBAAiB,WAAW,YAAY,UAAU,OACpD,OAAM,QAAQ,QAAQ,OAAO;IAEhC,QAAO,CAEP;IAGD,MAAM,iBAAiB,QAAQ,yBAAyB;AACxD,oBAAgB,IAAI,SAAS,eAAe;AAC5C,mBAAe,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAC;GAC9C;AAED,UAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;EAClC,SAAQ,OAAO;AACd,QAAK,OAAO,MACV,EAAE,MAAO,GACT,wDACD;AAED,UAAO,CAAE;EACV;CACF;AACF;AAED,IAAY,0DAAL;AACL;AACA;AACA;AACA;;AACD"}
@@ -1,4 +1,4 @@
1
- const require_Construct = require('./Construct-BYSPikVm.cjs');
1
+ const require_Construct = require('./Construct-Ba5cMxib.cjs');
2
2
 
3
3
  exports.Construct = require_Construct.Construct;
4
4
  exports.ConstructType = require_Construct.ConstructType;
@@ -1,3 +1,3 @@
1
- import { Construct, ConstructType } from "./Construct-LWeB1rSQ.mjs";
1
+ import { Construct, ConstructType } from "./Construct-DdyGHuag.mjs";
2
2
 
3
3
  export { Construct, ConstructType };
@@ -1,5 +1,5 @@
1
- import { ConstructType } from "./Construct-LWeB1rSQ.mjs";
2
- import { Function } from "./Function-DfKsM5Kx.mjs";
1
+ import { ConstructType } from "./Construct-DdyGHuag.mjs";
2
+ import { Function } from "./Function-BVHqIDp9.mjs";
3
3
 
4
4
  //#region src/crons/Cron.ts
5
5
  var Cron = class extends Function {
@@ -17,4 +17,4 @@ var Cron = class extends Function {
17
17
 
18
18
  //#endregion
19
19
  export { Cron };
20
- //# sourceMappingURL=Cron-Dy_HW2Vv.mjs.map
20
+ //# sourceMappingURL=Cron-BxhGs5up.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cron-Dy_HW2Vv.mjs","names":["obj: any","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>","timeout?: number","_schedule?: ScheduleExpression","input?: TInput","outputSchema?: OutSchema","services: TServices","logger?: TLogger","publisherService?: Service<TEventPublisherServiceName, TEventPublisher>","events: any[]","memorySize?: number","databaseService?: Service<TDatabaseServiceName, TDatabase>"],"sources":["../src/crons/Cron.ts"],"sourcesContent":["import type { AuditableAction } from '@geekmidas/audit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { ConstructType } from '../Construct';\nimport { Function, type FunctionHandler } from '../functions';\n\nexport class Cron<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends Function<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName,\n AuditableAction<string, unknown>,\n FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>\n> {\n static isCron(obj: any): obj is Cron<any, any, any, any> {\n return Boolean(\n obj &&\n (obj as Function).__IS_FUNCTION__ === true &&\n obj.type === ConstructType.Cron,\n );\n }\n\n constructor(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n timeout?: number,\n protected _schedule?: ScheduleExpression,\n input?: TInput,\n outputSchema?: OutSchema,\n services: TServices = [] as unknown as TServices,\n logger?: TLogger,\n publisherService?: Service<TEventPublisherServiceName, TEventPublisher>,\n events: any[] = [],\n memorySize?: number,\n databaseService?: Service<TDatabaseServiceName, TDatabase>,\n ) {\n super(\n fn,\n timeout,\n ConstructType.Cron,\n input,\n outputSchema,\n services,\n logger,\n publisherService,\n events,\n memorySize,\n undefined, // auditorStorageService\n databaseService,\n );\n }\n\n get schedule(): ScheduleExpression | undefined {\n return this._schedule;\n }\n}\n\nexport type RateExpression = `rate(${string})`;\n\ntype CronMinute =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronHour =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronDay =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronMonth =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'JAN'\n | 'FEB'\n | 'MAR'\n | 'APR'\n | 'MAY'\n | 'JUN'\n | 'JUL'\n | 'AUG'\n | 'SEP'\n | 'OCT'\n | 'NOV'\n | 'DEC'\n | string; // Allow more complex patterns\n\ntype CronWeekday =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'SUN'\n | 'MON'\n | 'TUE'\n | 'WED'\n | 'THU'\n | 'FRI'\n | 'SAT'\n | `${string}-${string}` // Allow patterns like MON-FRI\n | string; // Allow more complex patterns\n\nexport type CronExpression =\n `cron(${CronMinute} ${CronHour} ${CronDay} ${CronMonth} ${CronWeekday})`;\n\nexport type ScheduleExpression = RateExpression | CronExpression;\n"],"mappings":";;;;AAUA,IAAa,OAAb,cASU,SAaR;CACA,OAAO,OAAOA,KAA2C;AACvD,SAAO,QACL,OACG,IAAiB,oBAAoB,QACtC,IAAI,SAAS,cAAc,KAC9B;CACF;CAED,YACEC,IACAC,SACUC,WACVC,OACAC,cACAC,WAAsB,CAAE,GACxBC,QACAC,kBACAC,SAAgB,CAAE,GAClBC,YACAC,iBACA;AACA,QACE,IACA,SACA,cAAc,MACd,OACA,cACA,UACA,QACA,kBACA,QACA,oBAEA,gBACD;EAvBS;CAwBX;CAED,IAAI,WAA2C;AAC7C,SAAO,KAAK;CACb;AACF"}
1
+ {"version":3,"file":"Cron-BxhGs5up.mjs","names":["obj: any","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>","timeout?: number","_schedule?: ScheduleExpression","input?: TInput","outputSchema?: OutSchema","services: TServices","logger?: TLogger","publisherService?: Service<TEventPublisherServiceName, TEventPublisher>","events: any[]","memorySize?: number","databaseService?: Service<TDatabaseServiceName, TDatabase>"],"sources":["../src/crons/Cron.ts"],"sourcesContent":["import type { AuditableAction } from '@geekmidas/audit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { ConstructType } from '../Construct';\nimport { Function, type FunctionHandler } from '../functions';\n\nexport class Cron<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends Function<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName,\n AuditableAction<string, unknown>,\n FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>\n> {\n static isCron(obj: any): obj is Cron<any, any, any, any> {\n return Boolean(\n obj &&\n (obj as Function).__IS_FUNCTION__ === true &&\n obj.type === ConstructType.Cron,\n );\n }\n\n constructor(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n timeout?: number,\n protected _schedule?: ScheduleExpression,\n input?: TInput,\n outputSchema?: OutSchema,\n services: TServices = [] as unknown as TServices,\n logger?: TLogger,\n publisherService?: Service<TEventPublisherServiceName, TEventPublisher>,\n events: any[] = [],\n memorySize?: number,\n databaseService?: Service<TDatabaseServiceName, TDatabase>,\n ) {\n super(\n fn,\n timeout,\n ConstructType.Cron,\n input,\n outputSchema,\n services,\n logger,\n publisherService,\n events,\n memorySize,\n undefined, // auditorStorageService\n databaseService,\n );\n }\n\n get schedule(): ScheduleExpression | undefined {\n return this._schedule;\n }\n}\n\nexport type RateExpression = `rate(${string})`;\n\ntype CronMinute =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronHour =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronDay =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronMonth =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'JAN'\n | 'FEB'\n | 'MAR'\n | 'APR'\n | 'MAY'\n | 'JUN'\n | 'JUL'\n | 'AUG'\n | 'SEP'\n | 'OCT'\n | 'NOV'\n | 'DEC'\n | string; // Allow more complex patterns\n\ntype CronWeekday =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'SUN'\n | 'MON'\n | 'TUE'\n | 'WED'\n | 'THU'\n | 'FRI'\n | 'SAT'\n | `${string}-${string}` // Allow patterns like MON-FRI\n | string; // Allow more complex patterns\n\nexport type CronExpression =\n `cron(${CronMinute} ${CronHour} ${CronDay} ${CronMonth} ${CronWeekday})`;\n\nexport type ScheduleExpression = RateExpression | CronExpression;\n"],"mappings":";;;;AAUA,IAAa,OAAb,cASU,SAaR;CACA,OAAO,OAAOA,KAA2C;AACvD,SAAO,QACL,OACG,IAAiB,oBAAoB,QACtC,IAAI,SAAS,cAAc,KAC9B;CACF;CAED,YACEC,IACAC,SACUC,WACVC,OACAC,cACAC,WAAsB,CAAE,GACxBC,QACAC,kBACAC,SAAgB,CAAE,GAClBC,YACAC,iBACA;AACA,QACE,IACA,SACA,cAAc,MACd,OACA,cACA,UACA,QACA,kBACA,QACA,oBAEA,gBACD;EAvBS;CAwBX;CAED,IAAI,WAA2C;AAC7C,SAAO,KAAK;CACb;AACF"}
@@ -1,5 +1,5 @@
1
- const require_Construct = require('./Construct-BYSPikVm.cjs');
2
- const require_Function = require('./Function-DagDbeXo.cjs');
1
+ const require_Construct = require('./Construct-Ba5cMxib.cjs');
2
+ const require_Function = require('./Function-DDZb1525.cjs');
3
3
 
4
4
  //#region src/crons/Cron.ts
5
5
  var Cron = class extends require_Function.Function {
@@ -22,4 +22,4 @@ Object.defineProperty(exports, 'Cron', {
22
22
  return Cron;
23
23
  }
24
24
  });
25
- //# sourceMappingURL=Cron-Bi3QOge_.cjs.map
25
+ //# sourceMappingURL=Cron-CGF4YAfM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cron-Bi3QOge_.cjs","names":["Function","obj: any","ConstructType","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>","timeout?: number","_schedule?: ScheduleExpression","input?: TInput","outputSchema?: OutSchema","services: TServices","logger?: TLogger","publisherService?: Service<TEventPublisherServiceName, TEventPublisher>","events: any[]","memorySize?: number","databaseService?: Service<TDatabaseServiceName, TDatabase>"],"sources":["../src/crons/Cron.ts"],"sourcesContent":["import type { AuditableAction } from '@geekmidas/audit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { ConstructType } from '../Construct';\nimport { Function, type FunctionHandler } from '../functions';\n\nexport class Cron<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends Function<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName,\n AuditableAction<string, unknown>,\n FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>\n> {\n static isCron(obj: any): obj is Cron<any, any, any, any> {\n return Boolean(\n obj &&\n (obj as Function).__IS_FUNCTION__ === true &&\n obj.type === ConstructType.Cron,\n );\n }\n\n constructor(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n timeout?: number,\n protected _schedule?: ScheduleExpression,\n input?: TInput,\n outputSchema?: OutSchema,\n services: TServices = [] as unknown as TServices,\n logger?: TLogger,\n publisherService?: Service<TEventPublisherServiceName, TEventPublisher>,\n events: any[] = [],\n memorySize?: number,\n databaseService?: Service<TDatabaseServiceName, TDatabase>,\n ) {\n super(\n fn,\n timeout,\n ConstructType.Cron,\n input,\n outputSchema,\n services,\n logger,\n publisherService,\n events,\n memorySize,\n undefined, // auditorStorageService\n databaseService,\n );\n }\n\n get schedule(): ScheduleExpression | undefined {\n return this._schedule;\n }\n}\n\nexport type RateExpression = `rate(${string})`;\n\ntype CronMinute =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronHour =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronDay =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronMonth =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'JAN'\n | 'FEB'\n | 'MAR'\n | 'APR'\n | 'MAY'\n | 'JUN'\n | 'JUL'\n | 'AUG'\n | 'SEP'\n | 'OCT'\n | 'NOV'\n | 'DEC'\n | string; // Allow more complex patterns\n\ntype CronWeekday =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'SUN'\n | 'MON'\n | 'TUE'\n | 'WED'\n | 'THU'\n | 'FRI'\n | 'SAT'\n | `${string}-${string}` // Allow patterns like MON-FRI\n | string; // Allow more complex patterns\n\nexport type CronExpression =\n `cron(${CronMinute} ${CronHour} ${CronDay} ${CronMonth} ${CronWeekday})`;\n\nexport type ScheduleExpression = RateExpression | CronExpression;\n"],"mappings":";;;;AAUA,IAAa,OAAb,cASUA,0BAaR;CACA,OAAO,OAAOC,KAA2C;AACvD,SAAO,QACL,OACG,IAAiB,oBAAoB,QACtC,IAAI,SAASC,gCAAc,KAC9B;CACF;CAED,YACEC,IACAC,SACUC,WACVC,OACAC,cACAC,WAAsB,CAAE,GACxBC,QACAC,kBACAC,SAAgB,CAAE,GAClBC,YACAC,iBACA;AACA,QACE,IACA,SACAX,gCAAc,MACd,OACA,cACA,UACA,QACA,kBACA,QACA,oBAEA,gBACD;EAvBS;CAwBX;CAED,IAAI,WAA2C;AAC7C,SAAO,KAAK;CACb;AACF"}
1
+ {"version":3,"file":"Cron-CGF4YAfM.cjs","names":["Function","obj: any","ConstructType","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>","timeout?: number","_schedule?: ScheduleExpression","input?: TInput","outputSchema?: OutSchema","services: TServices","logger?: TLogger","publisherService?: Service<TEventPublisherServiceName, TEventPublisher>","events: any[]","memorySize?: number","databaseService?: Service<TDatabaseServiceName, TDatabase>"],"sources":["../src/crons/Cron.ts"],"sourcesContent":["import type { AuditableAction } from '@geekmidas/audit';\nimport type { EventPublisher } from '@geekmidas/events';\nimport type { Logger } from '@geekmidas/logger';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nimport { ConstructType } from '../Construct';\nimport { Function, type FunctionHandler } from '../functions';\n\nexport class Cron<\n TInput extends ComposableStandardSchema | undefined = undefined,\n TServices extends Service[] = [],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends Function<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName,\n AuditableAction<string, unknown>,\n FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>\n> {\n static isCron(obj: any): obj is Cron<any, any, any, any> {\n return Boolean(\n obj &&\n (obj as Function).__IS_FUNCTION__ === true &&\n obj.type === ConstructType.Cron,\n );\n }\n\n constructor(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n timeout?: number,\n protected _schedule?: ScheduleExpression,\n input?: TInput,\n outputSchema?: OutSchema,\n services: TServices = [] as unknown as TServices,\n logger?: TLogger,\n publisherService?: Service<TEventPublisherServiceName, TEventPublisher>,\n events: any[] = [],\n memorySize?: number,\n databaseService?: Service<TDatabaseServiceName, TDatabase>,\n ) {\n super(\n fn,\n timeout,\n ConstructType.Cron,\n input,\n outputSchema,\n services,\n logger,\n publisherService,\n events,\n memorySize,\n undefined, // auditorStorageService\n databaseService,\n );\n }\n\n get schedule(): ScheduleExpression | undefined {\n return this._schedule;\n }\n}\n\nexport type RateExpression = `rate(${string})`;\n\ntype CronMinute =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronHour =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronDay =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | `${number},${number}`\n | string; // Allow more complex patterns\n\ntype CronMonth =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'JAN'\n | 'FEB'\n | 'MAR'\n | 'APR'\n | 'MAY'\n | 'JUN'\n | 'JUL'\n | 'AUG'\n | 'SEP'\n | 'OCT'\n | 'NOV'\n | 'DEC'\n | string; // Allow more complex patterns\n\ntype CronWeekday =\n | '*'\n | number\n | `${number}`\n | `${number}-${number}`\n | `${number}/${number}`\n | `*/${number}`\n | 'SUN'\n | 'MON'\n | 'TUE'\n | 'WED'\n | 'THU'\n | 'FRI'\n | 'SAT'\n | `${string}-${string}` // Allow patterns like MON-FRI\n | string; // Allow more complex patterns\n\nexport type CronExpression =\n `cron(${CronMinute} ${CronHour} ${CronDay} ${CronMonth} ${CronWeekday})`;\n\nexport type ScheduleExpression = RateExpression | CronExpression;\n"],"mappings":";;;;AAUA,IAAa,OAAb,cASUA,0BAaR;CACA,OAAO,OAAOC,KAA2C;AACvD,SAAO,QACL,OACG,IAAiB,oBAAoB,QACtC,IAAI,SAASC,gCAAc,KAC9B;CACF;CAED,YACEC,IACAC,SACUC,WACVC,OACAC,cACAC,WAAsB,CAAE,GACxBC,QACAC,kBACAC,SAAgB,CAAE,GAClBC,YACAC,iBACA;AACA,QACE,IACA,SACAX,gCAAc,MACd,OACA,cACA,UACA,QACA,kBACA,QACA,oBAEA,gBACD;EAvBS;CAwBX;CAED,IAAI,WAA2C;AAC7C,SAAO,KAAK;CACb;AACF"}
@@ -1,7 +1,7 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_Construct = require('./Construct-BYSPikVm.cjs');
3
- const require_FunctionBuilder = require('./FunctionBuilder-DXvG_XD-.cjs');
4
- const require_Cron = require('./Cron-Bi3QOge_.cjs');
2
+ const require_Construct = require('./Construct-Ba5cMxib.cjs');
3
+ const require_FunctionBuilder = require('./FunctionBuilder-DswJ-9sD.cjs');
4
+ const require_Cron = require('./Cron-CGF4YAfM.cjs');
5
5
  const __geekmidas_logger_console = require_chunk.__toESM(require("@geekmidas/logger/console"));
6
6
  const lodash_uniqby = require_chunk.__toESM(require("lodash.uniqby"));
7
7
 
@@ -71,4 +71,4 @@ Object.defineProperty(exports, 'CronBuilder', {
71
71
  return CronBuilder;
72
72
  }
73
73
  });
74
- //# sourceMappingURL=CronBuilder-Dv_w7Yri.cjs.map
74
+ //# sourceMappingURL=CronBuilder-CcxKRtVP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CronBuilder-Dv_w7Yri.cjs","names":["ConsoleLogger","FunctionBuilder","ConstructType","memorySize: number","_expression: ScheduleExpression","schema: T","services: T","logger: T","publisher: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>","Cron"],"sources":["../src/crons/CronBuilder.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { FunctionBuilder, type FunctionHandler } from '../functions';\nimport { Cron, type ScheduleExpression } from './Cron';\n\nimport type { EventPublisher } from '@geekmidas/events';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class CronBuilder<\n TInput extends ComposableStandardSchema,\n TServices extends Service[],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName\n> {\n private _schedule?: ScheduleExpression;\n\n constructor() {\n super(ConstructType.Cron);\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n schedule(\n _expression: ScheduleExpression,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._schedule = _expression;\n return this;\n }\n\n input<T extends ComposableStandardSchema>(\n schema: T,\n ): CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.inputSchema = schema as unknown as TInput;\n\n return this as unknown as CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n services<T extends Service[]>(\n services: T,\n ): CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the database service for this cron job.\n * The database will be available in the handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n >;\n }\n\n handle(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n ): Cron<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n const cron = new Cron(\n fn,\n this._timeout,\n this._schedule,\n this.inputSchema,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n this._events,\n this._memorySize,\n this._databaseService,\n );\n\n // Reset builder state after creating the cron to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._events = [];\n this._publisher = undefined;\n this._databaseService = undefined;\n this._schedule = undefined;\n this.inputSchema = undefined;\n this.outputSchema = undefined;\n this._timeout = undefined;\n this._memorySize = undefined;\n\n return cron;\n }\n}\n"],"mappings":";;;;;;;;AAYA,MAAM,iBAAiB,IAAIA;AAE3B,IAAa,cAAb,cASUC,wCAWR;CACA,AAAQ;CAER,cAAc;AACZ,QAAMC,gCAAc,KAAK;CAC1B;CAED,WAAWC,YAA0B;AACnC,OAAK,cAAc;AACnB,SAAO;CACR;CAED,SACEC,aAUA;AACA,OAAK,YAAY;AACjB,SAAO;CACR;CAED,MACEC,QAUA;AACA,OAAK,cAAc;AAEnB,SAAO;CAUR;CAED,OACEA,QAUA;AACA,OAAK,eAAe;AAEpB,SAAO;CAUR;CAED,SACEC,UAUA;AACA,OAAK,YAAY,2BACf,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACV;AAED,SAAO;CAUR;CAED,OACEC,QAUA;AACA,OAAK,UAAU;AAEf,SAAO;CAUR;CAED,UACEC,WAUA;AACA,OAAK,aAAa;AAKlB,SAAO;CAUR;;;;;CAMD,SACEC,SAUA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAUR;CAED,OACEC,IAUA;EACA,MAAM,OAAO,IAAIC,kBACf,IACA,KAAK,UACL,KAAK,WACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAU;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"CronBuilder-CcxKRtVP.cjs","names":["ConsoleLogger","FunctionBuilder","ConstructType","memorySize: number","_expression: ScheduleExpression","schema: T","services: T","logger: T","publisher: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>","Cron"],"sources":["../src/crons/CronBuilder.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { FunctionBuilder, type FunctionHandler } from '../functions';\nimport { Cron, type ScheduleExpression } from './Cron';\n\nimport type { EventPublisher } from '@geekmidas/events';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class CronBuilder<\n TInput extends ComposableStandardSchema,\n TServices extends Service[],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName\n> {\n private _schedule?: ScheduleExpression;\n\n constructor() {\n super(ConstructType.Cron);\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n schedule(\n _expression: ScheduleExpression,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._schedule = _expression;\n return this;\n }\n\n input<T extends ComposableStandardSchema>(\n schema: T,\n ): CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.inputSchema = schema as unknown as TInput;\n\n return this as unknown as CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n services<T extends Service[]>(\n services: T,\n ): CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the database service for this cron job.\n * The database will be available in the handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n >;\n }\n\n handle(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n ): Cron<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n const cron = new Cron(\n fn,\n this._timeout,\n this._schedule,\n this.inputSchema,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n this._events,\n this._memorySize,\n this._databaseService,\n );\n\n // Reset builder state after creating the cron to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._events = [];\n this._publisher = undefined;\n this._databaseService = undefined;\n this._schedule = undefined;\n this.inputSchema = undefined;\n this.outputSchema = undefined;\n this._timeout = undefined;\n this._memorySize = undefined;\n\n return cron;\n }\n}\n"],"mappings":";;;;;;;;AAYA,MAAM,iBAAiB,IAAIA;AAE3B,IAAa,cAAb,cASUC,wCAWR;CACA,AAAQ;CAER,cAAc;AACZ,QAAMC,gCAAc,KAAK;CAC1B;CAED,WAAWC,YAA0B;AACnC,OAAK,cAAc;AACnB,SAAO;CACR;CAED,SACEC,aAUA;AACA,OAAK,YAAY;AACjB,SAAO;CACR;CAED,MACEC,QAUA;AACA,OAAK,cAAc;AAEnB,SAAO;CAUR;CAED,OACEA,QAUA;AACA,OAAK,eAAe;AAEpB,SAAO;CAUR;CAED,SACEC,UAUA;AACA,OAAK,YAAY,2BACf,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACV;AAED,SAAO;CAUR;CAED,OACEC,QAUA;AACA,OAAK,UAAU;AAEf,SAAO;CAUR;CAED,UACEC,WAUA;AACA,OAAK,aAAa;AAKlB,SAAO;CAUR;;;;;CAMD,SACEC,SAUA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAUR;CAED,OACEC,IAUA;EACA,MAAM,OAAO,IAAIC,kBACf,IACA,KAAK,UACL,KAAK,WACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAU;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACR;AACF"}
@@ -1,6 +1,6 @@
1
- import { ConstructType } from "./Construct-LWeB1rSQ.mjs";
2
- import { FunctionBuilder } from "./FunctionBuilder-CVT7bG2o.mjs";
3
- import { Cron } from "./Cron-Dy_HW2Vv.mjs";
1
+ import { ConstructType } from "./Construct-DdyGHuag.mjs";
2
+ import { FunctionBuilder } from "./FunctionBuilder-CrDYgfiI.mjs";
3
+ import { Cron } from "./Cron-BxhGs5up.mjs";
4
4
  import { ConsoleLogger } from "@geekmidas/logger/console";
5
5
  import uniqBy from "lodash.uniqby";
6
6
 
@@ -65,4 +65,4 @@ var CronBuilder = class extends FunctionBuilder {
65
65
 
66
66
  //#endregion
67
67
  export { CronBuilder };
68
- //# sourceMappingURL=CronBuilder-Bl3A2Zp4.mjs.map
68
+ //# sourceMappingURL=CronBuilder-d2jh-IB2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CronBuilder-Bl3A2Zp4.mjs","names":["DEFAULT_LOGGER","memorySize: number","_expression: ScheduleExpression","schema: T","services: T","logger: T","publisher: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>"],"sources":["../src/crons/CronBuilder.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { FunctionBuilder, type FunctionHandler } from '../functions';\nimport { Cron, type ScheduleExpression } from './Cron';\n\nimport type { EventPublisher } from '@geekmidas/events';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class CronBuilder<\n TInput extends ComposableStandardSchema,\n TServices extends Service[],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName\n> {\n private _schedule?: ScheduleExpression;\n\n constructor() {\n super(ConstructType.Cron);\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n schedule(\n _expression: ScheduleExpression,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._schedule = _expression;\n return this;\n }\n\n input<T extends ComposableStandardSchema>(\n schema: T,\n ): CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.inputSchema = schema as unknown as TInput;\n\n return this as unknown as CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n services<T extends Service[]>(\n services: T,\n ): CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the database service for this cron job.\n * The database will be available in the handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n >;\n }\n\n handle(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n ): Cron<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n const cron = new Cron(\n fn,\n this._timeout,\n this._schedule,\n this.inputSchema,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n this._events,\n this._memorySize,\n this._databaseService,\n );\n\n // Reset builder state after creating the cron to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._events = [];\n this._publisher = undefined;\n this._databaseService = undefined;\n this._schedule = undefined;\n this.inputSchema = undefined;\n this.outputSchema = undefined;\n this._timeout = undefined;\n this._memorySize = undefined;\n\n return cron;\n }\n}\n"],"mappings":";;;;;;;AAYA,MAAMA,mBAAiB,IAAI;AAE3B,IAAa,cAAb,cASU,gBAWR;CACA,AAAQ;CAER,cAAc;AACZ,QAAM,cAAc,KAAK;CAC1B;CAED,WAAWC,YAA0B;AACnC,OAAK,cAAc;AACnB,SAAO;CACR;CAED,SACEC,aAUA;AACA,OAAK,YAAY;AACjB,SAAO;CACR;CAED,MACEC,QAUA;AACA,OAAK,cAAc;AAEnB,SAAO;CAUR;CAED,OACEA,QAUA;AACA,OAAK,eAAe;AAEpB,SAAO;CAUR;CAED,SACEC,UAUA;AACA,OAAK,YAAY,OACf,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACV;AAED,SAAO;CAUR;CAED,OACEC,QAUA;AACA,OAAK,UAAU;AAEf,SAAO;CAUR;CAED,UACEC,WAUA;AACA,OAAK,aAAa;AAKlB,SAAO;CAUR;;;;;CAMD,SACEC,SAUA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAUR;CAED,OACEC,IAUA;EACA,MAAM,OAAO,IAAI,KACf,IACA,KAAK,UACL,KAAK,WACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUR;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACR;AACF"}
1
+ {"version":3,"file":"CronBuilder-d2jh-IB2.mjs","names":["DEFAULT_LOGGER","memorySize: number","_expression: ScheduleExpression","schema: T","services: T","logger: T","publisher: Service<TName, T>","service: Service<TName, T>","fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>"],"sources":["../src/crons/CronBuilder.ts"],"sourcesContent":["import type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport type { ComposableStandardSchema } from '@geekmidas/schema';\nimport type { Service } from '@geekmidas/services';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport uniqBy from 'lodash.uniqby';\nimport { ConstructType } from '../Construct';\nimport { FunctionBuilder, type FunctionHandler } from '../functions';\nimport { Cron, type ScheduleExpression } from './Cron';\n\nimport type { EventPublisher } from '@geekmidas/events';\n\nconst DEFAULT_LOGGER = new ConsoleLogger() as any;\n\nexport class CronBuilder<\n TInput extends ComposableStandardSchema,\n TServices extends Service[],\n TLogger extends Logger = Logger,\n OutSchema extends StandardSchemaV1 | undefined = undefined,\n TEventPublisher extends EventPublisher<any> | undefined = undefined,\n TEventPublisherServiceName extends string = string,\n TDatabase = undefined,\n TDatabaseServiceName extends string = string,\n> extends FunctionBuilder<\n TInput,\n OutSchema,\n TServices,\n TLogger,\n TEventPublisher,\n TEventPublisherServiceName,\n undefined,\n string,\n TDatabase,\n TDatabaseServiceName\n> {\n private _schedule?: ScheduleExpression;\n\n constructor() {\n super(ConstructType.Cron);\n }\n\n memorySize(memorySize: number): this {\n this._memorySize = memorySize;\n return this;\n }\n\n schedule(\n _expression: ScheduleExpression,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._schedule = _expression;\n return this;\n }\n\n input<T extends ComposableStandardSchema>(\n schema: T,\n ): CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.inputSchema = schema as unknown as TInput;\n\n return this as unknown as CronBuilder<\n T,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n output<T extends StandardSchemaV1>(\n schema: T,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this.outputSchema = schema as unknown as OutSchema;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n T,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n services<T extends Service[]>(\n services: T,\n ): CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._services = uniqBy(\n [...this._services, ...services],\n (s) => s.serviceName,\n ) as TServices;\n\n return this as unknown as CronBuilder<\n TInput,\n [...TServices, ...T],\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n logger<T extends Logger>(\n logger: T,\n ): CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._logger = logger as unknown as TLogger;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n T,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n publisher<T extends EventPublisher<any>, TName extends string>(\n publisher: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n > {\n this._publisher = publisher as unknown as Service<\n TEventPublisherServiceName,\n TEventPublisher\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n T,\n TName,\n TDatabase,\n TDatabaseServiceName\n >;\n }\n\n /**\n * Set the database service for this cron job.\n * The database will be available in the handler context as `db`.\n */\n database<T, TName extends string>(\n service: Service<TName, T>,\n ): CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n > {\n this._databaseService = service as unknown as Service<\n TDatabaseServiceName,\n TDatabase\n >;\n\n return this as unknown as CronBuilder<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n T,\n TName\n >;\n }\n\n handle(\n fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>,\n ): Cron<\n TInput,\n TServices,\n TLogger,\n OutSchema,\n TEventPublisher,\n TEventPublisherServiceName,\n TDatabase,\n TDatabaseServiceName\n > {\n const cron = new Cron(\n fn,\n this._timeout,\n this._schedule,\n this.inputSchema,\n this.outputSchema,\n this._services,\n this._logger,\n this._publisher,\n this._events,\n this._memorySize,\n this._databaseService,\n );\n\n // Reset builder state after creating the cron to prevent pollution\n this._services = [] as Service[] as TServices;\n this._logger = DEFAULT_LOGGER;\n this._events = [];\n this._publisher = undefined;\n this._databaseService = undefined;\n this._schedule = undefined;\n this.inputSchema = undefined;\n this.outputSchema = undefined;\n this._timeout = undefined;\n this._memorySize = undefined;\n\n return cron;\n }\n}\n"],"mappings":";;;;;;;AAYA,MAAMA,mBAAiB,IAAI;AAE3B,IAAa,cAAb,cASU,gBAWR;CACA,AAAQ;CAER,cAAc;AACZ,QAAM,cAAc,KAAK;CAC1B;CAED,WAAWC,YAA0B;AACnC,OAAK,cAAc;AACnB,SAAO;CACR;CAED,SACEC,aAUA;AACA,OAAK,YAAY;AACjB,SAAO;CACR;CAED,MACEC,QAUA;AACA,OAAK,cAAc;AAEnB,SAAO;CAUR;CAED,OACEA,QAUA;AACA,OAAK,eAAe;AAEpB,SAAO;CAUR;CAED,SACEC,UAUA;AACA,OAAK,YAAY,OACf,CAAC,GAAG,KAAK,WAAW,GAAG,QAAS,GAChC,CAAC,MAAM,EAAE,YACV;AAED,SAAO;CAUR;CAED,OACEC,QAUA;AACA,OAAK,UAAU;AAEf,SAAO;CAUR;CAED,UACEC,WAUA;AACA,OAAK,aAAa;AAKlB,SAAO;CAUR;;;;;CAMD,SACEC,SAUA;AACA,OAAK,mBAAmB;AAKxB,SAAO;CAUR;CAED,OACEC,IAUA;EACA,MAAM,OAAO,IAAI,KACf,IACA,KAAK,UACL,KAAK,WACL,KAAK,aACL,KAAK,cACL,KAAK,WACL,KAAK,SACL,KAAK,YACL,KAAK,SACL,KAAK,aACL,KAAK;AAIP,OAAK,YAAY,CAAE;AACnB,OAAK,UAAUR;AACf,OAAK,UAAU,CAAE;AACjB,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AACL,OAAK;AAEL,SAAO;CACR;AACF"}
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_Construct = require('./Construct-BYSPikVm.cjs');
3
- const require_Function = require('./Function-DagDbeXo.cjs');
2
+ const require_Construct = require('./Construct-Ba5cMxib.cjs');
3
+ const require_Function = require('./Function-DDZb1525.cjs');
4
4
  const __geekmidas_schema_conversion = require_chunk.__toESM(require("@geekmidas/schema/conversion"));
5
5
  const __geekmidas_schema_openapi = require_chunk.__toESM(require("@geekmidas/schema/openapi"));
6
6
  const lodash_pick = require_chunk.__toESM(require("lodash.pick"));
@@ -437,4 +437,4 @@ Object.defineProperty(exports, 'SuccessStatus', {
437
437
  return SuccessStatus;
438
438
  }
439
439
  });
440
- //# sourceMappingURL=Endpoint-BJo9Hhwm.cjs.map
440
+ //# sourceMappingURL=Endpoint-BVGZXFyV.cjs.map