@pgflow/dsl 0.0.0-add-workerconfig-to-context--20250905094004-b98e1fec-20250905074005 → 0.0.0-array-map-steps-302d00a8-20250922101336
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/README.md +77 -0
- package/dist/CHANGELOG.md +2 -0
- package/dist/README.md +77 -0
- package/dist/compile-flow.d.ts.map +1 -1
- package/dist/compile-flow.js +6 -1
- package/dist/dsl.d.ts +53 -1
- package/dist/dsl.d.ts.map +1 -1
- package/dist/dsl.js +69 -0
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -73,6 +73,78 @@ This design ensures:
|
|
|
73
73
|
- Data doesn't need to be manually forwarded through intermediate steps
|
|
74
74
|
- Steps can combine original input with processed data from previous steps
|
|
75
75
|
|
|
76
|
+
### Step Methods
|
|
77
|
+
|
|
78
|
+
The Flow DSL provides three methods for defining steps in your workflow:
|
|
79
|
+
|
|
80
|
+
#### `.step()` - Regular Steps
|
|
81
|
+
|
|
82
|
+
The standard method for adding steps to a flow. Each step processes input and returns output.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
.step(
|
|
86
|
+
{ slug: 'process', dependsOn: ['previous'] },
|
|
87
|
+
async (input) => {
|
|
88
|
+
// Access input.run and input.previous
|
|
89
|
+
return { result: 'processed' };
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### `.array()` - Array-Returning Steps
|
|
95
|
+
|
|
96
|
+
A semantic wrapper around `.step()` that provides type enforcement for steps that return arrays. Useful for data fetching or collection steps.
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
.array(
|
|
100
|
+
{ slug: 'fetch_items' },
|
|
101
|
+
async () => [1, 2, 3, 4, 5]
|
|
102
|
+
)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### `.map()` - Array Processing Steps
|
|
106
|
+
|
|
107
|
+
Processes arrays element-by-element, similar to JavaScript's `Array.map()`. The handler receives individual items instead of the full input object.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// Root map - processes flow input array
|
|
111
|
+
new Flow<string[]>({ slug: 'process_strings' })
|
|
112
|
+
.map({ slug: 'uppercase' }, (item) => item.toUpperCase());
|
|
113
|
+
|
|
114
|
+
// Dependent map - processes another step's output
|
|
115
|
+
new Flow<{}>({ slug: 'data_pipeline' })
|
|
116
|
+
.array({ slug: 'numbers' }, () => [1, 2, 3])
|
|
117
|
+
.map({ slug: 'double', array: 'numbers' }, (n) => n * 2)
|
|
118
|
+
.map({ slug: 'square', array: 'double' }, (n) => n * n);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Key differences from regular steps:**
|
|
122
|
+
- Uses `array:` instead of `dependsOn:` for specifying the single array dependency
|
|
123
|
+
- Handler signature is `(item, context) => result` instead of `(input, context) => result`
|
|
124
|
+
- Return type is always an array
|
|
125
|
+
- Generates SQL with `step_type => 'map'` parameter for pgflow's map processing
|
|
126
|
+
|
|
127
|
+
**Type Safety:**
|
|
128
|
+
The `.map()` method provides full TypeScript type inference for array elements:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
type User = { id: number; name: string };
|
|
132
|
+
|
|
133
|
+
new Flow<{}>({ slug: 'user_flow' })
|
|
134
|
+
.array({ slug: 'users' }, (): User[] => [
|
|
135
|
+
{ id: 1, name: 'Alice' },
|
|
136
|
+
{ id: 2, name: 'Bob' }
|
|
137
|
+
])
|
|
138
|
+
.map({ slug: 'greet', array: 'users' }, (user) => {
|
|
139
|
+
// TypeScript knows user is of type User
|
|
140
|
+
return `Hello, ${user.name} (ID: ${user.id})`;
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Limitations:**
|
|
145
|
+
- Can only depend on a single array-returning step
|
|
146
|
+
- TypeScript may not track type transformations between chained maps (use type assertions if needed)
|
|
147
|
+
|
|
76
148
|
### Context Object
|
|
77
149
|
|
|
78
150
|
Step handlers can optionally receive a second parameter - the **context object** - which provides access to platform resources and runtime information.
|
|
@@ -114,6 +186,11 @@ All platforms provide these core resources:
|
|
|
114
186
|
msg_id: number;
|
|
115
187
|
}
|
|
116
188
|
```
|
|
189
|
+
- **`context.workerConfig`** - Resolved worker configuration with all defaults applied
|
|
190
|
+
```typescript
|
|
191
|
+
// Provides access to worker settings like retry limits
|
|
192
|
+
const isLastAttempt = context.rawMessage.read_ct >= context.workerConfig.retry.limit;
|
|
193
|
+
```
|
|
117
194
|
|
|
118
195
|
#### Supabase Platform Resources
|
|
119
196
|
|
package/dist/CHANGELOG.md
CHANGED
package/dist/README.md
CHANGED
|
@@ -73,6 +73,78 @@ This design ensures:
|
|
|
73
73
|
- Data doesn't need to be manually forwarded through intermediate steps
|
|
74
74
|
- Steps can combine original input with processed data from previous steps
|
|
75
75
|
|
|
76
|
+
### Step Methods
|
|
77
|
+
|
|
78
|
+
The Flow DSL provides three methods for defining steps in your workflow:
|
|
79
|
+
|
|
80
|
+
#### `.step()` - Regular Steps
|
|
81
|
+
|
|
82
|
+
The standard method for adding steps to a flow. Each step processes input and returns output.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
.step(
|
|
86
|
+
{ slug: 'process', dependsOn: ['previous'] },
|
|
87
|
+
async (input) => {
|
|
88
|
+
// Access input.run and input.previous
|
|
89
|
+
return { result: 'processed' };
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### `.array()` - Array-Returning Steps
|
|
95
|
+
|
|
96
|
+
A semantic wrapper around `.step()` that provides type enforcement for steps that return arrays. Useful for data fetching or collection steps.
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
.array(
|
|
100
|
+
{ slug: 'fetch_items' },
|
|
101
|
+
async () => [1, 2, 3, 4, 5]
|
|
102
|
+
)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### `.map()` - Array Processing Steps
|
|
106
|
+
|
|
107
|
+
Processes arrays element-by-element, similar to JavaScript's `Array.map()`. The handler receives individual items instead of the full input object.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// Root map - processes flow input array
|
|
111
|
+
new Flow<string[]>({ slug: 'process_strings' })
|
|
112
|
+
.map({ slug: 'uppercase' }, (item) => item.toUpperCase());
|
|
113
|
+
|
|
114
|
+
// Dependent map - processes another step's output
|
|
115
|
+
new Flow<{}>({ slug: 'data_pipeline' })
|
|
116
|
+
.array({ slug: 'numbers' }, () => [1, 2, 3])
|
|
117
|
+
.map({ slug: 'double', array: 'numbers' }, (n) => n * 2)
|
|
118
|
+
.map({ slug: 'square', array: 'double' }, (n) => n * n);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Key differences from regular steps:**
|
|
122
|
+
- Uses `array:` instead of `dependsOn:` for specifying the single array dependency
|
|
123
|
+
- Handler signature is `(item, context) => result` instead of `(input, context) => result`
|
|
124
|
+
- Return type is always an array
|
|
125
|
+
- Generates SQL with `step_type => 'map'` parameter for pgflow's map processing
|
|
126
|
+
|
|
127
|
+
**Type Safety:**
|
|
128
|
+
The `.map()` method provides full TypeScript type inference for array elements:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
type User = { id: number; name: string };
|
|
132
|
+
|
|
133
|
+
new Flow<{}>({ slug: 'user_flow' })
|
|
134
|
+
.array({ slug: 'users' }, (): User[] => [
|
|
135
|
+
{ id: 1, name: 'Alice' },
|
|
136
|
+
{ id: 2, name: 'Bob' }
|
|
137
|
+
])
|
|
138
|
+
.map({ slug: 'greet', array: 'users' }, (user) => {
|
|
139
|
+
// TypeScript knows user is of type User
|
|
140
|
+
return `Hello, ${user.name} (ID: ${user.id})`;
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Limitations:**
|
|
145
|
+
- Can only depend on a single array-returning step
|
|
146
|
+
- TypeScript may not track type transformations between chained maps (use type assertions if needed)
|
|
147
|
+
|
|
76
148
|
### Context Object
|
|
77
149
|
|
|
78
150
|
Step handlers can optionally receive a second parameter - the **context object** - which provides access to platform resources and runtime information.
|
|
@@ -114,6 +186,11 @@ All platforms provide these core resources:
|
|
|
114
186
|
msg_id: number;
|
|
115
187
|
}
|
|
116
188
|
```
|
|
189
|
+
- **`context.workerConfig`** - Resolved worker configuration with all defaults applied
|
|
190
|
+
```typescript
|
|
191
|
+
// Provides access to worker settings like retry limits
|
|
192
|
+
const isLastAttempt = context.rawMessage.read_ct >= context.workerConfig.retry.limit;
|
|
193
|
+
```
|
|
117
194
|
|
|
118
195
|
#### Supabase Platform Resources
|
|
119
196
|
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CA+BnD"}
|
package/dist/compile-flow.js
CHANGED
|
@@ -20,7 +20,12 @@ export function compileFlow(flow) {
|
|
|
20
20
|
const depsArray = step.dependencies.map((dep) => `'${dep}'`).join(', ');
|
|
21
21
|
depsClause = `, ARRAY[${depsArray}]`;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
// Add step_type parameter for map steps
|
|
24
|
+
let stepTypeClause = '';
|
|
25
|
+
if (step.stepType === 'map') {
|
|
26
|
+
stepTypeClause = `, step_type => 'map'`;
|
|
27
|
+
}
|
|
28
|
+
statements.push(`SELECT pgflow.add_step('${flow.slug}', '${step.slug}'${depsClause}${stepOptions}${stepTypeClause});`);
|
|
24
29
|
}
|
|
25
30
|
return statements;
|
|
26
31
|
}
|
package/dist/dsl.d.ts
CHANGED
|
@@ -106,6 +106,7 @@ export interface StepDefinition<TInput extends AnyInput, TOutput extends AnyOutp
|
|
|
106
106
|
handler: (input: TInput, context: TContext) => TOutput | Promise<TOutput>;
|
|
107
107
|
dependencies: string[];
|
|
108
108
|
options: StepRuntimeOptions;
|
|
109
|
+
stepType?: 'single' | 'map';
|
|
109
110
|
}
|
|
110
111
|
export declare class Flow<TFlowInput extends AnyInput = AnyInput, TContext = BaseContext, // Accumulated context requirements (starts with BaseContext)
|
|
111
112
|
Steps extends AnySteps = EmptySteps, StepDependencies extends AnyDeps = EmptyDeps> {
|
|
@@ -137,13 +138,64 @@ Steps extends AnySteps = EmptySteps, StepDependencies extends AnyDeps = EmptyDep
|
|
|
137
138
|
} & {
|
|
138
139
|
[K in Deps]: K extends keyof Steps ? Steps[K] : never;
|
|
139
140
|
}>, context: BaseContext & TContext) => any, Deps extends Extract<keyof Steps, string> = never>(opts: Simplify<{
|
|
140
|
-
slug: Slug;
|
|
141
|
+
slug: Slug extends keyof Steps ? never : Slug;
|
|
141
142
|
dependsOn?: Deps[];
|
|
142
143
|
} & StepRuntimeOptions>, handler: THandler): Flow<TFlowInput, TContext & BaseContext & ExtractHandlerContext<THandler>, Steps & {
|
|
143
144
|
[K in Slug]: AwaitedReturn<THandler>;
|
|
144
145
|
}, StepDependencies & {
|
|
145
146
|
[K in Slug]: Deps[];
|
|
146
147
|
}>;
|
|
148
|
+
/**
|
|
149
|
+
* Add an array-returning step to the flow with compile-time type safety
|
|
150
|
+
*
|
|
151
|
+
* This method provides semantic clarity and type enforcement for steps that return arrays,
|
|
152
|
+
* while maintaining full compatibility with the existing step system by delegating to `.step()`.
|
|
153
|
+
*
|
|
154
|
+
* @template Slug - The unique identifier for this step
|
|
155
|
+
* @template THandler - The handler function that must return an array or Promise<array>
|
|
156
|
+
* @template Deps - The step dependencies (must be existing step slugs)
|
|
157
|
+
* @param opts - Step configuration including slug, dependencies, and runtime options
|
|
158
|
+
* @param handler - Function that processes input and returns an array
|
|
159
|
+
* @returns A new Flow instance with the array step added
|
|
160
|
+
*/
|
|
161
|
+
array<Slug extends string, THandler extends (input: Simplify<{
|
|
162
|
+
run: TFlowInput;
|
|
163
|
+
} & {
|
|
164
|
+
[K in Deps]: K extends keyof Steps ? Steps[K] : never;
|
|
165
|
+
}>, context: BaseContext & TContext) => Array<Json> | Promise<Array<Json>>, Deps extends Extract<keyof Steps, string> = never>(opts: Simplify<{
|
|
166
|
+
slug: Slug extends keyof Steps ? never : Slug;
|
|
167
|
+
dependsOn?: Deps[];
|
|
168
|
+
} & StepRuntimeOptions>, handler: THandler): Flow<TFlowInput, TContext & BaseContext & ExtractHandlerContext<THandler>, Steps & {
|
|
169
|
+
[K in Slug]: AwaitedReturn<THandler>;
|
|
170
|
+
}, StepDependencies & {
|
|
171
|
+
[K in Slug]: Deps[];
|
|
172
|
+
}>;
|
|
173
|
+
/**
|
|
174
|
+
* Add a map step to the flow that processes arrays element by element
|
|
175
|
+
*
|
|
176
|
+
* Map steps apply a handler function to each element of an array, producing
|
|
177
|
+
* a new array with the transformed elements. The handler receives individual
|
|
178
|
+
* array elements, not the full input object.
|
|
179
|
+
*
|
|
180
|
+
* @param opts - Step configuration including slug and optional array dependency
|
|
181
|
+
* @param handler - Function that processes individual array elements
|
|
182
|
+
* @returns A new Flow instance with the map step added
|
|
183
|
+
*/
|
|
184
|
+
map<Slug extends string, THandler>(opts: Simplify<{
|
|
185
|
+
slug: Slug extends keyof Steps ? never : Slug;
|
|
186
|
+
} & StepRuntimeOptions>, handler: TFlowInput extends readonly (infer Item)[] ? THandler & ((item: Item, context: BaseContext & TContext) => Json | Promise<Json>) : never): Flow<TFlowInput, TContext & BaseContext, Steps & {
|
|
187
|
+
[K in Slug]: Awaited<ReturnType<THandler & ((item: any, context: any) => any)>>[];
|
|
188
|
+
}, StepDependencies & {
|
|
189
|
+
[K in Slug]: [];
|
|
190
|
+
}>;
|
|
191
|
+
map<Slug extends string, TArrayDep extends Extract<keyof Steps, string>, THandler>(opts: Simplify<{
|
|
192
|
+
slug: Slug extends keyof Steps ? never : Slug;
|
|
193
|
+
array: TArrayDep;
|
|
194
|
+
} & StepRuntimeOptions>, handler: Steps[TArrayDep] extends readonly (infer Item)[] ? THandler & ((item: Item, context: BaseContext & TContext) => Json | Promise<Json>) : never): Flow<TFlowInput, TContext & BaseContext, Steps & {
|
|
195
|
+
[K in Slug]: Awaited<ReturnType<THandler & ((item: any, context: any) => any)>>[];
|
|
196
|
+
}, StepDependencies & {
|
|
197
|
+
[K in Slug]: [TArrayDep];
|
|
198
|
+
}>;
|
|
147
199
|
}
|
|
148
200
|
export {};
|
|
149
201
|
//# sourceMappingURL=dsl.d.ts.map
|
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
|
@@ -87,4 +87,73 @@ export class Flow {
|
|
|
87
87
|
// This is safe because we're constructing the newStepDefinitions in a type-safe way above
|
|
88
88
|
return new Flow({ slug: this.slug, ...this.options }, newStepDefinitions, newStepOrder);
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Add an array-returning step to the flow with compile-time type safety
|
|
92
|
+
*
|
|
93
|
+
* This method provides semantic clarity and type enforcement for steps that return arrays,
|
|
94
|
+
* while maintaining full compatibility with the existing step system by delegating to `.step()`.
|
|
95
|
+
*
|
|
96
|
+
* @template Slug - The unique identifier for this step
|
|
97
|
+
* @template THandler - The handler function that must return an array or Promise<array>
|
|
98
|
+
* @template Deps - The step dependencies (must be existing step slugs)
|
|
99
|
+
* @param opts - Step configuration including slug, dependencies, and runtime options
|
|
100
|
+
* @param handler - Function that processes input and returns an array
|
|
101
|
+
* @returns A new Flow instance with the array step added
|
|
102
|
+
*/
|
|
103
|
+
array(opts, handler) {
|
|
104
|
+
// Delegate to existing .step() method for maximum code reuse
|
|
105
|
+
return this.step(opts, handler);
|
|
106
|
+
}
|
|
107
|
+
// Implementation
|
|
108
|
+
map(opts, handler) {
|
|
109
|
+
const slug = opts.slug;
|
|
110
|
+
// Validate the step slug
|
|
111
|
+
validateSlug(slug);
|
|
112
|
+
if (this.stepDefinitions[slug]) {
|
|
113
|
+
throw new Error(`Step "${slug}" already exists in flow "${this.slug}"`);
|
|
114
|
+
}
|
|
115
|
+
// Determine dependencies based on whether array is specified
|
|
116
|
+
let dependencies = [];
|
|
117
|
+
const arrayDep = opts.array;
|
|
118
|
+
if (arrayDep) {
|
|
119
|
+
// Dependent map - validate single dependency exists and returns array
|
|
120
|
+
if (!this.stepDefinitions[arrayDep]) {
|
|
121
|
+
throw new Error(`Step "${slug}" depends on undefined step "${arrayDep}"`);
|
|
122
|
+
}
|
|
123
|
+
dependencies = [arrayDep];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Root map - flow input must be an array (type system enforces this)
|
|
127
|
+
dependencies = [];
|
|
128
|
+
}
|
|
129
|
+
// Extract runtime options
|
|
130
|
+
const options = {};
|
|
131
|
+
if (opts.maxAttempts !== undefined)
|
|
132
|
+
options.maxAttempts = opts.maxAttempts;
|
|
133
|
+
if (opts.baseDelay !== undefined)
|
|
134
|
+
options.baseDelay = opts.baseDelay;
|
|
135
|
+
if (opts.timeout !== undefined)
|
|
136
|
+
options.timeout = opts.timeout;
|
|
137
|
+
if (opts.startDelay !== undefined)
|
|
138
|
+
options.startDelay = opts.startDelay;
|
|
139
|
+
// Validate runtime options
|
|
140
|
+
validateRuntimeOptions(options, { optional: true });
|
|
141
|
+
// Create the map step definition with stepType
|
|
142
|
+
// Note: We use AnyInput/AnyOutput here because the actual types are handled at the type level via overloads
|
|
143
|
+
const newStepDefinition = {
|
|
144
|
+
slug,
|
|
145
|
+
handler: handler, // Type assertion needed due to complex generic constraints
|
|
146
|
+
dependencies,
|
|
147
|
+
options,
|
|
148
|
+
stepType: 'map', // Mark this as a map step
|
|
149
|
+
};
|
|
150
|
+
const newStepDefinitions = {
|
|
151
|
+
...this.stepDefinitions,
|
|
152
|
+
[slug]: newStepDefinition,
|
|
153
|
+
};
|
|
154
|
+
// Create a new stepOrder array with the new slug appended
|
|
155
|
+
const newStepOrder = [...this.stepOrder, slug];
|
|
156
|
+
// Create and return new Flow instance with updated types
|
|
157
|
+
return new Flow({ slug: this.slug, ...this.options }, newStepDefinitions, newStepOrder); // Type assertion handled by overloads
|
|
158
|
+
}
|
|
90
159
|
}
|
package/dist/package.json
CHANGED
package/package.json
CHANGED