@esri/telemetry-amazon 6.0.0-beta.1 → 6.0.0-beta.11

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 (83) hide show
  1. package/README.md +9 -7
  2. package/dist/esm/auth.js +22 -31
  3. package/dist/esm/auth.js.map +1 -1
  4. package/dist/esm/create-event-log.js +15 -15
  5. package/dist/esm/create-event-log.js.map +1 -1
  6. package/dist/esm/create-event-log.test.js +50 -8
  7. package/dist/esm/create-event-log.test.js.map +1 -1
  8. package/dist/esm/create-page-view-log.js +0 -5
  9. package/dist/esm/create-page-view-log.js.map +1 -1
  10. package/dist/esm/format-telemetry-attributes.js +8 -4
  11. package/dist/esm/format-telemetry-attributes.js.map +1 -1
  12. package/dist/esm/index.js +42 -25
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/index.test.js +94 -16
  15. package/dist/esm/index.test.js.map +1 -1
  16. package/dist/esm/plugins/esri.js +358 -65
  17. package/dist/esm/plugins/esri.js.map +1 -1
  18. package/dist/esm/plugins/esri.test.js +521 -36
  19. package/dist/esm/plugins/esri.test.js.map +1 -1
  20. package/dist/esm/plugins/utils/browser.js +97 -0
  21. package/dist/esm/plugins/utils/browser.js.map +1 -0
  22. package/dist/esm/plugins/utils/browser.test.js +130 -0
  23. package/dist/esm/plugins/utils/browser.test.js.map +1 -0
  24. package/dist/esm/plugins/utils/os.js +140 -0
  25. package/dist/esm/plugins/utils/os.js.map +1 -0
  26. package/dist/esm/plugins/utils/os.test.js +54 -0
  27. package/dist/esm/plugins/utils/os.test.js.map +1 -0
  28. package/dist/esm/plugins/{shared.js → utils/shared.js} +1 -1
  29. package/dist/esm/plugins/utils/shared.js.map +1 -0
  30. package/dist/esm/types.js +97 -1
  31. package/dist/esm/types.js.map +1 -1
  32. package/dist/node/auth.js +22 -31
  33. package/dist/node/auth.js.map +1 -1
  34. package/dist/node/create-event-log.js +15 -15
  35. package/dist/node/create-event-log.js.map +1 -1
  36. package/dist/node/create-event-log.test.js +50 -8
  37. package/dist/node/create-event-log.test.js.map +1 -1
  38. package/dist/node/create-page-view-log.js +0 -5
  39. package/dist/node/create-page-view-log.js.map +1 -1
  40. package/dist/node/format-telemetry-attributes.js +8 -4
  41. package/dist/node/format-telemetry-attributes.js.map +1 -1
  42. package/dist/node/index.js +43 -25
  43. package/dist/node/index.js.map +1 -1
  44. package/dist/node/index.test.js +95 -16
  45. package/dist/node/index.test.js.map +1 -1
  46. package/dist/node/plugins/esri.js +358 -65
  47. package/dist/node/plugins/esri.js.map +1 -1
  48. package/dist/node/plugins/esri.test.js +522 -36
  49. package/dist/node/plugins/esri.test.js.map +1 -1
  50. package/dist/node/plugins/utils/browser.js +101 -0
  51. package/dist/node/plugins/utils/browser.js.map +1 -0
  52. package/dist/node/plugins/utils/browser.test.js +132 -0
  53. package/dist/node/plugins/utils/browser.test.js.map +1 -0
  54. package/dist/node/plugins/utils/os.js +144 -0
  55. package/dist/node/plugins/utils/os.js.map +1 -0
  56. package/dist/node/plugins/utils/os.test.js +56 -0
  57. package/dist/node/plugins/utils/os.test.js.map +1 -0
  58. package/dist/node/plugins/{shared.js → utils/shared.js} +3 -2
  59. package/dist/node/plugins/utils/shared.js.map +1 -0
  60. package/dist/node/types.js +98 -0
  61. package/dist/node/types.js.map +1 -1
  62. package/dist/types/create-event-log.d.ts +2 -2
  63. package/dist/types/format-telemetry-attributes.d.ts +3 -3
  64. package/dist/types/index.d.ts +7 -3
  65. package/dist/types/plugins/esri.d.ts +5 -9
  66. package/dist/types/plugins/utils/browser.d.ts +12 -0
  67. package/dist/types/plugins/utils/browser.test.d.ts +1 -0
  68. package/dist/types/plugins/utils/os.d.ts +5 -0
  69. package/dist/types/plugins/utils/os.test.d.ts +1 -0
  70. package/dist/types/plugins/{shared.d.ts → utils/shared.d.ts} +1 -0
  71. package/dist/types/types.d.ts +111 -18
  72. package/dist/umd/telemetry-amazon.js +928 -368
  73. package/dist/umd/telemetry-amazon.js.map +1 -1
  74. package/dist/umd/telemetry-amazon.min.js +928 -368
  75. package/dist/umd/telemetry-amazon.min.js.map +1 -1
  76. package/package.json +4 -2
  77. package/dist/esm/plugins/pinpoint.js +0 -163
  78. package/dist/esm/plugins/pinpoint.js.map +0 -1
  79. package/dist/esm/plugins/shared.js.map +0 -1
  80. package/dist/node/plugins/pinpoint.js +0 -167
  81. package/dist/node/plugins/pinpoint.js.map +0 -1
  82. package/dist/node/plugins/shared.js.map +0 -1
  83. package/dist/types/plugins/pinpoint.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"esri.js","sourceRoot":"","sources":["../../../src/plugins/esri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esri.js","sourceRoot":"","sources":["../../../src/plugins/esri.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,190 @@
1
1
  import { createEsriPlugin } from './esri';
2
+ import { AwsClient } from 'aws4fetch';
3
+ import { getCredentials } from '../auth';
4
+ import * as shared from './utils/shared';
5
+ const ESRI_ENDPOINT = 'https://te.arcgis.com/v1/apps/app-id/events';
6
+ jest.mock('aws4fetch', () => ({
7
+ AwsClient: jest.fn(),
8
+ }));
9
+ jest.mock('../auth', () => ({
10
+ getCredentials: jest.fn(),
11
+ }));
12
+ const AwsClientMock = AwsClient;
13
+ const getCredentialsMock = getCredentials;
2
14
  describe('esri plugin', () => {
15
+ let signedFetchMock;
16
+ let warnSpy;
17
+ let browserInfoSpy;
18
+ let originalSetTimeout;
19
+ let originalClearTimeout;
20
+ let timeoutIdCounter;
21
+ let timeoutCallbacks;
22
+ let windowListenerRegistry;
23
+ const getLastBatchEvents = () => {
24
+ const lastCall = signedFetchMock.mock.calls[signedFetchMock.mock.calls.length - 1];
25
+ const body = JSON.parse(lastCall[1].body);
26
+ return body.BatchEvent.Events;
27
+ };
28
+ const getBatchBodyByEventType = (eventType) => {
29
+ var _a;
30
+ for (const call of signedFetchMock.mock.calls) {
31
+ const body = JSON.parse(call[1].body);
32
+ const events = ((_a = body === null || body === void 0 ? void 0 : body.BatchEvent) === null || _a === void 0 ? void 0 : _a.Events) || [];
33
+ if (events.some((event) => event.EventType === eventType)) {
34
+ return body;
35
+ }
36
+ }
37
+ return undefined;
38
+ };
39
+ const getBatchBodiesByEventType = (eventType) => {
40
+ return signedFetchMock.mock.calls
41
+ .map((call) => JSON.parse(call[1].body))
42
+ .filter((body) => {
43
+ var _a;
44
+ return (((_a = body === null || body === void 0 ? void 0 : body.BatchEvent) === null || _a === void 0 ? void 0 : _a.Events) || []).some((event) => event.EventType === eventType);
45
+ });
46
+ };
47
+ const runLatestTimer = async () => {
48
+ const ids = Array.from(timeoutCallbacks.keys());
49
+ if (ids.length === 0) {
50
+ return;
51
+ }
52
+ const latestId = ids[ids.length - 1];
53
+ const callback = timeoutCallbacks.get(latestId);
54
+ if (!callback) {
55
+ return;
56
+ }
57
+ timeoutCallbacks.delete(latestId);
58
+ callback();
59
+ await flushTasks();
60
+ };
61
+ const runLatestDebounceTimer = async () => {
62
+ await runLatestTimer();
63
+ };
64
+ const runLatestIdleTimer = async () => {
65
+ await runLatestTimer();
66
+ };
67
+ const flushTasks = async () => {
68
+ await new Promise((resolve) => process.nextTick(resolve));
69
+ };
70
+ /**
71
+ * There are two async operations (`await getCredentials(...)` then
72
+ * `await client.fetch(...)`). In the event of a cancel or forced send,
73
+ * flush queued tasks twice
74
+ */
75
+ const flushAsyncTasks = async () => {
76
+ await flushTasks();
77
+ await flushTasks();
78
+ };
79
+ beforeEach(() => {
80
+ signedFetchMock = jest.fn().mockResolvedValue({ ok: true, status: 200 });
81
+ AwsClientMock.mockReset();
82
+ AwsClientMock.mockImplementation(() => ({
83
+ fetch: signedFetchMock,
84
+ }));
85
+ getCredentialsMock.mockReset();
86
+ getCredentialsMock.mockResolvedValue({
87
+ AccessKeyId: 'akid',
88
+ SecretKey: 'secret',
89
+ SessionToken: 'token',
90
+ });
91
+ warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => undefined);
92
+ browserInfoSpy = jest.spyOn(shared, 'getBrowserClientInfo');
93
+ browserInfoSpy.mockReturnValue({
94
+ language: 'en_us',
95
+ make: 'Apple',
96
+ model: 'AppleWebKit',
97
+ version: '605.1.15',
98
+ name: 'AppleWebKit/605.1.15',
99
+ timezone: 'Pacific Daylight Time',
100
+ platform: 'MacIntel',
101
+ os: {
102
+ name: 'MacOS',
103
+ version: '10.15.7',
104
+ },
105
+ });
106
+ originalSetTimeout = global.setTimeout;
107
+ originalClearTimeout = global.clearTimeout;
108
+ timeoutIdCounter = 0;
109
+ timeoutCallbacks = new Map();
110
+ windowListenerRegistry = new Map();
111
+ jest.spyOn(window, 'addEventListener').mockImplementation(((event, listener) => {
112
+ const listeners = windowListenerRegistry.get(event) || [];
113
+ listeners.push(listener);
114
+ windowListenerRegistry.set(event, listeners);
115
+ }));
116
+ jest.spyOn(window, 'removeEventListener').mockImplementation(((event, listener) => {
117
+ const listeners = windowListenerRegistry.get(event) || [];
118
+ windowListenerRegistry.set(event, listeners.filter((existing) => existing !== listener));
119
+ }));
120
+ jest
121
+ .spyOn(document, 'addEventListener')
122
+ .mockImplementation((() => undefined));
123
+ jest
124
+ .spyOn(document, 'removeEventListener')
125
+ .mockImplementation((() => undefined));
126
+ jest.spyOn(global, 'setTimeout').mockImplementation(((callback) => {
127
+ timeoutIdCounter += 1;
128
+ timeoutCallbacks.set(timeoutIdCounter, callback);
129
+ return timeoutIdCounter;
130
+ }));
131
+ jest.spyOn(global, 'clearTimeout').mockImplementation(((id) => {
132
+ timeoutCallbacks.delete(id);
133
+ }));
134
+ });
3
135
  afterEach(() => {
4
136
  jest.restoreAllMocks();
137
+ global.setTimeout = originalSetTimeout;
138
+ global.clearTimeout = originalClearTimeout;
139
+ windowListenerRegistry.clear();
140
+ timeoutCallbacks.clear();
5
141
  delete globalThis.fetch;
6
142
  });
7
- test('returns false when no url is provided', () => {
143
+ test('returns false and warns once when userPoolID is missing', () => {
8
144
  const plugin = createEsriPlugin({
9
145
  trackerName: 'amazon',
146
+ appId: 'app-id',
10
147
  });
11
- const result = plugin.track('pageView', { path: '/home' });
12
- expect(result).toBe(false);
148
+ const first = plugin.track('pageView', { path: '/home' });
149
+ const second = plugin.track('event', { name: 'test' });
150
+ expect(first).toBe(false);
151
+ expect(second).toBe(false);
152
+ expect(warnSpy).toHaveBeenCalledTimes(1);
153
+ expect(getCredentialsMock).not.toHaveBeenCalled();
154
+ expect(signedFetchMock).not.toHaveBeenCalled();
155
+ });
156
+ test('sends _session.start before first business event', async () => {
157
+ var _a, _b;
158
+ globalThis.fetch = jest.fn();
159
+ const plugin = createEsriPlugin({
160
+ trackerName: 'amazon',
161
+ appId: 'app-id',
162
+ userPoolID: 'pool-id',
163
+ });
164
+ const result = plugin.track('pageView', { pageUrl: '/home' });
165
+ expect(result).toBe(true);
166
+ await runLatestDebounceTimer();
167
+ expect(signedFetchMock).toHaveBeenCalledTimes(2);
168
+ const startBody = getBatchBodyByEventType('_session.start');
169
+ const businessBody = getBatchBodyByEventType('pageView');
170
+ const startEvent = (_a = startBody === null || startBody === void 0 ? void 0 : startBody.BatchEvent) === null || _a === void 0 ? void 0 : _a.Events.find((event) => event.EventType === '_session.start');
171
+ const pageViewEvent = (_b = businessBody === null || businessBody === void 0 ? void 0 : businessBody.BatchEvent) === null || _b === void 0 ? void 0 : _b.Events.find((event) => event.EventType === 'pageView');
172
+ expect(startEvent).toBeDefined();
173
+ expect(pageViewEvent).toBeDefined();
174
+ expect(startEvent.Session.Id).toBe(pageViewEvent.Session.Id);
175
+ expect(startEvent.Session.StartTimestamp).toBe(pageViewEvent.Session.StartTimestamp);
13
176
  });
14
177
  test('sends BatchEvent payload envelope with expected field casing', async () => {
15
- const fetchMock = jest
16
- .fn()
17
- .mockResolvedValue({ ok: true, status: 200 });
18
- globalThis.fetch = fetchMock;
178
+ globalThis.fetch = jest.fn();
19
179
  jest.spyOn(Date, 'now').mockReturnValue(1716134400000);
20
180
  jest.spyOn(Math, 'random').mockReturnValue(0.5);
21
181
  const plugin = createEsriPlugin({
22
- url: 'https://example.com/v1/apps/app-id/events',
23
- headers: { 'x-test': '1' },
24
182
  trackerName: 'amazon',
25
183
  appName: 'ArcGIS Telemetry',
26
184
  appVersion: '5.1.3',
185
+ appId: 'app-id',
186
+ userPoolID: 'pool-id',
187
+ fips: true,
27
188
  });
28
189
  const result = plugin.track('pageView', {
29
190
  pageUrl: '/home',
@@ -35,15 +196,21 @@ describe('esri plugin', () => {
35
196
  lon: '-117.195',
36
197
  });
37
198
  expect(result).toBe(true);
38
- await Promise.resolve();
39
- await Promise.resolve();
40
- expect(fetchMock).toHaveBeenCalledTimes(1);
41
- const [url, request] = fetchMock.mock.calls[0];
42
- expect(url).toBe('https://example.com/v1/apps/app-id/events');
199
+ await runLatestDebounceTimer();
200
+ expect(getCredentialsMock).toHaveBeenCalledWith('pool-id', { fips: true });
201
+ expect(AwsClientMock).toHaveBeenCalledWith({
202
+ accessKeyId: 'akid',
203
+ secretAccessKey: 'secret',
204
+ sessionToken: 'token',
205
+ service: 'execute-api',
206
+ region: 'us-east-1',
207
+ });
208
+ expect(signedFetchMock).toHaveBeenCalledTimes(2);
209
+ const [url, request] = signedFetchMock.mock.calls[1];
210
+ expect(url).toBe(ESRI_ENDPOINT);
43
211
  expect(request.method).toBe('POST');
44
212
  expect(request.headers).toEqual({
45
213
  'Content-Type': 'application/json',
46
- 'x-test': '1',
47
214
  });
48
215
  const body = JSON.parse(request.body);
49
216
  expect(body.BatchEvent.Endpoint.Attributes).toBeUndefined();
@@ -53,8 +220,12 @@ describe('esri plugin', () => {
53
220
  Endpoint: expect.objectContaining({
54
221
  Id: expect.any(String),
55
222
  Device: {
56
- Make: '',
57
- Model: '',
223
+ Locale: 'en_us',
224
+ Make: 'Apple',
225
+ Model: 'AppleWebKit',
226
+ ModelVersion: '605.1.15',
227
+ Platform: 'MacOS',
228
+ PlatformVersion: '10.15.7',
58
229
  },
59
230
  Location: {
60
231
  City: 'Redlands',
@@ -68,27 +239,341 @@ describe('esri plugin', () => {
68
239
  ClientSdkVersion: 'amazon',
69
240
  },
70
241
  }),
71
- Events: [
72
- expect.objectContaining({
73
- EventType: 'pageView',
74
- Timestamp: expect.any(String),
75
- Session: expect.objectContaining({
76
- Id: expect.any(String),
77
- StartTimestamp: expect.any(String),
78
- EndTimestamp: expect.any(String),
79
- Duration: 0,
80
- }),
81
- Attributes: {
82
- pageUrl: '/home',
83
- enabled: 'true',
84
- },
85
- Metrics: {
86
- count: 2,
87
- },
88
- }),
89
- ],
242
+ Events: [expect.any(Object)],
243
+ }),
244
+ }));
245
+ const pageViewEvent = body.BatchEvent.Events.find((event) => event.EventType === 'pageView');
246
+ expect(pageViewEvent).toEqual(expect.objectContaining({
247
+ EventType: 'pageView',
248
+ Timestamp: expect.any(String),
249
+ Session: expect.objectContaining({
250
+ Id: expect.any(String),
251
+ StartTimestamp: expect.any(String),
252
+ EndTimestamp: expect.any(String),
253
+ Duration: 0,
90
254
  }),
255
+ Attributes: {
256
+ pageUrl: '/home',
257
+ enabled: 'true',
258
+ },
259
+ Metrics: {
260
+ count: 2,
261
+ },
91
262
  }));
92
263
  });
264
+ test('uses browser-derived Device defaults when payload device fields are absent', async () => {
265
+ globalThis.fetch = jest.fn();
266
+ browserInfoSpy.mockReturnValue({
267
+ language: 'en_us',
268
+ make: 'Brave',
269
+ model: 'Brave',
270
+ version: '124.0.0.0',
271
+ name: 'Brave/124.0.0.0',
272
+ timezone: 'Pacific Daylight Time',
273
+ platform: 'MacIntel',
274
+ os: {
275
+ name: 'MacOS',
276
+ version: '10.15.7',
277
+ },
278
+ });
279
+ const plugin = createEsriPlugin({
280
+ trackerName: 'amazon',
281
+ appId: 'app-id',
282
+ userPoolID: 'pool-id',
283
+ });
284
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
285
+ await runLatestDebounceTimer();
286
+ const businessBody = getBatchBodyByEventType('pageView');
287
+ expect(businessBody.BatchEvent.Endpoint.Device).toEqual({
288
+ Locale: 'en_us',
289
+ Make: 'Brave',
290
+ Model: 'Brave',
291
+ ModelVersion: '124.0.0.0',
292
+ Platform: 'MacOS',
293
+ PlatformVersion: '10.15.7',
294
+ });
295
+ expect(businessBody.BatchEvent.Endpoint.Location).toEqual({});
296
+ });
297
+ test('payload device fields override browser-derived defaults', async () => {
298
+ globalThis.fetch = jest.fn();
299
+ browserInfoSpy.mockReturnValue({
300
+ language: 'en_us',
301
+ make: 'Brave',
302
+ model: 'Brave',
303
+ version: '124.0.0.0',
304
+ name: 'Brave/124.0.0.0',
305
+ timezone: 'Pacific Daylight Time',
306
+ platform: 'MacIntel',
307
+ os: {
308
+ name: 'MacOS',
309
+ version: '10.15.7',
310
+ },
311
+ });
312
+ const plugin = createEsriPlugin({
313
+ trackerName: 'amazon',
314
+ appId: 'app-id',
315
+ userPoolID: 'pool-id',
316
+ });
317
+ expect(plugin.track('pageView', {
318
+ pageUrl: '/home',
319
+ deviceMake: 'Custom Browser',
320
+ deviceModel: 'Custom Model',
321
+ })).toBe(true);
322
+ await runLatestDebounceTimer();
323
+ const businessBody = getBatchBodyByEventType('pageView');
324
+ expect(businessBody.BatchEvent.Endpoint.Device).toEqual({
325
+ Locale: 'en_us',
326
+ Make: 'Custom Browser',
327
+ Model: 'Custom Model',
328
+ ModelVersion: '124.0.0.0',
329
+ Platform: 'MacOS',
330
+ PlatformVersion: '10.15.7',
331
+ });
332
+ });
333
+ test('falls back to empty Device fields when browser info is unavailable', async () => {
334
+ globalThis.fetch = jest.fn();
335
+ browserInfoSpy.mockReturnValue({});
336
+ const plugin = createEsriPlugin({
337
+ trackerName: 'amazon',
338
+ appId: 'app-id',
339
+ userPoolID: 'pool-id',
340
+ });
341
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
342
+ await runLatestDebounceTimer();
343
+ const businessBody = getBatchBodyByEventType('pageView');
344
+ expect(businessBody.BatchEvent.Endpoint.Device).toEqual({
345
+ Locale: '',
346
+ Make: '',
347
+ Model: '',
348
+ ModelVersion: '',
349
+ Platform: '',
350
+ });
351
+ });
352
+ test.each([
353
+ ['production', 'https://te.arcgis.com/v1/apps/app-id/events'],
354
+ ['qa', 'https://teqa.arcgis.com/v1/apps/app-id/events'],
355
+ ['dev', 'https://tedev.arcgis.com/v1/apps/app-id/events'],
356
+ ])('uses the %s esri endpoint URL', async (env, expectedUrl) => {
357
+ globalThis.fetch = jest.fn();
358
+ const plugin = createEsriPlugin({
359
+ trackerName: 'amazon',
360
+ appId: 'app-id',
361
+ userPoolID: 'pool-id',
362
+ env,
363
+ });
364
+ expect(plugin.track('pageView', { pageUrl: '/override' })).toBe(true);
365
+ await runLatestDebounceTimer();
366
+ const [url] = signedFetchMock.mock.calls[1];
367
+ expect(url).toBe(expectedUrl);
368
+ });
369
+ test('batches multiple business events into one request after debounce window', async () => {
370
+ globalThis.fetch = jest.fn();
371
+ const plugin = createEsriPlugin({
372
+ trackerName: 'amazon',
373
+ appId: 'app-id',
374
+ userPoolID: 'pool-id',
375
+ });
376
+ expect(plugin.track('pageView', { pageUrl: '/one' })).toBe(true);
377
+ expect(plugin.track('click', { target: 'button' })).toBe(true);
378
+ expect(signedFetchMock).toHaveBeenCalledTimes(0);
379
+ await runLatestDebounceTimer();
380
+ expect(signedFetchMock).toHaveBeenCalledTimes(2);
381
+ const events = getLastBatchEvents();
382
+ expect(events.map((event) => event.EventType)).toEqual([
383
+ 'pageView',
384
+ 'click',
385
+ ]);
386
+ });
387
+ test('refreshes debounce timer when receiving additional events', async () => {
388
+ globalThis.fetch = jest.fn();
389
+ const plugin = createEsriPlugin({
390
+ trackerName: 'amazon',
391
+ appId: 'app-id',
392
+ userPoolID: 'pool-id',
393
+ });
394
+ expect(plugin.track('pageView', { pageUrl: '/one' })).toBe(true);
395
+ const timerIdsAfterFirst = Array.from(timeoutCallbacks.keys());
396
+ expect(timerIdsAfterFirst.length).toBeGreaterThan(0);
397
+ const firstDebounceId = timerIdsAfterFirst[timerIdsAfterFirst.length - 1];
398
+ expect(plugin.track('click', { target: 'button' })).toBe(true);
399
+ expect(timeoutCallbacks.has(firstDebounceId)).toBe(false);
400
+ await runLatestDebounceTimer();
401
+ expect(signedFetchMock).toHaveBeenCalledTimes(2);
402
+ });
403
+ test('uses configured debounceMs for queued business events', async () => {
404
+ globalThis.fetch = jest.fn();
405
+ const setTimeoutSpy = global.setTimeout;
406
+ const plugin = createEsriPlugin({
407
+ trackerName: 'amazon',
408
+ appId: 'app-id',
409
+ userPoolID: 'pool-id',
410
+ debounceMs: 1200,
411
+ });
412
+ expect(plugin.track('pageView', { pageUrl: '/custom-debounce' })).toBe(true);
413
+ const debounceCall = setTimeoutSpy.mock.calls.find(([, delay]) => delay === 1200);
414
+ expect(debounceCall).toBeDefined();
415
+ });
416
+ test('immediate option flushes queued events right away', async () => {
417
+ globalThis.fetch = jest.fn();
418
+ const plugin = createEsriPlugin({
419
+ trackerName: 'amazon',
420
+ appId: 'app-id',
421
+ userPoolID: 'pool-id',
422
+ });
423
+ expect(plugin.track('pageView', { pageUrl: '/one' })).toBe(true);
424
+ expect(signedFetchMock).toHaveBeenCalledTimes(0);
425
+ expect(plugin.track('click', { target: 'cta' }, { immediate: true })).toBe(true);
426
+ await flushAsyncTasks();
427
+ expect(signedFetchMock).toHaveBeenCalledTimes(2);
428
+ const events = getLastBatchEvents();
429
+ expect(events.map((event) => event.EventType)).toEqual([
430
+ 'pageView',
431
+ 'click',
432
+ ]);
433
+ });
434
+ test('sends _session.stop on beforeunload once session is started', async () => {
435
+ var _a, _b;
436
+ globalThis.fetch = jest.fn();
437
+ const plugin = createEsriPlugin({
438
+ trackerName: 'amazon',
439
+ appId: 'app-id',
440
+ userPoolID: 'pool-id',
441
+ });
442
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
443
+ await runLatestDebounceTimer();
444
+ const beforeUnloadListeners = windowListenerRegistry.get('beforeunload') || [];
445
+ expect(beforeUnloadListeners).toHaveLength(1);
446
+ beforeUnloadListeners[0]({});
447
+ await flushAsyncTasks();
448
+ const startBody = getBatchBodyByEventType('_session.start');
449
+ const stopBody = getBatchBodyByEventType('_session.stop');
450
+ const startEvent = (_a = startBody === null || startBody === void 0 ? void 0 : startBody.BatchEvent) === null || _a === void 0 ? void 0 : _a.Events.find((event) => event.EventType === '_session.start');
451
+ const stopEvent = (_b = stopBody === null || stopBody === void 0 ? void 0 : stopBody.BatchEvent) === null || _b === void 0 ? void 0 : _b.Events.find((event) => event.EventType === '_session.stop');
452
+ expect(stopEvent).toBeDefined();
453
+ expect(stopEvent.Session.Id).toBe(startEvent.Session.Id);
454
+ });
455
+ test('beforeunload appends _session.stop to queued events and flushes them together', async () => {
456
+ globalThis.fetch = jest.fn();
457
+ const plugin = createEsriPlugin({
458
+ trackerName: 'amazon',
459
+ appId: 'app-id',
460
+ userPoolID: 'pool-id',
461
+ });
462
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
463
+ await runLatestDebounceTimer();
464
+ expect(plugin.track('click', { target: 'queued-button' })).toBe(true);
465
+ expect(signedFetchMock).toHaveBeenCalledTimes(2);
466
+ const beforeUnloadListeners = windowListenerRegistry.get('beforeunload') || [];
467
+ expect(beforeUnloadListeners).toHaveLength(1);
468
+ beforeUnloadListeners[0]({});
469
+ await flushAsyncTasks();
470
+ expect(signedFetchMock).toHaveBeenCalledTimes(3);
471
+ const finalEvents = getLastBatchEvents();
472
+ expect(finalEvents.map((event) => event.EventType)).toEqual([
473
+ 'click',
474
+ '_session.stop',
475
+ ]);
476
+ });
477
+ test('sends _session.stop when idle timer expires', async () => {
478
+ var _a, _b;
479
+ globalThis.fetch = jest.fn();
480
+ const plugin = createEsriPlugin({
481
+ trackerName: 'amazon',
482
+ appId: 'app-id',
483
+ userPoolID: 'pool-id',
484
+ });
485
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
486
+ await runLatestDebounceTimer();
487
+ expect(timeoutCallbacks.size).toBeGreaterThan(0);
488
+ await runLatestIdleTimer();
489
+ const startBody = getBatchBodyByEventType('_session.start');
490
+ const stopBody = getBatchBodyByEventType('_session.stop');
491
+ const startEvent = (_a = startBody === null || startBody === void 0 ? void 0 : startBody.BatchEvent) === null || _a === void 0 ? void 0 : _a.Events.find((event) => event.EventType === '_session.start');
492
+ const stopEvent = (_b = stopBody === null || stopBody === void 0 ? void 0 : stopBody.BatchEvent) === null || _b === void 0 ? void 0 : _b.Events.find((event) => event.EventType === '_session.stop');
493
+ expect(stopEvent).toBeDefined();
494
+ expect(stopEvent.Session.Id).toBe(startEvent.Session.Id);
495
+ });
496
+ test('sends _session.start on wake activity after idle stop', async () => {
497
+ var _a, _b, _c;
498
+ globalThis.fetch = jest.fn();
499
+ const plugin = createEsriPlugin({
500
+ trackerName: 'amazon',
501
+ appId: 'app-id',
502
+ userPoolID: 'pool-id',
503
+ });
504
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
505
+ await runLatestDebounceTimer();
506
+ await runLatestIdleTimer();
507
+ const pointerListeners = windowListenerRegistry.get('pointerdown') || [];
508
+ expect(pointerListeners).toHaveLength(1);
509
+ pointerListeners[0]({});
510
+ await flushAsyncTasks();
511
+ const startBodies = getBatchBodiesByEventType('_session.start');
512
+ const idleStopBody = getBatchBodyByEventType('_session.stop');
513
+ const firstStartBody = startBodies[0];
514
+ const lastStartBody = startBodies[startBodies.length - 1];
515
+ const firstStartEvent = (_a = firstStartBody === null || firstStartBody === void 0 ? void 0 : firstStartBody.BatchEvent) === null || _a === void 0 ? void 0 : _a.Events.find((event) => event.EventType === '_session.start');
516
+ const idleStopEvent = (_b = idleStopBody === null || idleStopBody === void 0 ? void 0 : idleStopBody.BatchEvent) === null || _b === void 0 ? void 0 : _b.Events.find((event) => event.EventType === '_session.stop');
517
+ const lastStartEvent = (_c = lastStartBody === null || lastStartBody === void 0 ? void 0 : lastStartBody.BatchEvent) === null || _c === void 0 ? void 0 : _c.Events.find((event) => event.EventType === '_session.start');
518
+ expect(lastStartEvent).toBeDefined();
519
+ expect(idleStopEvent.Session.Id).toBe(firstStartEvent.Session.Id);
520
+ expect(lastStartEvent.Session.Id).not.toBe(firstStartEvent.Session.Id);
521
+ });
522
+ test('disables telemetry after a send failure and warns only once', async () => {
523
+ globalThis.fetch = jest.fn();
524
+ signedFetchMock.mockRejectedValue(new Error('boom'));
525
+ const plugin = createEsriPlugin({
526
+ trackerName: 'amazon',
527
+ appId: 'app-id',
528
+ userPoolID: 'pool-id',
529
+ });
530
+ expect(plugin.track('pageView', { path: '/home' })).toBe(true);
531
+ await runLatestDebounceTimer();
532
+ await flushTasks();
533
+ expect(warnSpy).toHaveBeenCalledTimes(1);
534
+ expect(plugin.track('event', { name: 'after-failure' })).toBe(false);
535
+ expect(warnSpy).toHaveBeenCalledTimes(1);
536
+ });
537
+ test('warns when the endpoint returns 403 and identifies the configured env', async () => {
538
+ globalThis.fetch = jest.fn();
539
+ signedFetchMock.mockResolvedValue({ ok: false, status: 403 });
540
+ const plugin = createEsriPlugin({
541
+ trackerName: 'amazon',
542
+ appId: 'app-id',
543
+ userPoolID: 'pool-id',
544
+ env: 'qa',
545
+ });
546
+ expect(plugin.track('pageView', { path: '/home' })).toBe(true);
547
+ await runLatestDebounceTimer();
548
+ await flushTasks();
549
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Confirm that the configured env'), {
550
+ env: 'qa',
551
+ url: 'https://teqa.arcgis.com/v1/apps/app-id/events',
552
+ });
553
+ expect(plugin.track('event', { name: 'after-403' })).toBe(false);
554
+ });
555
+ test('drops queued backlog after failed immediate flush', async () => {
556
+ globalThis.fetch = jest.fn();
557
+ signedFetchMock.mockResolvedValue({ ok: true, status: 200 });
558
+ const plugin = createEsriPlugin({
559
+ trackerName: 'amazon',
560
+ appId: 'app-id',
561
+ userPoolID: 'pool-id',
562
+ });
563
+ expect(plugin.track('pageView', { pageUrl: '/home' })).toBe(true);
564
+ await runLatestDebounceTimer();
565
+ expect(plugin.track('click', { target: 'queued' })).toBe(true);
566
+ signedFetchMock.mockRejectedValueOnce(new Error('boom'));
567
+ expect(plugin.track('submit', { target: 'flush' }, { immediate: true })).toBe(true);
568
+ await flushAsyncTasks();
569
+ expect(warnSpy).toHaveBeenCalledTimes(1);
570
+ expect(plugin.track('after-failure', { target: 'later' })).toBe(false);
571
+ expect(signedFetchMock).toHaveBeenCalledTimes(3);
572
+ const failedBatch = getLastBatchEvents();
573
+ expect(failedBatch.map((event) => event.EventType)).toEqual([
574
+ 'click',
575
+ 'submit',
576
+ ]);
577
+ });
93
578
  });
94
579
  //# sourceMappingURL=esri.test.js.map