@forgehive/task 0.1.8 → 0.1.9

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.
@@ -155,5 +155,40 @@ describe('safeReplay functionality tests', () => {
155
155
  expect(replayLog.error).toBeDefined();
156
156
  expect(replayLog.boundaries.fetchData[0].error).toBe('API error: Rate limit exceeded');
157
157
  });
158
+ it('Should handle boundaries with both output and error as null', async () => {
159
+ // Create a manual execution log with null output and error in the boundary
160
+ const executionLog = {
161
+ input: { ticker: 'AAPL' },
162
+ output: { ticker: 'AAPL', price: 160.23 },
163
+ boundaries: {
164
+ fetchData: [
165
+ {
166
+ input: ['AAPL'],
167
+ output: 160.23,
168
+ error: null
169
+ }
170
+ ]
171
+ }
172
+ };
173
+ // Use replay mode for fetchData
174
+ const [replayResult, replayError, replayLog] = await getTickerPrice.safeReplay(executionLog, {
175
+ boundaries: {
176
+ fetchData: 'replay',
177
+ }
178
+ });
179
+ // Verify the replay execution
180
+ expect(replayError).toBeNull();
181
+ expect(replayResult).toMatchObject({
182
+ ticker: 'AAPL',
183
+ price: 160.23
184
+ });
185
+ // The log should contain the output from the boundary
186
+ expect(replayLog.output).toMatchObject({
187
+ ticker: 'AAPL',
188
+ price: 160.23
189
+ });
190
+ expect(replayLog.boundaries.fetchData[0].output).toBe(160.23);
191
+ expect(replayLog.boundaries.fetchData[0].error).toBeNull();
192
+ });
158
193
  });
159
194
  //# sourceMappingURL=safe-replay.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safe-replay.test.js","sourceRoot":"","sources":["../../src/test/safe-replay.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-replay.test.js","sourceRoot":"","sources":["../../src/test/safe-replay.test.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export type BoundaryFunction<TReturn = any> = (...args: any[]) => Promise<TRetur
14
14
  export type BoundarySuccessRecord<TInput = unknown[], TOutput = unknown> = {
15
15
  input: TInput;
16
16
  output: TOutput;
17
- error?: undefined;
17
+ error?: null;
18
18
  };
19
19
  /**
20
20
  * Error record for a boundary function call
@@ -22,7 +22,7 @@ export type BoundarySuccessRecord<TInput = unknown[], TOutput = unknown> = {
22
22
  */
23
23
  export type BoundaryErrorRecord<TInput = unknown[]> = {
24
24
  input: TInput;
25
- output?: undefined;
25
+ output?: null;
26
26
  error: string;
27
27
  };
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;AAEnD,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEpE;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAElF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAAI;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,GAAG,OAAO,EAAE,IAAI;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAC9D,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,gBAAgB;IACvF,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,OAAO,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9F,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;CACrF;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAChE,CAAC,IAAI,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,YAAY,EAAE,IAAI,IAAI,KAAG,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAiIxI,CAAA"}
1
+ {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;AAEnD,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;AAEpE;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAElF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAAI;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,CAAC;CACd,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,GAAG,OAAO,EAAE,IAAI;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAC9D,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,gBAAgB;IACvF,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACtD,OAAO,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9F,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;CACrF;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;KAChE,CAAC,IAAI,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,YAAY,EAAE,IAAI,IAAI,KAAG,uBAAuB,CAAC,IAAI,SAAS,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAiIxI,CAAA"}
@@ -72,7 +72,7 @@ const createBoundary = (fn) => {
72
72
  throw new Error('No tape value for this inputs');
73
73
  }
74
74
  // Check if this is an error record by checking if error property exists
75
- if (record.error !== undefined) {
75
+ if (record.error !== undefined && record.error !== null) {
76
76
  throw new Error(record.error);
77
77
  }
78
78
  return record.output;
@@ -1 +1 @@
1
- {"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../src/utils/boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../src/utils/boundary.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.1.8",
3
+ "version": "0.1.9",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -186,4 +186,46 @@ describe('safeReplay functionality tests', () => {
186
186
  expect(replayLog.error).toBeDefined()
187
187
  expect(replayLog.boundaries.fetchData[0].error).toBe('API error: Rate limit exceeded')
188
188
  })
189
+
190
+ it('Should handle boundaries with both output and error as null', async () => {
191
+ // Create a manual execution log with null output and error in the boundary
192
+ const executionLog: ExecutionRecord = {
193
+ input: { ticker: 'AAPL' },
194
+ output: { ticker: 'AAPL', price: 160.23 },
195
+ boundaries: {
196
+ fetchData: [
197
+ {
198
+ input: ['AAPL'],
199
+ output: 160.23,
200
+ error: null
201
+ }
202
+ ]
203
+ }
204
+ }
205
+
206
+ // Use replay mode for fetchData
207
+ const [replayResult, replayError, replayLog] = await getTickerPrice.safeReplay(
208
+ executionLog,
209
+ {
210
+ boundaries: {
211
+ fetchData: 'replay',
212
+ }
213
+ }
214
+ )
215
+
216
+ // Verify the replay execution
217
+ expect(replayError).toBeNull()
218
+ expect(replayResult).toMatchObject({
219
+ ticker: 'AAPL',
220
+ price: 160.23
221
+ })
222
+
223
+ // The log should contain the output from the boundary
224
+ expect(replayLog.output).toMatchObject({
225
+ ticker: 'AAPL',
226
+ price: 160.23
227
+ })
228
+ expect(replayLog.boundaries.fetchData[0].output).toBe(160.23)
229
+ expect(replayLog.boundaries.fetchData[0].error).toBeNull()
230
+ })
189
231
  })
@@ -21,7 +21,7 @@ export type BoundaryFunction<TReturn = any> = (...args: any[]) => Promise<TRetur
21
21
  export type BoundarySuccessRecord<TInput = unknown[], TOutput = unknown> = {
22
22
  input: TInput;
23
23
  output: TOutput;
24
- error?: undefined;
24
+ error?: null;
25
25
  }
26
26
 
27
27
  /**
@@ -30,7 +30,7 @@ export type BoundarySuccessRecord<TInput = unknown[], TOutput = unknown> = {
30
30
  */
31
31
  export type BoundaryErrorRecord<TInput = unknown[]> = {
32
32
  input: TInput;
33
- output?: undefined;
33
+ output?: null;
34
34
  error: string;
35
35
  }
36
36
 
@@ -120,7 +120,7 @@ export const createBoundary = <Func extends BaseBoundary>(fn: Func): WrappedBoun
120
120
  }
121
121
 
122
122
  // Check if this is an error record by checking if error property exists
123
- if (record.error !== undefined) {
123
+ if (record.error !== undefined && record.error !== null) {
124
124
  throw new Error(record.error)
125
125
  }
126
126