@pgflow/dsl 0.5.1 → 0.5.3
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/dist/CHANGELOG.md +85 -0
- package/dist/compile-flow.d.ts.map +1 -1
- package/dist/compile-flow.js +3 -0
- package/dist/dsl.d.ts +5 -2
- package/dist/dsl.d.ts.map +1 -1
- package/dist/dsl.js +2 -0
- package/dist/package.json +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +7 -1
- package/package.json +1 -1
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,90 @@
|
|
|
1
1
|
# @pgflow/dsl
|
|
2
2
|
|
|
3
|
+
## 0.5.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- af787ff: Add `startDelay` option for workflow steps
|
|
8
|
+
|
|
9
|
+
Introduces the ability to delay a step's **initial execution** by a specified number of seconds, enabling multi-day workflows and scheduled tasks within pgflow.
|
|
10
|
+
|
|
11
|
+
**Important**: `startDelay` only applies to the first execution attempt. Retries use the standard exponential backoff mechanism based on `baseDelay`, not `startDelay`.
|
|
12
|
+
|
|
13
|
+
### Core Changes (@pgflow/core)
|
|
14
|
+
|
|
15
|
+
- Added `opt_start_delay` column (integer, nullable, CHECK >= 0) to `pgflow.steps` table
|
|
16
|
+
- Updated `add_step` function to accept and validate the new `start_delay` parameter
|
|
17
|
+
- Modified `start_ready_steps` to schedule initial task execution with delay via `pgmq.send(queue, message, delay)`
|
|
18
|
+
- Requires pgmq >= 0.40 for delay support
|
|
19
|
+
- Migration: `20250707210212_pgflow_add_opt_start_delay.sql`
|
|
20
|
+
- Added comprehensive PgTAP tests for validation and scheduling behavior
|
|
21
|
+
|
|
22
|
+
### DSL Changes (@pgflow/dsl)
|
|
23
|
+
|
|
24
|
+
- Extended `StepOptions` and `StepRuntimeOptions` interfaces with optional `startDelay` (in seconds)
|
|
25
|
+
- Updated `compileFlow()` to emit `start_delay => value` in generated SQL
|
|
26
|
+
- Added validation: `startDelay` is only allowed at step level, not flow level (prevents cascading delays)
|
|
27
|
+
- Valid range: 0 to 2,147,483,647 seconds (~68 years)
|
|
28
|
+
- Added unit tests for compilation and validation
|
|
29
|
+
|
|
30
|
+
### Documentation Updates (@pgflow/website)
|
|
31
|
+
|
|
32
|
+
- Added `startDelay` section in configuration guide with detailed explanation
|
|
33
|
+
- Created multi-day workflow example (onboarding email sequence)
|
|
34
|
+
- Updated "Update Flow Options" to include `opt_start_delay`
|
|
35
|
+
- Enhanced VS comparison pages to mention "Native step delays" capability
|
|
36
|
+
- Documented why `startDelay` is step-level only
|
|
37
|
+
|
|
38
|
+
### Example Usage
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
new Flow({
|
|
42
|
+
slug: 'user_onboarding',
|
|
43
|
+
maxAttempts: 3,
|
|
44
|
+
baseDelay: 5, // Retry delay (not initial delay)
|
|
45
|
+
timeout: 60,
|
|
46
|
+
})
|
|
47
|
+
.step(
|
|
48
|
+
{
|
|
49
|
+
slug: 'send_welcome_email',
|
|
50
|
+
// Executes immediately when step becomes ready
|
|
51
|
+
},
|
|
52
|
+
sendWelcomeHandler
|
|
53
|
+
)
|
|
54
|
+
.step(
|
|
55
|
+
{
|
|
56
|
+
slug: 'send_day_3_tips',
|
|
57
|
+
startDelay: 259200, // Wait 3 days before first execution
|
|
58
|
+
timeout: 120,
|
|
59
|
+
},
|
|
60
|
+
sendTipsHandler
|
|
61
|
+
)
|
|
62
|
+
.step(
|
|
63
|
+
{
|
|
64
|
+
slug: 'send_week_review',
|
|
65
|
+
startDelay: 604800, // Wait 7 days after dependencies complete
|
|
66
|
+
timeout: 120,
|
|
67
|
+
},
|
|
68
|
+
sendReviewHandler
|
|
69
|
+
);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Use Cases
|
|
73
|
+
|
|
74
|
+
- **Multi-day workflows**: Onboarding sequences, follow-up reminders
|
|
75
|
+
- **Scheduled notifications**: Send reports or alerts at specific intervals
|
|
76
|
+
- **Rate limiting**: Enforce minimum time between API calls
|
|
77
|
+
- **Compliance delays**: Cooling-off periods before actions
|
|
78
|
+
|
|
79
|
+
### Technical Notes
|
|
80
|
+
|
|
81
|
+
- Non-breaking, additive change (hence minor version bump)
|
|
82
|
+
- No changes required in `@pgflow/edge-worker` - delays handled by pgmq
|
|
83
|
+
- `startDelay` does not affect retry timing - only the initial execution
|
|
84
|
+
- Delays are reliable even across worker restarts (persisted in queue)
|
|
85
|
+
|
|
86
|
+
## 0.5.2
|
|
87
|
+
|
|
3
88
|
## 0.5.1
|
|
4
89
|
|
|
5
90
|
## 0.5.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-flow.d.ts","sourceRoot":"","sources":["../src/compile-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"compile-flow.d.ts","sourceRoot":"","sources":["../src/compile-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsC,MAAM,UAAU,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAyBnD"}
|
package/dist/compile-flow.js
CHANGED
|
@@ -38,5 +38,8 @@ function formatRuntimeOptions(options) {
|
|
|
38
38
|
if (options.timeout !== undefined) {
|
|
39
39
|
parts.push(`timeout => ${options.timeout}`);
|
|
40
40
|
}
|
|
41
|
+
if ('startDelay' in options && options.startDelay !== undefined) {
|
|
42
|
+
parts.push(`start_delay => ${options.startDelay}`);
|
|
43
|
+
}
|
|
41
44
|
return parts.length > 0 ? `, ${parts.join(', ')}` : '';
|
|
42
45
|
}
|
package/dist/dsl.d.ts
CHANGED
|
@@ -73,11 +73,14 @@ export interface RuntimeOptions {
|
|
|
73
73
|
baseDelay?: number;
|
|
74
74
|
timeout?: number;
|
|
75
75
|
}
|
|
76
|
+
export interface StepRuntimeOptions extends RuntimeOptions {
|
|
77
|
+
startDelay?: number;
|
|
78
|
+
}
|
|
76
79
|
export interface StepDefinition<TInput extends AnyInput, TOutput extends AnyOutput> {
|
|
77
80
|
slug: string;
|
|
78
81
|
handler: (input: TInput) => TOutput | Promise<TOutput>;
|
|
79
82
|
dependencies: string[];
|
|
80
|
-
options:
|
|
83
|
+
options: StepRuntimeOptions;
|
|
81
84
|
}
|
|
82
85
|
export declare class Flow<TFlowInput extends AnyInput = AnyInput, Steps extends AnySteps = EmptySteps, StepDependencies extends AnyDeps = EmptyDeps> {
|
|
83
86
|
/**
|
|
@@ -106,7 +109,7 @@ export declare class Flow<TFlowInput extends AnyInput = AnyInput, Steps extends
|
|
|
106
109
|
step<Slug extends string, Deps extends Extract<keyof Steps, string> = never, RetType extends AnyOutput = AnyOutput>(opts: Simplify<{
|
|
107
110
|
slug: Slug;
|
|
108
111
|
dependsOn?: Deps[];
|
|
109
|
-
} &
|
|
112
|
+
} & StepRuntimeOptions>, handler: (input: Simplify<{
|
|
110
113
|
run: TFlowInput;
|
|
111
114
|
} & {
|
|
112
115
|
[K in Deps]: K extends keyof Steps ? Steps[K] : never;
|
package/dist/dsl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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"}
|
package/dist/dsl.js
CHANGED
|
@@ -64,6 +64,8 @@ export class Flow {
|
|
|
64
64
|
options.baseDelay = opts.baseDelay;
|
|
65
65
|
if (opts.timeout !== undefined)
|
|
66
66
|
options.timeout = opts.timeout;
|
|
67
|
+
if (opts.startDelay !== undefined)
|
|
68
|
+
options.startDelay = opts.startDelay;
|
|
67
69
|
// Validate runtime options (optional for step level)
|
|
68
70
|
validateRuntimeOptions(options, { optional: true });
|
|
69
71
|
// Preserve the exact type of the handler
|
package/dist/package.json
CHANGED
package/dist/utils.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export interface ValidateRuntimeOptionsOpts {
|
|
|
21
21
|
* - maxAttempts should be >= 1
|
|
22
22
|
* - baseDelay should be >= 1
|
|
23
23
|
* - timeout should be >= 3
|
|
24
|
+
* - startDelay should be >= 0
|
|
24
25
|
*
|
|
25
26
|
* @param options The runtime options to validate
|
|
26
27
|
* @param opts Configuration options for validation
|
|
@@ -31,5 +32,6 @@ export declare function validateRuntimeOptions(options: {
|
|
|
31
32
|
maxAttempts?: number;
|
|
32
33
|
baseDelay?: number;
|
|
33
34
|
timeout?: number;
|
|
35
|
+
startDelay?: number;
|
|
34
36
|
}, opts?: ValidateRuntimeOptionsOpts): void;
|
|
35
37
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsB/C;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAsB/C;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5F,IAAI,GAAE,0BAAgD,GACrD,IAAI,CAiCN"}
|
package/dist/utils.js
CHANGED
|
@@ -31,6 +31,7 @@ export function validateSlug(slug) {
|
|
|
31
31
|
* - maxAttempts should be >= 1
|
|
32
32
|
* - baseDelay should be >= 1
|
|
33
33
|
* - timeout should be >= 3
|
|
34
|
+
* - startDelay should be >= 0
|
|
34
35
|
*
|
|
35
36
|
* @param options The runtime options to validate
|
|
36
37
|
* @param opts Configuration options for validation
|
|
@@ -38,7 +39,7 @@ export function validateSlug(slug) {
|
|
|
38
39
|
* @throws Error if any runtime option is invalid
|
|
39
40
|
*/
|
|
40
41
|
export function validateRuntimeOptions(options, opts = { optional: false }) {
|
|
41
|
-
const { maxAttempts, baseDelay, timeout } = options;
|
|
42
|
+
const { maxAttempts, baseDelay, timeout, startDelay } = options;
|
|
42
43
|
// If optional is true, skip validation for undefined/null values
|
|
43
44
|
if (maxAttempts !== undefined && maxAttempts !== null) {
|
|
44
45
|
if (maxAttempts < 1) {
|
|
@@ -64,4 +65,9 @@ export function validateRuntimeOptions(options, opts = { optional: false }) {
|
|
|
64
65
|
else if (!opts.optional) {
|
|
65
66
|
throw new Error('timeout is required');
|
|
66
67
|
}
|
|
68
|
+
if (startDelay !== undefined && startDelay !== null) {
|
|
69
|
+
if (startDelay < 0) {
|
|
70
|
+
throw new Error('startDelay must be greater than or equal to 0');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
67
73
|
}
|