@forgehive/task 0.1.0

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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +241 -0
  3. package/dist/index.d.ts +92 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +191 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/test/add-listener-with-boundaries.test.d.ts +2 -0
  8. package/dist/test/add-listener-with-boundaries.test.d.ts.map +1 -0
  9. package/dist/test/add-listener-with-boundaries.test.js +230 -0
  10. package/dist/test/add-listener-with-boundaries.test.js.map +1 -0
  11. package/dist/test/add-listener.test.d.ts +2 -0
  12. package/dist/test/add-listener.test.d.ts.map +1 -0
  13. package/dist/test/add-listener.test.js +92 -0
  14. package/dist/test/add-listener.test.js.map +1 -0
  15. package/dist/test/boundary-modes.test.d.ts +2 -0
  16. package/dist/test/boundary-modes.test.d.ts.map +1 -0
  17. package/dist/test/boundary-modes.test.js +184 -0
  18. package/dist/test/boundary-modes.test.js.map +1 -0
  19. package/dist/test/change-mode.test.d.ts +2 -0
  20. package/dist/test/change-mode.test.d.ts.map +1 -0
  21. package/dist/test/change-mode.test.js +39 -0
  22. package/dist/test/change-mode.test.js.map +1 -0
  23. package/dist/test/index.test.d.ts +2 -0
  24. package/dist/test/index.test.d.ts.map +1 -0
  25. package/dist/test/index.test.js +48 -0
  26. package/dist/test/index.test.js.map +1 -0
  27. package/dist/test/run-boundary.test.d.ts +2 -0
  28. package/dist/test/run-boundary.test.d.ts.map +1 -0
  29. package/dist/test/run-boundary.test.js +49 -0
  30. package/dist/test/run-boundary.test.js.map +1 -0
  31. package/dist/test/run-without-args.test.d.ts +2 -0
  32. package/dist/test/run-without-args.test.d.ts.map +1 -0
  33. package/dist/test/run-without-args.test.js +29 -0
  34. package/dist/test/run-without-args.test.js.map +1 -0
  35. package/dist/test/task-with-boundaries.test.d.ts +2 -0
  36. package/dist/test/task-with-boundaries.test.d.ts.map +1 -0
  37. package/dist/test/task-with-boundaries.test.js +102 -0
  38. package/dist/test/task-with-boundaries.test.js.map +1 -0
  39. package/dist/test/validation.test.d.ts +2 -0
  40. package/dist/test/validation.test.d.ts.map +1 -0
  41. package/dist/test/validation.test.js +166 -0
  42. package/dist/test/validation.test.js.map +1 -0
  43. package/dist/utils/boundary.d.ts +44 -0
  44. package/dist/utils/boundary.d.ts.map +1 -0
  45. package/dist/utils/boundary.js +145 -0
  46. package/dist/utils/boundary.js.map +1 -0
  47. package/jest.config.js +9 -0
  48. package/package.json +30 -0
  49. package/src/index.ts +344 -0
  50. package/src/test/add-listener-with-boundaries.test.ts +299 -0
  51. package/src/test/add-listener.test.ts +110 -0
  52. package/src/test/boundary-modes.test.ts +215 -0
  53. package/src/test/change-mode.test.ts +45 -0
  54. package/src/test/index.test.ts +62 -0
  55. package/src/test/run-boundary.test.ts +64 -0
  56. package/src/test/run-without-args.test.ts +33 -0
  57. package/src/test/task-with-boundaries.test.ts +137 -0
  58. package/src/test/validation.test.ts +194 -0
  59. package/src/utils/boundary.ts +178 -0
  60. package/tsconfig.json +24 -0
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe('Listener with boundaries tests', () => {
5
+ it('Should record one item and its boundaries tape', async () => {
6
+ const tape = [];
7
+ // Create a schema for the task
8
+ const schema = new index_1.Schema({
9
+ value: index_1.Schema.number()
10
+ });
11
+ // Define the boundaries
12
+ const boundaries = {
13
+ fetchExternalData: async () => {
14
+ return { foo: false };
15
+ }
16
+ };
17
+ // Create the task using createTask
18
+ const task = (0, index_1.createTask)(schema, boundaries, async (argv, boundaries) => {
19
+ const externalData = await boundaries.fetchExternalData();
20
+ return Object.assign(Object.assign({}, externalData), argv);
21
+ });
22
+ task.addListener((record) => {
23
+ tape.push(record);
24
+ });
25
+ await task.run({ value: 5 });
26
+ expect(tape.length).toBe(1);
27
+ expect(tape[0].input).toEqual({ value: 5 });
28
+ expect(tape[0].output).toEqual({ value: 5, foo: false });
29
+ expect(tape[0].boundaries).toEqual({
30
+ fetchExternalData: [
31
+ { input: [], output: { foo: false } }
32
+ ]
33
+ });
34
+ });
35
+ it('Should record multiple items and their boundaries tape', async () => {
36
+ const tape = [];
37
+ // Create a schema for the task
38
+ const schema = new index_1.Schema({
39
+ value: index_1.Schema.number()
40
+ });
41
+ // Define the boundaries
42
+ const boundaries = {
43
+ fetchExternalData: async () => {
44
+ return { foo: false };
45
+ }
46
+ };
47
+ // Create the task using createTask
48
+ const task = (0, index_1.createTask)(schema, boundaries, async (argv, boundaries) => {
49
+ const externalData = await boundaries.fetchExternalData();
50
+ return Object.assign(Object.assign({}, externalData), argv);
51
+ });
52
+ task.addListener((record) => {
53
+ tape.push(record);
54
+ });
55
+ await task.run({ value: 5 });
56
+ await task.run({ value: 6 });
57
+ expect(tape.length).toBe(2);
58
+ expect(tape[0].input).toEqual({ value: 5 });
59
+ expect(tape[0].output).toEqual({ value: 5, foo: false });
60
+ expect(tape[0].boundaries).toEqual({
61
+ fetchExternalData: [
62
+ { input: [], output: { foo: false } }
63
+ ]
64
+ });
65
+ expect(tape[1].input).toEqual({ value: 6 });
66
+ expect(tape[1].output).toEqual({ value: 6, foo: false });
67
+ expect(tape[1].boundaries).toEqual({
68
+ fetchExternalData: [
69
+ { input: [], output: { foo: false } }
70
+ ]
71
+ });
72
+ });
73
+ it('Should record error and its boundaries tape', async () => {
74
+ const tape = [];
75
+ // Create a schema for the task
76
+ const schema = new index_1.Schema({
77
+ value: index_1.Schema.number().optional()
78
+ });
79
+ // Define the boundaries
80
+ const boundaries = {
81
+ fetchExternalData: async () => {
82
+ return { foo: false };
83
+ }
84
+ };
85
+ // Create the task using createTask
86
+ const task = (0, index_1.createTask)(schema, boundaries, async (argv, boundaries) => {
87
+ const externalData = await boundaries.fetchExternalData();
88
+ if (typeof argv.value === 'undefined') {
89
+ throw new Error('Value is required');
90
+ }
91
+ return Object.assign(Object.assign({}, externalData), argv);
92
+ });
93
+ task.addListener((record) => {
94
+ tape.push(record);
95
+ });
96
+ try {
97
+ await task.run({});
98
+ }
99
+ catch (e) {
100
+ // Error is expected
101
+ }
102
+ expect(tape.length).toBe(1);
103
+ expect(tape[0].input).toEqual({});
104
+ expect(tape[0].error).toBe('Value is required');
105
+ expect(tape[0].boundaries).toEqual({
106
+ fetchExternalData: [
107
+ { input: [], output: { foo: false } }
108
+ ]
109
+ });
110
+ });
111
+ it('Should record error + success and their boundaries tape', async () => {
112
+ const tape = [];
113
+ // Create a schema for the task
114
+ const schema = new index_1.Schema({
115
+ value: index_1.Schema.number().optional()
116
+ });
117
+ // Define the boundaries
118
+ const boundaries = {
119
+ fetchExternalData: async () => {
120
+ return { foo: false };
121
+ }
122
+ };
123
+ // Create the task using createTask
124
+ const task = (0, index_1.createTask)(schema, boundaries, async (argv, boundaries) => {
125
+ const externalData = await boundaries.fetchExternalData();
126
+ if (typeof argv.value === 'undefined') {
127
+ throw new Error('Value is required');
128
+ }
129
+ return Object.assign(Object.assign({}, externalData), argv);
130
+ });
131
+ task.addListener((record) => {
132
+ tape.push(record);
133
+ });
134
+ try {
135
+ await task.run({});
136
+ }
137
+ catch (e) {
138
+ // Error is expected
139
+ }
140
+ await task.run({ value: 5 });
141
+ expect(tape.length).toBe(2);
142
+ expect(tape[0].input).toEqual({});
143
+ expect(tape[0].error).toBe('Value is required');
144
+ expect(tape[0].boundaries).toEqual({
145
+ fetchExternalData: [
146
+ { input: [], output: { foo: false } }
147
+ ]
148
+ });
149
+ expect(tape[1].input).toEqual({ value: 5 });
150
+ expect(tape[1].output).toEqual({ value: 5, foo: false });
151
+ expect(tape[1].boundaries).toEqual({
152
+ fetchExternalData: [
153
+ { input: [], output: { foo: false } }
154
+ ]
155
+ });
156
+ });
157
+ it('Should record 2 run logs if boundary called twice', async () => {
158
+ const tape = [];
159
+ // Create a schema for the task
160
+ const schema = new index_1.Schema({
161
+ value: index_1.Schema.number()
162
+ });
163
+ // Define the boundaries
164
+ const boundaries = {
165
+ fetchExternalData: async () => {
166
+ return { foo: false };
167
+ }
168
+ };
169
+ // Create the task using createTask
170
+ const task = (0, index_1.createTask)(schema, boundaries, async (argv, boundaries) => {
171
+ await boundaries.fetchExternalData();
172
+ await boundaries.fetchExternalData();
173
+ return { foo: true };
174
+ });
175
+ task.addListener((record) => {
176
+ tape.push(record);
177
+ });
178
+ await task.run({ value: 5 });
179
+ expect(tape.length).toBe(1);
180
+ expect(tape[0].input).toEqual({ value: 5 });
181
+ expect(tape[0].output).toEqual({ foo: true });
182
+ expect(tape[0].boundaries).toEqual({
183
+ fetchExternalData: [
184
+ { input: [], output: { foo: false } },
185
+ { input: [], output: { foo: false } }
186
+ ]
187
+ });
188
+ });
189
+ it('Should record 2 boundary logs', async () => {
190
+ const tape = [];
191
+ // Create a schema for the task
192
+ const schema = new index_1.Schema({
193
+ value: index_1.Schema.number()
194
+ });
195
+ // Define the boundaries
196
+ const boundaries = {
197
+ add: async (value) => {
198
+ return value + 1;
199
+ },
200
+ subtract: async (value) => {
201
+ return value - 1;
202
+ }
203
+ };
204
+ // Create the task using createTask
205
+ const task = (0, index_1.createTask)(schema, boundaries, async (argv, boundaries) => {
206
+ let counter = argv.value;
207
+ counter = await boundaries.add(counter);
208
+ counter = await boundaries.subtract(counter);
209
+ counter = await boundaries.subtract(counter);
210
+ return counter;
211
+ });
212
+ task.addListener((record) => {
213
+ tape.push(record);
214
+ });
215
+ await task.run({ value: 5 });
216
+ expect(tape.length).toBe(1);
217
+ expect(tape[0].input).toEqual({ value: 5 });
218
+ expect(tape[0].output).toBe(4);
219
+ expect(tape[0].boundaries).toEqual({
220
+ add: [
221
+ { input: [5], output: 6 }
222
+ ],
223
+ subtract: [
224
+ { input: [6], output: 5 },
225
+ { input: [5], output: 4 }
226
+ ]
227
+ });
228
+ });
229
+ });
230
+ //# sourceMappingURL=add-listener-with-boundaries.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-listener-with-boundaries.test.js","sourceRoot":"","sources":["../../src/test/add-listener-with-boundaries.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=add-listener.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-listener.test.d.ts","sourceRoot":"","sources":["../../src/test/add-listener.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ const schema_1 = require("@shadow/schema");
5
+ describe('Listener tests', () => {
6
+ it('Should record one item', async () => {
7
+ const tape = [];
8
+ const task = new index_1.Task(function (_argv) {
9
+ return _argv;
10
+ });
11
+ task.addListener((record) => {
12
+ tape.push(record);
13
+ });
14
+ await task.run({ value: 5 });
15
+ expect(tape.length).toBe(1);
16
+ expect(tape[0].input).toEqual({ value: 5 });
17
+ expect(tape[0].output).toEqual({ value: 5 });
18
+ });
19
+ it('Should record execution error', async () => {
20
+ const tape = [];
21
+ const task = new index_1.Task(function (_argv) {
22
+ throw new Error('This should happen');
23
+ });
24
+ task.addListener((record) => {
25
+ tape.push(record);
26
+ });
27
+ try {
28
+ await task.run({ value: 5 });
29
+ }
30
+ catch (e) {
31
+ // Error is expected
32
+ }
33
+ expect(tape.length).toBe(1);
34
+ expect(tape[0].input).toEqual({ value: 5 });
35
+ expect(tape[0].error).toBe('This should happen');
36
+ });
37
+ it('Should record validation error', async () => {
38
+ const tape = [];
39
+ const schema = new schema_1.Schema({
40
+ value: schema_1.Schema.number().min(5)
41
+ });
42
+ const task = new index_1.Task(function (_argv) {
43
+ return _argv;
44
+ }, {
45
+ schema
46
+ });
47
+ task.addListener((record) => {
48
+ tape.push(record);
49
+ });
50
+ try {
51
+ await task.run({ value: 3 });
52
+ }
53
+ catch (e) {
54
+ // Error is expected
55
+ }
56
+ expect(tape.length).toBe(1);
57
+ expect(tape[0].input).toEqual({ value: 3 });
58
+ expect(tape[0].error).toBe('Invalid input');
59
+ });
60
+ it('Should record multiple records', async () => {
61
+ const tape = [];
62
+ const task = new index_1.Task(function (_argv) {
63
+ return _argv;
64
+ });
65
+ task.addListener((record) => {
66
+ tape.push(record);
67
+ });
68
+ await task.run({ value: 5 });
69
+ await task.run({ value: 6 });
70
+ expect(tape.length).toBe(2);
71
+ expect(tape[0].input).toEqual({ value: 5 });
72
+ expect(tape[0].output).toEqual({ value: 5 });
73
+ expect(tape[1].input).toEqual({ value: 6 });
74
+ expect(tape[1].output).toEqual({ value: 6 });
75
+ });
76
+ it('Should stop recording', async () => {
77
+ const tape = [];
78
+ const task = new index_1.Task(function (_argv) {
79
+ return _argv;
80
+ });
81
+ task.addListener((record) => {
82
+ tape.push(record);
83
+ });
84
+ await task.run({ value: 5 });
85
+ task.removeListener();
86
+ await task.run({ value: 6 });
87
+ expect(tape.length).toBe(1);
88
+ expect(tape[0].input).toEqual({ value: 5 });
89
+ expect(tape[0].output).toEqual({ value: 5 });
90
+ });
91
+ });
92
+ //# sourceMappingURL=add-listener.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-listener.test.js","sourceRoot":"","sources":["../../src/test/add-listener.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=boundary-modes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-modes.test.d.ts","sourceRoot":"","sources":["../../src/test/boundary-modes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe('Proxy mode', function () {
5
+ // Proxy: execute the function and records it
6
+ it('Should execute the boundary', async function () {
7
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
8
+ const increment = await fetchIncrement(argv);
9
+ return argv.value + increment;
10
+ }, {
11
+ boundaries: {
12
+ fetchIncrement: async (argv) => {
13
+ return argv.value;
14
+ }
15
+ },
16
+ mode: 'proxy'
17
+ });
18
+ const { fetchIncrement } = add.getBoundaries();
19
+ const result = await add.run({ value: 5 });
20
+ expect(result).toBe(10);
21
+ expect(fetchIncrement.getMode()).toBe('proxy');
22
+ });
23
+ });
24
+ describe('Proxy pass mode', function () {
25
+ // Proxy pass: review if the input exist, it it exist returns the previous value and if not execute the functions
26
+ it('Should return value from record', async function () {
27
+ let i = 0;
28
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
29
+ const increment = await fetchIncrement(argv);
30
+ return argv.value + increment;
31
+ }, {
32
+ boundaries: {
33
+ fetchIncrement: async (argv) => {
34
+ i++;
35
+ return argv.value;
36
+ }
37
+ },
38
+ boundariesData: {
39
+ fetchIncrement: [
40
+ { input: [{ value: 5 }], output: 5 }
41
+ ]
42
+ },
43
+ mode: 'proxy-pass'
44
+ });
45
+ const { fetchIncrement } = add.getBoundaries();
46
+ const result = await add.run({ value: 5 });
47
+ expect(fetchIncrement.getMode()).toBe('proxy-pass');
48
+ expect(result).toBe(10);
49
+ expect(i).toBe(0);
50
+ });
51
+ it('Should run boundary', async function () {
52
+ let i = 0;
53
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
54
+ const increment = await fetchIncrement(argv);
55
+ return argv.value + increment;
56
+ }, {
57
+ boundaries: {
58
+ fetchIncrement: async (argv) => {
59
+ i++;
60
+ return argv.value;
61
+ }
62
+ },
63
+ boundariesData: {
64
+ fetchIncrement: [
65
+ { input: [{ value: 6 }], output: 5 }
66
+ ]
67
+ },
68
+ mode: 'proxy-pass'
69
+ });
70
+ const { fetchIncrement } = add.getBoundaries();
71
+ const result = await add.run({ value: 5 });
72
+ expect(fetchIncrement.getMode()).toBe('proxy-pass');
73
+ expect(result).toBe(10);
74
+ expect(i).toBe(1);
75
+ });
76
+ });
77
+ describe('Proxy catch mode', function () {
78
+ // Proxy-catch: executes the function and if it throws and error, it tries to use a previews output if it exists for the input.
79
+ it('Should run boundary', async function () {
80
+ let i = 0;
81
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
82
+ const increment = await fetchIncrement(argv);
83
+ return argv.value + increment;
84
+ }, {
85
+ boundaries: {
86
+ fetchIncrement: async (argv) => {
87
+ i++;
88
+ return argv.value;
89
+ }
90
+ },
91
+ boundariesData: {
92
+ fetchIncrement: [
93
+ { input: [{ value: 5 }], output: 5 }
94
+ ]
95
+ },
96
+ mode: 'proxy-catch'
97
+ });
98
+ const { fetchIncrement } = add.getBoundaries();
99
+ const result = await add.run({ value: 5 });
100
+ expect(fetchIncrement.getMode()).toBe('proxy-catch');
101
+ expect(result).toBe(10);
102
+ expect(i).toBe(1);
103
+ });
104
+ it('After boundary fails, should return value from record', async function () {
105
+ let i = 0;
106
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
107
+ const increment = await fetchIncrement(argv);
108
+ return argv.value + increment;
109
+ }, {
110
+ boundaries: {
111
+ fetchIncrement: async (_argv) => {
112
+ i++;
113
+ throw new Error('Something');
114
+ }
115
+ },
116
+ boundariesData: {
117
+ fetchIncrement: [
118
+ { input: [{ value: 5 }], output: 5 }
119
+ ]
120
+ },
121
+ mode: 'proxy-catch'
122
+ });
123
+ const { fetchIncrement } = add.getBoundaries();
124
+ const result = await add.run({ value: 5 });
125
+ expect(fetchIncrement.getMode()).toBe('proxy-catch');
126
+ expect(result).toBe(10);
127
+ expect(i).toBe(1);
128
+ });
129
+ });
130
+ describe('Replay mode', function () {
131
+ // Replay: review if the input exist and if it doesnt throws and error.
132
+ it('Should return value from record', async function () {
133
+ let i = 0;
134
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
135
+ const increment = await fetchIncrement(argv);
136
+ return argv.value + increment;
137
+ }, {
138
+ boundaries: {
139
+ fetchIncrement: async (_argv) => {
140
+ i++;
141
+ return 0; // This should never be called in replay mode with existing data
142
+ }
143
+ },
144
+ boundariesData: {
145
+ fetchIncrement: [
146
+ { input: [{ value: 5 }], output: 5 }
147
+ ]
148
+ },
149
+ mode: 'replay'
150
+ });
151
+ const { fetchIncrement } = add.getBoundaries();
152
+ const result = await add.run({ value: 5 });
153
+ expect(fetchIncrement.getMode()).toBe('replay');
154
+ expect(result).toBe(10);
155
+ expect(i).toBe(0);
156
+ });
157
+ it('Should fail if the input its not present', async function () {
158
+ let i = 0;
159
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
160
+ const increment = await fetchIncrement(argv);
161
+ return argv.value + increment;
162
+ }, {
163
+ boundaries: {
164
+ fetchIncrement: async (_argv) => {
165
+ i++;
166
+ return 0; // This should never be called in replay mode
167
+ }
168
+ },
169
+ mode: 'replay'
170
+ });
171
+ const { fetchIncrement } = add.getBoundaries();
172
+ let err;
173
+ try {
174
+ await add.run({ value: 5 });
175
+ }
176
+ catch (e) {
177
+ err = e;
178
+ }
179
+ expect(fetchIncrement.getMode()).toBe('replay');
180
+ expect(err === null || err === void 0 ? void 0 : err.message).toBe('No tape value for this inputs');
181
+ expect(i).toBe(0);
182
+ });
183
+ });
184
+ //# sourceMappingURL=boundary-modes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-modes.test.js","sourceRoot":"","sources":["../../src/test/boundary-modes.test.ts"],"names":[],"mappings":";;AAAA,oCAA+B;AAQ/B,QAAQ,CAAC,YAAY,EAAE;IACrB,6CAA6C;IAC7C,EAAE,CAAC,6BAA6B,EAAE,KAAK;QACrC,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,IAAuB,EAAmB,EAAE;oBACjE,OAAO,IAAI,CAAC,KAAK,CAAA;gBACnB,CAAC;aACF;YACD,IAAI,EAAE,OAAO;SACd,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iBAAiB,EAAE;IAC1B,iHAAiH;IACjH,EAAE,CAAC,iCAAiC,EAAE,KAAK;QACzC,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,IAAuB,EAAmB,EAAE;oBACjE,CAAC,EAAE,CAAA;oBACH,OAAO,IAAI,CAAC,KAAK,CAAA;gBACnB,CAAC;aACF;YACD,cAAc,EAAE;gBACd,cAAc,EAAE;oBACd,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBACrC;aACF;YACD,IAAI,EAAE,YAAY;SACnB,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,KAAK;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,IAAuB,EAAmB,EAAE;oBACjE,CAAC,EAAE,CAAA;oBACH,OAAO,IAAI,CAAC,KAAK,CAAA;gBACnB,CAAC;aACF;YACD,cAAc,EAAE;gBACd,cAAc,EAAE;oBACd,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBACrC;aACF;YACD,IAAI,EAAE,YAAY;SACnB,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,kBAAkB,EAAE;IAC3B,+HAA+H;IAC/H,EAAE,CAAC,qBAAqB,EAAE,KAAK;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,IAAuB,EAAmB,EAAE;oBACjE,CAAC,EAAE,CAAA;oBACH,OAAO,IAAI,CAAC,KAAK,CAAA;gBACnB,CAAC;aACF;YACD,cAAc,EAAE;gBACd,cAAc,EAAE;oBACd,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBACrC;aACF;YACD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK;QAC/D,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,KAAwB,EAAmB,EAAE;oBAClE,CAAC,EAAE,CAAA;oBACH,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;gBAC9B,CAAC;aACF;YACD,cAAc,EAAE;gBACd,cAAc,EAAE;oBACd,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBACrC;aACF;YACD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE;IACtB,uEAAuE;IACvE,EAAE,CAAC,iCAAiC,EAAE,KAAK;QACzC,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,KAAwB,EAAmB,EAAE;oBAClE,CAAC,EAAE,CAAA;oBACH,OAAO,CAAC,CAAA,CAAC,gEAAgE;gBAC3E,CAAC;aACF;YACD,cAAc,EAAE;gBACd,cAAc,EAAE;oBACd,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBACrC;aACF;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAE1C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK;QAClD,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAkB,EAAE,EAAE;YACzF,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,KAAwB,EAAmB,EAAE;oBAClE,CAAC,EAAE,CAAA;oBACH,OAAO,CAAC,CAAA,CAAC,6CAA6C;gBACxD,CAAC;aACF;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAE9C,IAAI,GAAsB,CAAA;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,CAAU,CAAA;QAClB,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=change-mode.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-mode.test.d.ts","sourceRoot":"","sources":["../../src/test/change-mode.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe('Change modes', () => {
5
+ it('On task start, boundaries should start in the same mode', async () => {
6
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
7
+ const increment = await fetchIncrement(argv);
8
+ return argv.value + increment;
9
+ }, {
10
+ boundaries: {
11
+ fetchIncrement: async (argv) => {
12
+ return argv.value;
13
+ }
14
+ },
15
+ mode: 'proxy-catch'
16
+ });
17
+ const { fetchIncrement } = add.getBoundaries();
18
+ expect(fetchIncrement.getMode()).toBe('proxy-catch');
19
+ });
20
+ it('On task mode change, boundaries should change to the same', async () => {
21
+ const add = new index_1.Task(async (argv, { fetchIncrement }) => {
22
+ const increment = await fetchIncrement(argv);
23
+ return argv.value + increment;
24
+ }, {
25
+ boundaries: {
26
+ fetchIncrement: async (argv) => {
27
+ return argv.value;
28
+ }
29
+ },
30
+ mode: 'proxy-catch'
31
+ });
32
+ const { fetchIncrement: original } = add.getBoundaries();
33
+ expect(original.getMode()).toBe('proxy-catch');
34
+ add.setMode('replay');
35
+ const { fetchIncrement: updated } = add.getBoundaries();
36
+ expect(updated.getMode()).toBe('replay');
37
+ });
38
+ });
39
+ //# sourceMappingURL=change-mode.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-mode.test.js","sourceRoot":"","sources":["../../src/test/change-mode.test.ts"],"names":[],"mappings":";;AAAA,oCAA+B;AAE/B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;YACzE,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,IAAuB,EAAmB,EAAE;oBACjE,OAAO,IAAI,CAAC,KAAK,CAAA;gBACnB,CAAC;aACF;YACD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAE9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,GAAG,GAAG,IAAI,YAAI,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;YACzE,MAAM,SAAS,GAAW,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;YAEpD,OAAO,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B,CAAC,EAAE;YACD,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK,EAAE,IAAuB,EAAmB,EAAE;oBACjE,OAAO,IAAI,CAAC,KAAK,CAAA;gBACnB,CAAC;aACF;YACD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAA;QAEF,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QACxD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAE9C,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAErB,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QACvD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/test/index.test.ts"],"names":[],"mappings":""}