@forgehive/task 0.1.5 → 0.1.7

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