@sayiir/flow-js 0.5.0-rc1
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/LICENSE +21 -0
- package/README.md +44 -0
- package/dist/duration.d.ts +15 -0
- package/dist/duration.d.ts.map +1 -0
- package/dist/duration.js +29 -0
- package/dist/duration.js.map +1 -0
- package/dist/flow.d.ts +231 -0
- package/dist/flow.d.ts.map +1 -0
- package/dist/flow.js +410 -0
- package/dist/flow.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +66 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +9 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/task.d.ts +29 -0
- package/dist/task.d.ts.map +1 -0
- package/dist/task.js +103 -0
- package/dist/task.js.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +40 -0
- package/dist/types.js.map +1 -0
- package/package.json +60 -0
package/dist/task.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Task definition for workflow steps.
|
|
4
|
+
*
|
|
5
|
+
* The `task()` function wraps a function with metadata (id, timeout, retries)
|
|
6
|
+
* and optionally Zod schemas for input/output validation. The Flow builder
|
|
7
|
+
* reads these properties when constructing workflows.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.task = task;
|
|
11
|
+
const duration_js_1 = require("./duration.js");
|
|
12
|
+
/**
|
|
13
|
+
* Define a named task with optional configuration.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const getUser = task("get-user", async (id: number) => {
|
|
17
|
+
* return await db.getUser(id);
|
|
18
|
+
* }, { timeout: "30s", retries: 3 });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
function task(id, fn, opts) {
|
|
22
|
+
const metadata = buildMetadata(id, opts);
|
|
23
|
+
// Wrap the function with optional Zod validation
|
|
24
|
+
const wrapped = wrapWithValidation(fn, opts?.input, opts?.output);
|
|
25
|
+
// Brand the function as a TaskFn
|
|
26
|
+
const taskFn = wrapped;
|
|
27
|
+
Object.defineProperties(taskFn, {
|
|
28
|
+
_taskId: { value: id, enumerable: false },
|
|
29
|
+
_metadata: { value: metadata, enumerable: false },
|
|
30
|
+
_inputSchema: { value: opts?.input, enumerable: false },
|
|
31
|
+
_outputSchema: { value: opts?.output, enumerable: false },
|
|
32
|
+
_rawFn: { value: fn, enumerable: false },
|
|
33
|
+
});
|
|
34
|
+
return taskFn;
|
|
35
|
+
}
|
|
36
|
+
/** Build metadata from task options. */
|
|
37
|
+
function buildMetadata(id, opts) {
|
|
38
|
+
const metadata = {
|
|
39
|
+
displayName: id,
|
|
40
|
+
description: opts?.description,
|
|
41
|
+
tags: opts?.tags,
|
|
42
|
+
};
|
|
43
|
+
if (opts?.timeout != null) {
|
|
44
|
+
metadata.timeoutSecs = (0, duration_js_1.parseDuration)(opts.timeout) / 1000;
|
|
45
|
+
}
|
|
46
|
+
if (opts?.retry) {
|
|
47
|
+
metadata.retries = buildRetryPolicy(opts.retry);
|
|
48
|
+
}
|
|
49
|
+
else if (opts?.retries != null) {
|
|
50
|
+
metadata.retries = {
|
|
51
|
+
maxRetries: opts.retries,
|
|
52
|
+
initialDelaySecs: 1.0,
|
|
53
|
+
backoffMultiplier: 2.0,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (opts?.priority != null) {
|
|
57
|
+
if (opts.priority < 1 || opts.priority > 5) {
|
|
58
|
+
throw new RangeError(`priority must be between 1 and 5, got ${opts.priority}`);
|
|
59
|
+
}
|
|
60
|
+
metadata.priority = opts.priority;
|
|
61
|
+
}
|
|
62
|
+
if (opts?.tags != null) {
|
|
63
|
+
if (opts.tags.length > 20) {
|
|
64
|
+
throw new RangeError(`too many tags: ${opts.tags.length} (max 20)`);
|
|
65
|
+
}
|
|
66
|
+
for (const tag of opts.tags) {
|
|
67
|
+
if (!tag) {
|
|
68
|
+
throw new RangeError("tags must not contain empty strings");
|
|
69
|
+
}
|
|
70
|
+
if (tag.length > 64) {
|
|
71
|
+
throw new RangeError(`tag too long: '${tag}' (${tag.length} chars, max 64)`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return metadata;
|
|
76
|
+
}
|
|
77
|
+
/** Convert a RetryPolicy to the config format. */
|
|
78
|
+
function buildRetryPolicy(policy) {
|
|
79
|
+
return {
|
|
80
|
+
maxRetries: policy.maxAttempts,
|
|
81
|
+
initialDelaySecs: (0, duration_js_1.parseDuration)(policy.initialDelay) / 1000,
|
|
82
|
+
backoffMultiplier: policy.backoffMultiplier ?? 2.0,
|
|
83
|
+
maxDelaySecs: policy.maxDelay != null ? (0, duration_js_1.parseDuration)(policy.maxDelay) / 1000 : undefined,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** Wrap a function with optional Zod validation. */
|
|
87
|
+
function wrapWithValidation(fn, inputSchema, outputSchema) {
|
|
88
|
+
if (!inputSchema && !outputSchema) {
|
|
89
|
+
return fn;
|
|
90
|
+
}
|
|
91
|
+
return (input) => {
|
|
92
|
+
const validated = inputSchema ? inputSchema.parse(input) : input;
|
|
93
|
+
const result = fn(validated);
|
|
94
|
+
if (!outputSchema)
|
|
95
|
+
return result;
|
|
96
|
+
// Handle both sync and async results
|
|
97
|
+
if (result instanceof Promise) {
|
|
98
|
+
return result.then((v) => outputSchema.parse(v));
|
|
99
|
+
}
|
|
100
|
+
return outputSchema.parse(result);
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=task.js.map
|
package/dist/task.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for the Sayiir workflow engine.
|
|
3
|
+
*/
|
|
4
|
+
/** Duration as milliseconds (number) or human-readable string parsed by `ms` (e.g. "30s", "5m", "1h"). */
|
|
5
|
+
export type Duration = string | number;
|
|
6
|
+
/** Retry policy for task execution. */
|
|
7
|
+
export interface RetryPolicy {
|
|
8
|
+
maxAttempts: number;
|
|
9
|
+
initialDelay: Duration;
|
|
10
|
+
backoffMultiplier?: number;
|
|
11
|
+
maxDelay?: Duration;
|
|
12
|
+
}
|
|
13
|
+
/** Task options for configuring step behavior. */
|
|
14
|
+
export interface TaskOptions<TIn = any, TOut = unknown> {
|
|
15
|
+
timeout?: Duration;
|
|
16
|
+
retries?: number;
|
|
17
|
+
retry?: RetryPolicy;
|
|
18
|
+
description?: string;
|
|
19
|
+
tags?: string[];
|
|
20
|
+
priority?: number;
|
|
21
|
+
input?: ZodLike<TIn>;
|
|
22
|
+
output?: ZodLike<TOut>;
|
|
23
|
+
}
|
|
24
|
+
/** Step options for inline `.then()` steps. */
|
|
25
|
+
export interface StepOptions {
|
|
26
|
+
timeout?: Duration;
|
|
27
|
+
retries?: number;
|
|
28
|
+
retry?: RetryPolicy;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A task callback: receives input data and returns output (sync or async).
|
|
32
|
+
*
|
|
33
|
+
* Used internally in registries and native bindings wherever a
|
|
34
|
+
* task function reference is stored.
|
|
35
|
+
*/
|
|
36
|
+
export type TaskCallback = (input: any) => unknown | Promise<unknown>;
|
|
37
|
+
/** Minimal Zod-like schema interface (avoids hard dependency). */
|
|
38
|
+
export interface ZodLike<T = any> {
|
|
39
|
+
parse(data: unknown): T;
|
|
40
|
+
_output: T;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Discriminated union for workflow status.
|
|
44
|
+
* Enables TypeScript narrowing: `if (status.status === "completed") { status.output }`
|
|
45
|
+
*/
|
|
46
|
+
export type WorkflowStatus<TOut = unknown> = {
|
|
47
|
+
status: "completed";
|
|
48
|
+
output: TOut;
|
|
49
|
+
} | {
|
|
50
|
+
status: "in_progress";
|
|
51
|
+
} | {
|
|
52
|
+
status: "failed";
|
|
53
|
+
error: string;
|
|
54
|
+
} | {
|
|
55
|
+
status: "cancelled";
|
|
56
|
+
reason?: string;
|
|
57
|
+
cancelledBy?: string;
|
|
58
|
+
} | {
|
|
59
|
+
status: "paused";
|
|
60
|
+
reason?: string;
|
|
61
|
+
pausedBy?: string;
|
|
62
|
+
} | {
|
|
63
|
+
status: "waiting";
|
|
64
|
+
wakeAt: string;
|
|
65
|
+
delayId: string;
|
|
66
|
+
} | {
|
|
67
|
+
status: "awaiting_signal";
|
|
68
|
+
signalId: string;
|
|
69
|
+
signalName: string;
|
|
70
|
+
wakeAt?: string;
|
|
71
|
+
};
|
|
72
|
+
/** Error classes */
|
|
73
|
+
export declare class WorkflowError extends Error {
|
|
74
|
+
constructor(message: string);
|
|
75
|
+
}
|
|
76
|
+
export declare class TaskError extends WorkflowError {
|
|
77
|
+
constructor(message: string);
|
|
78
|
+
}
|
|
79
|
+
export declare class BackendError extends WorkflowError {
|
|
80
|
+
constructor(message: string);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Result from a loop body task.
|
|
84
|
+
*
|
|
85
|
+
* Return `LoopResult.again(value)` to continue iterating,
|
|
86
|
+
* or `LoopResult.done(value)` to exit the loop.
|
|
87
|
+
*
|
|
88
|
+
* Serializes as `{ _loop: "again"|"done", value: ... }` matching the
|
|
89
|
+
* Rust `LoopResult<T>` serde format.
|
|
90
|
+
*/
|
|
91
|
+
export type LoopResult<T> = {
|
|
92
|
+
_loop: "again";
|
|
93
|
+
value: T;
|
|
94
|
+
} | {
|
|
95
|
+
_loop: "done";
|
|
96
|
+
value: T;
|
|
97
|
+
};
|
|
98
|
+
/** Factory functions for creating `LoopResult` values. */
|
|
99
|
+
export declare const LoopResult: {
|
|
100
|
+
/** Continue the loop with a new value. */
|
|
101
|
+
readonly again: <T>(value: T) => LoopResult<T>;
|
|
102
|
+
/** Exit the loop with a final value. */
|
|
103
|
+
readonly done: <T>(value: T) => LoopResult<T>;
|
|
104
|
+
};
|
|
105
|
+
/** Policy for when max iterations is reached. */
|
|
106
|
+
export type MaxIterationsPolicy = "fail" | "exit_with_last";
|
|
107
|
+
/** Options for a loop step. */
|
|
108
|
+
export interface LoopOptions {
|
|
109
|
+
/** Maximum number of iterations (default: 10). */
|
|
110
|
+
maxIterations?: number;
|
|
111
|
+
/** What to do when max iterations is reached (default: "fail"). */
|
|
112
|
+
onMax?: MaxIterationsPolicy;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Core type definitions for the Sayiir workflow engine.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LoopResult = exports.BackendError = exports.TaskError = exports.WorkflowError = void 0;
|
|
7
|
+
/** Error classes */
|
|
8
|
+
class WorkflowError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "WorkflowError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.WorkflowError = WorkflowError;
|
|
15
|
+
class TaskError extends WorkflowError {
|
|
16
|
+
constructor(message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = "TaskError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.TaskError = TaskError;
|
|
22
|
+
class BackendError extends WorkflowError {
|
|
23
|
+
constructor(message) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "BackendError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.BackendError = BackendError;
|
|
29
|
+
/** Factory functions for creating `LoopResult` values. */
|
|
30
|
+
exports.LoopResult = {
|
|
31
|
+
/** Continue the loop with a new value. */
|
|
32
|
+
again(value) {
|
|
33
|
+
return { _loop: "again", value };
|
|
34
|
+
},
|
|
35
|
+
/** Exit the loop with a final value. */
|
|
36
|
+
done(value) {
|
|
37
|
+
return { _loop: "done", value };
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAgEH,oBAAoB;AACpB,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,SAAU,SAAQ,aAAa;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AALD,8BAKC;AAED,MAAa,YAAa,SAAQ,aAAa;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAaD,0DAA0D;AAC7C,QAAA,UAAU,GAAG;IACxB,0CAA0C;IAC1C,KAAK,CAAI,KAAQ;QACf,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IACD,wCAAwC;IACxC,IAAI,CAAI,KAAQ;QACd,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;CACO,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sayiir/flow-js",
|
|
3
|
+
"version": "0.5.0-rc1",
|
|
4
|
+
"description": "Pure TypeScript workflow builder DSL for Sayiir — no native dependencies",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"LICENSE",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"ms": "^2.1.3"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"zod": "^3.0.0"
|
|
23
|
+
},
|
|
24
|
+
"peerDependenciesMeta": {
|
|
25
|
+
"zod": {
|
|
26
|
+
"optional": true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/ms": "^2.1.0",
|
|
31
|
+
"typescript": "^5.9.3"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18"
|
|
35
|
+
},
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"homepage": "https://docs.sayiir.dev",
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/sayiir/sayiir/issues"
|
|
40
|
+
},
|
|
41
|
+
"author": "Sayiir",
|
|
42
|
+
"keywords": [
|
|
43
|
+
"workflow",
|
|
44
|
+
"durable",
|
|
45
|
+
"orchestration",
|
|
46
|
+
"task",
|
|
47
|
+
"typescript",
|
|
48
|
+
"builder",
|
|
49
|
+
"dsl"
|
|
50
|
+
],
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/sayiir/sayiir"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build:ts": "tsc",
|
|
57
|
+
"build": "pnpm run build:ts",
|
|
58
|
+
"typecheck": "tsc --noEmit"
|
|
59
|
+
}
|
|
60
|
+
}
|