@geekmidas/constructs 7.0.1 → 9.1.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 (186) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/dist/{AWSScheduledFunction-CTIa90EH.d.cts → AWSScheduledFunction-BHHlWlfV.d.cts} +2 -2
  3. package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts.map → AWSScheduledFunction-BHHlWlfV.d.cts.map} +1 -1
  4. package/dist/{AWSScheduledFunction-ysaCsdWx.d.mts → AWSScheduledFunction-BzGCUbkk.d.mts} +2 -2
  5. package/dist/{AWSScheduledFunction-CTIa90EH.d.cts.map → AWSScheduledFunction-BzGCUbkk.d.mts.map} +1 -1
  6. package/dist/{AWSScheduledFunction-DbkDr8CA.cjs → AWSScheduledFunction-C42adp8A.cjs} +16 -5
  7. package/dist/AWSScheduledFunction-C42adp8A.cjs.map +1 -0
  8. package/dist/{AWSScheduledFunction-CufMMhGB.mjs → AWSScheduledFunction-KP6lqbsW.mjs} +15 -4
  9. package/dist/AWSScheduledFunction-KP6lqbsW.mjs.map +1 -0
  10. package/dist/{Construct-r0U2zBwW.mjs → Construct-BWF5HxaM.mjs} +5 -2
  11. package/dist/Construct-BWF5HxaM.mjs.map +1 -0
  12. package/dist/{Construct-_1wX7p_Y.d.cts → Construct-JlyQkBkv.d.cts} +39 -4
  13. package/dist/Construct-JlyQkBkv.d.cts.map +1 -0
  14. package/dist/{Construct-vXMZJgRp.cjs → Construct-TGIM_E4o.cjs} +5 -2
  15. package/dist/Construct-TGIM_E4o.cjs.map +1 -0
  16. package/dist/{Construct-DCMuYOox.d.mts → Construct-pxwC6fDD.d.mts} +39 -4
  17. package/dist/Construct-pxwC6fDD.d.mts.map +1 -0
  18. package/dist/{Endpoint-CLPSIl6S.d.mts → Endpoint-B0P_pEMr.d.mts} +3 -3
  19. package/dist/{Endpoint-CLPSIl6S.d.mts.map → Endpoint-B0P_pEMr.d.mts.map} +1 -1
  20. package/dist/{Endpoint-CAzNbDEt.d.cts → Endpoint-Cwjhc1Hl.d.cts} +2 -2
  21. package/dist/Endpoint-Cwjhc1Hl.d.cts.map +1 -0
  22. package/dist/{HonoEndpointAdaptor-DJDT3PMx.mjs → HonoEndpointAdaptor-BMVwx2cz.mjs} +18 -11
  23. package/dist/HonoEndpointAdaptor-BMVwx2cz.mjs.map +1 -0
  24. package/dist/{HonoEndpointAdaptor-CkJENANP.cjs → HonoEndpointAdaptor-DPDsDi-D.cjs} +19 -12
  25. package/dist/HonoEndpointAdaptor-DPDsDi-D.cjs.map +1 -0
  26. package/dist/{Queue-HBDf0fqz.d.mts → Queue-BL68oDJ-.d.mts} +2 -2
  27. package/dist/{Queue-DaxjwmOQ.d.cts.map → Queue-BL68oDJ-.d.mts.map} +1 -1
  28. package/dist/{Queue-DaxjwmOQ.d.cts → Queue-DxJ6btRE.d.cts} +2 -2
  29. package/dist/{Queue-HBDf0fqz.d.mts.map → Queue-DxJ6btRE.d.cts.map} +1 -1
  30. package/dist/{Subscriber-B69ngPwl.d.cts → Subscriber-BpVhcGhX.d.cts} +2 -2
  31. package/dist/{Subscriber-B69ngPwl.d.cts.map → Subscriber-BpVhcGhX.d.cts.map} +1 -1
  32. package/dist/{Subscriber-D8Xm-86W.d.mts → Subscriber-DF6xsBAJ.d.mts} +2 -2
  33. package/dist/{Subscriber-D8Xm-86W.d.mts.map → Subscriber-DF6xsBAJ.d.mts.map} +1 -1
  34. package/dist/{Topic-DT10AqHk.d.mts → Topic-DJXoDeMP.d.cts} +3 -3
  35. package/dist/{Topic-C5ZMfveW.d.cts.map → Topic-DJXoDeMP.d.cts.map} +1 -1
  36. package/dist/{Topic-C5ZMfveW.d.cts → Topic-DxWQBgMN.d.mts} +3 -3
  37. package/dist/{Topic-DT10AqHk.d.mts.map → Topic-DxWQBgMN.d.mts.map} +1 -1
  38. package/dist/adaptors/aws.cjs +14 -7
  39. package/dist/adaptors/aws.cjs.map +1 -1
  40. package/dist/adaptors/aws.d.cts +6 -6
  41. package/dist/adaptors/aws.d.cts.map +1 -1
  42. package/dist/adaptors/aws.d.mts +8 -8
  43. package/dist/adaptors/aws.d.mts.map +1 -1
  44. package/dist/adaptors/aws.mjs +14 -7
  45. package/dist/adaptors/aws.mjs.map +1 -1
  46. package/dist/adaptors/hono.cjs +7 -6
  47. package/dist/adaptors/hono.d.cts +3 -3
  48. package/dist/adaptors/hono.d.cts.map +1 -1
  49. package/dist/adaptors/hono.d.mts +4 -4
  50. package/dist/adaptors/hono.d.mts.map +1 -1
  51. package/dist/adaptors/hono.mjs +7 -6
  52. package/dist/adaptors/testing.cjs +161 -126
  53. package/dist/adaptors/testing.cjs.map +1 -1
  54. package/dist/adaptors/testing.d.cts +7 -5
  55. package/dist/adaptors/testing.d.cts.map +1 -1
  56. package/dist/adaptors/testing.d.mts +8 -6
  57. package/dist/adaptors/testing.d.mts.map +1 -1
  58. package/dist/adaptors/testing.mjs +162 -127
  59. package/dist/adaptors/testing.mjs.map +1 -1
  60. package/dist/clone-I_WIpiFf.cjs +45 -0
  61. package/dist/clone-I_WIpiFf.cjs.map +1 -0
  62. package/dist/clone-pdXxc0t3.mjs +39 -0
  63. package/dist/clone-pdXxc0t3.mjs.map +1 -0
  64. package/dist/crons/index.cjs +14 -32
  65. package/dist/crons/index.cjs.map +1 -1
  66. package/dist/crons/index.d.cts +7 -7
  67. package/dist/crons/index.d.cts.map +1 -1
  68. package/dist/crons/index.d.mts +3 -3
  69. package/dist/crons/index.d.mts.map +1 -1
  70. package/dist/crons/index.mjs +14 -32
  71. package/dist/crons/index.mjs.map +1 -1
  72. package/dist/endpoints/index.cjs +74 -61
  73. package/dist/endpoints/index.cjs.map +1 -1
  74. package/dist/endpoints/index.d.cts +14 -6
  75. package/dist/endpoints/index.d.cts.map +1 -1
  76. package/dist/endpoints/index.d.mts +13 -5
  77. package/dist/endpoints/index.d.mts.map +1 -1
  78. package/dist/endpoints/index.mjs +74 -61
  79. package/dist/endpoints/index.mjs.map +1 -1
  80. package/dist/functions/index.cjs +3 -2
  81. package/dist/functions/index.d.cts +2 -2
  82. package/dist/functions/index.d.mts +2 -2
  83. package/dist/functions/index.mjs +3 -2
  84. package/dist/{functions-B-qt91O7.mjs → functions-EqTloHjo.mjs} +107 -46
  85. package/dist/functions-EqTloHjo.mjs.map +1 -0
  86. package/dist/{functions-C8i1kCMM.cjs → functions-SqtCDc9c.cjs} +118 -45
  87. package/dist/functions-SqtCDc9c.cjs.map +1 -0
  88. package/dist/{index-DP6fqv0I.d.mts → index-C7iynzLI.d.mts} +8 -2
  89. package/dist/index-C7iynzLI.d.mts.map +1 -0
  90. package/dist/{index-BGeTScmi.d.cts → index-DdgJRm4q.d.cts} +12 -6
  91. package/dist/index-DdgJRm4q.d.cts.map +1 -0
  92. package/dist/index.cjs +1 -1
  93. package/dist/index.d.cts +2 -2
  94. package/dist/index.d.mts +4 -4
  95. package/dist/index.mjs +1 -1
  96. package/dist/{lazyAccessors-DfqZR6C4.mjs → lazyAccessors-CCTK19xj.mjs} +3 -3
  97. package/dist/{lazyAccessors-DfqZR6C4.mjs.map → lazyAccessors-CCTK19xj.mjs.map} +1 -1
  98. package/dist/{lazyAccessors-DmTG8sQH.cjs → lazyAccessors-D04oftGw.cjs} +3 -3
  99. package/dist/{lazyAccessors-DmTG8sQH.cjs.map → lazyAccessors-D04oftGw.cjs.map} +1 -1
  100. package/dist/monitors/index.cjs +49 -0
  101. package/dist/monitors/index.cjs.map +1 -0
  102. package/dist/monitors/index.d.cts +45 -0
  103. package/dist/monitors/index.d.cts.map +1 -0
  104. package/dist/monitors/index.d.mts +45 -0
  105. package/dist/monitors/index.d.mts.map +1 -0
  106. package/dist/monitors/index.mjs +48 -0
  107. package/dist/monitors/index.mjs.map +1 -0
  108. package/dist/{processAudits-CKjjivyz.cjs → processAudits-BJZT5gmy.cjs} +2 -2
  109. package/dist/{processAudits-CKjjivyz.cjs.map → processAudits-BJZT5gmy.cjs.map} +1 -1
  110. package/dist/{processAudits-ySnizdMG.mjs → processAudits-CwyaaSQc.mjs} +1 -1
  111. package/dist/{processAudits-ySnizdMG.mjs.map → processAudits-CwyaaSQc.mjs.map} +1 -1
  112. package/dist/{publisher-lFQleddL.cjs → publisher-BZgcrVPy.cjs} +1 -1
  113. package/dist/{publisher-lFQleddL.cjs.map → publisher-BZgcrVPy.cjs.map} +1 -1
  114. package/dist/{publisher-BrFOF847.mjs → publisher-CnpeMv-r.mjs} +1 -1
  115. package/dist/{publisher-BrFOF847.mjs.map → publisher-CnpeMv-r.mjs.map} +1 -1
  116. package/dist/queue/index.cjs +9 -22
  117. package/dist/queue/index.cjs.map +1 -1
  118. package/dist/queue/index.d.cts +4 -4
  119. package/dist/queue/index.d.cts.map +1 -1
  120. package/dist/queue/index.d.mts +2 -2
  121. package/dist/queue/index.d.mts.map +1 -1
  122. package/dist/queue/index.mjs +9 -22
  123. package/dist/queue/index.mjs.map +1 -1
  124. package/dist/subscribers/index.cjs +9 -22
  125. package/dist/subscribers/index.cjs.map +1 -1
  126. package/dist/subscribers/index.d.cts +5 -5
  127. package/dist/subscribers/index.d.cts.map +1 -1
  128. package/dist/subscribers/index.d.mts +3 -3
  129. package/dist/subscribers/index.d.mts.map +1 -1
  130. package/dist/subscribers/index.mjs +9 -22
  131. package/dist/subscribers/index.mjs.map +1 -1
  132. package/dist/{telemetry-3vdxGn4q.d.mts → telemetry-C--EgYVr.d.mts} +1 -1
  133. package/dist/{telemetry-3vdxGn4q.d.mts.map → telemetry-C--EgYVr.d.mts.map} +1 -1
  134. package/dist/topic/index.cjs +4 -7
  135. package/dist/topic/index.cjs.map +1 -1
  136. package/dist/topic/index.d.cts +2 -2
  137. package/dist/topic/index.d.cts.map +1 -1
  138. package/dist/topic/index.d.mts +2 -2
  139. package/dist/topic/index.d.mts.map +1 -1
  140. package/dist/topic/index.mjs +4 -7
  141. package/dist/topic/index.mjs.map +1 -1
  142. package/dist/{types-BDNGr7pv.d.mts → types-DNngH0fX.d.mts} +1 -1
  143. package/dist/{types-BDNGr7pv.d.mts.map → types-DNngH0fX.d.mts.map} +1 -1
  144. package/dist/types.d.mts +1 -1
  145. package/package.json +32 -22
  146. package/src/Construct.ts +5 -0
  147. package/src/__tests__/builder-reuse.spec.ts +587 -0
  148. package/src/__tests__/monitor.spec.ts +636 -0
  149. package/src/clone.ts +38 -0
  150. package/src/crons/CronBuilder.ts +35 -45
  151. package/src/crons/__tests__/Cron.spec.ts +10 -2
  152. package/src/crons/__tests__/CronBuilder.state-isolation.spec.ts +64 -18
  153. package/src/endpoints/AmazonApiGatewayEndpointAdaptor.ts +23 -2
  154. package/src/endpoints/EndpointBuilder.ts +61 -70
  155. package/src/endpoints/EndpointFactory.ts +31 -0
  156. package/src/endpoints/HonoEndpointAdaptor.ts +16 -1
  157. package/src/endpoints/TestEndpointAdaptor.ts +194 -150
  158. package/src/endpoints/__tests__/EndpointBuilder.audit.spec.ts +6 -3
  159. package/src/endpoints/__tests__/EndpointBuilder.responseType.spec.ts +4 -1
  160. package/src/endpoints/__tests__/EndpointBuilder.spec.ts +16 -8
  161. package/src/functions/AWSLambdaFunction.ts +28 -2
  162. package/src/functions/BaseFunctionBuilder.ts +33 -22
  163. package/src/functions/FunctionBuilder.ts +41 -51
  164. package/src/functions/TestFunctionAdaptor.ts +66 -31
  165. package/src/functions/__tests__/FunctionBuilder.state-isolation.spec.ts +55 -12
  166. package/src/index.ts +6 -0
  167. package/src/monitor.ts +145 -0
  168. package/src/monitors/heartbeat.ts +86 -0
  169. package/src/monitors/index.ts +6 -0
  170. package/src/queue/QueueBuilder.ts +22 -22
  171. package/src/subscribers/SubscriberBuilder.ts +19 -22
  172. package/src/topic/TopicBuilder.ts +9 -7
  173. package/tsdown.config.ts +1 -0
  174. package/dist/AWSScheduledFunction-CufMMhGB.mjs.map +0 -1
  175. package/dist/AWSScheduledFunction-DbkDr8CA.cjs.map +0 -1
  176. package/dist/Construct-DCMuYOox.d.mts.map +0 -1
  177. package/dist/Construct-_1wX7p_Y.d.cts.map +0 -1
  178. package/dist/Construct-r0U2zBwW.mjs.map +0 -1
  179. package/dist/Construct-vXMZJgRp.cjs.map +0 -1
  180. package/dist/Endpoint-CAzNbDEt.d.cts.map +0 -1
  181. package/dist/HonoEndpointAdaptor-CkJENANP.cjs.map +0 -1
  182. package/dist/HonoEndpointAdaptor-DJDT3PMx.mjs.map +0 -1
  183. package/dist/functions-B-qt91O7.mjs.map +0 -1
  184. package/dist/functions-C8i1kCMM.cjs.map +0 -1
  185. package/dist/index-BGeTScmi.d.cts.map +0 -1
  186. package/dist/index-DP6fqv0I.d.mts.map +0 -1
@@ -1,8 +1,85 @@
1
- const require_Construct = require('./Construct-vXMZJgRp.cjs');
1
+ const require_Construct = require('./Construct-TGIM_E4o.cjs');
2
+ const require_clone = require('./clone-I_WIpiFf.cjs');
2
3
  const __geekmidas_errors = require_Construct.__toESM(require("@geekmidas/errors"));
3
4
  const __geekmidas_logger_console = require_Construct.__toESM(require("@geekmidas/logger/console"));
4
5
  const __geekmidas_schema_parser = require_Construct.__toESM(require("@geekmidas/schema/parser"));
5
6
 
7
+ //#region src/monitor.ts
8
+ /**
9
+ * Add a monitor to a construct's list, refusing one that is already there.
10
+ *
11
+ * Services are cached by name, so two monitors with one name would silently
12
+ * share an instance: two heartbeats reading `HEARTBEAT_URL` would both ping
13
+ * whichever was registered first, and the other provider would never hear
14
+ * from the construct.
15
+ */
16
+ function addMonitor(monitors, monitor) {
17
+ if (monitors.some((m) => m.serviceName === monitor.serviceName)) throw new Error(`Monitor "${monitor.serviceName}" is already set on this construct. Two heartbeats reading the same env var would share one URL; give one its own, e.g. heartbeat.healthchecks('HEALTHCHECKS_HEARTBEAT_URL').`);
18
+ return [...monitors, monitor];
19
+ }
20
+ const NOOP_RUN = {
21
+ async success() {},
22
+ async failure() {},
23
+ async settle() {}
24
+ };
25
+ /**
26
+ * Start a construct's monitors for one run.
27
+ *
28
+ * Never throws: a monitor that fails to register, start or report is logged,
29
+ * and the run goes on without it.
30
+ */
31
+ async function startMonitors(construct, serviceDiscovery, logger) {
32
+ if (!construct.monitors.length) return NOOP_RUN;
33
+ const ctx = {
34
+ type: construct.type,
35
+ logger
36
+ };
37
+ let started;
38
+ try {
39
+ const registered = await serviceDiscovery.register([...construct.monitors]);
40
+ started = await Promise.all(construct.monitors.map(async ({ serviceName }) => {
41
+ const monitor = registered[serviceName];
42
+ let run$1;
43
+ try {
44
+ run$1 = await monitor.start?.(ctx);
45
+ } catch (error) {
46
+ logger.warn({
47
+ error,
48
+ monitor: serviceName
49
+ }, "Monitor failed to start");
50
+ }
51
+ return {
52
+ monitor,
53
+ run: run$1
54
+ };
55
+ }));
56
+ } catch (error) {
57
+ logger.warn({ error }, "Monitors could not be registered");
58
+ return NOOP_RUN;
59
+ }
60
+ const report = async (call) => {
61
+ const results = await Promise.allSettled(started.map(({ monitor, run: run$1 }) => call(monitor, run$1)));
62
+ for (const result of results) if (result.status === "rejected") logger.warn({ error: result.reason }, "Monitor failed to report");
63
+ };
64
+ const run = {
65
+ success: (output, status) => report((monitor, r) => monitor.success({
66
+ ...ctx,
67
+ run: r,
68
+ output,
69
+ status
70
+ })),
71
+ failure: (error, status) => report((monitor, r) => monitor.failure({
72
+ ...ctx,
73
+ run: r,
74
+ error,
75
+ status
76
+ })),
77
+ settle: (status, error) => status >= 500 ? run.failure(error ?? new Error(`Responded with ${status}`), status) : run.success(void 0, status)
78
+ };
79
+ return run;
80
+ }
81
+
82
+ //#endregion
6
83
  //#region ../../node_modules/.pnpm/lodash.uniqby@4.7.0/node_modules/lodash.uniqby/index.js
7
84
  var require_lodash$1 = require_Construct.__commonJS({ "../../node_modules/.pnpm/lodash.uniqby@4.7.0/node_modules/lodash.uniqby/index.js"(exports, module) {
8
85
  /**
@@ -2668,17 +2745,18 @@ var require_lodash = require_Construct.__commonJS({ "../../node_modules/.pnpm/lo
2668
2745
  //#endregion
2669
2746
  //#region src/functions/BaseFunctionBuilder.ts
2670
2747
  var import_lodash$2 = require_Construct.__toESM(require_lodash(), 1);
2671
- const DEFAULT_LOGGER$2 = new __geekmidas_logger_console.ConsoleLogger();
2748
+ const DEFAULT_LOGGER$1 = new __geekmidas_logger_console.ConsoleLogger();
2672
2749
  var BaseFunctionBuilder = class BaseFunctionBuilder {
2673
2750
  inputSchema;
2674
2751
  outputSchema;
2675
2752
  _timeout;
2676
2753
  _services = [];
2677
- _logger = DEFAULT_LOGGER$2;
2754
+ _logger = DEFAULT_LOGGER$1;
2678
2755
  _events = [];
2679
2756
  _publisher;
2680
2757
  _auditorStorage;
2681
2758
  _databaseService;
2759
+ _monitors = [];
2682
2760
  static isStandardSchemaV1(s) {
2683
2761
  const schema = s["~standard"];
2684
2762
  return schema && typeof schema.validate === "function";
@@ -2705,35 +2783,37 @@ var BaseFunctionBuilder = class BaseFunctionBuilder {
2705
2783
  this.type = type;
2706
2784
  }
2707
2785
  timeout(timeout) {
2708
- this._timeout = timeout;
2709
- return this;
2786
+ return require_clone.cloneWith(this, { _timeout: timeout });
2787
+ }
2788
+ /**
2789
+ * Report each run to a monitor — a heartbeat, an uptime check, an error
2790
+ * tracker. Can be called more than once; every monitor is told.
2791
+ */
2792
+ monitor(monitor) {
2793
+ return require_clone.cloneWith(this, { _monitors: addMonitor(this._monitors, monitor) });
2710
2794
  }
2711
2795
  event(event) {
2712
- this._events.push(event);
2713
- return this;
2796
+ return require_clone.cloneWith(this, { _events: [...this._events, event] });
2714
2797
  }
2715
2798
  publisher(publisher) {
2716
- this._publisher = publisher;
2717
- return this;
2799
+ return require_clone.cloneWith(this, { _publisher: publisher });
2718
2800
  }
2719
2801
  auditor(storage) {
2720
- this._auditorStorage = storage;
2721
- return this;
2802
+ return require_clone.cloneWith(this, { _auditorStorage: storage });
2722
2803
  }
2723
2804
  /**
2724
2805
  * Set the database service for this function.
2725
2806
  * The database will be available in the handler context as `db`.
2726
2807
  */
2727
2808
  database(service) {
2728
- this._databaseService = service;
2729
- return this;
2809
+ return require_clone.cloneWith(this, { _databaseService: service });
2730
2810
  }
2731
2811
  };
2732
2812
 
2733
2813
  //#endregion
2734
2814
  //#region src/functions/Function.ts
2735
2815
  var import_lodash$1 = require_Construct.__toESM(require_lodash$1(), 1);
2736
- const DEFAULT_LOGGER$1 = new __geekmidas_logger_console.ConsoleLogger();
2816
+ const DEFAULT_LOGGER = new __geekmidas_logger_console.ConsoleLogger();
2737
2817
  var Function$1 = class Function$1 extends require_Construct.Construct {
2738
2818
  __IS_FUNCTION__ = true;
2739
2819
  static isFunction(obj) {
@@ -2774,7 +2854,7 @@ var Function$1 = class Function$1 extends require_Construct.Construct {
2774
2854
  async parseOutput(output) {
2775
2855
  return Function$1.parseSchema(this.outputSchema, output);
2776
2856
  }
2777
- constructor(fn, timeout = 3e4, type = require_Construct.ConstructType.Function, input, outputSchema, services = [], logger = DEFAULT_LOGGER$1, publisherService, events = [], memorySize, auditorStorageService, databaseService) {
2857
+ constructor(fn, timeout = 3e4, type = require_Construct.ConstructType.Function, input, outputSchema, services = [], logger = DEFAULT_LOGGER, publisherService, events = [], memorySize, auditorStorageService, databaseService) {
2778
2858
  super(type, logger, services, events, publisherService, outputSchema, timeout, memorySize, auditorStorageService);
2779
2859
  this.fn = fn;
2780
2860
  this.input = input;
@@ -2785,7 +2865,6 @@ var Function$1 = class Function$1 extends require_Construct.Construct {
2785
2865
  //#endregion
2786
2866
  //#region src/functions/FunctionBuilder.ts
2787
2867
  var import_lodash = require_Construct.__toESM(require_lodash$1(), 1);
2788
- const DEFAULT_LOGGER = new __geekmidas_logger_console.ConsoleLogger();
2789
2868
  var FunctionBuilder = class extends BaseFunctionBuilder {
2790
2869
  _memorySize;
2791
2870
  constructor(type = require_Construct.ConstructType.Function) {
@@ -2793,36 +2872,28 @@ var FunctionBuilder = class extends BaseFunctionBuilder {
2793
2872
  this.type = type;
2794
2873
  }
2795
2874
  timeout(timeout) {
2796
- this._timeout = timeout;
2797
- return this;
2875
+ return require_clone.cloneWith(this, { _timeout: timeout });
2798
2876
  }
2799
2877
  memorySize(memorySize) {
2800
- this._memorySize = memorySize;
2801
- return this;
2878
+ return require_clone.cloneWith(this, { _memorySize: memorySize });
2802
2879
  }
2803
2880
  output(schema) {
2804
- this.outputSchema = schema;
2805
- return this;
2881
+ return require_clone.cloneWith(this, { outputSchema: schema });
2806
2882
  }
2807
2883
  input(schema) {
2808
- this.inputSchema = schema;
2809
- return this;
2884
+ return require_clone.cloneWith(this, { inputSchema: schema });
2810
2885
  }
2811
2886
  services(services) {
2812
- this._services = (0, import_lodash.default)([...this._services, ...services], (s) => s.serviceName);
2813
- return this;
2887
+ return require_clone.cloneWith(this, { _services: (0, import_lodash.default)([...this._services, ...services], (s) => s.serviceName) });
2814
2888
  }
2815
2889
  logger(logger) {
2816
- this._logger = logger;
2817
- return this;
2890
+ return require_clone.cloneWith(this, { _logger: logger });
2818
2891
  }
2819
2892
  publisher(publisher) {
2820
- this._publisher = publisher;
2821
- return this;
2893
+ return require_clone.cloneWith(this, { _publisher: publisher });
2822
2894
  }
2823
2895
  auditor(storage) {
2824
- this._auditorStorage = storage;
2825
- return this;
2896
+ return require_clone.cloneWith(this, { _auditorStorage: storage });
2826
2897
  }
2827
2898
  /**
2828
2899
  * Set the audit action types for this function.
@@ -2836,21 +2907,11 @@ var FunctionBuilder = class extends BaseFunctionBuilder {
2836
2907
  * The database will be available in the handler context as `db`.
2837
2908
  */
2838
2909
  database(service) {
2839
- this._databaseService = service;
2840
- return this;
2910
+ return require_clone.cloneWith(this, { _databaseService: service });
2841
2911
  }
2842
2912
  handle(fn) {
2843
2913
  const func = new Function$1(fn, this._timeout, this.type, this.inputSchema, this.outputSchema, this._services, this._logger, this._publisher, this._events, this._memorySize, this._auditorStorage, this._databaseService);
2844
- this._services = [];
2845
- this._logger = DEFAULT_LOGGER;
2846
- this._events = [];
2847
- this._publisher = void 0;
2848
- this._auditorStorage = void 0;
2849
- this._databaseService = void 0;
2850
- this.inputSchema = void 0;
2851
- this.outputSchema = void 0;
2852
- this._timeout = void 0;
2853
- this._memorySize = void 0;
2914
+ func.monitors = this._monitors;
2854
2915
  return func;
2855
2916
  }
2856
2917
  };
@@ -2878,6 +2939,12 @@ Object.defineProperty(exports, 'FunctionBuilder', {
2878
2939
  return FunctionBuilder;
2879
2940
  }
2880
2941
  });
2942
+ Object.defineProperty(exports, 'addMonitor', {
2943
+ enumerable: true,
2944
+ get: function () {
2945
+ return addMonitor;
2946
+ }
2947
+ });
2881
2948
  Object.defineProperty(exports, 'f', {
2882
2949
  enumerable: true,
2883
2950
  get: function () {
@@ -2890,4 +2957,10 @@ Object.defineProperty(exports, 'require_lodash', {
2890
2957
  return require_lodash$1;
2891
2958
  }
2892
2959
  });
2893
- //# sourceMappingURL=functions-C8i1kCMM.cjs.map
2960
+ Object.defineProperty(exports, 'startMonitors', {
2961
+ enumerable: true,
2962
+ get: function () {
2963
+ return startMonitors;
2964
+ }
2965
+ });
2966
+ //# sourceMappingURL=functions-SqtCDc9c.cjs.map