@forgehive/task 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Schema, type SchemaType, type InferSchema, type SchemaDescription } from '@forgehive/schema';
2
- import { type Mode, type Boundaries, type WrappedBoundaries } from './utils/boundary';
2
+ import { type Mode, type Boundaries, type WrappedBoundaries, type WrappedBoundaryFunction } from './utils/boundary';
3
3
  export interface Task {
4
4
  id: string;
5
5
  title: string;
@@ -44,12 +44,18 @@ export interface TaskInstanceType<Func extends BaseFunction = BaseFunction, B ex
44
44
  getBoundaries: () => WrappedBoundaries<B>;
45
45
  setBoundariesData: (boundariesData: Record<string, unknown>) => void;
46
46
  getBondariesData: () => Record<string, unknown>;
47
- getBondariesRunLog: () => Record<string, unknown>;
48
- startRunLog: () => void;
47
+ mockBoundary: <K extends keyof B>(name: K, mockFn: WrappedBoundaryFunction) => void;
48
+ resetMock: <K extends keyof B>(name: K) => void;
49
+ resetMocks: () => void;
49
50
  run: (argv?: Parameters<Func>[0]) => Promise<ReturnType<Func>>;
51
+ safeRun: (argv?: Parameters<Func>[0]) => Promise<[Error | null, ReturnType<Func> | null, Record<string, unknown> | null]>;
50
52
  }
51
53
  export type InferSchemaType<S> = S extends Schema<any> ? InferSchema<S> : Record<string, unknown>;
52
54
  export type TaskFunction<S, B extends Boundaries> = (argv: InferSchemaType<S>, boundaries: WrappedBoundaries<B>) => Promise<any>;
55
+ type BoundaryData = Array<{
56
+ input: unknown[];
57
+ output?: unknown;
58
+ }>;
53
59
  export declare const Task: {
54
60
  new <B extends Boundaries = Boundaries, Func extends BaseFunction = BaseFunction>(fn: Func, conf?: TaskConfig<B>): {
55
61
  _fn: Func;
@@ -57,8 +63,9 @@ export declare const Task: {
57
63
  _coolDown: number;
58
64
  _description?: string;
59
65
  _boundariesDefinition: B;
60
- _boundaries: WrappedBoundaries<B>;
61
66
  _boundariesData: Record<string, unknown> | null;
67
+ _accumulatedBoundariesData: Record<string, BoundaryData>;
68
+ _boundaryMocks: Record<string, WrappedBoundaryFunction>;
62
69
  _schema: Schema<Record<string, SchemaType>> | undefined;
63
70
  _listener?: ((record: TaskRecord<Parameters<Func>[0], ReturnType<Func>>) => void) | undefined;
64
71
  getMode(): Mode;
@@ -76,14 +83,28 @@ export declare const Task: {
76
83
  getBoundaries(): WrappedBoundaries<B>;
77
84
  setBoundariesData(boundariesData: Record<string, unknown>): void;
78
85
  getBondariesData(): Record<string, unknown>;
86
+ /**
87
+ * Mocks a specific boundary function for testing
88
+ * @param name The name of the boundary to mock
89
+ * @param mockFn The mock function to use
90
+ */
91
+ mockBoundary<K extends keyof B>(name: K, mockFn: WrappedBoundaryFunction): void;
92
+ /**
93
+ * Resets a specific mocked boundary back to its original function
94
+ * @param name The name of the boundary to reset
95
+ */
96
+ resetMock<K extends keyof B>(name: K): void;
97
+ /**
98
+ * Resets all mocked boundaries back to their original functions
99
+ */
100
+ resetMocks(): void;
79
101
  _createBounderies({ definition, baseData, mode }: {
80
102
  definition: B;
81
103
  baseData: Record<string, unknown> | null;
82
104
  mode?: Mode;
83
105
  }): WrappedBoundaries<B>;
84
- getBondariesRunLog(): Record<string, unknown>;
85
- startRunLog(): void;
86
106
  asBoundary(): (args: Parameters<Func>[0]) => Promise<ReturnType<Func>>;
107
+ safeRun(argv?: Parameters<Func>[0]): Promise<[Error | null, ReturnType<Func> | null, Record<string, unknown> | null]>;
87
108
  run(argv?: Parameters<Func>[0]): Promise<ReturnType<Func>>;
88
109
  };
89
110
  };
@@ -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
@@ -13,6 +13,9 @@ const Task = class Task {
13
13
  boundariesData: undefined
14
14
  }) {
15
15
  var _a, _b, _c;
16
+ this._accumulatedBoundariesData = {};
17
+ // For storing mocks
18
+ this._boundaryMocks = {};
16
19
  this._fn = fn;
17
20
  this._schema = undefined;
18
21
  if (typeof conf.schema !== 'undefined') {
@@ -23,22 +26,29 @@ const Task = class Task {
23
26
  this._listener = undefined;
24
27
  // Cool down time before killing the process on cli runner
25
28
  this._coolDown = 1000;
26
- // Review this assignment
29
+ // Initialize boundaries data
27
30
  this._boundariesData = (_c = conf.boundariesData) !== null && _c !== void 0 ? _c : null;
28
- this._boundaries = this._createBounderies({
29
- definition: this._boundariesDefinition,
30
- baseData: this._boundariesData,
31
- mode: this._mode
32
- });
31
+ // Initialize empty accumulated boundaries data structure
32
+ for (const name in this._boundariesDefinition) {
33
+ this._accumulatedBoundariesData[name] = [];
34
+ }
35
+ // Initialize accumulated boundaries data from initial boundaries data
36
+ if (this._boundariesData) {
37
+ // Type assertion to handle initial data safely
38
+ for (const name in this._boundariesData) {
39
+ if (Array.isArray(this._boundariesData[name])) {
40
+ this._accumulatedBoundariesData[name] = this._boundariesData[name];
41
+ }
42
+ else {
43
+ this._accumulatedBoundariesData[name] = [];
44
+ }
45
+ }
46
+ }
33
47
  }
34
48
  getMode() {
35
49
  return this._mode;
36
50
  }
37
51
  setMode(mode) {
38
- for (const name in this._boundaries) {
39
- const boundary = this._boundaries[name];
40
- boundary.setMode(mode);
41
- }
42
52
  this._mode = mode;
43
53
  }
44
54
  setSchema(schema) {
@@ -87,37 +97,64 @@ const Task = class Task {
87
97
  if (typeof this._listener === 'undefined') {
88
98
  return;
89
99
  }
90
- const event = Object.assign(Object.assign({}, data), { boundaries: this.getBondariesRunLog() });
91
- this._listener(event);
100
+ this._listener(data);
92
101
  }
93
102
  getBoundaries() {
94
- return this._boundaries;
103
+ // Create fresh boundaries when requested
104
+ return this._createBounderies({
105
+ definition: this._boundariesDefinition,
106
+ baseData: this._boundariesData,
107
+ mode: this._mode
108
+ });
95
109
  }
96
110
  setBoundariesData(boundariesData) {
97
- for (const name in this._boundaries) {
98
- const boundary = this._boundaries[name];
99
- let tape;
100
- if (typeof boundariesData !== 'undefined') {
101
- tape = boundariesData[name];
111
+ this._boundariesData = boundariesData;
112
+ // Update accumulated data as well
113
+ // Type assertion to handle provided data safely
114
+ for (const name in boundariesData) {
115
+ if (Array.isArray(boundariesData[name])) {
116
+ this._accumulatedBoundariesData[name] = boundariesData[name];
102
117
  }
103
- if (typeof boundary !== 'undefined' && typeof tape !== 'undefined') {
104
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
- boundary.setTape(tape);
118
+ else {
119
+ this._accumulatedBoundariesData[name] = [];
106
120
  }
107
121
  }
108
122
  }
109
123
  getBondariesData() {
110
- const boundaries = this._boundaries;
111
- const boundariesData = {};
112
- for (const name in boundaries) {
113
- const boundary = boundaries[name];
114
- boundariesData[name] = boundary.getTape();
124
+ return this._accumulatedBoundariesData;
125
+ }
126
+ /**
127
+ * Mocks a specific boundary function for testing
128
+ * @param name The name of the boundary to mock
129
+ * @param mockFn The mock function to use
130
+ */
131
+ mockBoundary(name, mockFn) {
132
+ this._boundaryMocks[name] = mockFn;
133
+ }
134
+ /**
135
+ * Resets a specific mocked boundary back to its original function
136
+ * @param name The name of the boundary to reset
137
+ */
138
+ resetMock(name) {
139
+ if (this._boundaryMocks[name]) {
140
+ delete this._boundaryMocks[name];
115
141
  }
116
- return boundariesData;
142
+ }
143
+ /**
144
+ * Resets all mocked boundaries back to their original functions
145
+ */
146
+ resetMocks() {
147
+ this._boundaryMocks = {};
117
148
  }
118
149
  _createBounderies({ definition, baseData, mode = 'proxy' }) {
119
150
  const boundariesFns = {};
120
151
  for (const name in definition) {
152
+ // Check if we have a mock for this boundary
153
+ if (this._boundaryMocks[name]) {
154
+ boundariesFns[name] = this._boundaryMocks[name];
155
+ continue;
156
+ }
157
+ // Otherwise create the normal boundary
121
158
  const boundary = (0, boundary_1.createBoundary)(definition[name]);
122
159
  if (baseData !== null && typeof baseData[name] !== 'undefined') {
123
160
  const tape = baseData[name];
@@ -129,66 +166,109 @@ const Task = class Task {
129
166
  }
130
167
  return boundariesFns;
131
168
  }
132
- getBondariesRunLog() {
133
- const boundaries = this._boundaries;
134
- const boundariesRunLog = {};
135
- for (const name in boundaries) {
136
- const boundary = boundaries[name];
137
- boundariesRunLog[name] = boundary.getRunData();
138
- }
139
- return boundariesRunLog;
140
- }
141
- startRunLog() {
142
- const boundaries = this._boundaries;
143
- for (const name in boundaries) {
144
- const boundary = boundaries[name];
145
- boundary.startRun();
146
- }
147
- }
148
169
  asBoundary() {
149
170
  return async (args) => {
150
171
  return await this.run(args);
151
172
  };
152
173
  }
153
- async run(argv) {
154
- // start run log
155
- this.startRunLog();
156
- const boundaries = this._boundaries;
157
- const q = new Promise((resolve, reject) => {
158
- var _a;
159
- if (this._schema) {
174
+ async safeRun(argv) {
175
+ var _a;
176
+ // Handle schema validation
177
+ if (this._schema) {
178
+ try {
160
179
  const validation = this._schema.safeParse(argv);
161
180
  if (!validation.success) {
162
181
  const errorDetails = (_a = validation.error) === null || _a === void 0 ? void 0 : _a.errors.map(err => `${err.path.join('.')}: ${err.message}`).join(', ');
163
182
  const errorMessage = errorDetails
164
183
  ? `Invalid input on: ${errorDetails}`
165
184
  : 'Invalid input';
185
+ // Emit the validation error
166
186
  this.emit({
167
187
  input: argv,
168
188
  error: errorMessage
169
189
  });
170
- throw new Error(errorMessage);
190
+ return [new Error(errorMessage), null, null];
171
191
  }
172
192
  }
173
- (async () => {
174
- // Use proper typing for the function call
175
- const output = await this._fn(argv, boundaries);
176
- return output;
177
- })().then((output) => {
178
- this.emit({
179
- input: argv,
180
- output
181
- });
182
- resolve(output);
183
- }).catch((error) => {
184
- this.emit({
185
- input: argv,
186
- error: error.message
187
- });
188
- reject(error);
189
- });
193
+ catch (error) {
194
+ return [error instanceof Error ? error : new Error(String(error)), null, null];
195
+ }
196
+ }
197
+ // Create fresh boundaries for this execution
198
+ const executionBoundaries = this._createBounderies({
199
+ definition: this._boundariesDefinition,
200
+ baseData: this._boundariesData,
201
+ mode: this._mode
190
202
  });
191
- const result = await q;
203
+ // Start run for each boundary
204
+ for (const name in executionBoundaries) {
205
+ const boundary = executionBoundaries[name];
206
+ boundary.startRun();
207
+ }
208
+ try {
209
+ // Execute the task function
210
+ const output = await this._fn(argv, executionBoundaries);
211
+ // Process boundary data after successful execution
212
+ const boundariesRunLog = {};
213
+ for (const name in executionBoundaries) {
214
+ const boundary = executionBoundaries[name];
215
+ const runData = boundary.getRunData();
216
+ // Add to the run log
217
+ boundariesRunLog[name] = runData;
218
+ // Accumulate in the task's total boundaries data
219
+ if (!this._accumulatedBoundariesData[name]) {
220
+ this._accumulatedBoundariesData[name] = [];
221
+ }
222
+ // Get the current accumulated data for this boundary
223
+ const currentData = this._accumulatedBoundariesData[name];
224
+ // Add the new run data
225
+ if (Array.isArray(runData) && runData.length > 0) {
226
+ // Cast the run data to the correct type
227
+ this._accumulatedBoundariesData[name] = [...currentData, ...runData];
228
+ }
229
+ }
230
+ // Emit the success event with boundary data
231
+ this.emit({
232
+ input: argv,
233
+ output,
234
+ boundaries: boundariesRunLog
235
+ });
236
+ return [null, output, boundariesRunLog];
237
+ }
238
+ catch (error) {
239
+ // Process boundary data after error
240
+ const boundariesRunLog = {};
241
+ for (const name in executionBoundaries) {
242
+ const boundary = executionBoundaries[name];
243
+ const runData = boundary.getRunData();
244
+ // Add to the run log
245
+ boundariesRunLog[name] = runData;
246
+ // Accumulate in the task's total boundaries data
247
+ if (!this._accumulatedBoundariesData[name]) {
248
+ this._accumulatedBoundariesData[name] = [];
249
+ }
250
+ // Get the current accumulated data for this boundary
251
+ const currentData = this._accumulatedBoundariesData[name];
252
+ // Add the new run data
253
+ if (Array.isArray(runData) && runData.length > 0) {
254
+ // Cast the run data to the correct type
255
+ this._accumulatedBoundariesData[name] = [...currentData, ...runData];
256
+ }
257
+ }
258
+ // Emit the error event with boundary data
259
+ this.emit({
260
+ input: argv,
261
+ error: error instanceof Error ? error.message : String(error),
262
+ boundaries: boundariesRunLog
263
+ });
264
+ return [error instanceof Error ? error : new Error(String(error)), null, boundariesRunLog];
265
+ }
266
+ }
267
+ async run(argv) {
268
+ const [error, result] = await this.safeRun(argv);
269
+ if (error) {
270
+ throw error;
271
+ }
192
272
  return result;
193
273
  }
194
274
  };
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=safe-run.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-run.test.d.ts","sourceRoot":"","sources":["../../src/test/safe-run.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe('Task safeRun tests', () => {
5
+ it('returns [null, result, boundaryLogs] on successful execution', async () => {
6
+ // Create a simple schema
7
+ const schema = new index_1.Schema({
8
+ value: index_1.Schema.number()
9
+ });
10
+ // Define the boundaries
11
+ const boundaries = {
12
+ fetchData: async (value) => {
13
+ return value * 2;
14
+ }
15
+ };
16
+ // Create the task
17
+ const successTask = (0, index_1.createTask)(schema, boundaries, async function ({ value }, { fetchData }) {
18
+ const result = await fetchData(value);
19
+ return { result, success: true };
20
+ });
21
+ // Call safeRun with valid input
22
+ const [error, result, boundaryLogs] = await successTask.safeRun({ value: 5 });
23
+ // Verify success case
24
+ expect(error).toBeNull();
25
+ expect(result).toEqual({ result: 10, success: true });
26
+ expect(boundaryLogs).not.toBeNull();
27
+ expect(boundaryLogs).toHaveProperty('fetchData');
28
+ });
29
+ it('returns [error, null, boundaryLogs] on failed execution', async () => {
30
+ // Create a simple schema
31
+ const schema = new index_1.Schema({
32
+ value: index_1.Schema.number()
33
+ });
34
+ // Define the boundaries with a function that will throw an error
35
+ const boundaries = {
36
+ fetchData: async (value) => {
37
+ if (value < 0) {
38
+ throw new Error('Value cannot be negative');
39
+ }
40
+ return value * 2;
41
+ }
42
+ };
43
+ // Create the task
44
+ const errorTask = (0, index_1.createTask)(schema, boundaries, async function ({ value }, { fetchData }) {
45
+ const result = await fetchData(value);
46
+ return { result, success: true };
47
+ });
48
+ // Call safeRun with problematic input that will cause an error
49
+ const [error, result, boundaryLogs] = await errorTask.safeRun({ value: -5 });
50
+ // Verify error case
51
+ expect(error).toBeInstanceOf(Error);
52
+ expect(error === null || error === void 0 ? void 0 : error.message).toContain('Value cannot be negative');
53
+ expect(result).toBeNull();
54
+ expect(boundaryLogs).not.toBeNull();
55
+ expect(boundaryLogs).toHaveProperty('fetchData');
56
+ });
57
+ it('returns [error, null, null] on schema validation failure', async () => {
58
+ // Create a schema that requires a positive number
59
+ const schema = new index_1.Schema({
60
+ value: index_1.Schema.number().min(1, 'Value must be positive')
61
+ });
62
+ // Define the boundaries
63
+ const boundaries = {
64
+ fetchData: async (value) => {
65
+ return value * 2;
66
+ }
67
+ };
68
+ // Create the task
69
+ const validationTask = (0, index_1.createTask)(schema, boundaries, async function ({ value }, { fetchData }) {
70
+ const result = await fetchData(value);
71
+ return { result, success: true };
72
+ });
73
+ // Call safeRun with invalid input that will fail schema validation
74
+ const [error, result, boundaryLogs] = await validationTask.safeRun({ value: 0 });
75
+ // Verify validation error case
76
+ expect(error).toBeInstanceOf(Error);
77
+ expect(error === null || error === void 0 ? void 0 : error.message).toContain('Value must be positive');
78
+ expect(result).toBeNull();
79
+ expect(boundaryLogs).toBeNull(); // No boundary calls were made due to validation failure
80
+ });
81
+ it('properly calls the listener with safeRun and run', async () => {
82
+ // Create a schema
83
+ const schema = new index_1.Schema({
84
+ value: index_1.Schema.number()
85
+ });
86
+ // Define the boundaries
87
+ const boundaries = {
88
+ fetchData: async (value) => {
89
+ return value * 2;
90
+ }
91
+ };
92
+ // Create the task
93
+ const listenerTask = (0, index_1.createTask)(schema, boundaries, async function ({ value }, { fetchData }) {
94
+ const result = await fetchData(value);
95
+ return result;
96
+ });
97
+ // Create a mock listener
98
+ const originalListener = jest.fn();
99
+ listenerTask.addListener(originalListener);
100
+ // Call safeRun - this should call the listener once
101
+ await listenerTask.safeRun({ value: 10 });
102
+ // Run the task normally - this should call the listener again through safeRun
103
+ await listenerTask.run({ value: 20 });
104
+ // The original listener should have been called for both runs
105
+ expect(originalListener).toHaveBeenCalledTimes(2);
106
+ // First call should be for safeRun with value 10
107
+ expect(originalListener).toHaveBeenNthCalledWith(1, expect.objectContaining({
108
+ input: { value: 10 },
109
+ output: 20
110
+ }));
111
+ // Second call should be for run with value 20
112
+ expect(originalListener).toHaveBeenNthCalledWith(2, expect.objectContaining({
113
+ input: { value: 20 },
114
+ output: 40
115
+ }));
116
+ });
117
+ it('handles multiple boundary calls correctly', async () => {
118
+ // Create a schema
119
+ const schema = new index_1.Schema({
120
+ values: index_1.Schema.array(index_1.Schema.number())
121
+ });
122
+ // Define multiple boundaries
123
+ const boundaries = {
124
+ doubleValue: async (value) => {
125
+ return value * 2;
126
+ },
127
+ sumValues: async (values) => {
128
+ return values.reduce((sum, val) => sum + val, 0);
129
+ }
130
+ };
131
+ // Create a task that uses multiple boundaries
132
+ const multiBoundaryTask = (0, index_1.createTask)(schema, boundaries, async function ({ values }, { doubleValue, sumValues }) {
133
+ const doubled = await Promise.all(values.map(value => doubleValue(value)));
134
+ const total = await sumValues(doubled);
135
+ return { doubled, total };
136
+ });
137
+ // Call safeRun
138
+ const [error, result, boundaryLogs] = await multiBoundaryTask.safeRun({ values: [1, 2, 3] });
139
+ // Verify success
140
+ expect(error).toBeNull();
141
+ expect(result).toEqual({
142
+ doubled: [2, 4, 6],
143
+ total: 12
144
+ });
145
+ // Verify boundary logs for both boundaries
146
+ expect(boundaryLogs).not.toBeNull();
147
+ expect(boundaryLogs).toHaveProperty('doubleValue');
148
+ expect(boundaryLogs).toHaveProperty('sumValues');
149
+ // Check that doubleValue was called 3 times (once for each input value)
150
+ // @ts-expect-error - we know the boundaryLogs is not null here
151
+ expect(boundaryLogs.doubleValue).toHaveLength(3);
152
+ // Check that sumValues was called once with the doubled values
153
+ // @ts-expect-error - we know the boundaryLogs is not null here
154
+ expect(boundaryLogs.sumValues).toHaveLength(1);
155
+ // @ts-expect-error - we know the boundaryLogs is not null here
156
+ expect(boundaryLogs.sumValues[0].input).toEqual([[2, 4, 6]]);
157
+ });
158
+ });
159
+ //# sourceMappingURL=safe-run.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-run.test.js","sourceRoot":"","sources":["../../src/test/safe-run.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=task-boundary-mocking.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-boundary-mocking.test.d.ts","sourceRoot":"","sources":["../../src/test/task-boundary-mocking.test.ts"],"names":[],"mappings":""}