@hotmeshio/hotmesh 0.3.32 → 0.4.1

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 (207) hide show
  1. package/README.md +128 -823
  2. package/build/index.d.ts +9 -9
  3. package/build/index.js +10 -10
  4. package/build/modules/enums.d.ts +23 -23
  5. package/build/modules/enums.js +26 -26
  6. package/build/modules/errors.d.ts +16 -16
  7. package/build/modules/errors.js +28 -28
  8. package/build/modules/key.js +190 -1
  9. package/build/modules/utils.js +374 -1
  10. package/build/package.json +22 -21
  11. package/build/services/activities/activity.js +549 -1
  12. package/build/services/activities/await.js +114 -1
  13. package/build/services/activities/cycle.js +112 -1
  14. package/build/services/activities/hook.js +168 -1
  15. package/build/services/activities/index.js +20 -1
  16. package/build/services/activities/interrupt.js +158 -1
  17. package/build/services/activities/signal.js +134 -1
  18. package/build/services/activities/trigger.js +246 -1
  19. package/build/services/activities/worker.js +106 -1
  20. package/build/services/collator/index.js +293 -1
  21. package/build/services/compiler/deployer.js +488 -1
  22. package/build/services/compiler/index.js +112 -1
  23. package/build/services/compiler/validator.js +147 -1
  24. package/build/services/engine/index.js +761 -1
  25. package/build/services/exporter/index.js +126 -1
  26. package/build/services/hotmesh/index.d.ts +160 -17
  27. package/build/services/hotmesh/index.js +160 -17
  28. package/build/services/mapper/index.js +81 -1
  29. package/build/services/{meshflow → memflow}/client.d.ts +3 -3
  30. package/build/services/{meshflow → memflow}/client.js +17 -16
  31. package/build/services/{meshflow → memflow}/connection.d.ts +2 -2
  32. package/build/services/{meshflow → memflow}/connection.js +1 -1
  33. package/build/services/memflow/context.d.ts +143 -0
  34. package/build/services/memflow/context.js +299 -0
  35. package/build/services/{meshflow → memflow}/exporter.d.ts +6 -6
  36. package/build/services/memflow/exporter.js +215 -0
  37. package/build/services/{meshflow → memflow}/handle.d.ts +4 -4
  38. package/build/services/{meshflow → memflow}/handle.js +2 -2
  39. package/build/services/{meshflow → memflow}/index.d.ts +18 -13
  40. package/build/services/{meshflow → memflow}/index.js +26 -21
  41. package/build/services/{meshflow → memflow}/schemas/factory.d.ts +4 -4
  42. package/build/services/{meshflow → memflow}/schemas/factory.js +5 -5
  43. package/build/services/{meshflow → memflow}/search.d.ts +1 -1
  44. package/build/services/{meshflow → memflow}/search.js +4 -4
  45. package/build/services/{meshflow → memflow}/worker.d.ts +5 -5
  46. package/build/services/{meshflow → memflow}/worker.js +24 -24
  47. package/build/services/memflow/workflow/common.d.ts +20 -0
  48. package/build/services/memflow/workflow/common.js +47 -0
  49. package/build/services/memflow/workflow/contextMethods.d.ts +14 -0
  50. package/build/services/memflow/workflow/contextMethods.js +33 -0
  51. package/build/services/{meshflow → memflow}/workflow/execChild.js +12 -12
  52. package/build/services/memflow/workflow/execHook.d.ts +65 -0
  53. package/build/services/memflow/workflow/execHook.js +73 -0
  54. package/build/services/{meshflow → memflow}/workflow/hook.js +19 -3
  55. package/build/services/{meshflow → memflow}/workflow/index.d.ts +7 -3
  56. package/build/services/{meshflow → memflow}/workflow/index.js +7 -3
  57. package/build/services/{meshflow → memflow}/workflow/proxyActivities.d.ts +2 -2
  58. package/build/services/{meshflow → memflow}/workflow/proxyActivities.js +8 -8
  59. package/build/services/{meshflow → memflow}/workflow/sleepFor.js +2 -2
  60. package/build/services/{meshflow → memflow}/workflow/waitFor.js +2 -2
  61. package/build/services/meshdata/index.d.ts +24 -24
  62. package/build/services/meshdata/index.js +40 -40
  63. package/build/services/pipe/functions/array.js +74 -1
  64. package/build/services/pipe/functions/bitwise.js +24 -1
  65. package/build/services/pipe/functions/conditional.js +36 -1
  66. package/build/services/pipe/functions/cron.js +40 -1
  67. package/build/services/pipe/functions/date.js +171 -1
  68. package/build/services/pipe/functions/index.js +30 -1
  69. package/build/services/pipe/functions/json.js +12 -1
  70. package/build/services/pipe/functions/logical.js +12 -1
  71. package/build/services/pipe/functions/math.js +184 -1
  72. package/build/services/pipe/functions/number.js +60 -1
  73. package/build/services/pipe/functions/object.js +81 -1
  74. package/build/services/pipe/functions/string.js +69 -1
  75. package/build/services/pipe/functions/symbol.js +33 -1
  76. package/build/services/pipe/functions/unary.js +18 -1
  77. package/build/services/pipe/index.js +242 -1
  78. package/build/services/quorum/index.js +263 -1
  79. package/build/services/reporter/index.js +348 -1
  80. package/build/services/router/config/index.d.ts +11 -0
  81. package/build/services/router/config/index.js +36 -0
  82. package/build/services/router/consumption/index.d.ts +34 -0
  83. package/build/services/router/consumption/index.js +395 -0
  84. package/build/services/router/error-handling/index.d.ts +8 -0
  85. package/build/services/router/error-handling/index.js +98 -0
  86. package/build/services/router/index.d.ts +13 -16
  87. package/build/services/router/index.js +121 -1
  88. package/build/services/router/lifecycle/index.d.ts +27 -0
  89. package/build/services/router/lifecycle/index.js +80 -0
  90. package/build/services/router/telemetry/index.d.ts +11 -0
  91. package/build/services/router/telemetry/index.js +32 -0
  92. package/build/services/router/throttling/index.d.ts +23 -0
  93. package/build/services/router/throttling/index.js +76 -0
  94. package/build/services/search/index.d.ts +2 -1
  95. package/build/services/search/providers/postgres/postgres.d.ts +2 -1
  96. package/build/services/search/providers/postgres/postgres.js +149 -1
  97. package/build/services/search/providers/redis/ioredis.d.ts +1 -0
  98. package/build/services/search/providers/redis/ioredis.js +121 -1
  99. package/build/services/search/providers/redis/redis.d.ts +1 -0
  100. package/build/services/search/providers/redis/redis.js +134 -1
  101. package/build/services/serializer/index.js +282 -1
  102. package/build/services/store/providers/postgres/kvsql.d.ts +1 -1
  103. package/build/services/store/providers/postgres/kvsql.js +198 -1
  104. package/build/services/store/providers/postgres/kvtables.js +441 -1
  105. package/build/services/store/providers/postgres/kvtransaction.js +248 -1
  106. package/build/services/store/providers/postgres/kvtypes/hash.d.ts +1 -1
  107. package/build/services/store/providers/postgres/kvtypes/hash.js +1287 -1
  108. package/build/services/store/providers/postgres/kvtypes/list.js +194 -1
  109. package/build/services/store/providers/postgres/kvtypes/string.js +115 -1
  110. package/build/services/store/providers/postgres/kvtypes/zset.js +214 -1
  111. package/build/services/store/providers/postgres/postgres.js +1036 -1
  112. package/build/services/store/providers/redis/_base.js +980 -1
  113. package/build/services/store/providers/redis/ioredis.js +180 -1
  114. package/build/services/store/providers/redis/redis.js +199 -1
  115. package/build/services/store/providers/store-initializable.js +2 -1
  116. package/build/services/stream/index.d.ts +5 -0
  117. package/build/services/stream/providers/nats/nats.d.ts +1 -0
  118. package/build/services/stream/providers/nats/nats.js +225 -1
  119. package/build/services/stream/providers/postgres/kvtables.d.ts +1 -0
  120. package/build/services/stream/providers/postgres/kvtables.js +146 -1
  121. package/build/services/stream/providers/postgres/postgres.d.ts +19 -0
  122. package/build/services/stream/providers/postgres/postgres.js +519 -1
  123. package/build/services/stream/providers/redis/ioredis.d.ts +1 -0
  124. package/build/services/stream/providers/redis/ioredis.js +272 -1
  125. package/build/services/stream/providers/redis/redis.d.ts +1 -0
  126. package/build/services/stream/providers/redis/redis.js +305 -1
  127. package/build/services/stream/providers/stream-initializable.js +2 -1
  128. package/build/services/sub/providers/nats/nats.js +105 -1
  129. package/build/services/sub/providers/postgres/postgres.js +92 -1
  130. package/build/services/sub/providers/redis/ioredis.js +81 -1
  131. package/build/services/sub/providers/redis/redis.js +72 -1
  132. package/build/services/task/index.js +206 -1
  133. package/build/services/telemetry/index.js +306 -1
  134. package/build/services/worker/index.js +197 -1
  135. package/build/types/error.d.ts +5 -5
  136. package/build/types/exporter.d.ts +1 -1
  137. package/build/types/index.d.ts +3 -3
  138. package/build/types/manifest.d.ts +2 -2
  139. package/build/types/{meshflow.d.ts → memflow.d.ts} +15 -15
  140. package/build/types/meshdata.d.ts +3 -3
  141. package/build/types/postgres.d.ts +7 -0
  142. package/build/types/stream.d.ts +3 -0
  143. package/index.ts +11 -11
  144. package/package.json +22 -21
  145. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  146. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  147. package/build/services/meshflow/exporter.js +0 -1
  148. package/build/services/meshflow/workflow/common.d.ts +0 -18
  149. package/build/services/meshflow/workflow/common.js +0 -45
  150. package/typedoc.json +0 -46
  151. package/types/activity.ts +0 -268
  152. package/types/app.ts +0 -20
  153. package/types/async.ts +0 -6
  154. package/types/cache.ts +0 -1
  155. package/types/collator.ts +0 -9
  156. package/types/error.ts +0 -56
  157. package/types/exporter.ts +0 -102
  158. package/types/hook.ts +0 -44
  159. package/types/hotmesh.ts +0 -314
  160. package/types/index.ts +0 -306
  161. package/types/job.ts +0 -233
  162. package/types/logger.ts +0 -8
  163. package/types/manifest.ts +0 -70
  164. package/types/map.ts +0 -5
  165. package/types/meshcall.ts +0 -235
  166. package/types/meshdata.ts +0 -278
  167. package/types/meshflow.ts +0 -645
  168. package/types/ms.d.ts +0 -7
  169. package/types/nats.ts +0 -270
  170. package/types/pipe.ts +0 -90
  171. package/types/postgres.ts +0 -105
  172. package/types/provider.ts +0 -161
  173. package/types/quorum.ts +0 -167
  174. package/types/redis.ts +0 -404
  175. package/types/serializer.ts +0 -40
  176. package/types/stats.ts +0 -117
  177. package/types/stream.ts +0 -227
  178. package/types/task.ts +0 -7
  179. package/types/telemetry.ts +0 -16
  180. package/types/transition.ts +0 -20
  181. /package/build/services/{meshflow → memflow}/workflow/all.d.ts +0 -0
  182. /package/build/services/{meshflow → memflow}/workflow/all.js +0 -0
  183. /package/build/services/{meshflow → memflow}/workflow/context.d.ts +0 -0
  184. /package/build/services/{meshflow → memflow}/workflow/context.js +0 -0
  185. /package/build/services/{meshflow → memflow}/workflow/didRun.d.ts +0 -0
  186. /package/build/services/{meshflow → memflow}/workflow/didRun.js +0 -0
  187. /package/build/services/{meshflow → memflow}/workflow/emit.d.ts +0 -0
  188. /package/build/services/{meshflow → memflow}/workflow/emit.js +0 -0
  189. /package/build/services/{meshflow → memflow}/workflow/enrich.d.ts +0 -0
  190. /package/build/services/{meshflow → memflow}/workflow/enrich.js +0 -0
  191. /package/build/services/{meshflow → memflow}/workflow/execChild.d.ts +0 -0
  192. /package/build/services/{meshflow → memflow}/workflow/hook.d.ts +0 -0
  193. /package/build/services/{meshflow → memflow}/workflow/interrupt.d.ts +0 -0
  194. /package/build/services/{meshflow → memflow}/workflow/interrupt.js +0 -0
  195. /package/build/services/{meshflow → memflow}/workflow/isSideEffectAllowed.d.ts +0 -0
  196. /package/build/services/{meshflow → memflow}/workflow/isSideEffectAllowed.js +0 -0
  197. /package/build/services/{meshflow → memflow}/workflow/random.d.ts +0 -0
  198. /package/build/services/{meshflow → memflow}/workflow/random.js +0 -0
  199. /package/build/services/{meshflow → memflow}/workflow/searchMethods.d.ts +0 -0
  200. /package/build/services/{meshflow → memflow}/workflow/searchMethods.js +0 -0
  201. /package/build/services/{meshflow → memflow}/workflow/signal.d.ts +0 -0
  202. /package/build/services/{meshflow → memflow}/workflow/signal.js +0 -0
  203. /package/build/services/{meshflow → memflow}/workflow/sleepFor.d.ts +0 -0
  204. /package/build/services/{meshflow → memflow}/workflow/trace.d.ts +0 -0
  205. /package/build/services/{meshflow → memflow}/workflow/trace.js +0 -0
  206. /package/build/services/{meshflow → memflow}/workflow/waitFor.d.ts +0 -0
  207. /package/build/types/{meshflow.js → memflow.js} +0 -0
@@ -16,12 +16,12 @@ const factory_1 = require("./schemas/factory");
16
16
  *
17
17
  * @example
18
18
  * ```typescript
19
- * import { MeshFlow } from '@hotmeshio/hotmesh';
19
+ * import { MemFlow } from '@hotmeshio/hotmesh';
20
20
  * import { Client as Postgres } from 'pg';
21
21
  * import * as workflows from './workflows';
22
22
  *
23
23
  * async function run() {
24
- * const worker = await MeshFlow.Worker.create({
24
+ * const worker = await MemFlow.Worker.create({
25
25
  * connection: {
26
26
  * class: Postgres,
27
27
  * options: { connectionString: 'postgres://user:password@localhost:5432/db' }
@@ -67,7 +67,7 @@ class WorkerService {
67
67
  await hotMesh.activate(factory_1.APP_VERSION);
68
68
  }
69
69
  catch (err) {
70
- hotMesh.engine.logger.error('meshflow-worker-deploy-activate-err', err);
70
+ hotMesh.engine.logger.error('memflow-worker-deploy-activate-err', err);
71
71
  throw err;
72
72
  }
73
73
  }
@@ -76,7 +76,7 @@ class WorkerService {
76
76
  await hotMesh.activate(factory_1.APP_VERSION);
77
77
  }
78
78
  catch (err) {
79
- hotMesh.engine.logger.error('meshflow-worker-activate-err', err);
79
+ hotMesh.engine.logger.error('memflow-worker-activate-err', err);
80
80
  throw err;
81
81
  }
82
82
  }
@@ -108,12 +108,12 @@ class WorkerService {
108
108
  *
109
109
  * @example
110
110
  * ```typescript
111
- * import { MeshFlow } from '@hotmeshio/hotmesh';
111
+ * import { MemFlow } from '@hotmeshio/hotmesh';
112
112
  * import { Client as Postgres } from 'pg';
113
113
  * import * as workflows from './workflows';
114
114
  *
115
115
  * async function run() {
116
- * const worker = await MeshFlow.Worker.create({
116
+ * const worker = await MemFlow.Worker.create({
117
117
  * connection: {
118
118
  * class: Postgres,
119
119
  * options: {
@@ -162,7 +162,7 @@ class WorkerService {
162
162
  * Run the connected worker; no-op (unnecessary to call)
163
163
  */
164
164
  async run() {
165
- this.workflowRunner.engine.logger.info('meshflow-worker-running');
165
+ this.workflowRunner.engine.logger.info('memflow-worker-running');
166
166
  }
167
167
  /**
168
168
  * @private
@@ -206,19 +206,19 @@ class WorkerService {
206
206
  };
207
207
  }
208
208
  catch (err) {
209
- this.activityRunner.engine.logger.error('meshflow-worker-activity-err', {
209
+ this.activityRunner.engine.logger.error('memflow-worker-activity-err', {
210
210
  name: err.name,
211
211
  message: err.message,
212
212
  stack: err.stack,
213
213
  });
214
- if (!(err instanceof errors_1.MeshFlowTimeoutError) &&
215
- !(err instanceof errors_1.MeshFlowMaxedError) &&
216
- !(err instanceof errors_1.MeshFlowFatalError)) {
214
+ if (!(err instanceof errors_1.MemFlowTimeoutError) &&
215
+ !(err instanceof errors_1.MemFlowMaxedError) &&
216
+ !(err instanceof errors_1.MemFlowFatalError)) {
217
217
  //use code 599 as a proxy for all retryable errors
218
218
  // (basically anything not 596, 597, 598)
219
219
  return {
220
220
  status: stream_1.StreamStatus.SUCCESS,
221
- code: enums_1.HMSH_CODE_MESHFLOW_RETRYABLE,
221
+ code: enums_1.HMSH_CODE_MEMFLOW_RETRYABLE,
222
222
  metadata: { ...data.metadata },
223
223
  data: {
224
224
  $error: {
@@ -230,7 +230,7 @@ class WorkerService {
230
230
  };
231
231
  }
232
232
  return {
233
- //always returrn success (the MeshFlow module is just fine);
233
+ //always returrn success (the MemFlow module is just fine);
234
234
  // it's the user's function that has failed
235
235
  status: stream_1.StreamStatus.SUCCESS,
236
236
  code: err.code,
@@ -333,7 +333,7 @@ class WorkerService {
333
333
  if (isProcessing) {
334
334
  return;
335
335
  }
336
- if (err instanceof errors_1.MeshFlowWaitForError ||
336
+ if (err instanceof errors_1.MemFlowWaitForError ||
337
337
  interruptionRegistry.length > 1) {
338
338
  isProcessing = true;
339
339
  //NOTE: this type is spawned when `Promise.all` is used OR if the interruption is a `waitFor`
@@ -343,10 +343,10 @@ class WorkerService {
343
343
  const collatorFlowId = `${(0, utils_1.guid)()}$C`;
344
344
  return {
345
345
  status: stream_1.StreamStatus.SUCCESS,
346
- code: enums_1.HMSH_CODE_MESHFLOW_ALL,
346
+ code: enums_1.HMSH_CODE_MEMFLOW_ALL,
347
347
  metadata: { ...data.metadata },
348
348
  data: {
349
- code: enums_1.HMSH_CODE_MESHFLOW_ALL,
349
+ code: enums_1.HMSH_CODE_MEMFLOW_ALL,
350
350
  items: [...interruptionRegistry],
351
351
  size: interruptionRegistry.length,
352
352
  workflowDimension: workflowDimension || '',
@@ -359,7 +359,7 @@ class WorkerService {
359
359
  },
360
360
  };
361
361
  }
362
- else if (err instanceof errors_1.MeshFlowSleepError) {
362
+ else if (err instanceof errors_1.MemFlowSleepError) {
363
363
  //return the sleep interruption
364
364
  isProcessing = true;
365
365
  return {
@@ -379,7 +379,7 @@ class WorkerService {
379
379
  },
380
380
  };
381
381
  }
382
- else if (err instanceof errors_1.MeshFlowProxyError) {
382
+ else if (err instanceof errors_1.MemFlowProxyError) {
383
383
  //return the proxyActivity interruption
384
384
  isProcessing = true;
385
385
  return {
@@ -409,7 +409,7 @@ class WorkerService {
409
409
  },
410
410
  };
411
411
  }
412
- else if (err instanceof errors_1.MeshFlowChildError) {
412
+ else if (err instanceof errors_1.MemFlowChildError) {
413
413
  //return the child interruption
414
414
  isProcessing = true;
415
415
  const msg = {
@@ -424,12 +424,12 @@ class WorkerService {
424
424
  data: {
425
425
  arguments: err.arguments,
426
426
  await: err.await,
427
- backoffCoefficient: err.backoffCoefficient || enums_1.HMSH_MESHFLOW_EXP_BACKOFF,
427
+ backoffCoefficient: err.backoffCoefficient || enums_1.HMSH_MEMFLOW_EXP_BACKOFF,
428
428
  code: err.code,
429
429
  index: err.index,
430
430
  message: JSON.stringify(msg),
431
- maximumAttempts: err.maximumAttempts || enums_1.HMSH_MESHFLOW_MAX_ATTEMPTS,
432
- maximumInterval: err.maximumInterval || (0, utils_1.s)(enums_1.HMSH_MESHFLOW_MAX_INTERVAL),
431
+ maximumAttempts: err.maximumAttempts || enums_1.HMSH_MEMFLOW_MAX_ATTEMPTS,
432
+ maximumInterval: err.maximumInterval || (0, utils_1.s)(enums_1.HMSH_MEMFLOW_MAX_INTERVAL),
433
433
  originJobId: err.originJobId,
434
434
  parentWorkflowId: err.parentWorkflowId,
435
435
  expire: err.expire,
@@ -446,7 +446,7 @@ class WorkerService {
446
446
  isProcessing = true;
447
447
  return {
448
448
  status: stream_1.StreamStatus.SUCCESS,
449
- code: err.code || new errors_1.MeshFlowRetryError(err.message).code,
449
+ code: err.code || new errors_1.MemFlowRetryError(err.message).code,
450
450
  metadata: { ...data.metadata },
451
451
  data: {
452
452
  $error: {
@@ -454,7 +454,7 @@ class WorkerService {
454
454
  type: err.name,
455
455
  name: err.name,
456
456
  stack: err.stack,
457
- code: err.code || new errors_1.MeshFlowRetryError(err.message).code,
457
+ code: err.code || new errors_1.MemFlowRetryError(err.message).code,
458
458
  },
459
459
  },
460
460
  };
@@ -0,0 +1,20 @@
1
+ import { MemFlowChildError, MemFlowFatalError, MemFlowMaxedError, MemFlowProxyError, MemFlowRetryError, MemFlowSleepError, MemFlowTimeoutError, MemFlowWaitForError } from '../../../modules/errors';
2
+ import { KeyService, KeyType } from '../../../modules/key';
3
+ import { asyncLocalStorage } from '../../../modules/storage';
4
+ import { deterministicRandom, guid, s, sleepImmediate } from '../../../modules/utils';
5
+ import { HotMesh } from '../../hotmesh';
6
+ import { SerializerService } from '../../serializer';
7
+ import { ActivityConfig, ChildResponseType, HookOptions, ProxyResponseType, ProxyType, WorkflowContext, WorkflowOptions } from '../../../types/memflow';
8
+ import { JobInterruptOptions } from '../../../types/job';
9
+ import { StreamCode, StreamStatus } from '../../../types/stream';
10
+ import { StringAnyType, StringScalarType, StringStringType } from '../../../types/serializer';
11
+ import { HMSH_CODE_MEMFLOW_CHILD, HMSH_CODE_MEMFLOW_FATAL, HMSH_CODE_MEMFLOW_MAXED, HMSH_CODE_MEMFLOW_PROXY, HMSH_CODE_MEMFLOW_SLEEP, HMSH_CODE_MEMFLOW_TIMEOUT, HMSH_CODE_MEMFLOW_WAIT, HMSH_MEMFLOW_EXP_BACKOFF, HMSH_MEMFLOW_MAX_ATTEMPTS, HMSH_MEMFLOW_MAX_INTERVAL } from '../../../modules/enums';
12
+ import { MemFlowChildErrorType, MemFlowProxyErrorType } from '../../../types/error';
13
+ import { TelemetryService } from '../../telemetry';
14
+ import { QuorumMessage } from '../../../types';
15
+ import { UserMessage } from '../../../types/quorum';
16
+ import { Search } from '../search';
17
+ import { WorkerService } from '../worker';
18
+ import { Context } from '../context';
19
+ import { ExecHookOptions } from './execHook';
20
+ export { MemFlowChildError, MemFlowFatalError, MemFlowMaxedError, MemFlowProxyError, MemFlowRetryError, MemFlowSleepError, MemFlowTimeoutError, MemFlowWaitForError, KeyService, KeyType, asyncLocalStorage, deterministicRandom, guid, s, sleepImmediate, HotMesh, SerializerService, ActivityConfig, ChildResponseType, HookOptions, ExecHookOptions, ProxyResponseType, ProxyType, WorkflowContext, WorkflowOptions, JobInterruptOptions, StreamCode, StreamStatus, StringAnyType, StringScalarType, StringStringType, HMSH_CODE_MEMFLOW_CHILD, HMSH_CODE_MEMFLOW_FATAL, HMSH_CODE_MEMFLOW_MAXED, HMSH_CODE_MEMFLOW_PROXY, HMSH_CODE_MEMFLOW_SLEEP, HMSH_CODE_MEMFLOW_TIMEOUT, HMSH_CODE_MEMFLOW_WAIT, HMSH_MEMFLOW_EXP_BACKOFF, HMSH_MEMFLOW_MAX_ATTEMPTS, HMSH_MEMFLOW_MAX_INTERVAL, MemFlowChildErrorType, MemFlowProxyErrorType, TelemetryService, QuorumMessage, UserMessage, Search, WorkerService, Context, };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Context = exports.WorkerService = exports.Search = exports.TelemetryService = exports.HMSH_MEMFLOW_MAX_INTERVAL = exports.HMSH_MEMFLOW_MAX_ATTEMPTS = exports.HMSH_MEMFLOW_EXP_BACKOFF = exports.HMSH_CODE_MEMFLOW_WAIT = exports.HMSH_CODE_MEMFLOW_TIMEOUT = exports.HMSH_CODE_MEMFLOW_SLEEP = exports.HMSH_CODE_MEMFLOW_PROXY = exports.HMSH_CODE_MEMFLOW_MAXED = exports.HMSH_CODE_MEMFLOW_FATAL = exports.HMSH_CODE_MEMFLOW_CHILD = exports.StreamStatus = exports.SerializerService = exports.HotMesh = exports.sleepImmediate = exports.s = exports.guid = exports.deterministicRandom = exports.asyncLocalStorage = exports.KeyType = exports.KeyService = exports.MemFlowWaitForError = exports.MemFlowTimeoutError = exports.MemFlowSleepError = exports.MemFlowRetryError = exports.MemFlowProxyError = exports.MemFlowMaxedError = exports.MemFlowFatalError = exports.MemFlowChildError = void 0;
4
+ const errors_1 = require("../../../modules/errors");
5
+ Object.defineProperty(exports, "MemFlowChildError", { enumerable: true, get: function () { return errors_1.MemFlowChildError; } });
6
+ Object.defineProperty(exports, "MemFlowFatalError", { enumerable: true, get: function () { return errors_1.MemFlowFatalError; } });
7
+ Object.defineProperty(exports, "MemFlowMaxedError", { enumerable: true, get: function () { return errors_1.MemFlowMaxedError; } });
8
+ Object.defineProperty(exports, "MemFlowProxyError", { enumerable: true, get: function () { return errors_1.MemFlowProxyError; } });
9
+ Object.defineProperty(exports, "MemFlowRetryError", { enumerable: true, get: function () { return errors_1.MemFlowRetryError; } });
10
+ Object.defineProperty(exports, "MemFlowSleepError", { enumerable: true, get: function () { return errors_1.MemFlowSleepError; } });
11
+ Object.defineProperty(exports, "MemFlowTimeoutError", { enumerable: true, get: function () { return errors_1.MemFlowTimeoutError; } });
12
+ Object.defineProperty(exports, "MemFlowWaitForError", { enumerable: true, get: function () { return errors_1.MemFlowWaitForError; } });
13
+ const key_1 = require("../../../modules/key");
14
+ Object.defineProperty(exports, "KeyService", { enumerable: true, get: function () { return key_1.KeyService; } });
15
+ Object.defineProperty(exports, "KeyType", { enumerable: true, get: function () { return key_1.KeyType; } });
16
+ const storage_1 = require("../../../modules/storage");
17
+ Object.defineProperty(exports, "asyncLocalStorage", { enumerable: true, get: function () { return storage_1.asyncLocalStorage; } });
18
+ const utils_1 = require("../../../modules/utils");
19
+ Object.defineProperty(exports, "deterministicRandom", { enumerable: true, get: function () { return utils_1.deterministicRandom; } });
20
+ Object.defineProperty(exports, "guid", { enumerable: true, get: function () { return utils_1.guid; } });
21
+ Object.defineProperty(exports, "s", { enumerable: true, get: function () { return utils_1.s; } });
22
+ Object.defineProperty(exports, "sleepImmediate", { enumerable: true, get: function () { return utils_1.sleepImmediate; } });
23
+ const hotmesh_1 = require("../../hotmesh");
24
+ Object.defineProperty(exports, "HotMesh", { enumerable: true, get: function () { return hotmesh_1.HotMesh; } });
25
+ const serializer_1 = require("../../serializer");
26
+ Object.defineProperty(exports, "SerializerService", { enumerable: true, get: function () { return serializer_1.SerializerService; } });
27
+ const stream_1 = require("../../../types/stream");
28
+ Object.defineProperty(exports, "StreamStatus", { enumerable: true, get: function () { return stream_1.StreamStatus; } });
29
+ const enums_1 = require("../../../modules/enums");
30
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_CHILD", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_CHILD; } });
31
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_FATAL", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_FATAL; } });
32
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_MAXED", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_MAXED; } });
33
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_PROXY", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_PROXY; } });
34
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_SLEEP", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_SLEEP; } });
35
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_TIMEOUT", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_TIMEOUT; } });
36
+ Object.defineProperty(exports, "HMSH_CODE_MEMFLOW_WAIT", { enumerable: true, get: function () { return enums_1.HMSH_CODE_MEMFLOW_WAIT; } });
37
+ Object.defineProperty(exports, "HMSH_MEMFLOW_EXP_BACKOFF", { enumerable: true, get: function () { return enums_1.HMSH_MEMFLOW_EXP_BACKOFF; } });
38
+ Object.defineProperty(exports, "HMSH_MEMFLOW_MAX_ATTEMPTS", { enumerable: true, get: function () { return enums_1.HMSH_MEMFLOW_MAX_ATTEMPTS; } });
39
+ Object.defineProperty(exports, "HMSH_MEMFLOW_MAX_INTERVAL", { enumerable: true, get: function () { return enums_1.HMSH_MEMFLOW_MAX_INTERVAL; } });
40
+ const telemetry_1 = require("../../telemetry");
41
+ Object.defineProperty(exports, "TelemetryService", { enumerable: true, get: function () { return telemetry_1.TelemetryService; } });
42
+ const search_1 = require("../search");
43
+ Object.defineProperty(exports, "Search", { enumerable: true, get: function () { return search_1.Search; } });
44
+ const worker_1 = require("../worker");
45
+ Object.defineProperty(exports, "WorkerService", { enumerable: true, get: function () { return worker_1.WorkerService; } });
46
+ const context_1 = require("../context");
47
+ Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return context_1.Context; } });
@@ -0,0 +1,14 @@
1
+ import { Context } from './common';
2
+ /**
3
+ * Returns a context session handle for interacting with the workflow's JSONB context storage.
4
+ * @returns {Promise<Context>} A context session for workflow data.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const context = await workflow.context();
9
+ * await context.set({ user: { id: 123 } });
10
+ * await context.merge({ user: { name: "John" } });
11
+ * const user = await context.get("user");
12
+ * ```
13
+ */
14
+ export declare function context(): Promise<Context>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.context = void 0;
4
+ const common_1 = require("./common");
5
+ /**
6
+ * Returns a context session handle for interacting with the workflow's JSONB context storage.
7
+ * @returns {Promise<Context>} A context session for workflow data.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const context = await workflow.context();
12
+ * await context.set({ user: { id: 123 } });
13
+ * await context.merge({ user: { name: "John" } });
14
+ * const user = await context.get("user");
15
+ * ```
16
+ */
17
+ async function context() {
18
+ const store = common_1.asyncLocalStorage.getStore();
19
+ const workflowId = store.get('workflowId');
20
+ const workflowDimension = store.get('workflowDimension') ?? '';
21
+ const workflowTopic = store.get('workflowTopic');
22
+ const connection = store.get('connection');
23
+ const namespace = store.get('namespace');
24
+ const COUNTER = store.get('counter');
25
+ const execIndex = COUNTER.counter = COUNTER.counter + 1;
26
+ const hotMeshClient = await common_1.WorkerService.getHotMesh(workflowTopic, {
27
+ connection,
28
+ namespace,
29
+ });
30
+ const contextSessionId = `-context${workflowDimension}-${execIndex}`;
31
+ return new common_1.Context(workflowId, hotMeshClient, contextSessionId);
32
+ }
33
+ exports.context = context;
@@ -27,10 +27,10 @@ function getChildInterruptPayload(context, options, execIndex) {
27
27
  return {
28
28
  arguments: [...(options.args || [])],
29
29
  await: options?.await ?? true,
30
- backoffCoefficient: options?.config?.backoffCoefficient ?? common_1.HMSH_MESHFLOW_EXP_BACKOFF,
30
+ backoffCoefficient: options?.config?.backoffCoefficient ?? common_1.HMSH_MEMFLOW_EXP_BACKOFF,
31
31
  index: execIndex,
32
- maximumAttempts: options?.config?.maximumAttempts ?? common_1.HMSH_MESHFLOW_MAX_ATTEMPTS,
33
- maximumInterval: (0, common_1.s)(options?.config?.maximumInterval ?? common_1.HMSH_MESHFLOW_MAX_INTERVAL),
32
+ maximumAttempts: options?.config?.maximumAttempts ?? common_1.HMSH_MEMFLOW_MAX_ATTEMPTS,
33
+ maximumInterval: (0, common_1.s)(options?.config?.maximumInterval ?? common_1.HMSH_MEMFLOW_MAX_INTERVAL),
34
34
  originJobId: originJobId ?? workflowId,
35
35
  expire: options.expire ?? expire,
36
36
  persistent: options.persistent,
@@ -59,17 +59,17 @@ async function execChild(options) {
59
59
  const code = result.$error.code;
60
60
  const message = result.$error.message;
61
61
  const stack = result.$error.stack;
62
- if (code === common_1.HMSH_CODE_MESHFLOW_FATAL) {
63
- throw new common_1.MeshFlowFatalError(message, stack);
62
+ if (code === common_1.HMSH_CODE_MEMFLOW_FATAL) {
63
+ throw new common_1.MemFlowFatalError(message, stack);
64
64
  }
65
- else if (code === common_1.HMSH_CODE_MESHFLOW_MAXED) {
66
- throw new common_1.MeshFlowMaxedError(message, stack);
65
+ else if (code === common_1.HMSH_CODE_MEMFLOW_MAXED) {
66
+ throw new common_1.MemFlowMaxedError(message, stack);
67
67
  }
68
- else if (code === common_1.HMSH_CODE_MESHFLOW_TIMEOUT) {
69
- throw new common_1.MeshFlowTimeoutError(message, stack);
68
+ else if (code === common_1.HMSH_CODE_MEMFLOW_TIMEOUT) {
69
+ throw new common_1.MemFlowTimeoutError(message, stack);
70
70
  }
71
71
  else {
72
- throw new common_1.MeshFlowRetryError(message, stack);
72
+ throw new common_1.MemFlowRetryError(message, stack);
73
73
  }
74
74
  }
75
75
  return result.$error;
@@ -80,11 +80,11 @@ async function execChild(options) {
80
80
  }
81
81
  const interruptionMessage = getChildInterruptPayload(context, options, execIndex);
82
82
  interruptionRegistry.push({
83
- code: common_1.HMSH_CODE_MESHFLOW_CHILD,
83
+ code: common_1.HMSH_CODE_MEMFLOW_CHILD,
84
84
  ...interruptionMessage,
85
85
  });
86
86
  await (0, common_1.sleepImmediate)();
87
- throw new common_1.MeshFlowChildError(interruptionMessage);
87
+ throw new common_1.MemFlowChildError(interruptionMessage);
88
88
  }
89
89
  exports.execChild = execChild;
90
90
  /**
@@ -0,0 +1,65 @@
1
+ import { HookOptions } from './common';
2
+ /**
3
+ * Extended hook options that include signal configuration
4
+ */
5
+ export interface ExecHookOptions extends HookOptions {
6
+ /** Signal ID to send after hook execution */
7
+ signalId: string;
8
+ }
9
+ /**
10
+ * Executes a hook function and awaits the signal response.
11
+ * This is a convenience method that combines `hook()` and `waitFor()` operations.
12
+ *
13
+ * **Signal Injection**: The `signalId` is automatically injected as the LAST argument
14
+ * to the hooked function. The hooked function should check for this signal parameter
15
+ * and emit the signal when processing is complete.
16
+ *
17
+ * This behaves like `execChild` but targets the existing workflow instead of
18
+ * spawning a new workflow.
19
+ *
20
+ * @template T
21
+ * @param {ExecHookOptions} options - Hook configuration with signal ID.
22
+ * @returns {Promise<T>} The signal result from the hooked function.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Execute a hook and await its signal response
27
+ * const result = await MemFlow.workflow.execHook({
28
+ * taskQueue: 'processing',
29
+ * workflowName: 'processData',
30
+ * args: ['user123', 'batch-process'],
31
+ * signalId: 'processing-complete'
32
+ * });
33
+ *
34
+ * // The hooked function receives the signal as the last argument:
35
+ * export async function processData(userId: string, processType: string, signalInfo?: { signal: string }) {
36
+ * // ... do processing work ...
37
+ * const result = { userId, processType, status: 'completed' };
38
+ *
39
+ * // Check if called via execHook (signalInfo will be present)
40
+ * if (signalInfo?.signal) {
41
+ * await MemFlow.workflow.signal(signalInfo.signal, result);
42
+ * }
43
+ *
44
+ * return result;
45
+ * }
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * // Alternative pattern - check if last arg is signal object
51
+ * export async function myHookFunction(arg1: string, arg2: number, ...rest: any[]) {
52
+ * // ... process arg1 and arg2 ...
53
+ * const result = { processed: true, data: [arg1, arg2] };
54
+ *
55
+ * // Check if last argument is a signal object
56
+ * const lastArg = rest[rest.length - 1];
57
+ * if (lastArg && typeof lastArg === 'object' && lastArg.signal) {
58
+ * await MemFlow.workflow.signal(lastArg.signal, result);
59
+ * }
60
+ *
61
+ * return result;
62
+ * }
63
+ * ```
64
+ */
65
+ export declare function execHook<T>(options: ExecHookOptions): Promise<T>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.execHook = void 0;
4
+ const hook_1 = require("./hook");
5
+ const waitFor_1 = require("./waitFor");
6
+ /**
7
+ * Executes a hook function and awaits the signal response.
8
+ * This is a convenience method that combines `hook()` and `waitFor()` operations.
9
+ *
10
+ * **Signal Injection**: The `signalId` is automatically injected as the LAST argument
11
+ * to the hooked function. The hooked function should check for this signal parameter
12
+ * and emit the signal when processing is complete.
13
+ *
14
+ * This behaves like `execChild` but targets the existing workflow instead of
15
+ * spawning a new workflow.
16
+ *
17
+ * @template T
18
+ * @param {ExecHookOptions} options - Hook configuration with signal ID.
19
+ * @returns {Promise<T>} The signal result from the hooked function.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Execute a hook and await its signal response
24
+ * const result = await MemFlow.workflow.execHook({
25
+ * taskQueue: 'processing',
26
+ * workflowName: 'processData',
27
+ * args: ['user123', 'batch-process'],
28
+ * signalId: 'processing-complete'
29
+ * });
30
+ *
31
+ * // The hooked function receives the signal as the last argument:
32
+ * export async function processData(userId: string, processType: string, signalInfo?: { signal: string }) {
33
+ * // ... do processing work ...
34
+ * const result = { userId, processType, status: 'completed' };
35
+ *
36
+ * // Check if called via execHook (signalInfo will be present)
37
+ * if (signalInfo?.signal) {
38
+ * await MemFlow.workflow.signal(signalInfo.signal, result);
39
+ * }
40
+ *
41
+ * return result;
42
+ * }
43
+ * ```
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * // Alternative pattern - check if last arg is signal object
48
+ * export async function myHookFunction(arg1: string, arg2: number, ...rest: any[]) {
49
+ * // ... process arg1 and arg2 ...
50
+ * const result = { processed: true, data: [arg1, arg2] };
51
+ *
52
+ * // Check if last argument is a signal object
53
+ * const lastArg = rest[rest.length - 1];
54
+ * if (lastArg && typeof lastArg === 'object' && lastArg.signal) {
55
+ * await MemFlow.workflow.signal(lastArg.signal, result);
56
+ * }
57
+ *
58
+ * return result;
59
+ * }
60
+ * ```
61
+ */
62
+ async function execHook(options) {
63
+ // Create hook options with signal field added to args
64
+ const hookOptions = {
65
+ ...options,
66
+ args: [...options.args, { signal: options.signalId }]
67
+ };
68
+ // Execute the hook with the signal information
69
+ await (0, hook_1.hook)(hookOptions);
70
+ // Wait for the signal response and return it
71
+ return await (0, waitFor_1.waitFor)(options.signalId);
72
+ }
73
+ exports.execHook = execHook;
@@ -26,13 +26,29 @@ async function hook(options) {
26
26
  else {
27
27
  targetTopic = workflowTopic;
28
28
  }
29
+ // DEFENSIVE CHECK: Prevent infinite loops
30
+ if (targetTopic === workflowTopic && !options.entity && !options.taskQueue) {
31
+ throw new Error(`MemFlow Hook Error: Potential infinite loop detected!\n\n` +
32
+ `The hook would target the same workflow topic ('${workflowTopic}') as the current workflow, ` +
33
+ `creating an infinite loop.\n\n` +
34
+ `To fix this, provide either:\n` +
35
+ `1. 'taskQueue' parameter: MemFlow.workflow.hook({ taskQueue: 'your-queue', workflowName: '${options.workflowName}', args: [...] })\n` +
36
+ `2. 'entity' parameter: MemFlow.workflow.hook({ entity: 'your-entity', args: [...] })\n\n` +
37
+ `Current workflow topic: ${workflowTopic}\n` +
38
+ `Target topic would be: ${targetTopic}\n` +
39
+ `Provided options: ${JSON.stringify({
40
+ workflowName: options.workflowName,
41
+ taskQueue: options.taskQueue,
42
+ entity: options.entity
43
+ }, null, 2)}`);
44
+ }
29
45
  const payload = {
30
46
  arguments: [...options.args],
31
47
  id: targetWorkflowId,
32
48
  workflowTopic: targetTopic,
33
- backoffCoefficient: options.config?.backoffCoefficient || common_1.HMSH_MESHFLOW_EXP_BACKOFF,
34
- maximumAttempts: options.config?.maximumAttempts || common_1.HMSH_MESHFLOW_MAX_ATTEMPTS,
35
- maximumInterval: (0, common_1.s)(options?.config?.maximumInterval ?? common_1.HMSH_MESHFLOW_MAX_INTERVAL),
49
+ backoffCoefficient: options.config?.backoffCoefficient || common_1.HMSH_MEMFLOW_EXP_BACKOFF,
50
+ maximumAttempts: options.config?.maximumAttempts || common_1.HMSH_MEMFLOW_MAX_ATTEMPTS,
51
+ maximumInterval: (0, common_1.s)(options?.config?.maximumInterval ?? common_1.HMSH_MEMFLOW_MAX_INTERVAL),
36
52
  };
37
53
  return await hotMeshClient.hook(`${namespace}.flow.signal`, payload, common_1.StreamStatus.PENDING, 202);
38
54
  }
@@ -5,6 +5,7 @@ import { trace } from './trace';
5
5
  import { enrich } from './enrich';
6
6
  import { emit } from './emit';
7
7
  import { execChild, startChild } from './execChild';
8
+ import { execHook } from './execHook';
8
9
  import { proxyActivities } from './proxyActivities';
9
10
  import { search } from './searchMethods';
10
11
  import { random } from './random';
@@ -15,6 +16,7 @@ import { all } from './all';
15
16
  import { sleepFor } from './sleepFor';
16
17
  import { waitFor } from './waitFor';
17
18
  import { HotMesh } from './common';
19
+ import { context } from './contextMethods';
18
20
  /**
19
21
  * The WorkflowService class provides a set of static methods to be used within a workflow function.
20
22
  * These methods ensure deterministic replay, persistence of state, and error handling across
@@ -26,12 +28,12 @@ import { HotMesh } from './common';
26
28
  *
27
29
  * @example
28
30
  * ```typescript
29
- * import { MeshFlow } from '@hotmeshio/hotmesh';
31
+ * import { MemFlow } from '@hotmeshio/hotmesh';
30
32
  *
31
33
  * export async function waitForExample(): Promise<[boolean, number]> {
32
34
  * const [s1, s2] = await Promise.all([
33
- * MeshFlow.workflow.waitFor<boolean>('my-sig-nal-1'),
34
- * MeshFlow.workflow.waitFor<number>('my-sig-nal-2')
35
+ * MemFlow.workflow.waitFor<boolean>('my-sig-nal-1'),
36
+ * MemFlow.workflow.waitFor<number>('my-sig-nal-2')
35
37
  * ]);
36
38
  * return [s1, s2];
37
39
  * }
@@ -53,8 +55,10 @@ export declare class WorkflowService {
53
55
  static execChild: typeof execChild;
54
56
  static executeChild: typeof execChild;
55
57
  static startChild: typeof startChild;
58
+ static execHook: typeof execHook;
56
59
  static proxyActivities: typeof proxyActivities;
57
60
  static search: typeof search;
61
+ static context: typeof context;
58
62
  static random: typeof random;
59
63
  static signal: typeof signal;
60
64
  static hook: typeof hook;
@@ -8,6 +8,7 @@ const trace_1 = require("./trace");
8
8
  const enrich_1 = require("./enrich");
9
9
  const emit_1 = require("./emit");
10
10
  const execChild_1 = require("./execChild");
11
+ const execHook_1 = require("./execHook");
11
12
  const proxyActivities_1 = require("./proxyActivities");
12
13
  const searchMethods_1 = require("./searchMethods");
13
14
  const random_1 = require("./random");
@@ -18,6 +19,7 @@ const all_1 = require("./all");
18
19
  const sleepFor_1 = require("./sleepFor");
19
20
  const waitFor_1 = require("./waitFor");
20
21
  const common_1 = require("./common");
22
+ const contextMethods_1 = require("./contextMethods");
21
23
  /**
22
24
  * The WorkflowService class provides a set of static methods to be used within a workflow function.
23
25
  * These methods ensure deterministic replay, persistence of state, and error handling across
@@ -29,12 +31,12 @@ const common_1 = require("./common");
29
31
  *
30
32
  * @example
31
33
  * ```typescript
32
- * import { MeshFlow } from '@hotmeshio/hotmesh';
34
+ * import { MemFlow } from '@hotmeshio/hotmesh';
33
35
  *
34
36
  * export async function waitForExample(): Promise<[boolean, number]> {
35
37
  * const [s1, s2] = await Promise.all([
36
- * MeshFlow.workflow.waitFor<boolean>('my-sig-nal-1'),
37
- * MeshFlow.workflow.waitFor<number>('my-sig-nal-2')
38
+ * MemFlow.workflow.waitFor<boolean>('my-sig-nal-1'),
39
+ * MemFlow.workflow.waitFor<number>('my-sig-nal-2')
38
40
  * ]);
39
41
  * return [s1, s2];
40
42
  * }
@@ -71,8 +73,10 @@ WorkflowService.emit = emit_1.emit;
71
73
  WorkflowService.execChild = execChild_1.execChild;
72
74
  WorkflowService.executeChild = execChild_1.executeChild;
73
75
  WorkflowService.startChild = execChild_1.startChild;
76
+ WorkflowService.execHook = execHook_1.execHook;
74
77
  WorkflowService.proxyActivities = proxyActivities_1.proxyActivities;
75
78
  WorkflowService.search = searchMethods_1.search;
79
+ WorkflowService.context = contextMethods_1.context;
76
80
  WorkflowService.random = random_1.random;
77
81
  WorkflowService.signal = signal_1.signal;
78
82
  WorkflowService.hook = hook_1.hook;
@@ -1,10 +1,10 @@
1
- import { ActivityConfig, ProxyType, MeshFlowProxyErrorType } from './common';
1
+ import { ActivityConfig, ProxyType, MemFlowProxyErrorType } from './common';
2
2
  import { getContext } from './context';
3
3
  /**
4
4
  * Constructs payload for spawning a proxyActivity job.
5
5
  * @private
6
6
  */
7
- declare function getProxyInterruptPayload(context: ReturnType<typeof getContext>, activityName: string, execIndex: number, args: any[], options?: ActivityConfig): MeshFlowProxyErrorType;
7
+ declare function getProxyInterruptPayload(context: ReturnType<typeof getContext>, activityName: string, execIndex: number, args: any[], options?: ActivityConfig): MemFlowProxyErrorType;
8
8
  /**
9
9
  * Wraps a single activity in a proxy, orchestrating its execution and replay.
10
10
  * @private