@hatchet-dev/typescript-sdk 0.10.1 → 0.12.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.
- package/clients/admin/admin-client.d.ts +1 -0
- package/clients/dispatcher/dispatcher-client.d.ts +3 -0
- package/clients/dispatcher/dispatcher-client.js +20 -1
- package/clients/hatchet-client/hatchet-client.d.ts +2 -2
- package/clients/hatchet-client/hatchet-client.js +11 -4
- package/clients/listener/listener-client.d.ts +10 -4
- package/clients/listener/listener-client.js +45 -13
- package/clients/worker/worker.d.ts +12 -0
- package/clients/worker/worker.js +54 -2
- package/examples/affinity-workers.d.ts +1 -0
- package/examples/affinity-workers.js +93 -0
- package/examples/api.d.ts +1 -0
- package/examples/api.js +61 -0
- package/examples/concurrency/cancel-in-progress/concurrency-event.d.ts +1 -0
- package/examples/concurrency/cancel-in-progress/concurrency-event.js +37 -0
- package/examples/concurrency/cancel-in-progress/concurrency-worker.d.ts +1 -0
- package/examples/concurrency/cancel-in-progress/concurrency-worker.js +66 -0
- package/examples/concurrency/group-round-robin/concurrency-event.d.ts +1 -0
- package/examples/concurrency/group-round-robin/concurrency-event.js +35 -0
- package/examples/concurrency/group-round-robin/concurrency-worker.d.ts +1 -0
- package/examples/concurrency/group-round-robin/concurrency-worker.js +61 -0
- package/examples/dag-worker.d.ts +1 -0
- package/examples/dag-worker.js +76 -0
- package/examples/example-event-with-results.d.ts +1 -0
- package/examples/example-event-with-results.js +50 -0
- package/examples/example-event.d.ts +1 -0
- package/examples/example-event.js +10 -0
- package/examples/fanout-worker.d.ts +1 -0
- package/examples/fanout-worker.js +69 -0
- package/examples/logger.d.ts +1 -0
- package/examples/logger.js +50 -0
- package/examples/manual-trigger.d.ts +1 -0
- package/examples/manual-trigger.js +46 -0
- package/examples/multi-workflow.d.ts +1 -0
- package/examples/multi-workflow.js +55 -0
- package/examples/namespaced-worker.d.ts +1 -0
- package/examples/namespaced-worker.js +56 -0
- package/examples/on-failure.d.ts +1 -0
- package/examples/on-failure.js +53 -0
- package/examples/playground.d.ts +1 -0
- package/examples/playground.js +39 -0
- package/examples/rate-limit/events.d.ts +1 -0
- package/examples/rate-limit/events.js +16 -0
- package/examples/rate-limit/worker.d.ts +1 -0
- package/examples/rate-limit/worker.js +43 -0
- package/examples/retries-worker.d.ts +1 -0
- package/examples/retries-worker.js +60 -0
- package/examples/simple-worker.d.ts +1 -0
- package/examples/simple-worker.js +55 -0
- package/examples/sticky-worker.d.ts +1 -0
- package/examples/sticky-worker.js +73 -0
- package/examples/stream-by-additional-meta.d.ts +1 -0
- package/examples/stream-by-additional-meta.js +55 -0
- package/package.json +24 -21
- package/protoc/dispatcher/dispatcher.d.ts +109 -2
- package/protoc/dispatcher/dispatcher.js +518 -17
- package/protoc/events/events.d.ts +1 -1
- package/protoc/events/events.js +0 -5
- package/protoc/google/protobuf/timestamp.js +0 -8
- package/protoc/workflows/workflows.d.ts +82 -1
- package/protoc/workflows/workflows.js +404 -9
- package/step.d.ts +79 -2
- package/step.js +90 -3
- package/util/workflow-run-ref.d.ts +3 -0
- package/util/workflow-run-ref.js +21 -4
- package/workflow.d.ts +116 -1
- package/workflow.js +6 -1
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init();
|
|
17
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
18
|
+
setTimeout(resolve, ms);
|
|
19
|
+
});
|
|
20
|
+
const workflow = {
|
|
21
|
+
id: 'concurrency-example',
|
|
22
|
+
description: 'test',
|
|
23
|
+
on: {
|
|
24
|
+
event: 'concurrency:create',
|
|
25
|
+
},
|
|
26
|
+
concurrency: {
|
|
27
|
+
name: 'user-concurrency',
|
|
28
|
+
key: (ctx) => ctx.workflowInput().userId,
|
|
29
|
+
},
|
|
30
|
+
steps: [
|
|
31
|
+
{
|
|
32
|
+
name: 'step1',
|
|
33
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
const { data } = ctx.workflowInput();
|
|
35
|
+
const { signal } = ctx.controller;
|
|
36
|
+
if (signal.aborted)
|
|
37
|
+
throw new Error('step1 was aborted');
|
|
38
|
+
console.log('starting step1 and waiting 5 seconds...', data);
|
|
39
|
+
yield sleep(5000);
|
|
40
|
+
if (signal.aborted)
|
|
41
|
+
throw new Error('step1 was aborted');
|
|
42
|
+
// NOTE: the AbortController signal can be passed to many http libraries to cancel active requests
|
|
43
|
+
// fetch(url, { signal })
|
|
44
|
+
// axios.get(url, { signal })
|
|
45
|
+
console.log('executed step1!');
|
|
46
|
+
return { step1: `step1 results for ${data}!` };
|
|
47
|
+
}),
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'step2',
|
|
51
|
+
parents: ['step1'],
|
|
52
|
+
run: (ctx) => {
|
|
53
|
+
console.log('executed step2 after step1 returned ', ctx.stepOutput('step1'));
|
|
54
|
+
return { step2: 'step2 results!' };
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
function main() {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const worker = yield hatchet.worker('example-worker');
|
|
62
|
+
yield worker.registerWorkflow(workflow);
|
|
63
|
+
worker.start();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init();
|
|
17
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
18
|
+
setTimeout(resolve, ms);
|
|
19
|
+
});
|
|
20
|
+
function main() {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
// eslint-disable-next-line no-plusplus
|
|
23
|
+
for (let i = 0; i < 20; i++) {
|
|
24
|
+
let group = 0;
|
|
25
|
+
if (i > 10) {
|
|
26
|
+
group = 1;
|
|
27
|
+
}
|
|
28
|
+
hatchet.event.push('concurrency:create', {
|
|
29
|
+
data: `event ${i}`,
|
|
30
|
+
group,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
16
|
+
const workflow_1 = require("../../../workflow");
|
|
17
|
+
const hatchet = sdk_1.default.init();
|
|
18
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
19
|
+
setTimeout(resolve, ms);
|
|
20
|
+
});
|
|
21
|
+
const workflow = {
|
|
22
|
+
id: 'concurrency-example-rr',
|
|
23
|
+
description: 'test',
|
|
24
|
+
on: {
|
|
25
|
+
event: 'concurrency:create',
|
|
26
|
+
},
|
|
27
|
+
concurrency: {
|
|
28
|
+
name: 'user-concurrency',
|
|
29
|
+
key: (ctx) => ctx.workflowInput().group,
|
|
30
|
+
maxRuns: 2,
|
|
31
|
+
limitStrategy: workflow_1.ConcurrencyLimitStrategy.GROUP_ROUND_ROBIN,
|
|
32
|
+
},
|
|
33
|
+
steps: [
|
|
34
|
+
{
|
|
35
|
+
name: 'step1',
|
|
36
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const { data } = ctx.workflowInput();
|
|
38
|
+
const { signal } = ctx.controller;
|
|
39
|
+
if (signal.aborted)
|
|
40
|
+
throw new Error('step1 was aborted');
|
|
41
|
+
console.log('starting step1 and waiting 5 seconds...', data);
|
|
42
|
+
yield sleep(2000);
|
|
43
|
+
if (signal.aborted)
|
|
44
|
+
throw new Error('step1 was aborted');
|
|
45
|
+
// NOTE: the AbortController signal can be passed to many http libraries to cancel active requests
|
|
46
|
+
// fetch(url, { signal })
|
|
47
|
+
// axios.get(url, { signal })
|
|
48
|
+
console.log('executed step1!');
|
|
49
|
+
return { step1: `step1 results for ${data}!` };
|
|
50
|
+
}),
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
function main() {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const worker = yield hatchet.worker('example-worker');
|
|
57
|
+
yield worker.registerWorkflow(workflow);
|
|
58
|
+
worker.start();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init({
|
|
17
|
+
log_level: 'OFF',
|
|
18
|
+
});
|
|
19
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
20
|
+
setTimeout(resolve, ms);
|
|
21
|
+
});
|
|
22
|
+
const workflow = {
|
|
23
|
+
id: 'dag-example',
|
|
24
|
+
description: 'test',
|
|
25
|
+
on: {
|
|
26
|
+
event: 'user:create',
|
|
27
|
+
},
|
|
28
|
+
steps: [
|
|
29
|
+
{
|
|
30
|
+
name: 'dag-step1',
|
|
31
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
console.log('executed step1!');
|
|
33
|
+
yield sleep(5000);
|
|
34
|
+
return { step1: 'step1' };
|
|
35
|
+
}),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'dag-step2',
|
|
39
|
+
parents: ['dag-step1'],
|
|
40
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
console.log('executed step2!');
|
|
42
|
+
yield sleep(5000);
|
|
43
|
+
return { step2: 'step2' };
|
|
44
|
+
}),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'dag-step3',
|
|
48
|
+
parents: ['dag-step1', 'dag-step2'],
|
|
49
|
+
run: (ctx) => {
|
|
50
|
+
console.log('executed step3!');
|
|
51
|
+
return { step3: 'step3' };
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'dag-step4',
|
|
56
|
+
parents: ['dag-step1', 'dag-step3'],
|
|
57
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
yield sleep(5000);
|
|
59
|
+
// simulate a really slow network call
|
|
60
|
+
setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
yield sleep(1000);
|
|
62
|
+
ctx.playground('slow', 'call');
|
|
63
|
+
}), 5000);
|
|
64
|
+
return { step4: 'step4' };
|
|
65
|
+
}),
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
function main() {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const worker = yield hatchet.worker('example-worker', 1);
|
|
72
|
+
yield worker.registerWorkflow(workflow);
|
|
73
|
+
worker.start();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
23
|
+
function main() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
var _a, e_1, _b, _c;
|
|
26
|
+
const hatchet = sdk_1.default.init();
|
|
27
|
+
const ref = yield hatchet.admin.runWorkflow('simple-workflow', {
|
|
28
|
+
test: 'test',
|
|
29
|
+
});
|
|
30
|
+
const listener = yield hatchet.listener.stream(yield ref.getWorkflowRunId());
|
|
31
|
+
console.log('listening for events');
|
|
32
|
+
try {
|
|
33
|
+
for (var _d = true, listener_1 = __asyncValues(listener), listener_1_1; listener_1_1 = yield listener_1.next(), _a = listener_1_1.done, !_a; _d = true) {
|
|
34
|
+
_c = listener_1_1.value;
|
|
35
|
+
_d = false;
|
|
36
|
+
const event = _c;
|
|
37
|
+
console.log('event received', event);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
41
|
+
finally {
|
|
42
|
+
try {
|
|
43
|
+
if (!_d && !_a && (_b = listener_1.return)) yield _b.call(listener_1);
|
|
44
|
+
}
|
|
45
|
+
finally { if (e_1) throw e_1.error; }
|
|
46
|
+
}
|
|
47
|
+
console.log('done listening for events');
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
7
|
+
const hatchet = sdk_1.default.init();
|
|
8
|
+
hatchet.event.push('user:create', {
|
|
9
|
+
test: 'test',
|
|
10
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init();
|
|
17
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
18
|
+
setTimeout(resolve, ms);
|
|
19
|
+
});
|
|
20
|
+
const parentWorkflow = {
|
|
21
|
+
id: 'parent-workflow',
|
|
22
|
+
description: 'simple example for spawning child workflows',
|
|
23
|
+
on: {
|
|
24
|
+
event: 'fanout:create',
|
|
25
|
+
},
|
|
26
|
+
steps: [
|
|
27
|
+
{
|
|
28
|
+
name: 'parent-spawn',
|
|
29
|
+
timeout: '10s',
|
|
30
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
ctx.putStream('spawning children');
|
|
32
|
+
const promises = Array.from({ length: 7 }, (_, i) => ctx.spawnWorkflow('child-workflow', { input: `child-input-${i}` }).result());
|
|
33
|
+
const results = yield Promise.all(promises);
|
|
34
|
+
console.log('spawned workflow results:', results);
|
|
35
|
+
console.log('number of spawned workflows:', results.length);
|
|
36
|
+
return { spawned: results };
|
|
37
|
+
}),
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
const childWorkflow = {
|
|
42
|
+
id: 'child-workflow',
|
|
43
|
+
description: 'simple example for spawning child workflows',
|
|
44
|
+
on: {
|
|
45
|
+
event: 'fanout:create',
|
|
46
|
+
},
|
|
47
|
+
steps: [
|
|
48
|
+
{
|
|
49
|
+
name: 'child-work',
|
|
50
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
const { input } = ctx.workflowInput();
|
|
52
|
+
ctx.putStream('child running...');
|
|
53
|
+
yield sleep(10);
|
|
54
|
+
// throw new Error('child error');
|
|
55
|
+
console.log('child workflow input:', input);
|
|
56
|
+
return { 'child-output': 'results' };
|
|
57
|
+
}),
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
function main() {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const worker = yield hatchet.worker('fanout-worker');
|
|
64
|
+
yield worker.registerWorkflow(parentWorkflow);
|
|
65
|
+
yield worker.registerWorkflow(childWorkflow);
|
|
66
|
+
worker.start();
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init({
|
|
17
|
+
log_level: 'OFF',
|
|
18
|
+
});
|
|
19
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
20
|
+
setTimeout(resolve, ms);
|
|
21
|
+
});
|
|
22
|
+
const workflow = {
|
|
23
|
+
id: 'logger-example',
|
|
24
|
+
description: 'test',
|
|
25
|
+
on: {
|
|
26
|
+
event: 'user:create',
|
|
27
|
+
},
|
|
28
|
+
steps: [
|
|
29
|
+
{
|
|
30
|
+
name: 'logger-step1',
|
|
31
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
// log in a for loop
|
|
33
|
+
// eslint-disable-next-line no-plusplus
|
|
34
|
+
for (let i = 0; i < 10; i++) {
|
|
35
|
+
ctx.log(`log message ${i}`);
|
|
36
|
+
yield sleep(200);
|
|
37
|
+
}
|
|
38
|
+
return { step1: 'completed step run' };
|
|
39
|
+
}),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
function main() {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const worker = yield hatchet.worker('logger-worker', 1);
|
|
46
|
+
yield worker.registerWorkflow(workflow);
|
|
47
|
+
worker.start();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
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
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
23
|
+
const hatchet = sdk_1.default.init();
|
|
24
|
+
function main() {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
var _a, e_1, _b, _c;
|
|
27
|
+
const workflowRun = hatchet.admin.runWorkflow('simple-workflow', {});
|
|
28
|
+
const stream = yield workflowRun.stream();
|
|
29
|
+
try {
|
|
30
|
+
for (var _d = true, stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = yield stream_1.next(), _a = stream_1_1.done, !_a; _d = true) {
|
|
31
|
+
_c = stream_1_1.value;
|
|
32
|
+
_d = false;
|
|
33
|
+
const event = _c;
|
|
34
|
+
console.log('event received', event);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
38
|
+
finally {
|
|
39
|
+
try {
|
|
40
|
+
if (!_d && !_a && (_b = stream_1.return)) yield _b.call(stream_1);
|
|
41
|
+
}
|
|
42
|
+
finally { if (e_1) throw e_1.error; }
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init();
|
|
17
|
+
function main() {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const worker = yield hatchet.worker('test-worker2', 5);
|
|
20
|
+
yield worker.registerWorkflow({
|
|
21
|
+
id: 'test1',
|
|
22
|
+
description: 'desc',
|
|
23
|
+
on: {
|
|
24
|
+
event: 'test1',
|
|
25
|
+
},
|
|
26
|
+
steps: [
|
|
27
|
+
{
|
|
28
|
+
name: 'test1-step1',
|
|
29
|
+
run: (ctx) => {
|
|
30
|
+
console.log('executed step1 of test1!');
|
|
31
|
+
return { step1: 'step1' };
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
});
|
|
36
|
+
yield worker.registerWorkflow({
|
|
37
|
+
id: 'test2',
|
|
38
|
+
description: 'desc',
|
|
39
|
+
on: {
|
|
40
|
+
event: 'test2',
|
|
41
|
+
},
|
|
42
|
+
steps: [
|
|
43
|
+
{
|
|
44
|
+
name: 'test2-step1',
|
|
45
|
+
run: (ctx) => {
|
|
46
|
+
console.log('executed step1 of test2!');
|
|
47
|
+
return { step1: 'step1' };
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
});
|
|
52
|
+
yield worker.start();
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
const sdk_1 = __importDefault(require("../sdk"));
|
|
16
|
+
const hatchet = sdk_1.default.init({
|
|
17
|
+
namespace: 'example-namespace',
|
|
18
|
+
});
|
|
19
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
20
|
+
setTimeout(resolve, ms);
|
|
21
|
+
});
|
|
22
|
+
const workflow = {
|
|
23
|
+
id: 'simple-workflow',
|
|
24
|
+
description: 'test',
|
|
25
|
+
on: {
|
|
26
|
+
event: 'user:create',
|
|
27
|
+
},
|
|
28
|
+
steps: [
|
|
29
|
+
{
|
|
30
|
+
name: 'step1',
|
|
31
|
+
run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
console.log('starting step1 with the following input', ctx.workflowInput());
|
|
33
|
+
console.log('waiting 5 seconds...');
|
|
34
|
+
yield sleep(5000);
|
|
35
|
+
console.log('executed step1!');
|
|
36
|
+
return { step1: 'step1 results!' };
|
|
37
|
+
}),
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'step2',
|
|
41
|
+
parents: ['step1'],
|
|
42
|
+
run: (ctx) => {
|
|
43
|
+
console.log('executed step2 after step1 returned ', ctx.stepOutput('step1'));
|
|
44
|
+
return { step2: 'step2 results!' };
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
function main() {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const worker = yield hatchet.worker('example-worker');
|
|
52
|
+
yield worker.registerWorkflow(workflow);
|
|
53
|
+
worker.start();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|