@walkeros/collector 0.4.0 → 0.4.1

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 (97) hide show
  1. package/dist/__tests__/auto-run.test.d.ts +2 -0
  2. package/dist/__tests__/auto-run.test.d.ts.map +1 -0
  3. package/dist/__tests__/auto-run.test.js +105 -0
  4. package/dist/__tests__/auto-run.test.js.map +1 -0
  5. package/dist/__tests__/consent.test.d.ts +2 -0
  6. package/dist/__tests__/consent.test.d.ts.map +1 -0
  7. package/dist/__tests__/consent.test.js +21 -0
  8. package/dist/__tests__/consent.test.js.map +1 -0
  9. package/dist/__tests__/create-flow.test.d.ts +2 -0
  10. package/dist/__tests__/create-flow.test.d.ts.map +1 -0
  11. package/dist/__tests__/create-flow.test.js +69 -0
  12. package/dist/__tests__/create-flow.test.js.map +1 -0
  13. package/dist/__tests__/destination.test.d.ts +2 -0
  14. package/dist/__tests__/destination.test.d.ts.map +1 -0
  15. package/dist/__tests__/destination.test.js +242 -0
  16. package/dist/__tests__/destination.test.js.map +1 -0
  17. package/dist/__tests__/handle.test.d.ts +2 -0
  18. package/dist/__tests__/handle.test.d.ts.map +1 -0
  19. package/dist/__tests__/handle.test.js +78 -0
  20. package/dist/__tests__/handle.test.js.map +1 -0
  21. package/dist/__tests__/mapping.test.d.ts +2 -0
  22. package/dist/__tests__/mapping.test.d.ts.map +1 -0
  23. package/dist/__tests__/mapping.test.js +310 -0
  24. package/dist/__tests__/mapping.test.js.map +1 -0
  25. package/dist/__tests__/source.test.d.ts +2 -0
  26. package/dist/__tests__/source.test.d.ts.map +1 -0
  27. package/dist/__tests__/source.test.js +306 -0
  28. package/dist/__tests__/source.test.js.map +1 -0
  29. package/dist/__tests__/start-flow.test.d.ts +2 -0
  30. package/dist/__tests__/start-flow.test.d.ts.map +1 -0
  31. package/dist/__tests__/start-flow.test.js +167 -0
  32. package/dist/__tests__/start-flow.test.js.map +1 -0
  33. package/dist/__tests__/walker-entity.test.d.ts +2 -0
  34. package/dist/__tests__/walker-entity.test.d.ts.map +1 -0
  35. package/dist/__tests__/walker-entity.test.js +52 -0
  36. package/dist/__tests__/walker-entity.test.js.map +1 -0
  37. package/dist/collector.d.ts +3 -0
  38. package/dist/collector.d.ts.map +1 -0
  39. package/dist/collector.js +59 -0
  40. package/dist/collector.js.map +1 -0
  41. package/dist/command.d.ts +12 -0
  42. package/dist/command.d.ts.map +1 -0
  43. package/dist/command.js +20 -0
  44. package/dist/command.js.map +1 -0
  45. package/dist/consent.d.ts +10 -0
  46. package/dist/consent.d.ts.map +1 -0
  47. package/dist/consent.js +30 -0
  48. package/dist/consent.js.map +1 -0
  49. package/dist/constants.d.ts +13 -0
  50. package/dist/constants.d.ts.map +1 -0
  51. package/dist/constants.js +35 -0
  52. package/dist/constants.js.map +1 -0
  53. package/dist/destination.d.ts +56 -0
  54. package/dist/destination.d.ts.map +1 -0
  55. package/dist/destination.js +289 -0
  56. package/dist/destination.js.map +1 -0
  57. package/dist/dev.d.ts.map +1 -0
  58. package/dist/elb.d.ts +11 -0
  59. package/dist/elb.d.ts.map +1 -0
  60. package/dist/elb.js +60 -0
  61. package/dist/elb.js.map +1 -0
  62. package/dist/flow.d.ts +4 -0
  63. package/dist/flow.d.ts.map +1 -0
  64. package/dist/flow.js +44 -0
  65. package/dist/flow.js.map +1 -0
  66. package/dist/handle.d.ts +29 -0
  67. package/dist/handle.d.ts.map +1 -0
  68. package/dist/handle.js +161 -0
  69. package/dist/handle.js.map +1 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +1 -1
  72. package/dist/index.mjs +1 -1
  73. package/dist/on.d.ts +19 -0
  74. package/dist/on.d.ts.map +1 -0
  75. package/dist/on.js +116 -0
  76. package/dist/on.js.map +1 -0
  77. package/dist/push.d.ts +11 -0
  78. package/dist/push.d.ts.map +1 -0
  79. package/dist/push.js +43 -0
  80. package/dist/push.js.map +1 -0
  81. package/dist/schemas.d.ts +6 -0
  82. package/dist/schemas.d.ts.map +1 -0
  83. package/dist/schemas.js +37 -0
  84. package/dist/schemas.js.map +1 -0
  85. package/dist/source.d.ts +10 -0
  86. package/dist/source.d.ts.map +1 -0
  87. package/dist/source.js +40 -0
  88. package/dist/source.js.map +1 -0
  89. package/dist/types/collector.d.ts +19 -0
  90. package/dist/types/collector.d.ts.map +1 -0
  91. package/dist/types/collector.js +2 -0
  92. package/dist/types/collector.js.map +1 -0
  93. package/dist/types/index.d.ts +2 -0
  94. package/dist/types/index.d.ts.map +1 -0
  95. package/dist/types/index.js +2 -0
  96. package/dist/types/index.js.map +1 -0
  97. package/package.json +2 -2
@@ -0,0 +1,310 @@
1
+ import { startFlow } from '..';
2
+ describe('Mapping', () => {
3
+ describe('Source Mapping', () => {
4
+ let spyDestination;
5
+ beforeEach(() => {
6
+ spyDestination = {
7
+ type: 'spy',
8
+ config: {},
9
+ push: jest.fn(),
10
+ };
11
+ });
12
+ test('event name override', async () => {
13
+ const mockSource = jest.fn((config, env) => ({
14
+ type: 'test',
15
+ config,
16
+ push: env.push,
17
+ }));
18
+ const { collector } = await startFlow({
19
+ sources: {
20
+ test: {
21
+ code: mockSource,
22
+ config: {
23
+ mapping: {
24
+ product: {
25
+ click: { name: 'product view' },
26
+ },
27
+ },
28
+ },
29
+ },
30
+ },
31
+ destinations: {
32
+ spy: {
33
+ code: spyDestination,
34
+ },
35
+ },
36
+ });
37
+ // Trigger source push
38
+ await collector.sources.test.push({
39
+ name: 'product click',
40
+ data: { id: 'P123' },
41
+ });
42
+ // Verify destination received renamed event
43
+ expect(spyDestination.push).toHaveBeenCalledWith(expect.objectContaining({ name: 'product view' }), expect.any(Object));
44
+ });
45
+ test('ignore rule', async () => {
46
+ const mockSource = jest.fn((config, env) => ({
47
+ type: 'test',
48
+ config,
49
+ push: env.push,
50
+ }));
51
+ const { collector } = await startFlow({
52
+ sources: {
53
+ test: {
54
+ code: mockSource,
55
+ config: {
56
+ mapping: {
57
+ internal: {
58
+ '*': { ignore: true },
59
+ },
60
+ },
61
+ },
62
+ },
63
+ },
64
+ destinations: {
65
+ spy: {
66
+ code: spyDestination,
67
+ },
68
+ },
69
+ });
70
+ // Trigger source push
71
+ await collector.sources.test.push({ name: 'internal debug', data: {} });
72
+ // Verify destination never received event
73
+ expect(spyDestination.push).not.toHaveBeenCalled();
74
+ });
75
+ // Note: Source data transformation creates context data for destinations,
76
+ // but there's currently no mechanism to pass this through the collector.
77
+ // This would require architectural changes to support properly.
78
+ test('policy enrichment modifies event', async () => {
79
+ const mockSource = jest.fn((config, env) => ({
80
+ type: 'test',
81
+ config,
82
+ push: env.push,
83
+ }));
84
+ const { collector } = await startFlow({
85
+ sources: {
86
+ test: {
87
+ code: mockSource,
88
+ config: {
89
+ policy: {
90
+ 'data.email': {
91
+ fn: (event) => event.data?.email?.toLowerCase(),
92
+ },
93
+ },
94
+ },
95
+ },
96
+ },
97
+ destinations: {
98
+ spy: {
99
+ code: spyDestination,
100
+ },
101
+ },
102
+ });
103
+ // Trigger source push
104
+ await collector.sources.test.push({
105
+ name: 'user login',
106
+ data: { email: 'USER@EXAMPLE.COM' },
107
+ });
108
+ // Verify destination received event with normalized email in EVENT data
109
+ expect(spyDestination.push).toHaveBeenCalledWith(expect.objectContaining({
110
+ data: expect.objectContaining({ email: 'user@example.com' }),
111
+ }), expect.any(Object));
112
+ });
113
+ test('consent requirement', async () => {
114
+ const mockSource = jest.fn((config, env) => ({
115
+ type: 'test',
116
+ config,
117
+ push: env.push,
118
+ }));
119
+ const { collector } = await startFlow({
120
+ consent: {}, // No consent granted
121
+ sources: {
122
+ test: {
123
+ code: mockSource,
124
+ config: {
125
+ consent: { marketing: true }, // Requires marketing consent
126
+ },
127
+ },
128
+ },
129
+ destinations: {
130
+ spy: {
131
+ code: spyDestination,
132
+ },
133
+ },
134
+ });
135
+ // Trigger source push
136
+ await collector.sources.test.push('user track');
137
+ // Verify destination never received event (no consent)
138
+ expect(spyDestination.push).not.toHaveBeenCalled();
139
+ });
140
+ });
141
+ describe('Destination Mapping', () => {
142
+ let spyDestination;
143
+ beforeEach(() => {
144
+ spyDestination = {
145
+ type: 'spy',
146
+ config: {},
147
+ push: jest.fn(),
148
+ };
149
+ });
150
+ test('event name override', async () => {
151
+ const mockSource = jest.fn((config, env) => ({
152
+ type: 'test',
153
+ config,
154
+ push: env.push,
155
+ }));
156
+ spyDestination.config = {
157
+ mapping: {
158
+ product: {
159
+ click: { name: 'product view' },
160
+ },
161
+ },
162
+ };
163
+ const { collector } = await startFlow({
164
+ sources: {
165
+ test: {
166
+ code: mockSource,
167
+ },
168
+ },
169
+ destinations: {
170
+ spy: {
171
+ code: spyDestination,
172
+ },
173
+ },
174
+ });
175
+ // Trigger source push
176
+ await collector.sources.test.push({
177
+ name: 'product click',
178
+ data: { id: 'P123' },
179
+ });
180
+ // Verify destination received renamed event
181
+ expect(spyDestination.push).toHaveBeenCalledWith(expect.objectContaining({ name: 'product view' }), expect.any(Object));
182
+ });
183
+ test('ignore rule', async () => {
184
+ const mockSource = jest.fn((config, env) => ({
185
+ type: 'test',
186
+ config,
187
+ push: env.push,
188
+ }));
189
+ spyDestination.config = {
190
+ mapping: {
191
+ internal: {
192
+ '*': { ignore: true },
193
+ },
194
+ },
195
+ };
196
+ const { collector } = await startFlow({
197
+ sources: {
198
+ test: {
199
+ code: mockSource,
200
+ },
201
+ },
202
+ destinations: {
203
+ spy: {
204
+ code: spyDestination,
205
+ },
206
+ },
207
+ });
208
+ // Trigger source push
209
+ await collector.sources.test.push({ name: 'internal debug', data: {} });
210
+ // Verify destination never received event
211
+ expect(spyDestination.push).not.toHaveBeenCalled();
212
+ });
213
+ test('data transformation', async () => {
214
+ const mockSource = jest.fn((config, env) => ({
215
+ type: 'test',
216
+ config,
217
+ push: env.push,
218
+ }));
219
+ spyDestination.config = {
220
+ data: {
221
+ map: {
222
+ category: { value: 'Electronics' },
223
+ },
224
+ },
225
+ };
226
+ const { collector } = await startFlow({
227
+ sources: {
228
+ test: {
229
+ code: mockSource,
230
+ },
231
+ },
232
+ destinations: {
233
+ spy: {
234
+ code: spyDestination,
235
+ },
236
+ },
237
+ });
238
+ // Trigger source push
239
+ await collector.sources.test.push({
240
+ name: 'product view',
241
+ data: { id: 'P123', name: 'Laptop' },
242
+ });
243
+ // Verify destination received event with transformed data
244
+ expect(spyDestination.push).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({
245
+ data: { category: 'Electronics' },
246
+ }));
247
+ });
248
+ test('global data transformation', async () => {
249
+ const mockSource = jest.fn((config, env) => ({
250
+ type: 'test',
251
+ config,
252
+ push: env.push,
253
+ }));
254
+ spyDestination.config = {
255
+ data: {
256
+ value: 'destination-metadata',
257
+ },
258
+ };
259
+ const { collector } = await startFlow({
260
+ sources: {
261
+ test: {
262
+ code: mockSource,
263
+ },
264
+ },
265
+ destinations: {
266
+ spy: {
267
+ code: spyDestination,
268
+ },
269
+ },
270
+ });
271
+ // Trigger source push
272
+ await collector.sources.test.push({
273
+ name: 'product view',
274
+ data: { id: 'P123', name: 'Laptop' },
275
+ });
276
+ // Verify destination received transformed data in context
277
+ expect(spyDestination.push).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({
278
+ data: 'destination-metadata',
279
+ }));
280
+ });
281
+ test('consent requirement', async () => {
282
+ const mockSource = jest.fn((config, env) => ({
283
+ type: 'test',
284
+ config,
285
+ push: env.push,
286
+ }));
287
+ spyDestination.config = {
288
+ consent: { marketing: true }, // Requires marketing consent
289
+ };
290
+ const { collector } = await startFlow({
291
+ consent: {}, // No consent granted
292
+ sources: {
293
+ test: {
294
+ code: mockSource,
295
+ },
296
+ },
297
+ destinations: {
298
+ spy: {
299
+ code: spyDestination,
300
+ },
301
+ },
302
+ });
303
+ // Trigger source push
304
+ await collector.sources.test.push('user track');
305
+ // Verify destination never received event (no consent)
306
+ expect(spyDestination.push).not.toHaveBeenCalled();
307
+ });
308
+ });
309
+ });
310
+ //# sourceMappingURL=mapping.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.test.js","sourceRoot":"","sources":["../../src/__tests__/mapping.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=source.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/source.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,306 @@
1
+ import { startFlow } from '../flow';
2
+ import { initSources } from '../source';
3
+ // Mock source implementation using new pattern
4
+ const mockSource = async (config, env) => {
5
+ const { push } = env;
6
+ if (!push) {
7
+ throw new Error('Mock source requires push function');
8
+ }
9
+ // Simulate some source activity
10
+ setTimeout(() => {
11
+ push({ name: 'mock event', data: { source: 'mock' } });
12
+ }, 10);
13
+ return {
14
+ type: 'mock',
15
+ config: {
16
+ ...config,
17
+ settings: config.settings || { test: true },
18
+ },
19
+ push: push, // Required push method - forwards to collector
20
+ destroy: async () => {
21
+ // Cleanup
22
+ },
23
+ };
24
+ };
25
+ // Mock source that throws an error
26
+ const errorSource = async (config, env) => {
27
+ throw new Error('Source initialization failed');
28
+ };
29
+ describe('Source', () => {
30
+ let collector;
31
+ beforeEach(async () => {
32
+ const result = await startFlow();
33
+ collector = result.collector;
34
+ });
35
+ describe('initSources', () => {
36
+ it('should initialize sources with code/config/env pattern', async () => {
37
+ const sources = {
38
+ testSource: {
39
+ code: mockSource,
40
+ config: {
41
+ type: 'mock',
42
+ settings: { name: 'test' },
43
+ },
44
+ env: {
45
+ custom: 'value',
46
+ },
47
+ },
48
+ };
49
+ collector.sources = await initSources(collector, sources);
50
+ expect(collector.sources).toHaveProperty('testSource');
51
+ expect(collector.sources.testSource.type).toBe('mock');
52
+ expect(collector.sources.testSource.config.settings).toEqual({
53
+ name: 'test',
54
+ });
55
+ });
56
+ it('should handle source initialization errors gracefully', async () => {
57
+ const sources = {
58
+ errorSource: {
59
+ code: errorSource,
60
+ config: {
61
+ type: 'error',
62
+ settings: {},
63
+ },
64
+ env: {},
65
+ },
66
+ };
67
+ // Should not throw an error
68
+ collector.sources = await initSources(collector, sources);
69
+ expect(collector.sources).not.toHaveProperty('errorSource');
70
+ });
71
+ it('should inject elb function into source environment', async () => {
72
+ const captureEnv = async (config, env) => {
73
+ expect(env.push).toBeDefined();
74
+ expect(typeof env.push).toBe('function');
75
+ expect(env.command).toBeDefined();
76
+ expect(typeof env.command).toBe('function');
77
+ // The elb function should be a wrapper that calls collector.push
78
+ // Don't test strict equality since it's wrapped
79
+ return {
80
+ type: 'capture',
81
+ config: {
82
+ ...config,
83
+ settings: config.settings || {},
84
+ },
85
+ push: env.push, // Required push method
86
+ };
87
+ };
88
+ const sources = {
89
+ captureSource: {
90
+ code: captureEnv,
91
+ config: {
92
+ type: 'capture',
93
+ settings: {},
94
+ },
95
+ env: {},
96
+ },
97
+ };
98
+ collector.sources = await initSources(collector, sources);
99
+ expect(collector.sources).toHaveProperty('captureSource');
100
+ });
101
+ it('should merge environment with custom properties', async () => {
102
+ const captureEnv = async (config, env) => {
103
+ expect(env.push).toBeDefined();
104
+ expect(env.command).toBeDefined();
105
+ expect(env.customProp).toBe('customValue');
106
+ expect(env.window).toBeDefined();
107
+ return {
108
+ type: 'env-test',
109
+ config: {
110
+ ...config,
111
+ settings: config.settings || {},
112
+ },
113
+ push: env.push, // Required push method
114
+ };
115
+ };
116
+ const sources = {
117
+ envTestSource: {
118
+ code: captureEnv,
119
+ config: {
120
+ type: 'env-test',
121
+ settings: {},
122
+ },
123
+ env: {
124
+ customProp: 'customValue',
125
+ window: { location: { href: 'https://test.com' } },
126
+ },
127
+ },
128
+ };
129
+ collector.sources = await initSources(collector, sources);
130
+ expect(collector.sources).toHaveProperty('envTestSource');
131
+ });
132
+ it('should initialize multiple sources', async () => {
133
+ const sources = {
134
+ source1: {
135
+ code: mockSource,
136
+ config: {
137
+ type: 'mock1',
138
+ settings: { name: 'source1' },
139
+ },
140
+ env: {},
141
+ },
142
+ source2: {
143
+ code: mockSource,
144
+ config: {
145
+ type: 'mock2',
146
+ settings: { name: 'source2' },
147
+ },
148
+ env: {},
149
+ },
150
+ };
151
+ collector.sources = await initSources(collector, sources);
152
+ expect(collector.sources).toHaveProperty('source1');
153
+ expect(collector.sources).toHaveProperty('source2');
154
+ expect(collector.sources.source1.config.settings).toEqual({
155
+ name: 'source1',
156
+ });
157
+ expect(collector.sources.source2.config.settings).toEqual({
158
+ name: 'source2',
159
+ });
160
+ });
161
+ });
162
+ describe('startFlow with sources', () => {
163
+ it('should initialize sources during collector creation', async () => {
164
+ const { collector: testCollector } = await startFlow({
165
+ sources: {
166
+ testSource: {
167
+ code: mockSource,
168
+ config: {
169
+ type: 'mock',
170
+ settings: { test: true },
171
+ },
172
+ env: {
173
+ mockWindow: { location: 'test' },
174
+ },
175
+ },
176
+ },
177
+ });
178
+ expect(testCollector.sources).toHaveProperty('testSource');
179
+ expect(testCollector.sources.testSource.type).toBe('mock');
180
+ });
181
+ it('should work with empty sources configuration', async () => {
182
+ const { collector: testCollector } = await startFlow({
183
+ sources: {},
184
+ });
185
+ expect(testCollector.sources).toBeDefined();
186
+ // ELB source is always present
187
+ expect(Object.keys(testCollector.sources)).toHaveLength(1);
188
+ expect(testCollector.sources.elb).toBeDefined();
189
+ });
190
+ });
191
+ describe('source push mechanism', () => {
192
+ it('should push events to sources with on method', async () => {
193
+ const onMock = jest.fn();
194
+ // Mock source with on method
195
+ const sourceWithOn = async (config, env) => {
196
+ return {
197
+ type: 'reactive',
198
+ config: {
199
+ ...config,
200
+ settings: config.settings || {},
201
+ },
202
+ push: env.push, // Required push method
203
+ on: onMock,
204
+ };
205
+ };
206
+ const sources = {
207
+ reactiveSource: {
208
+ code: sourceWithOn,
209
+ config: {
210
+ type: 'reactive',
211
+ settings: { test: true },
212
+ },
213
+ env: {},
214
+ },
215
+ };
216
+ collector.sources = await initSources(collector, sources);
217
+ // Trigger consent event
218
+ await collector.command('consent', { marketing: true });
219
+ // Verify the source's on method was called
220
+ expect(onMock).toHaveBeenCalledWith('consent', { marketing: true });
221
+ });
222
+ it('should push session events to sources', async () => {
223
+ const onMock = jest.fn();
224
+ const sourceWithOn = async (config, env) => {
225
+ return {
226
+ type: 'reactive',
227
+ config: {
228
+ ...config,
229
+ settings: config.settings || {},
230
+ },
231
+ push: env.push, // Required push method
232
+ on: onMock,
233
+ };
234
+ };
235
+ collector.sources = await initSources(collector, {
236
+ reactiveSource: {
237
+ code: sourceWithOn,
238
+ config: { type: 'reactive', settings: {} },
239
+ env: {},
240
+ },
241
+ });
242
+ // Set session data and trigger session event
243
+ collector.session = {
244
+ id: 'test-session',
245
+ isStart: true,
246
+ storage: false,
247
+ device: 'test',
248
+ };
249
+ await collector.command('session');
250
+ // Verify the source's on method was called with session context
251
+ expect(onMock).toHaveBeenCalledWith('session', collector.session);
252
+ });
253
+ it('should not fail if source does not have on method', async () => {
254
+ const sourceWithoutOn = async (config, env) => {
255
+ return {
256
+ type: 'passive',
257
+ config: {
258
+ ...config,
259
+ settings: config.settings || {},
260
+ },
261
+ push: env.push, // Required push method
262
+ // No on method
263
+ };
264
+ };
265
+ collector.sources = await initSources(collector, {
266
+ passiveSource: {
267
+ code: sourceWithoutOn,
268
+ config: { type: 'passive', settings: {} },
269
+ env: {},
270
+ },
271
+ });
272
+ // Should not throw error even without on method
273
+ expect(async () => {
274
+ await collector.command('consent', { marketing: true });
275
+ }).not.toThrow();
276
+ });
277
+ it('should push different event types correctly', async () => {
278
+ const onMock = jest.fn();
279
+ const sourceWithOn = async (config, env) => {
280
+ return {
281
+ type: 'reactive',
282
+ config: {
283
+ ...config,
284
+ settings: config.settings || {},
285
+ },
286
+ push: env.push, // Required push method
287
+ on: onMock,
288
+ };
289
+ };
290
+ collector.sources = await initSources(collector, {
291
+ reactiveSource: {
292
+ code: sourceWithOn,
293
+ config: { type: 'reactive', settings: {} },
294
+ env: {},
295
+ },
296
+ });
297
+ // Test different event types
298
+ await collector.command('ready');
299
+ await collector.command('run');
300
+ expect(onMock).toHaveBeenCalledWith('ready', undefined);
301
+ expect(onMock).toHaveBeenCalledWith('run', undefined);
302
+ expect(onMock).toHaveBeenCalledTimes(2);
303
+ });
304
+ });
305
+ });
306
+ //# sourceMappingURL=source.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.test.js","sourceRoot":"","sources":["../../src/__tests__/source.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=start-flow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-flow.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/start-flow.test.ts"],"names":[],"mappings":""}