@forgehive/task 0.2.1 → 0.2.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.
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=listen-execution-records.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen-execution-records.test.d.ts","sourceRoot":"","sources":["../../src/test/listen-execution-records.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe('Task.listenExecutionRecords', () => {
5
+ let mockListener;
6
+ let consoleErrorSpy;
7
+ beforeEach(() => {
8
+ mockListener = jest.fn();
9
+ consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
10
+ // Clear any existing global listener
11
+ index_1.Task.globalListener = undefined;
12
+ });
13
+ afterEach(() => {
14
+ // Clean up global listener after each test
15
+ index_1.Task.globalListener = undefined;
16
+ consoleErrorSpy.mockRestore();
17
+ });
18
+ describe('static listenExecutionRecords method', () => {
19
+ it('should set global listener', () => {
20
+ index_1.Task.listenExecutionRecords(mockListener);
21
+ expect(index_1.Task.globalListener).toBe(mockListener);
22
+ });
23
+ it('should replace existing global listener', () => {
24
+ const firstListener = jest.fn();
25
+ const secondListener = jest.fn();
26
+ index_1.Task.listenExecutionRecords(firstListener);
27
+ expect(index_1.Task.globalListener).toBe(firstListener);
28
+ index_1.Task.listenExecutionRecords(secondListener);
29
+ expect(index_1.Task.globalListener).toBe(secondListener);
30
+ });
31
+ });
32
+ describe('global listener execution', () => {
33
+ it('should call global listener when task is executed via safeRun', async () => {
34
+ index_1.Task.listenExecutionRecords(mockListener);
35
+ const schema = new index_1.Schema({
36
+ value: index_1.Schema.number()
37
+ });
38
+ const testTask = (0, index_1.createTask)({
39
+ schema,
40
+ boundaries: {},
41
+ fn: async (input) => ({ result: input.value * 2 })
42
+ });
43
+ await testTask.safeRun({ value: 5 });
44
+ await new Promise(resolve => process.nextTick(resolve));
45
+ expect(mockListener).toHaveBeenCalledTimes(1);
46
+ expect(mockListener).toHaveBeenCalledWith(expect.objectContaining({
47
+ input: { value: 5 },
48
+ output: { result: 10 },
49
+ type: 'success'
50
+ }));
51
+ });
52
+ it('should call global listener when task is executed via run', async () => {
53
+ index_1.Task.listenExecutionRecords(mockListener);
54
+ const schema = new index_1.Schema({
55
+ value: index_1.Schema.number()
56
+ });
57
+ const testTask = (0, index_1.createTask)({
58
+ schema,
59
+ boundaries: {},
60
+ fn: async (input) => ({ result: input.value * 2 })
61
+ });
62
+ await testTask.run({ value: 3 });
63
+ await new Promise(resolve => process.nextTick(resolve));
64
+ expect(mockListener).toHaveBeenCalledTimes(1);
65
+ expect(mockListener).toHaveBeenCalledWith(expect.objectContaining({
66
+ input: { value: 3 },
67
+ output: { result: 6 },
68
+ type: 'success'
69
+ }));
70
+ });
71
+ it('should call global listener when task fails', async () => {
72
+ index_1.Task.listenExecutionRecords(mockListener);
73
+ const schema = new index_1.Schema({});
74
+ const errorTask = (0, index_1.createTask)({
75
+ schema,
76
+ boundaries: {},
77
+ fn: async () => {
78
+ throw new Error('Test error');
79
+ }
80
+ });
81
+ await errorTask.safeRun({});
82
+ await new Promise(resolve => process.nextTick(resolve));
83
+ expect(mockListener).toHaveBeenCalledTimes(1);
84
+ expect(mockListener).toHaveBeenCalledWith(expect.objectContaining({
85
+ input: {},
86
+ error: 'Test error',
87
+ type: 'error'
88
+ }));
89
+ });
90
+ it('should call both instance and global listeners', async () => {
91
+ const instanceListener = jest.fn();
92
+ index_1.Task.listenExecutionRecords(mockListener);
93
+ const schema = new index_1.Schema({
94
+ value: index_1.Schema.number()
95
+ });
96
+ const testTask = (0, index_1.createTask)({
97
+ schema,
98
+ boundaries: {},
99
+ fn: async (input) => ({ result: input.value * 2 })
100
+ });
101
+ testTask.addListener(instanceListener);
102
+ await testTask.safeRun({ value: 7 });
103
+ await new Promise(resolve => process.nextTick(resolve));
104
+ expect(instanceListener).toHaveBeenCalledTimes(1);
105
+ expect(mockListener).toHaveBeenCalledTimes(1);
106
+ const expectedRecord = expect.objectContaining({
107
+ input: { value: 7 },
108
+ output: { result: 14 },
109
+ type: 'success'
110
+ });
111
+ expect(instanceListener).toHaveBeenCalledWith(expectedRecord);
112
+ expect(mockListener).toHaveBeenCalledWith(expectedRecord);
113
+ });
114
+ it('should work when no global listener is set', async () => {
115
+ // No global listener set
116
+ const schema = new index_1.Schema({
117
+ value: index_1.Schema.number()
118
+ });
119
+ const testTask = (0, index_1.createTask)({
120
+ schema,
121
+ boundaries: {},
122
+ fn: async (input) => ({ result: input.value * 2 })
123
+ });
124
+ // Should not throw error
125
+ await expect(testTask.safeRun({ value: 1 })).resolves.toBeDefined();
126
+ });
127
+ });
128
+ describe('async listener support', () => {
129
+ it('should support async global listeners', async () => {
130
+ const asyncListener = jest.fn().mockImplementation(async (_record) => {
131
+ await new Promise(resolve => setTimeout(resolve, 10));
132
+ return Promise.resolve();
133
+ });
134
+ index_1.Task.listenExecutionRecords(asyncListener);
135
+ const schema = new index_1.Schema({
136
+ value: index_1.Schema.number()
137
+ });
138
+ const testTask = (0, index_1.createTask)({
139
+ schema,
140
+ boundaries: {},
141
+ fn: async (input) => ({ result: input.value * 2 })
142
+ });
143
+ await testTask.safeRun({ value: 4 });
144
+ await new Promise(resolve => process.nextTick(resolve));
145
+ expect(asyncListener).toHaveBeenCalledTimes(1);
146
+ expect(asyncListener).toHaveBeenCalledWith(expect.objectContaining({
147
+ input: { value: 4 },
148
+ output: { result: 8 },
149
+ type: 'success'
150
+ }));
151
+ });
152
+ it('should handle long-running async listeners without blocking task execution', async () => {
153
+ const slowListener = jest.fn().mockImplementation(async () => {
154
+ await new Promise(resolve => setTimeout(resolve, 100)); // 100ms
155
+ });
156
+ index_1.Task.listenExecutionRecords(slowListener);
157
+ const schema = new index_1.Schema({
158
+ value: index_1.Schema.number()
159
+ });
160
+ const testTask = (0, index_1.createTask)({
161
+ schema,
162
+ boundaries: {},
163
+ fn: async (input) => ({ result: input.value * 2 })
164
+ });
165
+ const startTime = Date.now();
166
+ await testTask.safeRun({ value: 1 });
167
+ const endTime = Date.now();
168
+ // Task should complete quickly without waiting for listener
169
+ expect(endTime - startTime).toBeLessThan(50); // Should complete in under 50ms
170
+ // Wait for next tick to ensure listener was called
171
+ await new Promise(resolve => process.nextTick(resolve));
172
+ expect(slowListener).toHaveBeenCalledTimes(1);
173
+ });
174
+ });
175
+ describe('error handling', () => {
176
+ it('should catch and log listener errors without affecting task execution', async () => {
177
+ const errorListener = jest.fn().mockImplementation(() => {
178
+ throw new Error('Listener error');
179
+ });
180
+ index_1.Task.listenExecutionRecords(errorListener);
181
+ const schema = new index_1.Schema({
182
+ value: index_1.Schema.number()
183
+ });
184
+ const testTask = (0, index_1.createTask)({
185
+ schema,
186
+ boundaries: {},
187
+ fn: async (input) => ({ result: input.value * 2 })
188
+ });
189
+ const [result, error] = await testTask.safeRun({ value: 5 });
190
+ await new Promise(resolve => process.nextTick(resolve));
191
+ // Task should complete successfully despite listener error
192
+ expect(result).toEqual({ result: 10 });
193
+ expect(error).toBeNull();
194
+ // Listener should have been called
195
+ expect(errorListener).toHaveBeenCalledTimes(1);
196
+ // Error should have been logged
197
+ expect(consoleErrorSpy).toHaveBeenCalledWith('ExecutionRecord listener error:', expect.any(Error));
198
+ });
199
+ it('should catch and log async listener errors', async () => {
200
+ const asyncErrorListener = jest.fn().mockImplementation(async () => {
201
+ throw new Error('Async listener error');
202
+ });
203
+ index_1.Task.listenExecutionRecords(asyncErrorListener);
204
+ const schema = new index_1.Schema({
205
+ value: index_1.Schema.number()
206
+ });
207
+ const testTask = (0, index_1.createTask)({
208
+ schema,
209
+ boundaries: {},
210
+ fn: async (input) => ({ result: input.value * 2 })
211
+ });
212
+ const [result, error] = await testTask.safeRun({ value: 3 });
213
+ // Wait a bit for the async error to be logged
214
+ await new Promise(resolve => setTimeout(resolve, 50));
215
+ // Task should complete successfully
216
+ expect(result).toEqual({ result: 6 });
217
+ expect(error).toBeNull();
218
+ // Error should have been logged
219
+ expect(consoleErrorSpy).toHaveBeenCalledWith('ExecutionRecord listener error:', expect.any(Error));
220
+ });
221
+ });
222
+ });
223
+ //# sourceMappingURL=listen-execution-records.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen-execution-records.test.js","sourceRoot":"","sources":["../../src/test/listen-execution-records.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgehive/task",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",