@versori/run 0.1.0-alpha.12 → 0.1.0-alpha.13

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 (167) hide show
  1. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/connect.d.ts +3 -0
  2. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/connect.d.ts.map +1 -0
  3. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/connect.js +28 -0
  4. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/deno_transport.d.ts +35 -0
  5. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/deno_transport.d.ts.map +1 -0
  6. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/deno_transport.js +328 -0
  7. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/mod.d.ts +3 -0
  8. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/mod.d.ts.map +1 -0
  9. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/mod.js +2 -0
  10. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/version.d.ts +2 -0
  11. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/version.d.ts.map +1 -0
  12. package/esm/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/version.js +2 -0
  13. package/esm/deps/jsr.io/@std/bytes/1.0.5/_types.d.ts +9 -0
  14. package/esm/deps/jsr.io/@std/bytes/1.0.5/_types.d.ts.map +1 -0
  15. package/esm/deps/jsr.io/@std/bytes/1.0.5/_types.js +2 -0
  16. package/esm/deps/jsr.io/@std/bytes/1.0.5/concat.d.ts +21 -0
  17. package/esm/deps/jsr.io/@std/bytes/1.0.5/concat.d.ts.map +1 -0
  18. package/esm/deps/jsr.io/@std/bytes/1.0.5/concat.js +32 -0
  19. package/esm/deps/jsr.io/@std/bytes/1.0.5/copy.d.ts +41 -0
  20. package/esm/deps/jsr.io/@std/bytes/1.0.5/copy.d.ts.map +1 -0
  21. package/esm/deps/jsr.io/@std/bytes/1.0.5/copy.js +50 -0
  22. package/{script/deps/jsr.io/@std/fmt/1.0.6 → esm/deps/jsr.io/@std/fmt/1.0.5}/colors.d.ts.map +1 -1
  23. package/esm/deps/jsr.io/@std/fs/{1.0.16 → 1.0.11}/exists.d.ts.map +1 -1
  24. package/esm/deps/jsr.io/@std/io/0.225.2/_common.d.ts +3 -0
  25. package/esm/deps/jsr.io/@std/io/0.225.2/_common.d.ts.map +1 -0
  26. package/esm/deps/jsr.io/@std/io/0.225.2/_common.js +8 -0
  27. package/esm/deps/jsr.io/@std/io/0.225.2/_constants.d.ts +3 -0
  28. package/esm/deps/jsr.io/@std/io/0.225.2/_constants.d.ts.map +1 -0
  29. package/esm/deps/jsr.io/@std/io/0.225.2/_constants.js +4 -0
  30. package/esm/deps/jsr.io/@std/io/0.225.2/buffer.d.ts +321 -0
  31. package/esm/deps/jsr.io/@std/io/0.225.2/buffer.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@std/io/0.225.2/buffer.js +488 -0
  33. package/esm/deps/jsr.io/@std/io/0.225.2/copy.d.ts +25 -0
  34. package/esm/deps/jsr.io/@std/io/0.225.2/copy.d.ts.map +1 -0
  35. package/esm/deps/jsr.io/@std/io/0.225.2/copy.js +36 -0
  36. package/esm/deps/jsr.io/@std/io/0.225.2/iterate_reader.d.ts +80 -0
  37. package/esm/deps/jsr.io/@std/io/0.225.2/iterate_reader.d.ts.map +1 -0
  38. package/esm/deps/jsr.io/@std/io/0.225.2/iterate_reader.js +96 -0
  39. package/esm/deps/jsr.io/@std/io/0.225.2/mod.d.ts +25 -0
  40. package/esm/deps/jsr.io/@std/io/0.225.2/mod.d.ts.map +1 -0
  41. package/esm/deps/jsr.io/@std/io/0.225.2/mod.js +25 -0
  42. package/esm/deps/jsr.io/@std/io/0.225.2/read_all.d.ts +42 -0
  43. package/esm/deps/jsr.io/@std/io/0.225.2/read_all.d.ts.map +1 -0
  44. package/esm/deps/jsr.io/@std/io/0.225.2/read_all.js +72 -0
  45. package/esm/deps/jsr.io/@std/io/0.225.2/reader_from_stream_reader.d.ts +20 -0
  46. package/esm/deps/jsr.io/@std/io/0.225.2/reader_from_stream_reader.d.ts.map +1 -0
  47. package/esm/deps/jsr.io/@std/io/0.225.2/reader_from_stream_reader.js +36 -0
  48. package/esm/deps/jsr.io/@std/io/0.225.2/to_readable_stream.d.ts +40 -0
  49. package/esm/deps/jsr.io/@std/io/0.225.2/to_readable_stream.d.ts.map +1 -0
  50. package/esm/deps/jsr.io/@std/io/0.225.2/to_readable_stream.js +54 -0
  51. package/esm/deps/jsr.io/@std/io/0.225.2/to_writable_stream.d.ts +27 -0
  52. package/esm/deps/jsr.io/@std/io/0.225.2/to_writable_stream.d.ts.map +1 -0
  53. package/esm/deps/jsr.io/@std/io/0.225.2/to_writable_stream.js +44 -0
  54. package/esm/deps/jsr.io/@std/log/0.224.14/base_handler.d.ts +21 -0
  55. package/esm/deps/jsr.io/@std/log/0.224.14/base_handler.d.ts.map +1 -1
  56. package/esm/deps/jsr.io/@std/log/0.224.14/console_handler.js +1 -1
  57. package/esm/deps/jsr.io/@std/log/0.224.14/rotating_file_handler.js +1 -1
  58. package/esm/src/context/Context.d.ts +14 -4
  59. package/esm/src/context/Context.d.ts.map +1 -1
  60. package/esm/src/context/Context.js +16 -10
  61. package/esm/src/context/ContextProvider.d.ts +3 -4
  62. package/esm/src/context/ContextProvider.d.ts.map +1 -1
  63. package/esm/src/context/ContextProvider.js +5 -5
  64. package/esm/src/dsl/http/versori/platformapi.d.ts +2 -1
  65. package/esm/src/dsl/http/versori/platformapi.d.ts.map +1 -1
  66. package/esm/src/dsl/http/versori/platformapi.js +12 -1
  67. package/esm/src/dsl/http/versori/roundtripper.d.ts.map +1 -1
  68. package/esm/src/dsl/http/versori/roundtripper.js +32 -35
  69. package/esm/src/dsl/triggers/WebhookTrigger.d.ts +45 -3
  70. package/esm/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
  71. package/esm/src/dsl/triggers/WebhookTrigger.js +10 -6
  72. package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +6 -1
  73. package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
  74. package/esm/src/interpreter/memory/MemoryInterpreter.js +67 -5
  75. package/esm/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
  76. package/esm/src/interpreter/memory/compilers/webhook.js +106 -32
  77. package/esm/src/kv/nats/NatsKeyValueProvider.d.ts +2 -1
  78. package/esm/src/kv/nats/NatsKeyValueProvider.d.ts.map +1 -1
  79. package/esm/src/kv/nats/NatsKeyValueProvider.js +1 -1
  80. package/package.json +2 -2
  81. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/connect.d.ts +3 -0
  82. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/connect.d.ts.map +1 -0
  83. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/connect.js +31 -0
  84. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/deno_transport.d.ts +35 -0
  85. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/deno_transport.d.ts.map +1 -0
  86. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/deno_transport.js +333 -0
  87. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/mod.d.ts +3 -0
  88. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/mod.d.ts.map +1 -0
  89. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/mod.js +20 -0
  90. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/version.d.ts +2 -0
  91. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/version.d.ts.map +1 -0
  92. package/script/deps/jsr.io/@nats-io/transport-deno/3.0.2/src/version.js +5 -0
  93. package/script/deps/jsr.io/@std/bytes/1.0.5/_types.d.ts +9 -0
  94. package/script/deps/jsr.io/@std/bytes/1.0.5/_types.d.ts.map +1 -0
  95. package/script/deps/jsr.io/@std/bytes/1.0.5/_types.js +3 -0
  96. package/script/deps/jsr.io/@std/bytes/1.0.5/concat.d.ts +21 -0
  97. package/script/deps/jsr.io/@std/bytes/1.0.5/concat.d.ts.map +1 -0
  98. package/script/deps/jsr.io/@std/bytes/1.0.5/concat.js +35 -0
  99. package/script/deps/jsr.io/@std/bytes/1.0.5/copy.d.ts +41 -0
  100. package/script/deps/jsr.io/@std/bytes/1.0.5/copy.d.ts.map +1 -0
  101. package/script/deps/jsr.io/@std/bytes/1.0.5/copy.js +53 -0
  102. package/{esm/deps/jsr.io/@std/fmt/1.0.6 → script/deps/jsr.io/@std/fmt/1.0.5}/colors.d.ts.map +1 -1
  103. package/script/deps/jsr.io/@std/fs/{1.0.16 → 1.0.11}/exists.d.ts.map +1 -1
  104. package/script/deps/jsr.io/@std/io/0.225.2/_common.d.ts +3 -0
  105. package/script/deps/jsr.io/@std/io/0.225.2/_common.d.ts.map +1 -0
  106. package/script/deps/jsr.io/@std/io/0.225.2/_common.js +11 -0
  107. package/script/deps/jsr.io/@std/io/0.225.2/_constants.d.ts +3 -0
  108. package/script/deps/jsr.io/@std/io/0.225.2/_constants.d.ts.map +1 -0
  109. package/script/deps/jsr.io/@std/io/0.225.2/_constants.js +7 -0
  110. package/script/deps/jsr.io/@std/io/0.225.2/buffer.d.ts +321 -0
  111. package/script/deps/jsr.io/@std/io/0.225.2/buffer.d.ts.map +1 -0
  112. package/script/deps/jsr.io/@std/io/0.225.2/buffer.js +492 -0
  113. package/script/deps/jsr.io/@std/io/0.225.2/copy.d.ts +25 -0
  114. package/script/deps/jsr.io/@std/io/0.225.2/copy.d.ts.map +1 -0
  115. package/script/deps/jsr.io/@std/io/0.225.2/copy.js +39 -0
  116. package/script/deps/jsr.io/@std/io/0.225.2/iterate_reader.d.ts +80 -0
  117. package/script/deps/jsr.io/@std/io/0.225.2/iterate_reader.d.ts.map +1 -0
  118. package/script/deps/jsr.io/@std/io/0.225.2/iterate_reader.js +100 -0
  119. package/script/deps/jsr.io/@std/io/0.225.2/mod.d.ts +25 -0
  120. package/script/deps/jsr.io/@std/io/0.225.2/mod.d.ts.map +1 -0
  121. package/script/deps/jsr.io/@std/io/0.225.2/mod.js +41 -0
  122. package/script/deps/jsr.io/@std/io/0.225.2/read_all.d.ts +42 -0
  123. package/script/deps/jsr.io/@std/io/0.225.2/read_all.d.ts.map +1 -0
  124. package/script/deps/jsr.io/@std/io/0.225.2/read_all.js +76 -0
  125. package/script/deps/jsr.io/@std/io/0.225.2/reader_from_stream_reader.d.ts +20 -0
  126. package/script/deps/jsr.io/@std/io/0.225.2/reader_from_stream_reader.d.ts.map +1 -0
  127. package/script/deps/jsr.io/@std/io/0.225.2/reader_from_stream_reader.js +39 -0
  128. package/script/deps/jsr.io/@std/io/0.225.2/to_readable_stream.d.ts +40 -0
  129. package/script/deps/jsr.io/@std/io/0.225.2/to_readable_stream.d.ts.map +1 -0
  130. package/script/deps/jsr.io/@std/io/0.225.2/to_readable_stream.js +57 -0
  131. package/script/deps/jsr.io/@std/io/0.225.2/to_writable_stream.d.ts +27 -0
  132. package/script/deps/jsr.io/@std/io/0.225.2/to_writable_stream.d.ts.map +1 -0
  133. package/script/deps/jsr.io/@std/io/0.225.2/to_writable_stream.js +47 -0
  134. package/script/deps/jsr.io/@std/log/0.224.14/base_handler.d.ts +21 -0
  135. package/script/deps/jsr.io/@std/log/0.224.14/base_handler.d.ts.map +1 -1
  136. package/script/deps/jsr.io/@std/log/0.224.14/console_handler.js +1 -1
  137. package/script/deps/jsr.io/@std/log/0.224.14/rotating_file_handler.js +1 -1
  138. package/script/src/context/Context.d.ts +14 -4
  139. package/script/src/context/Context.d.ts.map +1 -1
  140. package/script/src/context/Context.js +16 -10
  141. package/script/src/context/ContextProvider.d.ts +3 -4
  142. package/script/src/context/ContextProvider.d.ts.map +1 -1
  143. package/script/src/context/ContextProvider.js +5 -5
  144. package/script/src/dsl/http/versori/platformapi.d.ts +2 -1
  145. package/script/src/dsl/http/versori/platformapi.d.ts.map +1 -1
  146. package/script/src/dsl/http/versori/platformapi.js +12 -1
  147. package/script/src/dsl/http/versori/roundtripper.d.ts.map +1 -1
  148. package/script/src/dsl/http/versori/roundtripper.js +32 -35
  149. package/script/src/dsl/triggers/WebhookTrigger.d.ts +45 -3
  150. package/script/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
  151. package/script/src/dsl/triggers/WebhookTrigger.js +10 -6
  152. package/script/src/interpreter/memory/MemoryInterpreter.d.ts +6 -1
  153. package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
  154. package/script/src/interpreter/memory/MemoryInterpreter.js +67 -5
  155. package/script/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
  156. package/script/src/interpreter/memory/compilers/webhook.js +109 -32
  157. package/script/src/kv/nats/NatsKeyValueProvider.d.ts +2 -1
  158. package/script/src/kv/nats/NatsKeyValueProvider.d.ts.map +1 -1
  159. package/script/src/kv/nats/NatsKeyValueProvider.js +3 -3
  160. /package/esm/deps/jsr.io/@std/fmt/{1.0.6 → 1.0.5}/colors.d.ts +0 -0
  161. /package/esm/deps/jsr.io/@std/fmt/{1.0.6 → 1.0.5}/colors.js +0 -0
  162. /package/esm/deps/jsr.io/@std/fs/{1.0.16 → 1.0.11}/exists.d.ts +0 -0
  163. /package/esm/deps/jsr.io/@std/fs/{1.0.16 → 1.0.11}/exists.js +0 -0
  164. /package/script/deps/jsr.io/@std/fmt/{1.0.6 → 1.0.5}/colors.d.ts +0 -0
  165. /package/script/deps/jsr.io/@std/fmt/{1.0.6 → 1.0.5}/colors.js +0 -0
  166. /package/script/deps/jsr.io/@std/fs/{1.0.16 → 1.0.11}/exists.d.ts +0 -0
  167. /package/script/deps/jsr.io/@std/fs/{1.0.16 → 1.0.11}/exists.js +0 -0
@@ -1,5 +1,5 @@
1
1
  export class ContextImpl {
2
- constructor(log, kvp, executionId, startTime, data, activation = undefined) {
2
+ constructor(log, kvp, executionId, startTime, data, options) {
3
3
  Object.defineProperty(this, "log", {
4
4
  enumerable: true,
5
5
  configurable: true,
@@ -18,25 +18,25 @@ export class ContextImpl {
18
18
  writable: true,
19
19
  value: void 0
20
20
  });
21
- Object.defineProperty(this, "activation", {
21
+ Object.defineProperty(this, "data", {
22
22
  enumerable: true,
23
23
  configurable: true,
24
24
  writable: true,
25
25
  value: void 0
26
26
  });
27
- Object.defineProperty(this, "data", {
27
+ Object.defineProperty(this, "idx", {
28
28
  enumerable: true,
29
29
  configurable: true,
30
30
  writable: true,
31
31
  value: void 0
32
32
  });
33
- Object.defineProperty(this, "idx", {
33
+ Object.defineProperty(this, "kvp", {
34
34
  enumerable: true,
35
35
  configurable: true,
36
36
  writable: true,
37
37
  value: void 0
38
38
  });
39
- Object.defineProperty(this, "kvp", {
39
+ Object.defineProperty(this, "options", {
40
40
  enumerable: true,
41
41
  configurable: true,
42
42
  writable: true,
@@ -45,25 +45,31 @@ export class ContextImpl {
45
45
  this.log = log;
46
46
  this.executionId = executionId;
47
47
  this.startTime = startTime;
48
- this.activation = activation;
49
48
  this.data = data;
50
49
  this.idx = void 0;
51
50
  this.kvp = kvp;
51
+ this.options = options;
52
+ }
53
+ get activation() {
54
+ return this.options.activation;
52
55
  }
53
56
  setIndex(idx) {
54
- const next = new ContextImpl(this.log, this.kvp, this.executionId, this.startTime, this.data, this.activation);
57
+ const next = new ContextImpl(this.log, this.kvp, this.executionId, this.startTime, this.data, this.options);
55
58
  next.idx = idx;
56
59
  return next;
57
60
  }
58
61
  withActivation(activation) {
59
62
  // Essentially makes activation immutable once set
60
63
  if (this.activation) {
61
- return this;
64
+ throw new Error('Activation is already set');
62
65
  }
63
- return new ContextImpl(this.log, this.kvp, this.executionId, this.startTime, this.data, activation);
66
+ return new ContextImpl(this.log, this.kvp, this.executionId, this.startTime, this.data, {
67
+ ...this.options,
68
+ activation,
69
+ });
64
70
  }
65
71
  withData(data) {
66
- return new ContextImpl(this.log, this.kvp, this.executionId, this.startTime, data, this.activation);
72
+ return new ContextImpl(this.log, this.kvp, this.executionId, this.startTime, data, this.options);
67
73
  }
68
74
  openKv(scope = ':project:') {
69
75
  if (scope === ':execution:') {
@@ -1,16 +1,15 @@
1
1
  import { KeyValueProvider } from '../kv/KeyValue.js';
2
2
  import { Logger } from '../observability/logging/Logger.js';
3
- import { Context, InternalContext } from './Context.js';
4
- import { Activation } from '../dsl/http/types.js';
3
+ import { Context, ContextOptions, InternalContext } from './Context.js';
5
4
  export interface ContextProvider {
6
- create<D>(data: D, activation: Activation | undefined): InternalContext<D, void>;
5
+ create<D>(data: D, options?: ContextOptions): InternalContext<D, void>;
7
6
  destroy(ctx: Context<any>): Promise<void>;
8
7
  }
9
8
  export declare class ContextProviderImpl implements ContextProvider {
10
9
  log: Logger;
11
10
  kvp: KeyValueProvider;
12
11
  constructor(log: Logger, kvp: KeyValueProvider);
13
- create<D>(data: D, activation?: Activation | undefined): InternalContext<D, void>;
12
+ create<D>(data: D, options?: ContextOptions): InternalContext<D, void>;
14
13
  destroy(ctx: Context<any>): Promise<void>;
15
14
  }
16
15
  //# sourceMappingURL=ContextProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../src/src/context/ContextProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAe,eAAe,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,qBAAa,mBAAoB,YAAW,eAAe;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,gBAAgB,CAAC;gBAEV,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB;IAK9C,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,GAAE,UAAU,GAAG,SAAqB,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC;IAe5F,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAM5C"}
1
+ {"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../src/src/context/ContextProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAe,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGrF,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,qBAAa,mBAAoB,YAAW,eAAe;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,gBAAgB,CAAC;gBAEV,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB;IAK9C,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC;IAe1E,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAM5C"}
@@ -17,16 +17,16 @@ export class ContextProviderImpl {
17
17
  this.log = log;
18
18
  this.kvp = kvp;
19
19
  }
20
- create(data, activation = undefined) {
20
+ create(data, options = {}) {
21
21
  const executionId = ulid();
22
22
  let logger = this.log.child({ executionId });
23
- if (activation) {
23
+ if (options.activation) {
24
24
  logger = logger.child({
25
- activationId: activation.id,
26
- externalUserId: activation.user.externalId,
25
+ activationId: options.activation.id,
26
+ externalUserId: options.activation.user.externalId,
27
27
  });
28
28
  }
29
- return new ContextImpl(logger, this.kvp, executionId, new Date(), data, activation);
29
+ return new ContextImpl(logger, this.kvp, executionId, new Date(), data, options);
30
30
  }
31
31
  destroy(ctx) {
32
32
  return this.kvp.destroy({
@@ -4,7 +4,8 @@ export declare class PlatformAPIClient implements ConnectionProvider {
4
4
  private orgId;
5
5
  private envId;
6
6
  private internalAuth;
7
- constructor(baseUrl: string, orgId: string, envId: string);
7
+ private cache;
8
+ constructor(baseUrl: string, orgId: string, envId: string, cache?: Record<string, Connection>);
8
9
  static fromEnv(): PlatformAPIClient;
9
10
  getStaticConnection(cnxId: string): Promise<Connection | undefined>;
10
11
  getUserActivations(userId: string): Promise<Activation[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"platformapi.d.ts","sourceRoot":"","sources":["../../../../../src/src/dsl/http/versori/platformapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIzE,qBAAa,iBAAkB,YAAW,kBAAkB;IACxD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,YAAY,CAAe;gBAG/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM;IAQjB,MAAM,CAAC,OAAO,IAAI,iBAAiB;IAY7B,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAiBnE,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAmBzD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAmBpE,uBAAuB,CACzB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAmB5B,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAkBjD"}
1
+ {"version":3,"file":"platformapi.d.ts","sourceRoot":"","sources":["../../../../../src/src/dsl/http/versori/platformapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIzE,qBAAa,iBAAkB,YAAW,kBAAkB;IACxD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,KAAK,CAA6B;gBAGtC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM;IAS1C,MAAM,CAAC,OAAO,IAAI,iBAAiB;IAY7B,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAsBnE,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAmBzD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAmBpE,uBAAuB,CACzB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAmB5B,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAkBjD"}
@@ -1,7 +1,7 @@
1
1
  import { envVarEnvId, envVarOrgId, envVarPlatformApiBaseURL } from './constants.js';
2
2
  import { InternalAuth } from './internalauth.js';
3
3
  export class PlatformAPIClient {
4
- constructor(baseUrl, orgId, envId) {
4
+ constructor(baseUrl, orgId, envId, cache = {}) {
5
5
  Object.defineProperty(this, "baseUrl", {
6
6
  enumerable: true,
7
7
  configurable: true,
@@ -26,8 +26,15 @@ export class PlatformAPIClient {
26
26
  writable: true,
27
27
  value: void 0
28
28
  });
29
+ Object.defineProperty(this, "cache", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
29
35
  this.baseUrl = baseUrl;
30
36
  this.orgId = orgId;
37
+ this.cache = cache;
31
38
  this.envId = envId;
32
39
  this.internalAuth = new InternalAuth();
33
40
  }
@@ -41,6 +48,9 @@ export class PlatformAPIClient {
41
48
  return new PlatformAPIClient(baseUrl, orgId, envId);
42
49
  }
43
50
  async getStaticConnection(cnxId) {
51
+ if (this.cache[cnxId]) {
52
+ return this.cache[cnxId];
53
+ }
44
54
  const resp = await fetch(`${this.baseUrl}/o/${this.orgId}/connections/${cnxId}`, {
45
55
  headers: {
46
56
  'x-versori-internal-token': await this.internalAuth.getToken(),
@@ -50,6 +60,7 @@ export class PlatformAPIClient {
50
60
  return undefined;
51
61
  }
52
62
  const result = (await resp.json());
63
+ this.cache[cnxId] = result;
53
64
  return result;
54
65
  }
55
66
  async getUserActivations(userId) {
@@ -1 +1 @@
1
- {"version":3,"file":"roundtripper.d.ts","sourceRoot":"","sources":["../../../../../src/src/dsl/http/versori/roundtripper.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,cAAc,EACd,mBAAmB,EAEtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AASlE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAClE,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;gBAGE,WAAW,EAAE,uBAAuB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM;IAQlB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,0BAA0B;IA0B3D,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAsBf,MAAM,CACR,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,OAAO,KAAwB,GACpC,OAAO,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC;IA4B9B,aAAa,CACf,YAAY,EAAE,MAAM,EACpB,EAAE,GAAE,OAAO,KAAwB,GACpC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IA4CtC,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;YAUP,aAAa;YAoDb,gBAAgB;YAmChB,kBAAkB;YAiClB,aAAa;CAkD9B"}
1
+ {"version":3,"file":"roundtripper.d.ts","sourceRoot":"","sources":["../../../../../src/src/dsl/http/versori/roundtripper.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,cAAc,EACd,mBAAmB,EAEtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AASlE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,qBAAa,0BAA2B,YAAW,mBAAmB;IAClE,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,GAAG,CAAS;IAEpB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;gBAGE,WAAW,EAAE,uBAAuB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM;IAQlB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,0BAA0B;IA0B3D,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,aAAa;IAmBf,MAAM,CACR,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,OAAO,KAAwB,GACpC,OAAO,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC;IAuB9B,aAAa,CACf,YAAY,EAAE,MAAM,EACpB,EAAE,GAAE,OAAO,KAAwB,GACpC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IA2DtC,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;YAUP,aAAa;YAoDb,gBAAgB;YAmChB,kBAAkB;YAiClB,aAAa;CAkD9B"}
@@ -1,5 +1,6 @@
1
1
  import { LoadConfigFromFile } from './configloader.js';
2
2
  import { VersoriCredentialClient } from './credentials/mod.js';
3
+ import { LRUCache } from 'lru-cache';
3
4
  import { PlatformAPIClient } from './platformapi.js';
4
5
  import { ConsoleLogger } from '../../../observability/mod.js';
5
6
  import { envVarCredsBaseURL, envVarEnvId, envVarOrgId, envVarPlatformApiBaseURL, } from './constants.js';
@@ -82,12 +83,10 @@ export class VersoriRoundTripperFactory {
82
83
  // takes the info and modifies the url using changeBaseUrl if necessary
83
84
  changeRequestInit(info, conn) {
84
85
  if (typeof info === 'string') {
85
- // should be this most of the time assuming we're using pathnames
86
86
  return this.changeBaseUrl(info, conn);
87
87
  }
88
88
  else if (info instanceof URL) {
89
- const newUrl = new URL(this.changeBaseUrl(info.toString(), conn));
90
- return newUrl;
89
+ return this.changeBaseUrl(info.toString(), conn);
91
90
  }
92
91
  else if (info instanceof Request) {
93
92
  const url = this.changeBaseUrl(info.url, conn);
@@ -95,46 +94,44 @@ export class VersoriRoundTripperFactory {
95
94
  }
96
95
  return info;
97
96
  }
98
- changeBaseUrl(pathname, conn) {
99
- const connBaseURL = conn.baseUrl;
100
- // if the connection has no baseUrl set, but the pathname is a valid URL, return it as is
101
- if (!connBaseURL && isValidURL(pathname)) {
102
- return pathname;
97
+ changeBaseUrl(url, conn) {
98
+ const baseUrl = conn.baseUrl;
99
+ if (!baseUrl) {
100
+ return url;
103
101
  }
104
- const connBaseURLObj = new URL(connBaseURL);
105
- let _pathname = pathname;
106
- if (isValidURL(pathname)) {
107
- const pathnameObj = new URL(pathname);
108
- _pathname = pathnameObj.pathname;
109
- }
110
- const newURL = new URL(_pathname, connBaseURLObj.origin);
111
- return newURL.toString();
102
+ const urlObj = new URL(url);
103
+ const baseUrlObj = new URL(baseUrl);
104
+ urlObj.hostname = baseUrlObj.hostname;
105
+ this.log.debug('Changing base URL', {
106
+ originalUrl: url,
107
+ newUrl: urlObj.toString(),
108
+ });
109
+ return url.toString();
112
110
  }
113
- // TODO: Currently if the connection is edited, then the fetcher will not be updated.
114
111
  async create(connName, fn = globalThis.fetch) {
115
112
  const cnxId = this.getConnectionID(connName);
116
113
  const conn = await this.platformAPIClient.getStaticConnection(cnxId);
117
114
  if (!conn) {
118
115
  return undefined;
119
116
  }
120
- const _fn = (input, init) => {
121
- const _input = this.changeRequestInit(input, conn);
122
- return fn(_input, init);
123
- };
124
117
  switch (conn.credentials[0].authSchemeConfig.type) {
125
118
  case 'api-key':
126
- return this.apiKeyFetcher(conn, _fn);
119
+ return this.apiKeyFetcher(conn, fn);
127
120
  case 'basic-auth':
128
- return this.basicAuthFetcher(conn, _fn);
121
+ return this.basicAuthFetcher(conn, fn);
129
122
  case 'jwt-bearer':
130
- return this.bearerTokenFetcher(conn, _fn);
123
+ return this.bearerTokenFetcher(conn, fn);
131
124
  case 'oauth2':
132
- return this.oauth2Fetcher(conn, _fn);
125
+ return this.oauth2Fetcher(conn, fn);
133
126
  default:
134
127
  return fn;
135
128
  }
136
129
  }
137
130
  async createDynamic(templateName, fn = globalThis.fetch) {
131
+ const lruCacheOptions = {
132
+ max: 100,
133
+ };
134
+ const cache = new LRUCache(lruCacheOptions);
138
135
  const template = this.getTemplateID(templateName);
139
136
  if (!template) {
140
137
  this.log.info('Template not found in config, could be a static connection', {
@@ -143,7 +140,16 @@ export class VersoriRoundTripperFactory {
143
140
  return undefined;
144
141
  }
145
142
  const _fn = async (activation, input, init) => {
146
- const conn = await this.platformAPIClient.getActivationConnection(template, activation.id);
143
+ let conn = undefined;
144
+ if (cache.has(activation.id)) {
145
+ conn = cache.get(activation.id);
146
+ }
147
+ else {
148
+ conn = await this.platformAPIClient.getActivationConnection(template, activation.id);
149
+ if (conn) {
150
+ cache.set(activation.id, conn);
151
+ }
152
+ }
147
153
  if (!conn) {
148
154
  return this.defaultDynamic('Connection not found for user, using default fetch', {
149
155
  templateName: templateName,
@@ -332,12 +338,3 @@ export class VersoriRoundTripperFactory {
332
338
  return _fn;
333
339
  }
334
340
  }
335
- function isValidURL(url) {
336
- try {
337
- new URL(url);
338
- return true;
339
- }
340
- catch (_) {
341
- return false;
342
- }
343
- }
@@ -1,13 +1,55 @@
1
+ import { Context } from '../../context/Context.js';
1
2
  import { Taskable } from '../Task.js';
2
3
  import { Trigger, TriggerType } from '../Trigger.js';
3
4
  import { Workflow } from '../Workflow.js';
4
5
  export type WebhookData = Record<string, never>;
6
+ export type WebhookCorsOptions = boolean | {
7
+ origin: string;
8
+ methods: string[];
9
+ allowedHeaders: string[];
10
+ exposedHeaders: string[];
11
+ credentials: boolean;
12
+ };
13
+ export type WebhookResponseOptions = {
14
+ /**
15
+ * Mode determines how the response is sent to the client. The response can be customized by
16
+ * the `onSuccess` and `onError` functions, which have sensible defaults for each mode.
17
+ *
18
+ * - `sync`: The response is sent at the end of the workflow.
19
+ * - `async`: The response is sent immediately after the trigger is activated.
20
+ *
21
+ * @default 'sync'
22
+ */
23
+ mode?: 'sync' | 'async';
24
+ /**
25
+ * Function that returns a response for a successful trigger activation.
26
+ *
27
+ * Defaults to a 202 Accepted response for 'async' mode, and a 200 OK response for 'sync' mode.
28
+ *
29
+ * @param ctx The current context of the workflow, containing data from the final step.
30
+ * @returns A response to send to the client.
31
+ */
32
+ onSuccess?: <T>(ctx: Context<T>) => Response;
33
+ /**
34
+ * Function that returns a response for a failed trigger activation.
35
+ *
36
+ * Defaults to a 500 Internal Server Error response for both modes.
37
+ *
38
+ * @param ctx The current context of the workflow, containing data from the final step.
39
+ * @returns A response to send to the client.
40
+ */
41
+ onError?: <T>(ctx: Context<T>) => Response;
42
+ };
43
+ export type WebhookOptions = {
44
+ cors?: WebhookCorsOptions;
45
+ response?: WebhookResponseOptions;
46
+ };
5
47
  export declare class WebhookTrigger implements Trigger<WebhookData> {
6
48
  id: string;
49
+ options: WebhookOptions;
7
50
  [TriggerType]: string;
8
- constructor(id: string);
51
+ constructor(id: string, options?: WebhookOptions);
9
52
  then<OO>(task: Taskable<WebhookData, OO>): Workflow<OO>;
10
- catch<OO>(error: any): Workflow<OO>;
11
53
  }
12
- export declare function webhook(id: string): Workflow<WebhookData>;
54
+ export declare function webhook(id: string, options?: WebhookOptions): Trigger<WebhookData>;
13
55
  //# sourceMappingURL=WebhookTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebhookTrigger.d.ts","sourceRoot":"","sources":["../../../../src/src/dsl/triggers/WebhookTrigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEhD,qBAAa,cAAe,YAAW,OAAO,CAAC,WAAW,CAAC;IACvD,EAAE,EAAE,MAAM,CAAC;IAEX,CAAC,WAAW,CAAC,EAAE,MAAM,CAAa;gBAGtB,EAAE,EAAE,MAAM;IAItB,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IAIvD,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;CAGtC;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAEzD"}
1
+ {"version":3,"file":"WebhookTrigger.d.ts","sourceRoot":"","sources":["../../../../src/src/dsl/triggers/WebhookTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACjC;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAExB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;IAE7C;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;CAC9C,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACrC,CAAA;AAED,qBAAa,cAAe,YAAW,OAAO,CAAC,WAAW,CAAC;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,cAAc,CAAC;IAExB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAa;gBAEtB,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;IAKpD,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;CAG1D;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAElF"}
@@ -3,13 +3,19 @@ import { ensureTask } from "../ensureTask.js";
3
3
  import { TriggerType } from '../Trigger.js';
4
4
  import { WorkflowImpl } from '../Workflow.js';
5
5
  export class WebhookTrigger {
6
- constructor(id) {
6
+ constructor(id, options = {}) {
7
7
  Object.defineProperty(this, "id", {
8
8
  enumerable: true,
9
9
  configurable: true,
10
10
  writable: true,
11
11
  value: void 0
12
12
  });
13
+ Object.defineProperty(this, "options", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: void 0
18
+ });
13
19
  Object.defineProperty(this, _a, {
14
20
  enumerable: true,
15
21
  configurable: true,
@@ -17,15 +23,13 @@ export class WebhookTrigger {
17
23
  value: 'webhook'
18
24
  });
19
25
  this.id = id;
26
+ this.options = options;
20
27
  }
21
28
  then(task) {
22
29
  return new WorkflowImpl(this, ensureTask(task));
23
30
  }
24
- catch(error) {
25
- return this;
26
- }
27
31
  }
28
32
  _a = TriggerType;
29
- export function webhook(id) {
30
- return new WebhookTrigger(id);
33
+ export function webhook(id, options) {
34
+ return new WebhookTrigger(id, options);
31
35
  }
@@ -1,5 +1,5 @@
1
1
  import { Router } from 'express';
2
- import { Observable } from 'rxjs';
2
+ import { Observable, Subscription } from 'rxjs';
3
3
  import { ContextProvider } from '../../context/ContextProvider.js';
4
4
  import { ConnectionProvider, RoundTripperFactory } from '../../dsl/http/types.js';
5
5
  import { Workflow } from '../../dsl/Workflow.js';
@@ -18,6 +18,7 @@ type Registration = {
18
18
  task$: ContextOperatorFunction<any, any, any>;
19
19
  localAbortController: AbortController;
20
20
  sigintListener: () => void;
21
+ subscription?: Subscription;
21
22
  };
22
23
  export declare class MemoryInterpreter {
23
24
  private readonly log;
@@ -27,10 +28,14 @@ export declare class MemoryInterpreter {
27
28
  private readonly router;
28
29
  private readonly connectionProvider;
29
30
  private registeredWorkflows;
31
+ private server?;
32
+ private shutdownServer?;
33
+ private isShuttingDown;
30
34
  constructor(log: Logger, compiler: ObservableCompiler, contextProvider: ContextProvider, roundTripperFactory: RoundTripperFactory, router: Router, connectionProvider: ConnectionProvider);
31
35
  static newInstance(options?: MemoryInterpreterOptions): Promise<MemoryInterpreter>;
32
36
  register<O>(workflow: Workflow<O>, options?: MemoryInterpreterOptions): Registration;
33
37
  start(): Promise<void>;
38
+ stop(): Promise<void>;
34
39
  }
35
40
  export {};
36
41
  //# sourceMappingURL=MemoryInterpreter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAA+B,UAAU,EAAW,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,QAAQ,EAAgB,MAAM,uBAAuB,CAAC;AAI/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,KAAK,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,oBAAoB,EAAE,eAAe,CAAC;IACtC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC9B,CAAA;AAED,qBAAa,iBAAiB;IAItB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IARvC,OAAO,CAAC,mBAAmB,CAA2B;gBAGjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB;WAI9C,WAAW,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoC5F,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,wBAAwB;IAiD/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA0D/B"}
1
+ {"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAA+B,UAAU,EAAW,YAAY,EAAE,MAAM,MAAM,CAAC;AACtF,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,QAAQ,EAAgB,MAAM,uBAAuB,CAAC;AAI/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,KAAK,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,oBAAoB,EAAE,eAAe,CAAC;IACtC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAA;AAED,qBAAa,iBAAiB;IAOtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAXvC,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,cAAc,CAAS;gBAGV,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB;WAI9C,WAAW,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoC5F,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,wBAAwB;IA6C/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiHtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9B"}
@@ -53,6 +53,24 @@ export class MemoryInterpreter {
53
53
  writable: true,
54
54
  value: []
55
55
  });
56
+ Object.defineProperty(this, "server", {
57
+ enumerable: true,
58
+ configurable: true,
59
+ writable: true,
60
+ value: void 0
61
+ });
62
+ Object.defineProperty(this, "shutdownServer", {
63
+ enumerable: true,
64
+ configurable: true,
65
+ writable: true,
66
+ value: void 0
67
+ });
68
+ Object.defineProperty(this, "isShuttingDown", {
69
+ enumerable: true,
70
+ configurable: true,
71
+ writable: true,
72
+ value: false
73
+ });
56
74
  }
57
75
  static async newInstance(options = {}) {
58
76
  const log = options.logger || new ConsoleLogger('debug');
@@ -78,9 +96,6 @@ export class MemoryInterpreter {
78
96
  if (!(workflow instanceof WorkflowImpl)) {
79
97
  throw new Error('workflow is not an instance of WorkflowImpl');
80
98
  }
81
- if (this.log === undefined) {
82
- throw new Error('Logger is not set, you should initialise the MemoryInterpreter using `await newInstance()` instead');
83
- }
84
99
  this.log.info('MemoryInterpreter.register', { workflow });
85
100
  const compilerContext = {
86
101
  compiler: this.compiler,
@@ -117,11 +132,12 @@ export class MemoryInterpreter {
117
132
  // Start all registered workflows
118
133
  for (const registration of this.registeredWorkflows) {
119
134
  Deno.addSignalListener('SIGINT', registration.sigintListener);
120
- registration.trigger$
135
+ registration.subscription = registration.trigger$
121
136
  .pipe(tap((ctx) => {
122
137
  ctx.log.info('MemoryInterpreter.executionStarted', { data: ctx.data });
123
138
  }), mergeMap((ctx) => of(ctx).pipe(registration.task$, catchError((error) => {
124
139
  ctx.log.error('MemoryInterpreter.executionError', { error });
140
+ ctx.options.onError?.(ctx.withData(error));
125
141
  return EMPTY;
126
142
  }))))
127
143
  .subscribe({
@@ -131,6 +147,7 @@ export class MemoryInterpreter {
131
147
  durationMs,
132
148
  data: ctx.data,
133
149
  });
150
+ ctx.options.onSuccess?.(ctx);
134
151
  this.contextProvider.destroy(ctx);
135
152
  },
136
153
  error: (err) => {
@@ -142,9 +159,54 @@ export class MemoryInterpreter {
142
159
  Deno.removeSignalListener('SIGINT', registration.sigintListener);
143
160
  },
144
161
  });
162
+ registration.subscription.add(() => {
163
+ registration.subscription = undefined;
164
+ });
145
165
  }
146
- app.listen(port, () => {
166
+ this.server = app.listen(port, () => {
147
167
  this.log.info(`Express server listening on http://localhost:${port}`);
148
168
  });
169
+ this.shutdownServer = () => {
170
+ if (this.isShuttingDown) {
171
+ return;
172
+ }
173
+ this.isShuttingDown = true;
174
+ this.log.info('Shutting down server');
175
+ // Close the server
176
+ if (this.server) {
177
+ this.server.close();
178
+ }
179
+ // Remove all signal listeners
180
+ for (const registration of this.registeredWorkflows) {
181
+ Deno.removeSignalListener('SIGINT', registration.sigintListener);
182
+ // Unsubscribe from all observables
183
+ if (registration.subscription) {
184
+ registration.subscription.unsubscribe();
185
+ }
186
+ // Abort all controllers
187
+ registration.localAbortController.abort();
188
+ }
189
+ // Remove the server shutdown listener
190
+ if (this.shutdownServer) {
191
+ Deno.removeSignalListener('SIGINT', this.shutdownServer);
192
+ }
193
+ };
194
+ Deno.addSignalListener('SIGINT', this.shutdownServer);
195
+ return new Promise((resolve) => {
196
+ if (this.server) {
197
+ this.server.on('close', () => {
198
+ this.log.info('Server closed');
199
+ resolve();
200
+ });
201
+ }
202
+ else {
203
+ resolve();
204
+ }
205
+ });
206
+ }
207
+ async stop() {
208
+ if (this.shutdownServer) {
209
+ this.shutdownServer();
210
+ }
149
211
  }
150
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/webhook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK7C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE,cAAc,CAwGxE,CAAC"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/webhook.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEtF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8B7C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE,cAAc,CA8KxE,CAAC"}