@hatchet-dev/typescript-sdk 1.13.1 → 1.14.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 (245) hide show
  1. package/clients/dispatcher/dispatcher-client.d.ts +1 -1
  2. package/clients/dispatcher/heartbeat/heartbeat-controller.js +13 -1
  3. package/clients/dispatcher/heartbeat/heartbeat-worker.js +4 -3
  4. package/clients/event/event-client.d.ts +1 -2
  5. package/clients/event/event-client.js +2 -2
  6. package/clients/hatchet-client/client-config.d.ts +15 -5
  7. package/clients/hatchet-client/client-config.js +3 -0
  8. package/clients/hatchet-client/hatchet-logger.js +1 -0
  9. package/clients/hatchet-client/index.d.ts +1 -1
  10. package/clients/hatchet-client/index.js +1 -1
  11. package/clients/listeners/durable-listener/durable-listener-client.d.ts +6 -0
  12. package/clients/listeners/durable-listener/durable-listener-client.js +8 -0
  13. package/clients/listeners/durable-listener/pooled-durable-listener-client.d.ts +9 -2
  14. package/clients/listeners/durable-listener/pooled-durable-listener-client.js +67 -15
  15. package/clients/listeners/run-listener/child-listener-client.js +1 -0
  16. package/clients/listeners/run-listener/pooled-child-listener-client.d.ts +10 -2
  17. package/clients/listeners/run-listener/pooled-child-listener-client.js +63 -7
  18. package/clients/rest/api.js +10 -2
  19. package/clients/rest/generated/Api.d.ts +2 -2
  20. package/clients/rest/generated/data-contracts.d.ts +6 -0
  21. package/index.d.ts +2 -3
  22. package/index.js +2 -3
  23. package/{examples → legacy/examples}/affinity-workers.js +2 -2
  24. package/{examples → legacy/examples}/bulk-fanout-trigger.js +1 -1
  25. package/{examples → legacy/examples}/bulk-fanout-worker.js +1 -1
  26. package/{examples → legacy/examples}/bulk-trigger.js +1 -1
  27. package/{examples → legacy/examples}/byo-logger.js +1 -1
  28. package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-event.js +1 -1
  29. package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-worker.js +1 -1
  30. package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-event.js +1 -1
  31. package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-expression.js +2 -2
  32. package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-key-fn.js +2 -2
  33. package/{examples → legacy/examples}/crons/cron-worker.d.ts +1 -1
  34. package/{examples → legacy/examples}/crons/cron-worker.js +1 -1
  35. package/{examples → legacy/examples}/crons/programatic-crons.js +1 -1
  36. package/{examples → legacy/examples}/dag-worker.js +1 -1
  37. package/{examples → legacy/examples}/example-event-with-results.js +2 -2
  38. package/{examples → legacy/examples}/example-event.js +1 -1
  39. package/{examples → legacy/examples}/fanout-worker.js +1 -1
  40. package/{examples → legacy/examples}/logger.js +1 -1
  41. package/{examples → legacy/examples}/manual-trigger.js +1 -1
  42. package/{examples → legacy/examples}/multi-workflow.js +1 -1
  43. package/{examples → legacy/examples}/namespaced-worker.js +1 -1
  44. package/{examples → legacy/examples}/on-failure.js +1 -1
  45. package/{examples → legacy/examples}/rate-limit/events.js +1 -1
  46. package/{examples → legacy/examples}/rate-limit/worker.js +2 -2
  47. package/{examples → legacy/examples}/retries-with-backoff.js +1 -1
  48. package/{examples → legacy/examples}/retries-worker.js +1 -1
  49. package/{examples → legacy/examples}/scheduled-runs/programatic-schedules.js +1 -1
  50. package/{examples → legacy/examples}/simple-worker.d.ts +1 -1
  51. package/{examples → legacy/examples}/simple-worker.js +1 -1
  52. package/{examples → legacy/examples}/sticky-trigger.js +1 -1
  53. package/{examples → legacy/examples}/sticky-worker-with-check.js +2 -2
  54. package/{examples → legacy/examples}/sticky-worker.js +2 -2
  55. package/{examples → legacy/examples}/stream-by-additional-meta.js +2 -2
  56. package/legacy/legacy-client.d.ts +30 -0
  57. package/legacy/legacy-client.js +67 -0
  58. package/legacy/legacy-transformer.d.ts +38 -0
  59. package/legacy/legacy-transformer.js +181 -0
  60. package/legacy/step.d.ts +429 -0
  61. package/legacy/step.js +662 -0
  62. package/legacy/workflow.d.ts +488 -0
  63. package/legacy/workflow.js +72 -0
  64. package/package.json +2 -2
  65. package/step.d.ts +1 -430
  66. package/step.js +6 -647
  67. package/util/abort-error.d.ts +38 -0
  68. package/util/abort-error.js +58 -0
  69. package/util/hatchet-promise/hatchet-promise.d.ts +8 -1
  70. package/util/hatchet-promise/hatchet-promise.js +3 -2
  71. package/util/logger/index.d.ts +1 -0
  72. package/util/logger/index.js +1 -0
  73. package/util/logger/task-run-log.d.ts +3 -0
  74. package/util/logger/task-run-log.js +20 -0
  75. package/util/sleep.d.ts +5 -2
  76. package/util/sleep.js +27 -4
  77. package/util/workflow-run-ref.d.ts +7 -1
  78. package/util/workflow-run-ref.js +5 -3
  79. package/v1/client/admin.d.ts +8 -1
  80. package/v1/client/admin.js +22 -6
  81. package/v1/client/client.d.ts +36 -18
  82. package/v1/client/client.interface.d.ts +9 -2
  83. package/v1/client/client.js +47 -27
  84. package/v1/client/features/crons.d.ts +3 -3
  85. package/v1/client/features/crons.js +2 -2
  86. package/v1/client/features/schedules.js +2 -2
  87. package/v1/client/features/workflows.d.ts +5 -5
  88. package/v1/client/features/workflows.js +7 -8
  89. package/v1/client/worker/context.d.ts +49 -10
  90. package/v1/client/worker/context.js +92 -20
  91. package/v1/client/worker/deprecated/legacy-v1-worker.d.ts +3 -3
  92. package/v1/client/worker/deprecated/legacy-v1-worker.js +2 -2
  93. package/v1/client/worker/deprecated/legacy-worker.js +9 -7
  94. package/v1/client/worker/slot-utils.d.ts +3 -3
  95. package/v1/client/worker/worker-internal.d.ts +7 -16
  96. package/v1/client/worker/worker-internal.js +225 -209
  97. package/v1/client/worker/worker.d.ts +18 -18
  98. package/v1/client/worker/worker.js +45 -30
  99. package/v1/declaration.d.ts +28 -7
  100. package/v1/declaration.js +56 -6
  101. package/v1/examples/__e2e__/harness.d.ts +19 -0
  102. package/v1/examples/__e2e__/harness.js +70 -0
  103. package/v1/examples/affinity/affinity-workers.js +4 -4
  104. package/v1/examples/bulk_fanout/workflow.d.ts +9 -0
  105. package/v1/examples/bulk_fanout/workflow.js +34 -0
  106. package/v1/examples/bulk_operations/workflow.d.ts +3 -0
  107. package/v1/examples/bulk_operations/workflow.js +44 -0
  108. package/v1/examples/cancellation/cancellation-workflow.d.ts +2 -0
  109. package/v1/examples/cancellation/cancellation-workflow.js +69 -0
  110. package/v1/examples/cancellation/run.js +53 -0
  111. package/v1/examples/cancellation/worker.d.ts +1 -0
  112. package/v1/examples/cancellation/worker.js +29 -0
  113. package/v1/examples/concurrency-types.d.ts +5 -0
  114. package/v1/examples/concurrency-types.js +2 -0
  115. package/v1/examples/concurrency_cancel_in_progress/workflow.d.ts +9 -0
  116. package/v1/examples/concurrency_cancel_in_progress/workflow.js +45 -0
  117. package/v1/examples/concurrency_cancel_newest/workflow.d.ts +9 -0
  118. package/v1/examples/concurrency_cancel_newest/workflow.js +45 -0
  119. package/v1/examples/concurrency_limit_rr/load.d.ts +1 -0
  120. package/v1/examples/concurrency_limit_rr/load.js +54 -0
  121. package/v1/examples/concurrency_limit_rr/run.d.ts +1 -0
  122. package/v1/examples/concurrency_limit_rr/run.js +39 -0
  123. package/v1/examples/concurrency_limit_rr/worker.d.ts +1 -0
  124. package/v1/examples/concurrency_limit_rr/worker.js +24 -0
  125. package/v1/examples/concurrency_limit_rr/workflow.d.ts +12 -0
  126. package/v1/examples/concurrency_limit_rr/workflow.js +62 -0
  127. package/v1/examples/concurrency_multiple_keys/workflow.d.ts +12 -0
  128. package/v1/examples/concurrency_multiple_keys/workflow.js +42 -0
  129. package/v1/examples/concurrency_workflow_level/workflow.d.ts +13 -0
  130. package/v1/examples/concurrency_workflow_level/workflow.js +49 -0
  131. package/v1/examples/conditions/complex-workflow.d.ts +1 -0
  132. package/v1/examples/conditions/complex-workflow.js +107 -0
  133. package/v1/examples/conditions/event.d.ts +1 -0
  134. package/v1/examples/conditions/event.js +28 -0
  135. package/v1/examples/conditions/run.d.ts +1 -0
  136. package/v1/examples/conditions/run.js +25 -0
  137. package/v1/examples/conditions/worker.d.ts +1 -0
  138. package/v1/examples/conditions/worker.js +24 -0
  139. package/v1/examples/conditions/workflow.d.ts +11 -0
  140. package/v1/examples/conditions/workflow.js +41 -0
  141. package/v1/examples/durable/workflow.d.ts +7 -0
  142. package/v1/examples/durable/workflow.js +116 -0
  143. package/v1/examples/durable_event/event.d.ts +1 -0
  144. package/v1/examples/durable_event/event.js +28 -0
  145. package/v1/examples/durable_event/run.d.ts +1 -0
  146. package/v1/examples/durable_event/run.js +30 -0
  147. package/v1/examples/durable_event/worker.d.ts +1 -0
  148. package/v1/examples/durable_event/worker.js +24 -0
  149. package/v1/examples/durable_event/workflow.d.ts +6 -0
  150. package/v1/examples/durable_event/workflow.js +46 -0
  151. package/v1/examples/durable_sleep/event.d.ts +1 -0
  152. package/v1/examples/durable_sleep/event.js +28 -0
  153. package/v1/examples/durable_sleep/run.d.ts +1 -0
  154. package/v1/examples/durable_sleep/run.js +30 -0
  155. package/v1/examples/durable_sleep/worker.d.ts +1 -0
  156. package/v1/examples/durable_sleep/worker.js +24 -0
  157. package/v1/examples/durable_sleep/workflow.d.ts +1 -0
  158. package/v1/examples/durable_sleep/workflow.js +31 -0
  159. package/v1/examples/e2e-worker.d.ts +1 -0
  160. package/v1/examples/e2e-worker.js +82 -0
  161. package/v1/examples/events/event.d.ts +1 -0
  162. package/v1/examples/events/event.js +53 -0
  163. package/v1/examples/events/filter.d.ts +1 -0
  164. package/v1/examples/events/filter.js +32 -0
  165. package/v1/examples/events/worker.d.ts +1 -0
  166. package/v1/examples/events/worker.js +24 -0
  167. package/v1/examples/events/workflow.d.ts +19 -0
  168. package/v1/examples/events/workflow.js +60 -0
  169. package/v1/examples/high-memory/workflow-with-child.js +1 -1
  170. package/v1/examples/logger/byo-logger.d.ts +1 -0
  171. package/v1/examples/logger/byo-logger.js +73 -0
  172. package/v1/examples/logger/logger.d.ts +1 -0
  173. package/v1/examples/logger/logger.js +46 -0
  174. package/v1/examples/logger/workflow.d.ts +2 -0
  175. package/v1/examples/logger/workflow.js +38 -0
  176. package/v1/examples/multiple_wf_concurrency/workflow.js +3 -3
  177. package/v1/examples/on_failure/workflow.d.ts +1 -0
  178. package/v1/examples/on_failure/workflow.js +12 -7
  179. package/v1/examples/priority/workflow.js +1 -1
  180. package/v1/examples/retries/workflow.js +2 -2
  181. package/v1/examples/return_exceptions/workflow.d.ts +6 -0
  182. package/v1/examples/return_exceptions/workflow.js +22 -0
  183. package/v1/examples/run_details/workflow.d.ts +4 -0
  184. package/v1/examples/run_details/workflow.js +65 -0
  185. package/v1/examples/simple/e2e-workflows.d.ts +14 -0
  186. package/v1/examples/simple/e2e-workflows.js +27 -0
  187. package/v1/examples/simple/enqueue.js +2 -2
  188. package/v1/examples/sticky/workflow.js +2 -2
  189. package/v1/examples/timeout/run.d.ts +1 -0
  190. package/v1/examples/timeout/run.js +30 -0
  191. package/v1/examples/timeout/worker.d.ts +1 -0
  192. package/v1/examples/timeout/worker.js +25 -0
  193. package/v1/examples/timeout/workflow.d.ts +10 -0
  194. package/v1/examples/timeout/workflow.js +56 -0
  195. package/v1/examples/webhooks/workflow.d.ts +5 -0
  196. package/v1/examples/webhooks/workflow.js +23 -0
  197. package/v1/index.d.ts +1 -0
  198. package/v1/index.js +1 -0
  199. package/v1/parent-run-context-vars.d.ts +6 -0
  200. package/v1/parent-run-context-vars.js +3 -0
  201. package/v1/task.d.ts +22 -7
  202. package/v1/task.js +4 -1
  203. package/version.d.ts +1 -1
  204. package/version.js +1 -1
  205. package/workflow.d.ts +3 -491
  206. package/workflow.js +12 -62
  207. package/clients/hatchet-client/hatchet-client.d.ts +0 -35
  208. package/clients/hatchet-client/hatchet-client.js +0 -108
  209. package/clients/worker/handler.d.ts +0 -50
  210. package/clients/worker/handler.js +0 -214
  211. package/clients/worker/index.d.ts +0 -1
  212. package/clients/worker/index.js +0 -17
  213. package/clients/worker/worker.d.ts +0 -59
  214. package/clients/worker/worker.js +0 -568
  215. package/examples/webhooks.js +0 -45
  216. /package/{examples → legacy/examples}/affinity-workers.d.ts +0 -0
  217. /package/{examples → legacy/examples}/bulk-fanout-trigger.d.ts +0 -0
  218. /package/{examples → legacy/examples}/bulk-fanout-worker.d.ts +0 -0
  219. /package/{examples → legacy/examples}/bulk-trigger.d.ts +0 -0
  220. /package/{examples → legacy/examples}/byo-logger.d.ts +0 -0
  221. /package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-event.d.ts +0 -0
  222. /package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-worker.d.ts +0 -0
  223. /package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-event.d.ts +0 -0
  224. /package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-expression.d.ts +0 -0
  225. /package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-key-fn.d.ts +0 -0
  226. /package/{examples → legacy/examples}/crons/programatic-crons.d.ts +0 -0
  227. /package/{examples → legacy/examples}/dag-worker.d.ts +0 -0
  228. /package/{examples → legacy/examples}/example-event-with-results.d.ts +0 -0
  229. /package/{examples → legacy/examples}/example-event.d.ts +0 -0
  230. /package/{examples → legacy/examples}/fanout-worker.d.ts +0 -0
  231. /package/{examples → legacy/examples}/logger.d.ts +0 -0
  232. /package/{examples → legacy/examples}/manual-trigger.d.ts +0 -0
  233. /package/{examples → legacy/examples}/multi-workflow.d.ts +0 -0
  234. /package/{examples → legacy/examples}/namespaced-worker.d.ts +0 -0
  235. /package/{examples → legacy/examples}/on-failure.d.ts +0 -0
  236. /package/{examples → legacy/examples}/rate-limit/events.d.ts +0 -0
  237. /package/{examples → legacy/examples}/rate-limit/worker.d.ts +0 -0
  238. /package/{examples → legacy/examples}/retries-with-backoff.d.ts +0 -0
  239. /package/{examples → legacy/examples}/retries-worker.d.ts +0 -0
  240. /package/{examples → legacy/examples}/scheduled-runs/programatic-schedules.d.ts +0 -0
  241. /package/{examples → legacy/examples}/sticky-trigger.d.ts +0 -0
  242. /package/{examples → legacy/examples}/sticky-worker-with-check.d.ts +0 -0
  243. /package/{examples → legacy/examples}/sticky-worker.d.ts +0 -0
  244. /package/{examples → legacy/examples}/stream-by-additional-meta.d.ts +0 -0
  245. /package/{examples/webhooks.d.ts → v1/examples/cancellation/run.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ /**
13
+ * Shared e2e worker - registers all v1 example workflows for e2e tests.
14
+ * Spawned by jest.e2e-global-setup and killed by jest.e2e-global-teardown.
15
+ * Set HATCHET_CLIENT_WORKER_HEALTHCHECK_ENABLED=true and
16
+ * HATCHET_CLIENT_WORKER_HEALTHCHECK_PORT before running.
17
+ */
18
+ const hatchet_client_1 = require("./hatchet-client");
19
+ const workflow_1 = require("./bulk_fanout/workflow");
20
+ const workflow_2 = require("./bulk_operations/workflow");
21
+ const cancellation_workflow_1 = require("./cancellation/cancellation-workflow");
22
+ const complex_workflow_1 = require("./conditions/complex-workflow");
23
+ const workflow_3 = require("./concurrency_cancel_in_progress/workflow");
24
+ const workflow_4 = require("./concurrency_cancel_newest/workflow");
25
+ const workflow_5 = require("./concurrency_multiple_keys/workflow");
26
+ const workflow_6 = require("./concurrency_workflow_level/workflow");
27
+ const workflow_7 = require("./dag/workflow");
28
+ const workflow_8 = require("./durable/workflow");
29
+ const workflow_9 = require("./logger/workflow");
30
+ const workflow_10 = require("./non_retryable/workflow");
31
+ const workflow_11 = require("./on_failure/workflow");
32
+ const workflow_12 = require("./on_event/workflow");
33
+ const workflow_13 = require("./return_exceptions/workflow");
34
+ const workflow_14 = require("./run_details/workflow");
35
+ const e2e_workflows_1 = require("./simple/e2e-workflows");
36
+ const workflow_15 = require("./streaming/workflow");
37
+ const workflow_16 = require("./timeout/workflow");
38
+ const workflow_17 = require("./webhooks/workflow");
39
+ const workflows = [
40
+ workflow_1.bulkChild,
41
+ workflow_1.bulkParentWorkflow,
42
+ workflow_2.bulkReplayTest1,
43
+ workflow_2.bulkReplayTest2,
44
+ workflow_2.bulkReplayTest3,
45
+ cancellation_workflow_1.cancellationWorkflow,
46
+ complex_workflow_1.taskConditionWorkflow,
47
+ workflow_3.concurrencyCancelInProgressWorkflow,
48
+ workflow_4.concurrencyCancelNewestWorkflow,
49
+ workflow_5.concurrencyMultipleKeysWorkflow,
50
+ workflow_6.concurrencyWorkflowLevelWorkflow,
51
+ workflow_7.dag,
52
+ workflow_8.durableWorkflow,
53
+ workflow_8.waitForSleepTwice,
54
+ (0, workflow_9.createLoggingWorkflow)(hatchet_client_1.hatchet),
55
+ workflow_10.nonRetryableWorkflow,
56
+ workflow_11.failureWorkflow,
57
+ workflow_12.lower,
58
+ workflow_13.returnExceptionsTask,
59
+ workflow_14.runDetailTestWorkflow,
60
+ e2e_workflows_1.helloWorld,
61
+ e2e_workflows_1.helloWorldDurable,
62
+ workflow_15.streamingTask,
63
+ workflow_16.timeoutTask,
64
+ workflow_16.refreshTimeoutTask,
65
+ workflow_17.webhookWorkflow,
66
+ ];
67
+ function main() {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const worker = yield hatchet_client_1.hatchet.worker('e2e-test-worker', {
70
+ workflows,
71
+ slots: 100,
72
+ });
73
+ void worker.start();
74
+ yield worker.waitUntilReady(30000);
75
+ console.log('[e2e-worker] Worker registered and ready');
76
+ yield new Promise(() => { });
77
+ });
78
+ }
79
+ main().catch((err) => {
80
+ console.error('e2e-worker failed:', err);
81
+ process.exit(1);
82
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const hatchet_client_1 = require("../hatchet-client");
13
+ function main() {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ // > Pushing an Event
16
+ const res = yield hatchet_client_1.hatchet.events.push('simple-event:create', {
17
+ Message: 'hello',
18
+ ShouldSkip: false,
19
+ });
20
+ // !!
21
+ // > Push an Event with Metadata
22
+ const withMetadata = yield hatchet_client_1.hatchet.events.push('user:create', {
23
+ test: 'test',
24
+ }, {
25
+ additionalMetadata: {
26
+ source: 'api', // Arbitrary key-value pair
27
+ },
28
+ });
29
+ // !!
30
+ // > Bulk push events
31
+ const events = [
32
+ {
33
+ payload: { test: 'test1' },
34
+ additionalMetadata: { user_id: 'user1', source: 'test' },
35
+ },
36
+ {
37
+ payload: { test: 'test2' },
38
+ additionalMetadata: { user_id: 'user2', source: 'test' },
39
+ },
40
+ {
41
+ payload: { test: 'test3' },
42
+ additionalMetadata: { user_id: 'user3', source: 'test' },
43
+ },
44
+ ];
45
+ yield hatchet_client_1.hatchet.events.bulkPush('user:create', events);
46
+ // !!
47
+ // eslint-disable-next-line no-console
48
+ console.log(res.eventId);
49
+ });
50
+ }
51
+ if (require.main === module) {
52
+ main();
53
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hatchet_client_1 = require("../hatchet-client");
4
+ const workflow_1 = require("./workflow");
5
+ // > Create a filter
6
+ hatchet_client_1.hatchet.filters.create({
7
+ workflowId: workflow_1.lower.name,
8
+ expression: 'input.ShouldSkip == false',
9
+ scope: 'foobarbaz',
10
+ payload: {
11
+ main_character: 'Anna',
12
+ supporting_character: 'Stiva',
13
+ location: 'Moscow',
14
+ },
15
+ });
16
+ // !!
17
+ // > Skip a run
18
+ hatchet_client_1.hatchet.events.push(workflow_1.SIMPLE_EVENT, {
19
+ Message: 'hello',
20
+ ShouldSkip: true,
21
+ }, {
22
+ scope: 'foobarbaz',
23
+ });
24
+ // !!
25
+ // > Trigger a run
26
+ hatchet_client_1.hatchet.events.push(workflow_1.SIMPLE_EVENT, {
27
+ Message: 'hello',
28
+ ShouldSkip: false,
29
+ }, {
30
+ scope: 'foobarbaz',
31
+ });
32
+ // !!
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const hatchet_client_1 = require("../hatchet-client");
13
+ const workflow_1 = require("./workflow");
14
+ function main() {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const worker = yield hatchet_client_1.hatchet.worker('on-event-worker', {
17
+ workflows: [workflow_1.lower, workflow_1.upper],
18
+ });
19
+ yield worker.start();
20
+ });
21
+ }
22
+ if (require.main === module) {
23
+ main();
24
+ }
@@ -0,0 +1,19 @@
1
+ export type Input = {
2
+ Message: string;
3
+ ShouldSkip: boolean;
4
+ };
5
+ export declare const SIMPLE_EVENT = "simple-event:create";
6
+ type LowerOutput = {
7
+ lower: {
8
+ TransformedMessage: string;
9
+ };
10
+ };
11
+ export declare const lower: import("../..").WorkflowDeclaration<Input, LowerOutput, {}>;
12
+ export declare const lowerWithFilter: import("../..").WorkflowDeclaration<Input, LowerOutput, {}>;
13
+ type UpperOutput = {
14
+ upper: {
15
+ TransformedMessage: string;
16
+ };
17
+ };
18
+ export declare const upper: import("../..").WorkflowDeclaration<Input, UpperOutput, {}>;
19
+ export {};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.upper = exports.lowerWithFilter = exports.lower = exports.SIMPLE_EVENT = void 0;
4
+ const hatchet_client_1 = require("../hatchet-client");
5
+ exports.SIMPLE_EVENT = 'simple-event:create';
6
+ // > Run workflow on event
7
+ exports.lower = hatchet_client_1.hatchet.workflow({
8
+ name: 'lower',
9
+ // 👀 Declare the event that will trigger the workflow
10
+ onEvents: ['simple-event:create'],
11
+ });
12
+ // !!
13
+ // > Workflow with filter
14
+ exports.lowerWithFilter = hatchet_client_1.hatchet.workflow({
15
+ name: 'lower',
16
+ // 👀 Declare the event that will trigger the workflow
17
+ onEvents: ['simple-event:create'],
18
+ defaultFilters: [
19
+ {
20
+ expression: 'true',
21
+ scope: 'example-scope',
22
+ payload: {
23
+ mainCharacter: 'Anna',
24
+ supportingCharacter: 'Stiva',
25
+ location: 'Moscow',
26
+ },
27
+ },
28
+ ],
29
+ });
30
+ // !!
31
+ exports.lower.task({
32
+ name: 'lower',
33
+ fn: (input) => {
34
+ return {
35
+ TransformedMessage: input.Message.toLowerCase(),
36
+ };
37
+ },
38
+ });
39
+ exports.upper = hatchet_client_1.hatchet.workflow({
40
+ name: 'upper',
41
+ on: {
42
+ event: exports.SIMPLE_EVENT,
43
+ },
44
+ });
45
+ exports.upper.task({
46
+ name: 'upper',
47
+ fn: (input) => {
48
+ return {
49
+ TransformedMessage: input.Message.toUpperCase(),
50
+ };
51
+ },
52
+ });
53
+ // > Accessing the filter payload
54
+ exports.lowerWithFilter.task({
55
+ name: 'lowerWithFilter',
56
+ fn: (input, ctx) => {
57
+ console.log(ctx.filterPayload());
58
+ },
59
+ });
60
+ // !!
@@ -23,7 +23,7 @@ exports.child = hatchet_client_1.hatchet.task({
23
23
  });
24
24
  exports.parent = hatchet_client_1.hatchet.task({
25
25
  name: 'parent',
26
- timeout: '10m',
26
+ executionTimeout: '10m',
27
27
  fn: (input, ctx) => __awaiter(void 0, void 0, void 0, function* () {
28
28
  // lets generate large payload 1 mb
29
29
  const largePayload = new Array(1024 * 1024).fill('a').join('');
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ // eslint-disable-next-line import/no-extraneous-dependencies
16
+ const pino_1 = __importDefault(require("pino"));
17
+ const sdk_1 = __importDefault(require("../../../sdk"));
18
+ // > Create Pino logger
19
+ const logger = (0, pino_1.default)();
20
+ class PinoLogger {
21
+ constructor(context, logLevel = 'DEBUG') {
22
+ this.logLevel = logLevel;
23
+ this.context = context;
24
+ }
25
+ debug(message, extra) {
26
+ logger.debug(extra, message);
27
+ }
28
+ info(message, extra) {
29
+ logger.info(extra, message);
30
+ }
31
+ green(message, extra) {
32
+ logger.info(extra, `%c${message}`);
33
+ }
34
+ warn(message, error, extra) {
35
+ logger.warn(extra, `${message} ${error}`);
36
+ }
37
+ error(message, error, extra) {
38
+ logger.error(extra, `${message} ${error}`);
39
+ }
40
+ // optional util method
41
+ util(key, message, extra) {
42
+ // for example you may want to expose a trace method
43
+ if (key === 'trace') {
44
+ logger.info(extra, 'trace');
45
+ }
46
+ }
47
+ }
48
+ const hatchet = sdk_1.default.init({
49
+ log_level: 'DEBUG',
50
+ logger: (ctx, level) => new PinoLogger(ctx, level),
51
+ });
52
+ // !!
53
+ // > Use the logger
54
+ const workflow = hatchet.task({
55
+ name: 'byo-logger-example',
56
+ fn: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
57
+ // eslint-disable-next-line no-plusplus
58
+ for (let i = 0; i < 5; i++) {
59
+ logger.info(`log message ${i}`);
60
+ }
61
+ return { step1: 'completed step run' };
62
+ }),
63
+ });
64
+ // !!
65
+ function main() {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ const worker = yield hatchet.worker('byo-logger-worker', {
68
+ workflows: [workflow],
69
+ });
70
+ worker.start();
71
+ });
72
+ }
73
+ main();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const hatchet_client_1 = require("../hatchet-client");
13
+ const sleep = (ms) => new Promise((resolve) => {
14
+ setTimeout(resolve, ms);
15
+ });
16
+ // > Logger
17
+ const workflow = hatchet_client_1.hatchet.workflow({
18
+ name: 'logger-example',
19
+ description: 'test',
20
+ on: {
21
+ event: 'user:create',
22
+ },
23
+ });
24
+ workflow.task({
25
+ name: 'logger-step1',
26
+ fn: (_, ctx) => __awaiter(void 0, void 0, void 0, function* () {
27
+ // log in a for loop
28
+ // eslint-disable-next-line no-plusplus
29
+ for (let i = 0; i < 10; i++) {
30
+ ctx.logger.info(`log message ${i}`);
31
+ yield sleep(200);
32
+ }
33
+ return { step1: 'completed step run' };
34
+ }),
35
+ });
36
+ // !!
37
+ function main() {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const worker = yield hatchet_client_1.hatchet.worker('logger-worker', {
40
+ slots: 1,
41
+ workflows: [workflow],
42
+ });
43
+ yield worker.start();
44
+ });
45
+ }
46
+ main();
@@ -0,0 +1,2 @@
1
+ import type { HatchetClient } from '../..';
2
+ export declare function createLoggingWorkflow(client: HatchetClient): import("../..").WorkflowDeclaration<import("../..").UnknownInputType, {}, {}>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createLoggingWorkflow = createLoggingWorkflow;
13
+ function createLoggingWorkflow(client) {
14
+ const wf = client.workflow({ name: 'logging-workflow' });
15
+ wf.task({
16
+ name: 'root_logger',
17
+ fn: () => __awaiter(this, void 0, void 0, function* () {
18
+ for (let i = 0; i < 12; i += 1) {
19
+ console.info(`executed step1 - ${i}`);
20
+ console.info({ step1: 'step1' });
21
+ // keep this fast for e2e
22
+ }
23
+ return { status: 'success' };
24
+ }),
25
+ });
26
+ wf.task({
27
+ name: 'context_logger',
28
+ fn: (_input, ctx) => __awaiter(this, void 0, void 0, function* () {
29
+ for (let i = 0; i < 12; i += 1) {
30
+ // Python uses ctx.log; TS has both ctx.log (deprecated) and ctx.logger.*
31
+ yield ctx.log(`executed step1 - ${i}`);
32
+ yield ctx.log(JSON.stringify({ step1: 'step1' }));
33
+ }
34
+ return { status: 'success' };
35
+ }),
36
+ });
37
+ return wf;
38
+ }
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.multiConcurrency = void 0;
13
- const workflow_1 = require("../../../workflow");
13
+ const v1_1 = require("../..");
14
14
  const hatchet_client_1 = require("../hatchet-client");
15
15
  const sleep = (ms) => new Promise((resolve) => {
16
16
  setTimeout(resolve, ms);
@@ -21,12 +21,12 @@ exports.multiConcurrency = hatchet_client_1.hatchet.workflow({
21
21
  concurrency: [
22
22
  {
23
23
  maxRuns: 1,
24
- limitStrategy: workflow_1.ConcurrencyLimitStrategy.GROUP_ROUND_ROBIN,
24
+ limitStrategy: v1_1.ConcurrencyLimitStrategy.GROUP_ROUND_ROBIN,
25
25
  expression: 'input.GroupKey',
26
26
  },
27
27
  {
28
28
  maxRuns: 1,
29
- limitStrategy: workflow_1.ConcurrencyLimitStrategy.GROUP_ROUND_ROBIN,
29
+ limitStrategy: v1_1.ConcurrencyLimitStrategy.GROUP_ROUND_ROBIN,
30
30
  expression: 'input.UserId',
31
31
  },
32
32
  ],
@@ -1 +1,2 @@
1
+ export declare const ERROR_TEXT = "step1 failed";
1
2
  export declare const failureWorkflow: import("../..").WorkflowDeclaration<import("../..").UnknownInputType, {}, {}>;
@@ -9,25 +9,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.failureWorkflow = void 0;
12
+ exports.failureWorkflow = exports.ERROR_TEXT = void 0;
13
13
  /* eslint-disable no-console */
14
14
  const hatchet_client_1 = require("../hatchet-client");
15
+ exports.ERROR_TEXT = 'step1 failed';
15
16
  // > On Failure Task
17
+ // This workflow will fail because `step1` throws. We define an `onFailure` handler to run cleanup.
16
18
  exports.failureWorkflow = hatchet_client_1.hatchet.workflow({
17
- name: 'always-fail',
19
+ name: 'on-failure-workflow',
18
20
  });
19
21
  exports.failureWorkflow.task({
20
- name: 'always-fail',
22
+ name: 'step1',
23
+ executionTimeout: '1s',
21
24
  fn: () => __awaiter(void 0, void 0, void 0, function* () {
22
- throw new Error('intentional failure');
25
+ throw new Error(exports.ERROR_TEXT);
23
26
  }),
24
27
  });
28
+ // 👀 After the workflow fails, this special step will run
25
29
  exports.failureWorkflow.onFailure({
26
- name: 'on-failure',
27
- fn: (input, ctx) => __awaiter(void 0, void 0, void 0, function* () {
30
+ name: 'on_failure',
31
+ fn: (_input, ctx) => __awaiter(void 0, void 0, void 0, function* () {
28
32
  console.log('onFailure for run:', ctx.workflowRunId());
33
+ console.log('upstream errors:', ctx.errors());
29
34
  return {
30
- 'on-failure': 'success',
35
+ status: 'success',
31
36
  };
32
37
  }),
33
38
  });
@@ -26,7 +26,7 @@ exports.priority = hatchet_client_1.hatchet.task({
26
26
  // !!
27
27
  // > Task Priority in a Workflow
28
28
  exports.priorityWf = hatchet_client_1.hatchet.workflow({
29
- name: 'priorityWf',
29
+ name: 'priority-wf',
30
30
  defaultPriority: v1_1.Priority.LOW,
31
31
  });
32
32
  // !!
@@ -23,7 +23,7 @@ exports.retries = hatchet_client_1.hatchet.task({
23
23
  // !!
24
24
  // > Retries with Count
25
25
  exports.retriesWithCount = hatchet_client_1.hatchet.task({
26
- name: 'retriesWithCount',
26
+ name: 'retries-with-count',
27
27
  retries: 3,
28
28
  fn: (_, ctx) => __awaiter(void 0, void 0, void 0, function* () {
29
29
  // > Get the current retry count
@@ -40,7 +40,7 @@ exports.retriesWithCount = hatchet_client_1.hatchet.task({
40
40
  // !!
41
41
  // > Retries with Backoff
42
42
  exports.withBackoff = hatchet_client_1.hatchet.task({
43
- name: 'withBackoff',
43
+ name: 'with-backoff',
44
44
  retries: 10,
45
45
  backoff: {
46
46
  // 👀 Maximum number of seconds to wait between retries
@@ -0,0 +1,6 @@
1
+ export type ReturnExceptionsInput = {
2
+ index: number;
3
+ };
4
+ export declare const returnExceptionsTask: import("../..").TaskWorkflowDeclaration<ReturnExceptionsInput, {
5
+ message: string;
6
+ }, {}, {}, {}, {}>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.returnExceptionsTask = void 0;
13
+ const hatchet_client_1 = require("../hatchet-client");
14
+ exports.returnExceptionsTask = hatchet_client_1.hatchet.task({
15
+ name: 'return-exceptions-task',
16
+ fn: (input) => __awaiter(void 0, void 0, void 0, function* () {
17
+ if (input.index % 2 === 0) {
18
+ throw new Error(`error in task with index ${input.index}`);
19
+ }
20
+ return { message: 'this is a successful task.' };
21
+ }),
22
+ });
@@ -0,0 +1,4 @@
1
+ export type MockInput = {
2
+ foo: string;
3
+ };
4
+ export declare const runDetailTestWorkflow: import("../..").WorkflowDeclaration<MockInput, {}, {}>;