@forgehive/task 0.2.1 → 0.2.2
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 +164 -10
- package/dist/index.d.ts +15 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -6
- package/dist/index.js.map +1 -1
- package/dist/test/execution-record-boundaries.test.d.ts +2 -0
- package/dist/test/execution-record-boundaries.test.d.ts.map +1 -0
- package/dist/test/execution-record-boundaries.test.js +220 -0
- package/dist/test/execution-record-boundaries.test.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +70 -8
- package/src/test/execution-record-boundaries.test.ts +266 -0
package/README.md
CHANGED
|
@@ -47,14 +47,14 @@ const registerUser = createTask(
|
|
|
47
47
|
async (argv, boundaries) => {
|
|
48
48
|
// argv is typed based on the schema (has name: string, age?: number)
|
|
49
49
|
console.log(`Registering user: ${argv.name}`);
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
// Call boundaries with type safety
|
|
52
52
|
await boundaries.saveToDatabase({ name: argv.name, age: argv.age });
|
|
53
53
|
const emailSent = await boundaries.sendEmail(
|
|
54
54
|
'admin@example.com',
|
|
55
55
|
`New user registered: ${argv.name}`
|
|
56
56
|
);
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
return {
|
|
59
59
|
success: true,
|
|
60
60
|
emailSent,
|
|
@@ -184,27 +184,27 @@ describe('Init task', () => {
|
|
|
184
184
|
it('should create a config file when dryRun is false', async () => {
|
|
185
185
|
// Mock the saveFile boundary
|
|
186
186
|
const saveFileMock = jest.fn();
|
|
187
|
-
|
|
187
|
+
|
|
188
188
|
// Override the boundaries
|
|
189
189
|
init.getBoundaries().saveFile = saveFileMock;
|
|
190
|
-
|
|
190
|
+
|
|
191
191
|
// Run the task
|
|
192
192
|
await init.run({ dryRun: false });
|
|
193
|
-
|
|
193
|
+
|
|
194
194
|
// Verify the boundary was called
|
|
195
195
|
expect(saveFileMock).toHaveBeenCalled();
|
|
196
196
|
});
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
it('should not create a file when dryRun is true', async () => {
|
|
199
199
|
// Mock the saveFile boundary
|
|
200
200
|
const saveFileMock = jest.fn();
|
|
201
|
-
|
|
201
|
+
|
|
202
202
|
// Override the boundaries
|
|
203
203
|
init.getBoundaries().saveFile = saveFileMock;
|
|
204
|
-
|
|
204
|
+
|
|
205
205
|
// Run the task
|
|
206
206
|
await init.run({ dryRun: true });
|
|
207
|
-
|
|
207
|
+
|
|
208
208
|
// Verify the boundary was not called
|
|
209
209
|
expect(saveFileMock).not.toHaveBeenCalled();
|
|
210
210
|
});
|
|
@@ -236,6 +236,160 @@ Returns a `TaskInstanceType` with methods for running and managing the task.
|
|
|
236
236
|
- `isValid(argv?)`: Check if input is valid
|
|
237
237
|
- `asBoundary()`: Convert the task to a boundary function
|
|
238
238
|
|
|
239
|
+
## Adding Metadata to Task Execution
|
|
240
|
+
|
|
241
|
+
Tasks automatically provide a `setMetadata` boundary that allows you to add custom metadata to execution records. This metadata is useful for tracking, debugging, and analytics.
|
|
242
|
+
|
|
243
|
+
### Basic Usage
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
import { createTask, Schema } from '@forgehive/task';
|
|
247
|
+
|
|
248
|
+
const schema = new Schema({
|
|
249
|
+
userId: Schema.string(),
|
|
250
|
+
operation: Schema.string()
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
const boundaries = {
|
|
254
|
+
processPayment: async (amount: number): Promise<string> => {
|
|
255
|
+
// Payment processing logic
|
|
256
|
+
return 'payment-id-123';
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
const processUserAction = createTask({
|
|
261
|
+
schema,
|
|
262
|
+
boundaries,
|
|
263
|
+
fn: async ({ userId, operation }, { processPayment, setMetadata }) => {
|
|
264
|
+
// Add metadata at the beginning
|
|
265
|
+
await setMetadata('userId', userId);
|
|
266
|
+
await setMetadata('environment', 'production');
|
|
267
|
+
|
|
268
|
+
if (operation === 'payment') {
|
|
269
|
+
await setMetadata('step', 'processing-payment');
|
|
270
|
+
const paymentId = await processPayment(100);
|
|
271
|
+
|
|
272
|
+
await setMetadata('step', 'payment-completed');
|
|
273
|
+
await setMetadata('paymentId', paymentId);
|
|
274
|
+
|
|
275
|
+
return { success: true, paymentId };
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
await setMetadata('step', 'completed');
|
|
279
|
+
return { success: true };
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Metadata in Execution Records
|
|
285
|
+
|
|
286
|
+
When you run a task, the metadata appears in the execution record:
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
const [result, error, record] = await processUserAction.safeRun({
|
|
290
|
+
userId: 'user-123',
|
|
291
|
+
operation: 'payment'
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
console.log(record.metadata);
|
|
295
|
+
// Output:
|
|
296
|
+
// {
|
|
297
|
+
// userId: 'user-123',
|
|
298
|
+
// environment: 'production',
|
|
299
|
+
// step: 'payment-completed',
|
|
300
|
+
// paymentId: 'payment-id-123'
|
|
301
|
+
// }
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Key Features
|
|
305
|
+
|
|
306
|
+
- **Dynamic Updates**: Metadata can be updated multiple times during execution
|
|
307
|
+
- **Error Preservation**: Metadata is preserved even if the task fails
|
|
308
|
+
- **Replay Support**: Metadata is properly handled during task replays
|
|
309
|
+
- **No Boundary Logs**: `setMetadata` calls don't appear in boundary execution logs
|
|
310
|
+
- **Type Safe**: Full TypeScript support with intellisense
|
|
311
|
+
|
|
312
|
+
### Practical Example: User Registration
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
const registerUser = createTask({
|
|
316
|
+
schema: new Schema({
|
|
317
|
+
email: Schema.string(),
|
|
318
|
+
plan: Schema.string()
|
|
319
|
+
}),
|
|
320
|
+
boundaries: {
|
|
321
|
+
validateEmail: async (email: string) => true,
|
|
322
|
+
createUser: async (userData: any) => ({ id: 'user-123' }),
|
|
323
|
+
sendWelcomeEmail: async (email: string) => true
|
|
324
|
+
},
|
|
325
|
+
fn: async ({ email, plan }, { validateEmail, createUser, sendWelcomeEmail, setMetadata }) => {
|
|
326
|
+
// Track the registration flow
|
|
327
|
+
await setMetadata('registrationFlow', 'started');
|
|
328
|
+
await setMetadata('plan', plan);
|
|
329
|
+
await setMetadata('timestamp', Date.now().toString());
|
|
330
|
+
|
|
331
|
+
// Validate email
|
|
332
|
+
await setMetadata('step', 'validating-email');
|
|
333
|
+
const isValidEmail = await validateEmail(email);
|
|
334
|
+
|
|
335
|
+
if (!isValidEmail) {
|
|
336
|
+
await setMetadata('step', 'validation-failed');
|
|
337
|
+
throw new Error('Invalid email');
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Create user
|
|
341
|
+
await setMetadata('step', 'creating-user');
|
|
342
|
+
const user = await createUser({ email, plan });
|
|
343
|
+
await setMetadata('userId', user.id);
|
|
344
|
+
|
|
345
|
+
// Send welcome email
|
|
346
|
+
await setMetadata('step', 'sending-welcome-email');
|
|
347
|
+
await sendWelcomeEmail(email);
|
|
348
|
+
|
|
349
|
+
await setMetadata('step', 'completed');
|
|
350
|
+
await setMetadata('registrationFlow', 'success');
|
|
351
|
+
|
|
352
|
+
return { userId: user.id, success: true };
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Using Metadata for Analytics
|
|
358
|
+
|
|
359
|
+
Metadata is particularly useful for tracking task performance and user behavior:
|
|
360
|
+
|
|
361
|
+
```typescript
|
|
362
|
+
// Add listener to track analytics
|
|
363
|
+
registerUser.addListener((record) => {
|
|
364
|
+
// Send metadata to analytics service
|
|
365
|
+
analytics.track('task_executed', {
|
|
366
|
+
taskName: record.taskName,
|
|
367
|
+
success: record.type === 'success',
|
|
368
|
+
metadata: record.metadata,
|
|
369
|
+
duration: Date.now() - parseInt(record.metadata?.timestamp || '0')
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### Environment-Specific Metadata
|
|
375
|
+
|
|
376
|
+
Tasks automatically receive environment metadata when executed in different contexts:
|
|
377
|
+
|
|
378
|
+
- **CLI execution**: `environment: 'cli'`
|
|
379
|
+
- **Lambda execution**: `environment: 'hive-lambda'`
|
|
380
|
+
- **Custom contexts**: Pass metadata through `safeRun(args, context)`
|
|
381
|
+
|
|
382
|
+
You can combine this with your custom metadata:
|
|
383
|
+
|
|
384
|
+
```typescript
|
|
385
|
+
const [result, error, record] = await task.safeRun(
|
|
386
|
+
{ userId: 'user-123' },
|
|
387
|
+
{ executionContext: 'background-job', version: '1.2.3' }
|
|
388
|
+
);
|
|
389
|
+
|
|
390
|
+
// record.metadata will contain both your custom metadata and the context
|
|
391
|
+
```
|
|
392
|
+
|
|
239
393
|
## License
|
|
240
394
|
|
|
241
|
-
MIT
|
|
395
|
+
MIT
|
package/dist/index.d.ts
CHANGED
|
@@ -80,7 +80,10 @@ type BoundaryData = Array<{
|
|
|
80
80
|
output?: unknown;
|
|
81
81
|
}>;
|
|
82
82
|
export type InferSchemaType<S> = S extends Schema<any> ? InferSchema<S> : Record<string, unknown>;
|
|
83
|
-
export type
|
|
83
|
+
export type ExecutionRecordBoundaries = {
|
|
84
|
+
setMetadata: (key: string, value: string) => Promise<void>;
|
|
85
|
+
};
|
|
86
|
+
export type TaskFunction<S, B extends Boundaries> = (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<any>;
|
|
84
87
|
/**
|
|
85
88
|
* Utility function to compute the execution record type based on output and error state
|
|
86
89
|
*/
|
|
@@ -131,6 +134,16 @@ export declare const Task: {
|
|
|
131
134
|
* Resets all mocked boundaries back to their original functions
|
|
132
135
|
*/
|
|
133
136
|
resetMocks(): void;
|
|
137
|
+
/**
|
|
138
|
+
* Creates execution record boundaries that modify execution metadata and logging
|
|
139
|
+
* These boundaries are automatically injected into all task executions
|
|
140
|
+
*
|
|
141
|
+
* To add a new execution boundary:
|
|
142
|
+
* 1. Add the boundary function here
|
|
143
|
+
* 2. Update the ExecutionRecordBoundaries type to include the new boundary
|
|
144
|
+
* 3. That's it! The boundary will be available in all tasks automatically
|
|
145
|
+
*/
|
|
146
|
+
_createExecutionBoundaries(metadata: Record<string, string>): Record<string, WrappedBoundaryFunction>;
|
|
134
147
|
_createBounderies({ definition, baseData, mode, boundaryModes }: {
|
|
135
148
|
definition: B;
|
|
136
149
|
baseData: BoundaryTapeData | null;
|
|
@@ -156,7 +169,7 @@ export interface CreateTaskConfig<S extends Schema<Record<string, SchemaType>>,
|
|
|
156
169
|
description?: string;
|
|
157
170
|
schema: S;
|
|
158
171
|
boundaries: B;
|
|
159
|
-
fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<R>;
|
|
172
|
+
fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<R>;
|
|
160
173
|
mode?: Mode;
|
|
161
174
|
boundariesData?: BoundaryTapeData;
|
|
162
175
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -55,6 +55,8 @@ const Task = class Task {
|
|
|
55
55
|
try {
|
|
56
56
|
// Call the task's safeRun method
|
|
57
57
|
const [outcome, error, log] = await this.safeRun(eventArgs);
|
|
58
|
+
// Extend log metadata with environment info
|
|
59
|
+
log.metadata = Object.assign(Object.assign({}, log.metadata), { environment: 'hive-lambda' });
|
|
58
60
|
// Send log to Hive if environment variables are present
|
|
59
61
|
await this._sendToHive(log);
|
|
60
62
|
if (error) {
|
|
@@ -221,6 +223,26 @@ const Task = class Task {
|
|
|
221
223
|
resetMocks() {
|
|
222
224
|
this._boundaryMocks = {};
|
|
223
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Creates execution record boundaries that modify execution metadata and logging
|
|
228
|
+
* These boundaries are automatically injected into all task executions
|
|
229
|
+
*
|
|
230
|
+
* To add a new execution boundary:
|
|
231
|
+
* 1. Add the boundary function here
|
|
232
|
+
* 2. Update the ExecutionRecordBoundaries type to include the new boundary
|
|
233
|
+
* 3. That's it! The boundary will be available in all tasks automatically
|
|
234
|
+
*/
|
|
235
|
+
_createExecutionBoundaries(metadata) {
|
|
236
|
+
return {
|
|
237
|
+
// Allows setting metadata key-value pairs from within task execution
|
|
238
|
+
setMetadata: (0, boundary_1.createBoundary)(async (...args) => {
|
|
239
|
+
const [key, value] = args;
|
|
240
|
+
metadata[key] = value;
|
|
241
|
+
})
|
|
242
|
+
// Future execution boundaries can be added here:
|
|
243
|
+
// addMetrics: createBoundary(async (...args: unknown[]): Promise<void> => { ... }),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
224
246
|
_createBounderies({ definition, baseData, mode = 'proxy', boundaryModes = {} }) {
|
|
225
247
|
const boundariesFns = {};
|
|
226
248
|
for (const name in definition) {
|
|
@@ -268,9 +290,12 @@ const Task = class Task {
|
|
|
268
290
|
baseData: this._boundariesData,
|
|
269
291
|
mode: this._mode
|
|
270
292
|
});
|
|
293
|
+
// Create and inject execution record boundaries (setMetadata, etc.)
|
|
294
|
+
const executionRecordBoundaries = this._createExecutionBoundaries(metadata);
|
|
295
|
+
const allBoundaries = Object.assign(Object.assign({}, executionBoundaries), executionRecordBoundaries);
|
|
271
296
|
// Start run for each boundary
|
|
272
|
-
for (const name in
|
|
273
|
-
const boundary =
|
|
297
|
+
for (const name in allBoundaries) {
|
|
298
|
+
const boundary = allBoundaries[name];
|
|
274
299
|
boundary.startRun();
|
|
275
300
|
}
|
|
276
301
|
// Handle schema validation
|
|
@@ -296,7 +321,7 @@ const Task = class Task {
|
|
|
296
321
|
let error = null;
|
|
297
322
|
try {
|
|
298
323
|
// Execute the task function
|
|
299
|
-
output = await this._fn(argv,
|
|
324
|
+
output = await this._fn(argv, allBoundaries);
|
|
300
325
|
logItem.output = output;
|
|
301
326
|
logItem.type = 'success';
|
|
302
327
|
}
|
|
@@ -325,6 +350,8 @@ const Task = class Task {
|
|
|
325
350
|
this._accumulatedBoundariesData[name] = [...currentData, ...runData];
|
|
326
351
|
}
|
|
327
352
|
}
|
|
353
|
+
// Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
|
|
354
|
+
// Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
|
|
328
355
|
// Set boundaries in log item before emitting
|
|
329
356
|
logItem.boundaries = boundariesRunLog;
|
|
330
357
|
// Emit the log item
|
|
@@ -365,9 +392,14 @@ const Task = class Task {
|
|
|
365
392
|
mode: 'proxy',
|
|
366
393
|
boundaryModes: config.boundaries
|
|
367
394
|
});
|
|
395
|
+
// Create and inject execution record boundaries (setMetadata, etc.)
|
|
396
|
+
// Clone the metadata to avoid mutating the original metadata
|
|
397
|
+
const replayMetadata = Object.assign({}, (logItem.metadata || {}));
|
|
398
|
+
const executionRecordBoundaries = this._createExecutionBoundaries(replayMetadata);
|
|
399
|
+
const allBoundaries = Object.assign(Object.assign({}, executionBoundaries), executionRecordBoundaries);
|
|
368
400
|
// Start run for each boundary
|
|
369
|
-
for (const name in
|
|
370
|
-
const boundary =
|
|
401
|
+
for (const name in allBoundaries) {
|
|
402
|
+
const boundary = allBoundaries[name];
|
|
371
403
|
boundary.startRun();
|
|
372
404
|
}
|
|
373
405
|
// Handle schema validation - reusing the input from the execution log
|
|
@@ -391,7 +423,7 @@ const Task = class Task {
|
|
|
391
423
|
let error = null;
|
|
392
424
|
try {
|
|
393
425
|
// Execute the task function with replay boundaries
|
|
394
|
-
output = await this._fn(argv,
|
|
426
|
+
output = await this._fn(argv, allBoundaries);
|
|
395
427
|
logItem.output = output;
|
|
396
428
|
logItem.type = 'success';
|
|
397
429
|
}
|
|
@@ -416,8 +448,12 @@ const Task = class Task {
|
|
|
416
448
|
boundariesRunLog[name] = runData;
|
|
417
449
|
}
|
|
418
450
|
}
|
|
451
|
+
// Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
|
|
452
|
+
// Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
|
|
419
453
|
// Set boundaries in log item before emitting
|
|
420
454
|
logItem.boundaries = boundariesRunLog;
|
|
455
|
+
// Update the log item metadata with changes made during replay
|
|
456
|
+
logItem.metadata = replayMetadata;
|
|
421
457
|
// Emit the log item
|
|
422
458
|
this.emit(logItem);
|
|
423
459
|
// Return the output, error, and log item
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-record-boundaries.test.d.ts","sourceRoot":"","sources":["../../src/test/execution-record-boundaries.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("../index");
|
|
4
|
+
describe('execution-record-boundaries', () => {
|
|
5
|
+
describe('setMetadata boundary', () => {
|
|
6
|
+
it('should add metadata to execution record when setMetadata is called', async () => {
|
|
7
|
+
// Create a schema
|
|
8
|
+
const schema = new index_1.Schema({
|
|
9
|
+
value: index_1.Schema.number()
|
|
10
|
+
});
|
|
11
|
+
// Create a task that uses setMetadata
|
|
12
|
+
const task = (0, index_1.createTask)({
|
|
13
|
+
name: 'metadata-test-task',
|
|
14
|
+
schema,
|
|
15
|
+
boundaries: {
|
|
16
|
+
multiply: async (value) => value * 2
|
|
17
|
+
},
|
|
18
|
+
fn: async ({ value }, { multiply, setMetadata }) => {
|
|
19
|
+
await setMetadata('userId', '12345');
|
|
20
|
+
await setMetadata('executionType', 'background');
|
|
21
|
+
const result = await multiply(value);
|
|
22
|
+
return { result };
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
// Run the task with safeRun
|
|
26
|
+
const [result, error, record] = await task.safeRun({ value: 5 });
|
|
27
|
+
// Verify the execution was successful
|
|
28
|
+
expect(error).toBeNull();
|
|
29
|
+
expect(result).toEqual({ result: 10 });
|
|
30
|
+
// Verify the metadata is included in the record
|
|
31
|
+
expect(record.metadata).toEqual({
|
|
32
|
+
userId: '12345',
|
|
33
|
+
executionType: 'background'
|
|
34
|
+
});
|
|
35
|
+
// Verify the task name and other fields are correct
|
|
36
|
+
expect(record.taskName).toBe('metadata-test-task');
|
|
37
|
+
expect(record.input).toEqual({ value: 5 });
|
|
38
|
+
expect(record.output).toEqual({ result: 10 });
|
|
39
|
+
expect(record.type).toBe('success');
|
|
40
|
+
});
|
|
41
|
+
it('should not include setMetadata calls in boundary logs', async () => {
|
|
42
|
+
// Create a schema
|
|
43
|
+
const schema = new index_1.Schema({
|
|
44
|
+
value: index_1.Schema.number()
|
|
45
|
+
});
|
|
46
|
+
// Create a task that uses setMetadata and other boundaries
|
|
47
|
+
const task = (0, index_1.createTask)({
|
|
48
|
+
name: 'boundary-log-test',
|
|
49
|
+
schema,
|
|
50
|
+
boundaries: {
|
|
51
|
+
multiply: async (value) => value * 2,
|
|
52
|
+
fetchData: async (data) => `fetched-${data}`
|
|
53
|
+
},
|
|
54
|
+
fn: async ({ value }, { multiply, fetchData, setMetadata }) => {
|
|
55
|
+
await setMetadata('step', 'start');
|
|
56
|
+
const multiplied = await multiply(value);
|
|
57
|
+
await setMetadata('step', 'multiplied');
|
|
58
|
+
const fetched = await fetchData('test');
|
|
59
|
+
await setMetadata('step', 'completed');
|
|
60
|
+
return { multiplied, fetched };
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// Run the task with safeRun
|
|
64
|
+
const [result, error, record] = await task.safeRun({ value: 3 });
|
|
65
|
+
// Verify the execution was successful
|
|
66
|
+
expect(error).toBeNull();
|
|
67
|
+
expect(result).toEqual({ multiplied: 6, fetched: 'fetched-test' });
|
|
68
|
+
// Verify the metadata is updated to the final value
|
|
69
|
+
expect(record.metadata).toEqual({
|
|
70
|
+
step: 'completed'
|
|
71
|
+
});
|
|
72
|
+
// Verify that only the actual boundaries appear in the logs
|
|
73
|
+
expect(record.boundaries).toHaveProperty('multiply');
|
|
74
|
+
expect(record.boundaries).toHaveProperty('fetchData');
|
|
75
|
+
expect(record.boundaries).not.toHaveProperty('setMetadata');
|
|
76
|
+
// Verify the boundary logs contain the expected calls
|
|
77
|
+
expect(record.boundaries.multiply).toHaveLength(1);
|
|
78
|
+
expect(record.boundaries.multiply[0]).toEqual({
|
|
79
|
+
input: [3],
|
|
80
|
+
output: 6
|
|
81
|
+
});
|
|
82
|
+
expect(record.boundaries.fetchData).toHaveLength(1);
|
|
83
|
+
expect(record.boundaries.fetchData[0]).toEqual({
|
|
84
|
+
input: ['test'],
|
|
85
|
+
output: 'fetched-test'
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
it('should preserve metadata in error scenarios', async () => {
|
|
89
|
+
// Create a schema
|
|
90
|
+
const schema = new index_1.Schema({
|
|
91
|
+
value: index_1.Schema.number()
|
|
92
|
+
});
|
|
93
|
+
// Create a task that sets metadata before throwing an error
|
|
94
|
+
const task = (0, index_1.createTask)({
|
|
95
|
+
name: 'error-metadata-test',
|
|
96
|
+
schema,
|
|
97
|
+
boundaries: {},
|
|
98
|
+
fn: async ({ value }, { setMetadata }) => {
|
|
99
|
+
await setMetadata('errorContext', 'validation');
|
|
100
|
+
await setMetadata('userId', '67890');
|
|
101
|
+
if (value < 0) {
|
|
102
|
+
throw new Error('Value cannot be negative');
|
|
103
|
+
}
|
|
104
|
+
return { result: value };
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
// Run the task with a value that will cause an error
|
|
108
|
+
const [result, error, record] = await task.safeRun({ value: -1 });
|
|
109
|
+
// Verify the execution failed as expected
|
|
110
|
+
expect(result).toBeNull();
|
|
111
|
+
expect(error).not.toBeNull();
|
|
112
|
+
expect(error === null || error === void 0 ? void 0 : error.message).toBe('Value cannot be negative');
|
|
113
|
+
// Verify the metadata is preserved in the error record
|
|
114
|
+
expect(record.metadata).toEqual({
|
|
115
|
+
errorContext: 'validation',
|
|
116
|
+
userId: '67890'
|
|
117
|
+
});
|
|
118
|
+
// Verify other record fields
|
|
119
|
+
expect(record.taskName).toBe('error-metadata-test');
|
|
120
|
+
expect(record.input).toEqual({ value: -1 });
|
|
121
|
+
expect(record.error).toBe('Value cannot be negative');
|
|
122
|
+
expect(record.type).toBe('error');
|
|
123
|
+
});
|
|
124
|
+
it('should preserve existing metadata when adding new metadata', async () => {
|
|
125
|
+
// Create a schema
|
|
126
|
+
const schema = new index_1.Schema({
|
|
127
|
+
value: index_1.Schema.number()
|
|
128
|
+
});
|
|
129
|
+
// Create a task that uses setMetadata
|
|
130
|
+
const task = (0, index_1.createTask)({
|
|
131
|
+
name: 'preserve-metadata-test',
|
|
132
|
+
schema,
|
|
133
|
+
boundaries: {},
|
|
134
|
+
fn: async ({ value }, { setMetadata }) => {
|
|
135
|
+
await setMetadata('step1', 'completed');
|
|
136
|
+
await setMetadata('step2', 'in-progress');
|
|
137
|
+
await setMetadata('step1', 'updated'); // Overwrite step1
|
|
138
|
+
return { result: value * 2 };
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
// Run the task with initial metadata context
|
|
142
|
+
const [result, error, record] = await task.safeRun({ value: 4 });
|
|
143
|
+
// Verify the execution was successful
|
|
144
|
+
expect(error).toBeNull();
|
|
145
|
+
expect(result).toEqual({ result: 8 });
|
|
146
|
+
// Verify the metadata contains the final values
|
|
147
|
+
expect(record.metadata).toEqual({
|
|
148
|
+
step1: 'updated',
|
|
149
|
+
step2: 'in-progress'
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
it('should work with setMetadata in safeReplay', async () => {
|
|
153
|
+
var _a, _b, _c, _d;
|
|
154
|
+
// Create a schema
|
|
155
|
+
const schema = new index_1.Schema({
|
|
156
|
+
value: index_1.Schema.number()
|
|
157
|
+
});
|
|
158
|
+
// Use a counter to ensure different values between original and replay
|
|
159
|
+
let executionCounter = 0;
|
|
160
|
+
// Create a task with boundaries and metadata
|
|
161
|
+
const task = (0, index_1.createTask)({
|
|
162
|
+
name: 'replay-metadata-test',
|
|
163
|
+
schema,
|
|
164
|
+
boundaries: {
|
|
165
|
+
fetchData: async (value) => value * 3
|
|
166
|
+
},
|
|
167
|
+
fn: async ({ value }, { fetchData, setMetadata }) => {
|
|
168
|
+
executionCounter++;
|
|
169
|
+
await setMetadata('replayTest', 'true');
|
|
170
|
+
await setMetadata('executionNumber', executionCounter.toString());
|
|
171
|
+
const result = await fetchData(value);
|
|
172
|
+
return { result };
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
// First, run the task normally to get an execution record
|
|
176
|
+
const [, , originalRecord] = await task.safeRun({ value: 2 });
|
|
177
|
+
// Verify original metadata was set
|
|
178
|
+
expect(originalRecord.metadata).toHaveProperty('replayTest', 'true');
|
|
179
|
+
expect(originalRecord.metadata).toHaveProperty('executionNumber', '1');
|
|
180
|
+
// Now replay the task
|
|
181
|
+
const [replayResult, replayError, replayRecord] = await task.safeReplay(originalRecord, { boundaries: { fetchData: 'replay' } });
|
|
182
|
+
// Verify the replay was successful
|
|
183
|
+
expect(replayError).toBeNull();
|
|
184
|
+
expect(replayResult).toEqual({ result: 6 });
|
|
185
|
+
// Verify that the replay has its own metadata (setMetadata was called again)
|
|
186
|
+
expect(replayRecord.metadata).toHaveProperty('replayTest', 'true');
|
|
187
|
+
expect(replayRecord.metadata).toHaveProperty('executionNumber', '2');
|
|
188
|
+
// The execution numbers should be different since setMetadata was called again
|
|
189
|
+
expect((_a = replayRecord.metadata) === null || _a === void 0 ? void 0 : _a.executionNumber).not.toBe((_b = originalRecord.metadata) === null || _b === void 0 ? void 0 : _b.executionNumber);
|
|
190
|
+
expect((_c = originalRecord.metadata) === null || _c === void 0 ? void 0 : _c.executionNumber).toBe('1');
|
|
191
|
+
expect((_d = replayRecord.metadata) === null || _d === void 0 ? void 0 : _d.executionNumber).toBe('2');
|
|
192
|
+
});
|
|
193
|
+
it('should handle empty metadata gracefully', async () => {
|
|
194
|
+
// Create a schema
|
|
195
|
+
const schema = new index_1.Schema({
|
|
196
|
+
value: index_1.Schema.number()
|
|
197
|
+
});
|
|
198
|
+
// Create a task that doesn't use setMetadata
|
|
199
|
+
const task = (0, index_1.createTask)({
|
|
200
|
+
name: 'no-metadata-test',
|
|
201
|
+
schema,
|
|
202
|
+
boundaries: {
|
|
203
|
+
multiply: async (value) => value * 2
|
|
204
|
+
},
|
|
205
|
+
fn: async ({ value }, { multiply }) => {
|
|
206
|
+
const result = await multiply(value);
|
|
207
|
+
return { result };
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
// Run the task without using setMetadata
|
|
211
|
+
const [result, error, record] = await task.safeRun({ value: 7 });
|
|
212
|
+
// Verify the execution was successful
|
|
213
|
+
expect(error).toBeNull();
|
|
214
|
+
expect(result).toEqual({ result: 14 });
|
|
215
|
+
// Verify the metadata is empty but defined
|
|
216
|
+
expect(record.metadata).toEqual({});
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
//# sourceMappingURL=execution-record-boundaries.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-record-boundaries.test.js","sourceRoot":"","sources":["../../src/test/execution-record-boundaries.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -139,10 +139,19 @@ type BoundaryData = Array<{input: unknown[], output?: unknown}>
|
|
|
139
139
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
140
140
|
export type InferSchemaType<S> = S extends Schema<any> ? InferSchema<S> : Record<string, unknown>;
|
|
141
141
|
|
|
142
|
+
// Type for execution record boundaries that are automatically injected
|
|
143
|
+
// When adding new execution boundaries, add their types here
|
|
144
|
+
export type ExecutionRecordBoundaries = {
|
|
145
|
+
setMetadata: (key: string, value: string) => Promise<void>
|
|
146
|
+
// Future execution boundaries can be added here:
|
|
147
|
+
// setContext: (context: Record<string, unknown>) => Promise<void>
|
|
148
|
+
// addTag: (tag: string) => Promise<void>
|
|
149
|
+
}
|
|
150
|
+
|
|
142
151
|
// Helper type for task function with proper typing
|
|
143
152
|
export type TaskFunction<S, B extends Boundaries> =
|
|
144
153
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
145
|
-
(argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<any>;
|
|
154
|
+
(argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<any>;
|
|
146
155
|
|
|
147
156
|
/**
|
|
148
157
|
* Utility function to compute the execution record type based on output and error state
|
|
@@ -355,6 +364,28 @@ export const Task = class Task<
|
|
|
355
364
|
this._boundaryMocks = {}
|
|
356
365
|
}
|
|
357
366
|
|
|
367
|
+
/**
|
|
368
|
+
* Creates execution record boundaries that modify execution metadata and logging
|
|
369
|
+
* These boundaries are automatically injected into all task executions
|
|
370
|
+
*
|
|
371
|
+
* To add a new execution boundary:
|
|
372
|
+
* 1. Add the boundary function here
|
|
373
|
+
* 2. Update the ExecutionRecordBoundaries type to include the new boundary
|
|
374
|
+
* 3. That's it! The boundary will be available in all tasks automatically
|
|
375
|
+
*/
|
|
376
|
+
_createExecutionBoundaries(metadata: Record<string, string>): Record<string, WrappedBoundaryFunction> {
|
|
377
|
+
return {
|
|
378
|
+
// Allows setting metadata key-value pairs from within task execution
|
|
379
|
+
setMetadata: createBoundary(async (...args: unknown[]): Promise<void> => {
|
|
380
|
+
const [key, value] = args as [string, string]
|
|
381
|
+
metadata[key] = value
|
|
382
|
+
})
|
|
383
|
+
|
|
384
|
+
// Future execution boundaries can be added here:
|
|
385
|
+
// addMetrics: createBoundary(async (...args: unknown[]): Promise<void> => { ... }),
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
358
389
|
_createBounderies ({
|
|
359
390
|
definition,
|
|
360
391
|
baseData,
|
|
@@ -431,9 +462,16 @@ export const Task = class Task<
|
|
|
431
462
|
mode: this._mode
|
|
432
463
|
})
|
|
433
464
|
|
|
465
|
+
// Create and inject execution record boundaries (setMetadata, etc.)
|
|
466
|
+
const executionRecordBoundaries = this._createExecutionBoundaries(metadata)
|
|
467
|
+
const allBoundaries = {
|
|
468
|
+
...executionBoundaries,
|
|
469
|
+
...executionRecordBoundaries
|
|
470
|
+
}
|
|
471
|
+
|
|
434
472
|
// Start run for each boundary
|
|
435
|
-
for (const name in
|
|
436
|
-
const boundary =
|
|
473
|
+
for (const name in allBoundaries) {
|
|
474
|
+
const boundary = allBoundaries[name]
|
|
437
475
|
boundary.startRun()
|
|
438
476
|
}
|
|
439
477
|
|
|
@@ -470,7 +508,7 @@ export const Task = class Task<
|
|
|
470
508
|
// Execute the task function
|
|
471
509
|
output = await this._fn(
|
|
472
510
|
argv as Parameters<Func>[0],
|
|
473
|
-
|
|
511
|
+
allBoundaries as unknown as Parameters<Func>[1]
|
|
474
512
|
)
|
|
475
513
|
|
|
476
514
|
logItem.output = output
|
|
@@ -507,6 +545,9 @@ export const Task = class Task<
|
|
|
507
545
|
}
|
|
508
546
|
}
|
|
509
547
|
|
|
548
|
+
// Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
|
|
549
|
+
// Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
|
|
550
|
+
|
|
510
551
|
// Set boundaries in log item before emitting
|
|
511
552
|
logItem.boundaries = boundariesRunLog
|
|
512
553
|
|
|
@@ -566,9 +607,18 @@ export const Task = class Task<
|
|
|
566
607
|
boundaryModes: config.boundaries
|
|
567
608
|
})
|
|
568
609
|
|
|
610
|
+
// Create and inject execution record boundaries (setMetadata, etc.)
|
|
611
|
+
// Clone the metadata to avoid mutating the original metadata
|
|
612
|
+
const replayMetadata = { ...(logItem.metadata || {}) }
|
|
613
|
+
const executionRecordBoundaries = this._createExecutionBoundaries(replayMetadata)
|
|
614
|
+
const allBoundaries = {
|
|
615
|
+
...executionBoundaries,
|
|
616
|
+
...executionRecordBoundaries
|
|
617
|
+
}
|
|
618
|
+
|
|
569
619
|
// Start run for each boundary
|
|
570
|
-
for (const name in
|
|
571
|
-
const boundary =
|
|
620
|
+
for (const name in allBoundaries) {
|
|
621
|
+
const boundary = allBoundaries[name]
|
|
572
622
|
boundary.startRun()
|
|
573
623
|
}
|
|
574
624
|
|
|
@@ -603,7 +653,7 @@ export const Task = class Task<
|
|
|
603
653
|
// Execute the task function with replay boundaries
|
|
604
654
|
output = await this._fn(
|
|
605
655
|
argv,
|
|
606
|
-
|
|
656
|
+
allBoundaries as unknown as Parameters<Func>[1]
|
|
607
657
|
)
|
|
608
658
|
|
|
609
659
|
logItem.output = output
|
|
@@ -632,9 +682,15 @@ export const Task = class Task<
|
|
|
632
682
|
}
|
|
633
683
|
}
|
|
634
684
|
|
|
685
|
+
// Filter out setMetadata boundary calls from the logs (they should not appear in execution record)
|
|
686
|
+
// Note: setMetadata is not part of the original boundaries definition, so it won't be in boundariesRunLog anyway
|
|
687
|
+
|
|
635
688
|
// Set boundaries in log item before emitting
|
|
636
689
|
logItem.boundaries = boundariesRunLog
|
|
637
690
|
|
|
691
|
+
// Update the log item metadata with changes made during replay
|
|
692
|
+
logItem.metadata = replayMetadata
|
|
693
|
+
|
|
638
694
|
// Emit the log item
|
|
639
695
|
this.emit(logItem)
|
|
640
696
|
|
|
@@ -684,6 +740,12 @@ export const Task = class Task<
|
|
|
684
740
|
// Call the task's safeRun method
|
|
685
741
|
const [outcome, error, log] = await this.safeRun(eventArgs)
|
|
686
742
|
|
|
743
|
+
// Extend log metadata with environment info
|
|
744
|
+
log.metadata = {
|
|
745
|
+
...log.metadata,
|
|
746
|
+
environment: 'hive-lambda'
|
|
747
|
+
}
|
|
748
|
+
|
|
687
749
|
// Send log to Hive if environment variables are present
|
|
688
750
|
await this._sendToHive(log)
|
|
689
751
|
|
|
@@ -823,7 +885,7 @@ export interface CreateTaskConfig<
|
|
|
823
885
|
description?: string
|
|
824
886
|
schema: S
|
|
825
887
|
boundaries: B
|
|
826
|
-
fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<R>
|
|
888
|
+
fn: (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B> & ExecutionRecordBoundaries) => Promise<R>
|
|
827
889
|
mode?: Mode
|
|
828
890
|
boundariesData?: BoundaryTapeData
|
|
829
891
|
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { createTask, Schema } from '../index'
|
|
2
|
+
|
|
3
|
+
describe('execution-record-boundaries', () => {
|
|
4
|
+
describe('setMetadata boundary', () => {
|
|
5
|
+
it('should add metadata to execution record when setMetadata is called', async () => {
|
|
6
|
+
// Create a schema
|
|
7
|
+
const schema = new Schema({
|
|
8
|
+
value: Schema.number()
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
// Create a task that uses setMetadata
|
|
12
|
+
const task = createTask({
|
|
13
|
+
name: 'metadata-test-task',
|
|
14
|
+
schema,
|
|
15
|
+
boundaries: {
|
|
16
|
+
multiply: async (value: number) => value * 2
|
|
17
|
+
},
|
|
18
|
+
fn: async ({ value }, { multiply, setMetadata }) => {
|
|
19
|
+
await setMetadata('userId', '12345')
|
|
20
|
+
await setMetadata('executionType', 'background')
|
|
21
|
+
|
|
22
|
+
const result = await multiply(value)
|
|
23
|
+
return { result }
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
// Run the task with safeRun
|
|
28
|
+
const [result, error, record] = await task.safeRun({ value: 5 })
|
|
29
|
+
|
|
30
|
+
// Verify the execution was successful
|
|
31
|
+
expect(error).toBeNull()
|
|
32
|
+
expect(result).toEqual({ result: 10 })
|
|
33
|
+
|
|
34
|
+
// Verify the metadata is included in the record
|
|
35
|
+
expect(record.metadata).toEqual({
|
|
36
|
+
userId: '12345',
|
|
37
|
+
executionType: 'background'
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
// Verify the task name and other fields are correct
|
|
41
|
+
expect(record.taskName).toBe('metadata-test-task')
|
|
42
|
+
expect(record.input).toEqual({ value: 5 })
|
|
43
|
+
expect(record.output).toEqual({ result: 10 })
|
|
44
|
+
expect(record.type).toBe('success')
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('should not include setMetadata calls in boundary logs', async () => {
|
|
48
|
+
// Create a schema
|
|
49
|
+
const schema = new Schema({
|
|
50
|
+
value: Schema.number()
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
// Create a task that uses setMetadata and other boundaries
|
|
54
|
+
const task = createTask({
|
|
55
|
+
name: 'boundary-log-test',
|
|
56
|
+
schema,
|
|
57
|
+
boundaries: {
|
|
58
|
+
multiply: async (value: number) => value * 2,
|
|
59
|
+
fetchData: async (data: string) => `fetched-${data}`
|
|
60
|
+
},
|
|
61
|
+
fn: async ({ value }, { multiply, fetchData, setMetadata }) => {
|
|
62
|
+
await setMetadata('step', 'start')
|
|
63
|
+
|
|
64
|
+
const multiplied = await multiply(value)
|
|
65
|
+
await setMetadata('step', 'multiplied')
|
|
66
|
+
|
|
67
|
+
const fetched = await fetchData('test')
|
|
68
|
+
await setMetadata('step', 'completed')
|
|
69
|
+
|
|
70
|
+
return { multiplied, fetched }
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
// Run the task with safeRun
|
|
75
|
+
const [result, error, record] = await task.safeRun({ value: 3 })
|
|
76
|
+
|
|
77
|
+
// Verify the execution was successful
|
|
78
|
+
expect(error).toBeNull()
|
|
79
|
+
expect(result).toEqual({ multiplied: 6, fetched: 'fetched-test' })
|
|
80
|
+
|
|
81
|
+
// Verify the metadata is updated to the final value
|
|
82
|
+
expect(record.metadata).toEqual({
|
|
83
|
+
step: 'completed'
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
// Verify that only the actual boundaries appear in the logs
|
|
87
|
+
expect(record.boundaries).toHaveProperty('multiply')
|
|
88
|
+
expect(record.boundaries).toHaveProperty('fetchData')
|
|
89
|
+
expect(record.boundaries).not.toHaveProperty('setMetadata')
|
|
90
|
+
|
|
91
|
+
// Verify the boundary logs contain the expected calls
|
|
92
|
+
expect(record.boundaries.multiply).toHaveLength(1)
|
|
93
|
+
expect(record.boundaries.multiply[0]).toEqual({
|
|
94
|
+
input: [3],
|
|
95
|
+
output: 6
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
expect(record.boundaries.fetchData).toHaveLength(1)
|
|
99
|
+
expect(record.boundaries.fetchData[0]).toEqual({
|
|
100
|
+
input: ['test'],
|
|
101
|
+
output: 'fetched-test'
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
it('should preserve metadata in error scenarios', async () => {
|
|
106
|
+
// Create a schema
|
|
107
|
+
const schema = new Schema({
|
|
108
|
+
value: Schema.number()
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
// Create a task that sets metadata before throwing an error
|
|
112
|
+
const task = createTask({
|
|
113
|
+
name: 'error-metadata-test',
|
|
114
|
+
schema,
|
|
115
|
+
boundaries: {},
|
|
116
|
+
fn: async ({ value }, { setMetadata }) => {
|
|
117
|
+
await setMetadata('errorContext', 'validation')
|
|
118
|
+
await setMetadata('userId', '67890')
|
|
119
|
+
|
|
120
|
+
if (value < 0) {
|
|
121
|
+
throw new Error('Value cannot be negative')
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return { result: value }
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
// Run the task with a value that will cause an error
|
|
129
|
+
const [result, error, record] = await task.safeRun({ value: -1 })
|
|
130
|
+
|
|
131
|
+
// Verify the execution failed as expected
|
|
132
|
+
expect(result).toBeNull()
|
|
133
|
+
expect(error).not.toBeNull()
|
|
134
|
+
expect(error?.message).toBe('Value cannot be negative')
|
|
135
|
+
|
|
136
|
+
// Verify the metadata is preserved in the error record
|
|
137
|
+
expect(record.metadata).toEqual({
|
|
138
|
+
errorContext: 'validation',
|
|
139
|
+
userId: '67890'
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
// Verify other record fields
|
|
143
|
+
expect(record.taskName).toBe('error-metadata-test')
|
|
144
|
+
expect(record.input).toEqual({ value: -1 })
|
|
145
|
+
expect(record.error).toBe('Value cannot be negative')
|
|
146
|
+
expect(record.type).toBe('error')
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
it('should preserve existing metadata when adding new metadata', async () => {
|
|
150
|
+
// Create a schema
|
|
151
|
+
const schema = new Schema({
|
|
152
|
+
value: Schema.number()
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
// Create a task that uses setMetadata
|
|
156
|
+
const task = createTask({
|
|
157
|
+
name: 'preserve-metadata-test',
|
|
158
|
+
schema,
|
|
159
|
+
boundaries: {},
|
|
160
|
+
fn: async ({ value }, { setMetadata }) => {
|
|
161
|
+
await setMetadata('step1', 'completed')
|
|
162
|
+
await setMetadata('step2', 'in-progress')
|
|
163
|
+
await setMetadata('step1', 'updated') // Overwrite step1
|
|
164
|
+
|
|
165
|
+
return { result: value * 2 }
|
|
166
|
+
}
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
// Run the task with initial metadata context
|
|
170
|
+
const [result, error, record] = await task.safeRun({ value: 4 })
|
|
171
|
+
|
|
172
|
+
// Verify the execution was successful
|
|
173
|
+
expect(error).toBeNull()
|
|
174
|
+
expect(result).toEqual({ result: 8 })
|
|
175
|
+
|
|
176
|
+
// Verify the metadata contains the final values
|
|
177
|
+
expect(record.metadata).toEqual({
|
|
178
|
+
step1: 'updated',
|
|
179
|
+
step2: 'in-progress'
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
it('should work with setMetadata in safeReplay', async () => {
|
|
184
|
+
// Create a schema
|
|
185
|
+
const schema = new Schema({
|
|
186
|
+
value: Schema.number()
|
|
187
|
+
})
|
|
188
|
+
|
|
189
|
+
// Use a counter to ensure different values between original and replay
|
|
190
|
+
let executionCounter = 0
|
|
191
|
+
|
|
192
|
+
// Create a task with boundaries and metadata
|
|
193
|
+
const task = createTask({
|
|
194
|
+
name: 'replay-metadata-test',
|
|
195
|
+
schema,
|
|
196
|
+
boundaries: {
|
|
197
|
+
fetchData: async (value: number) => value * 3
|
|
198
|
+
},
|
|
199
|
+
fn: async ({ value }, { fetchData, setMetadata }) => {
|
|
200
|
+
executionCounter++
|
|
201
|
+
await setMetadata('replayTest', 'true')
|
|
202
|
+
await setMetadata('executionNumber', executionCounter.toString())
|
|
203
|
+
|
|
204
|
+
const result = await fetchData(value)
|
|
205
|
+
return { result }
|
|
206
|
+
}
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
// First, run the task normally to get an execution record
|
|
210
|
+
const [, , originalRecord] = await task.safeRun({ value: 2 })
|
|
211
|
+
|
|
212
|
+
// Verify original metadata was set
|
|
213
|
+
expect(originalRecord.metadata).toHaveProperty('replayTest', 'true')
|
|
214
|
+
expect(originalRecord.metadata).toHaveProperty('executionNumber', '1')
|
|
215
|
+
|
|
216
|
+
// Now replay the task
|
|
217
|
+
const [replayResult, replayError, replayRecord] = await task.safeReplay(
|
|
218
|
+
originalRecord,
|
|
219
|
+
{ boundaries: { fetchData: 'replay' } }
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
// Verify the replay was successful
|
|
223
|
+
expect(replayError).toBeNull()
|
|
224
|
+
expect(replayResult).toEqual({ result: 6 })
|
|
225
|
+
|
|
226
|
+
// Verify that the replay has its own metadata (setMetadata was called again)
|
|
227
|
+
expect(replayRecord.metadata).toHaveProperty('replayTest', 'true')
|
|
228
|
+
expect(replayRecord.metadata).toHaveProperty('executionNumber', '2')
|
|
229
|
+
|
|
230
|
+
// The execution numbers should be different since setMetadata was called again
|
|
231
|
+
expect(replayRecord.metadata?.executionNumber).not.toBe(originalRecord.metadata?.executionNumber)
|
|
232
|
+
expect(originalRecord.metadata?.executionNumber).toBe('1')
|
|
233
|
+
expect(replayRecord.metadata?.executionNumber).toBe('2')
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
it('should handle empty metadata gracefully', async () => {
|
|
237
|
+
// Create a schema
|
|
238
|
+
const schema = new Schema({
|
|
239
|
+
value: Schema.number()
|
|
240
|
+
})
|
|
241
|
+
|
|
242
|
+
// Create a task that doesn't use setMetadata
|
|
243
|
+
const task = createTask({
|
|
244
|
+
name: 'no-metadata-test',
|
|
245
|
+
schema,
|
|
246
|
+
boundaries: {
|
|
247
|
+
multiply: async (value: number) => value * 2
|
|
248
|
+
},
|
|
249
|
+
fn: async ({ value }, { multiply }) => {
|
|
250
|
+
const result = await multiply(value)
|
|
251
|
+
return { result }
|
|
252
|
+
}
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
// Run the task without using setMetadata
|
|
256
|
+
const [result, error, record] = await task.safeRun({ value: 7 })
|
|
257
|
+
|
|
258
|
+
// Verify the execution was successful
|
|
259
|
+
expect(error).toBeNull()
|
|
260
|
+
expect(result).toEqual({ result: 14 })
|
|
261
|
+
|
|
262
|
+
// Verify the metadata is empty but defined
|
|
263
|
+
expect(record.metadata).toEqual({})
|
|
264
|
+
})
|
|
265
|
+
})
|
|
266
|
+
})
|