@esri/telemetry-amazon 5.1.4 → 6.0.0-beta.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.
- package/README.md +24 -7
- package/dist/esm/create-page-view-log.js +1 -1
- package/dist/esm/create-page-view-log.js.map +1 -1
- package/dist/esm/index.js +28 -20
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.test.js +43 -171
- package/dist/esm/index.test.js.map +1 -1
- package/dist/esm/plugins/esri.js +138 -0
- package/dist/esm/plugins/esri.js.map +1 -0
- package/dist/esm/plugins/esri.test.js +94 -0
- package/dist/esm/plugins/esri.test.js.map +1 -0
- package/dist/esm/plugins/pinpoint.js +163 -0
- package/dist/esm/plugins/pinpoint.js.map +1 -0
- package/dist/esm/plugins/shared.js +74 -0
- package/dist/esm/plugins/shared.js.map +1 -0
- package/dist/node/create-page-view-log.js +1 -1
- package/dist/node/create-page-view-log.js.map +1 -1
- package/dist/node/index.js +28 -21
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.test.js +43 -172
- package/dist/node/index.test.js.map +1 -1
- package/dist/node/plugins/esri.js +142 -0
- package/dist/node/plugins/esri.js.map +1 -0
- package/dist/node/plugins/esri.test.js +96 -0
- package/dist/node/plugins/esri.test.js.map +1 -0
- package/dist/node/plugins/pinpoint.js +167 -0
- package/dist/node/plugins/pinpoint.js.map +1 -0
- package/dist/node/plugins/shared.js +82 -0
- package/dist/node/plugins/shared.js.map +1 -0
- package/dist/types/create-page-view-log.d.ts +1 -1
- package/dist/types/index.d.ts +10 -7
- package/dist/types/plugins/esri.d.ts +10 -0
- package/dist/types/plugins/esri.test.d.ts +1 -0
- package/dist/types/plugins/pinpoint.d.ts +11 -0
- package/dist/types/plugins/shared.d.ts +11 -0
- package/dist/types/types.d.ts +14 -9
- package/dist/umd/telemetry-amazon.js +766 -201
- package/dist/umd/telemetry-amazon.js.map +1 -1
- package/dist/umd/telemetry-amazon.min.js +766 -201
- package/dist/umd/telemetry-amazon.min.js.map +1 -1
- package/package.json +3 -4
- package/LICENSE +0 -13
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `@esri/telemetry-amazon`
|
|
2
2
|
|
|
3
|
-
> This is a plugin for the `Telemetry.js` package to interact with an AWS Analytics store.
|
|
3
|
+
> This is a plugin for the `Telemetry.js` package to interact with an AWS Analytics store.
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
- [How to Use](#how-to-use)
|
|
10
10
|
- [Amazon Configuration](#amazon-configuration)
|
|
11
11
|
- [Example](#example)
|
|
12
|
-
|
|
12
|
+
- [`telemetry.logEvent(event)`](#telemetrylogeventevent)
|
|
13
13
|
- [Telemetry Sharing Permissions](#telemetry-sharing-permissions)
|
|
14
14
|
- [Portal Items](#portal-items)
|
|
15
15
|
- [Usage](#usage)
|
|
16
|
+
- [Amazon Pinpoint Retirement](#amazon-pinpoint-retirement)
|
|
16
17
|
- [Issues](#issues)
|
|
17
18
|
- [Contributing](#contributing)
|
|
18
19
|
- [License](#license)
|
|
@@ -24,7 +25,7 @@ npm install @esri/telemetry-amazon
|
|
|
24
25
|
|
|
25
26
|
## How to Use
|
|
26
27
|
|
|
27
|
-
`@esri/telemetry-amazon`
|
|
28
|
+
`@esri/telemetry-amazon` package works in the client-side browser and server-side Node.js. To use it, install the package, include it in your project, create an instance of the Amazon plugin, and add it to the `plugins` array with [@esri/telemetry](../../README.md).
|
|
28
29
|
|
|
29
30
|
Below is an example of how to use the telemetry-amazon plugin.
|
|
30
31
|
|
|
@@ -34,6 +35,7 @@ import { Amazon } from '@esri/telemetry-amazon';
|
|
|
34
35
|
|
|
35
36
|
const amazonTracker = new Amazon({
|
|
36
37
|
userPoolID: USER_POOL_ID,
|
|
38
|
+
mode: 'pinpoint', // Pinpoint retires on October 30, 2026. Use 'esri' for continued support.
|
|
37
39
|
fips: true, // defaults to false
|
|
38
40
|
app: {
|
|
39
41
|
name: APP_NAME,
|
|
@@ -57,18 +59,18 @@ telemetry.logPageView();
|
|
|
57
59
|
telemetry.logEvent();
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
After initializing `Telemetry.js` with the
|
|
62
|
+
After initializing `Telemetry.js` with the Amazon plugin, telemetry data will be sent to the configured destination.
|
|
61
63
|
|
|
62
64
|
## Amazon Configuration
|
|
63
65
|
|
|
64
66
|
- Get your app and user pool ID from AWS Pinpoint instance
|
|
65
|
-
- Pass in options object to create an instance of the plugin
|
|
67
|
+
- Pass in an options object to create an instance of the Amazon plugin
|
|
66
68
|
- the `fips` option determines if AWS FIPS endpoints are used for cognito and pinpoint requests
|
|
67
69
|
- Pass in an object containing the mapping for your custom dimensions and metrics
|
|
68
70
|
|
|
69
71
|
```js
|
|
70
72
|
// or if you are using optional custom dimensions and/or custom metrics
|
|
71
|
-
const
|
|
73
|
+
const amazonTracker = new Amazon({
|
|
72
74
|
dimensions: {
|
|
73
75
|
datasetID: 1,
|
|
74
76
|
attribute: 2,
|
|
@@ -167,6 +169,21 @@ const setAccessParams = {
|
|
|
167
169
|
const result = await Amazon.setAccessPermissions(setAccessParams: ISetAccessPermissionsParams)
|
|
168
170
|
```
|
|
169
171
|
|
|
172
|
+
## Amazon Pinpoint Retirement
|
|
173
|
+
|
|
174
|
+
Amazon Pinpoint will be retired on **October 30, 2026**. After this date, Pinpoint can no longer be used for telemetry delivery. See the [official AWS retirement announcement](https://docs.aws.amazon.com/pinpoint/latest/userguide/migrate.html) for details.
|
|
175
|
+
|
|
176
|
+
To keep telemetry working, use `mode: 'esri'`. Esri mode sends events through Esri's backend instead of Pinpoint while keeping the same tracker identity.
|
|
177
|
+
|
|
178
|
+
**Note:** The current default is still Pinpoint mode. For continued support, set `mode: 'esri'` in your tracker configuration:
|
|
179
|
+
|
|
180
|
+
```js
|
|
181
|
+
const amazonTracker = new Amazon({
|
|
182
|
+
mode: 'esri',
|
|
183
|
+
....
|
|
184
|
+
});
|
|
185
|
+
```
|
|
186
|
+
|
|
170
187
|
## Issues
|
|
171
188
|
|
|
172
189
|
If something isn't working, please take a look at [previously logged issues](https://devtopia.esri.com/WebGIS/arcgis-telemetry.js/issues) first. Have you found a new bug? Create an issue [here](https://devtopia.esri.com/WebGIS/arcgis-telemetry.js/issues/new).
|
|
@@ -177,7 +194,7 @@ Esri welcomes contributions from anyone and everyone. Please see our [guidelines
|
|
|
177
194
|
|
|
178
195
|
## License
|
|
179
196
|
|
|
180
|
-
Copyright ©
|
|
197
|
+
Copyright © 2026 Esri
|
|
181
198
|
|
|
182
199
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
183
200
|
you may not use this file except in compliance with the License.
|
|
@@ -14,6 +14,6 @@ export function createPageViewLog({ page, previousPage = {}, options = {}, dimen
|
|
|
14
14
|
const { referrer, title } = document || {};
|
|
15
15
|
const { hostname, pathname } = window && window.location ? window.location : {};
|
|
16
16
|
return Object.assign(Object.assign({ name: 'pageView', referrer,
|
|
17
|
-
hostname, path: page || pathname, pageUrl: page || pathname, pageName: title, previousPageUrl: previousPage.pageUrl, previousPageName: previousPage.pageName }, attributes), metrics);
|
|
17
|
+
hostname, path: page || pathname, pageUrl: page || pathname, pageName: title, previousPageUrl: previousPage === null || previousPage === void 0 ? void 0 : previousPage.pageUrl, previousPageName: previousPage === null || previousPage === void 0 ? void 0 : previousPage.pageName }, attributes), metrics);
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=create-page-view-log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-page-view-log.js","sourceRoot":"","sources":["../../src/create-page-view-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,GAAG,EAAE,EACjB,OAAO,GAAG,EAAE,EACZ,eAAe,GAAG,EAAE,EACpB,YAAY,GAAG,EAAE,GAOlB;IACC,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,yBAAyB,CAAC;QAC3C,aAAa,EAAE,OAAO;QACtB,eAAe;QACf,WAAW,EAAE;YACX,UAAU;YACV,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;SAC7B;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC3C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAC1B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAU,CAAC;IAE5D,qCACE,IAAI,EAAE,UAAU,EAChB,QAAQ;QACR,QAAQ,EACR,IAAI,EAAE,IAAI,IAAI,QAAQ,EACtB,OAAO,EAAE,IAAI,IAAI,QAAQ,EACzB,QAAQ,EAAE,KAAK,EACf,eAAe,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"create-page-view-log.js","sourceRoot":"","sources":["../../src/create-page-view-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,YAAY,GAAG,EAAE,EACjB,OAAO,GAAG,EAAE,EACZ,eAAe,GAAG,EAAE,EACpB,YAAY,GAAG,EAAE,GAOlB;IACC,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,yBAAyB,CAAC;QAC3C,aAAa,EAAE,OAAO;QACtB,eAAe;QACf,WAAW,EAAE;YACX,UAAU;YACV,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;SAC7B;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC3C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAC1B,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAU,CAAC;IAE5D,qCACE,IAAI,EAAE,UAAU,EAChB,QAAQ;QACR,QAAQ,EACR,IAAI,EAAE,IAAI,IAAI,QAAQ,EACtB,OAAO,EAAE,IAAI,IAAI,QAAQ,EACzB,QAAQ,EAAE,KAAK,EACf,eAAe,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,EACtC,gBAAgB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,IACrC,UAAU,GACV,OAAO,EACV;AACJ,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
import { getCredentials } from './auth';
|
|
2
1
|
import { createEventLog } from './create-event-log';
|
|
3
2
|
import { createPageViewLog } from './create-page-view-log';
|
|
4
|
-
import Analytics from 'analytics';
|
|
5
|
-
import awsPinpointPlugin from '@analytics/aws-pinpoint';
|
|
6
3
|
import { setPortalItemAccessPermissions } from './set-portal-item-access-permissions';
|
|
7
4
|
import { getPortalItemAccessPermissions } from './get-portal-item-access-permissions';
|
|
5
|
+
import { createPinpointPlugin } from './plugins/pinpoint';
|
|
6
|
+
import { createEsriPlugin } from './plugins/esri';
|
|
8
7
|
/**
|
|
9
8
|
* Amazon Telemetry
|
|
10
|
-
* Supports
|
|
9
|
+
* Supports Pinpoint and Esri endpoint modes
|
|
11
10
|
*/
|
|
12
11
|
export class Amazon {
|
|
13
12
|
constructor(options) {
|
|
14
13
|
this.name = 'amazon';
|
|
14
|
+
this.previousPage = {};
|
|
15
15
|
this.isInitialized = false;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
this.mode = 'pinpoint';
|
|
17
|
+
const { app = {}, endpoint = {}, fips, userPoolID, mode = 'pinpoint', } = options;
|
|
18
|
+
const { url = 'https://bh1xqvcevk.execute-api.us-east-1.amazonaws.com/akira/v1/apps/1e9a61d8a1e74aa5a6faa9112fd63d70/events', headers = {}, } = endpoint;
|
|
19
|
+
this.mode = mode;
|
|
20
|
+
if (this.mode === 'pinpoint') {
|
|
21
|
+
this.analytics = createPinpointPlugin({
|
|
22
|
+
appName: app.name,
|
|
23
|
+
appVersion: app.version,
|
|
24
|
+
appId: app.id,
|
|
25
|
+
userPoolID,
|
|
26
|
+
fips,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.analytics = createEsriPlugin({
|
|
31
|
+
url,
|
|
32
|
+
headers,
|
|
33
|
+
trackerName: this.name,
|
|
34
|
+
appName: app.name,
|
|
35
|
+
appVersion: app.version,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
30
38
|
Object.assign(this, options);
|
|
31
39
|
}
|
|
32
40
|
init() {
|
|
@@ -58,7 +66,7 @@ export class Amazon {
|
|
|
58
66
|
});
|
|
59
67
|
const { pageUrl, pageName } = telemetryPayload;
|
|
60
68
|
this.previousPage = { pageUrl, pageName };
|
|
61
|
-
this.analytics.track('pageView', telemetryPayload);
|
|
69
|
+
return this.analytics.track('pageView', telemetryPayload);
|
|
62
70
|
}
|
|
63
71
|
logEvent(event = {}) {
|
|
64
72
|
const telemetryPayload = createEventLog({
|
|
@@ -67,7 +75,7 @@ export class Amazon {
|
|
|
67
75
|
metricLookup: this.metrics,
|
|
68
76
|
});
|
|
69
77
|
const { name } = telemetryPayload;
|
|
70
|
-
this.analytics.track(name, telemetryPayload);
|
|
78
|
+
return this.analytics.track(name, telemetryPayload);
|
|
71
79
|
}
|
|
72
80
|
}
|
|
73
81
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.test.js
CHANGED
|
@@ -1,66 +1,22 @@
|
|
|
1
|
-
import Analytics from 'analytics';
|
|
2
|
-
import awsPinpointPlugin from '@analytics/aws-pinpoint';
|
|
3
|
-
import * as portal from '@esri/arcgis-rest-portal';
|
|
4
1
|
import { Amazon } from '.';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
jest.mock('./
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
createPageViewLog: jest.fn().mockImplementation(() => {
|
|
17
|
-
return { pageView: 'foo' };
|
|
18
|
-
})
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
jest.mock('analytics', () => {
|
|
22
|
-
return jest.fn().mockImplementation(() => {
|
|
23
|
-
return {
|
|
24
|
-
track: mockAnalyticsTrack,
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
jest.mock('@analytics/aws-pinpoint', () => {
|
|
29
|
-
return jest.fn().mockImplementation(() => {
|
|
30
|
-
return { plugin: 'foo' };
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
jest.mock('@esri/arcgis-rest-portal');
|
|
34
|
-
const getItemMock = portal.getItem;
|
|
35
|
-
const updateItemMock = portal.updateItem;
|
|
36
|
-
jest.mock('./set-portal-item-access-permissions');
|
|
2
|
+
import { createPinpointPlugin } from './plugins/pinpoint';
|
|
3
|
+
import { createEsriPlugin } from './plugins/esri';
|
|
4
|
+
jest.mock('./plugins/pinpoint', () => ({
|
|
5
|
+
createPinpointPlugin: jest.fn(() => ({ track: jest.fn(() => true) })),
|
|
6
|
+
}));
|
|
7
|
+
jest.mock('./plugins/esri', () => ({
|
|
8
|
+
createEsriPlugin: jest.fn(() => ({ track: jest.fn(() => true) })),
|
|
9
|
+
}));
|
|
10
|
+
const createPinpointPluginMock = createPinpointPlugin;
|
|
11
|
+
const createEsriPluginMock = createEsriPlugin;
|
|
37
12
|
describe('Amazon', () => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
awsPinpointPlugin.mockClear();
|
|
41
|
-
mockAnalyticsTrack.mockClear();
|
|
42
|
-
});
|
|
43
|
-
test('Amazon constructor no app object', () => {
|
|
44
|
-
const opts = {
|
|
45
|
-
userPoolID: 'pool-id',
|
|
46
|
-
};
|
|
47
|
-
const telemetry = new Amazon(opts);
|
|
48
|
-
expect(telemetry).toEqual(expect.objectContaining({
|
|
49
|
-
userPoolID: 'pool-id',
|
|
50
|
-
name: 'amazon',
|
|
51
|
-
}));
|
|
52
|
-
expect(Analytics).toHaveBeenCalledTimes(1);
|
|
53
|
-
expect(Analytics).toBeCalledWith({ plugins: [{ plugin: 'foo' }] });
|
|
54
|
-
expect(awsPinpointPlugin).toHaveBeenCalledTimes(1);
|
|
55
|
-
expect(awsPinpointPlugin).toBeCalledWith(expect.objectContaining({
|
|
56
|
-
fips: undefined,
|
|
57
|
-
getCredentials: expect.any(Function),
|
|
58
|
-
pinpointAppId: undefined,
|
|
59
|
-
}));
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
jest.clearAllMocks();
|
|
60
15
|
});
|
|
61
|
-
test('Amazon constructor
|
|
16
|
+
test('Amazon constructor and permissions', () => {
|
|
62
17
|
const opts = {
|
|
63
18
|
userPoolID: 'pool-id',
|
|
19
|
+
mode: 'pinpoint',
|
|
64
20
|
app: {
|
|
65
21
|
name: 'test',
|
|
66
22
|
id: '1234',
|
|
@@ -68,140 +24,56 @@ describe('Amazon', () => {
|
|
|
68
24
|
};
|
|
69
25
|
const telemetry = new Amazon(opts);
|
|
70
26
|
expect(telemetry).toEqual(expect.objectContaining({
|
|
71
|
-
app: {
|
|
72
|
-
id: '1234',
|
|
73
|
-
name: 'test',
|
|
74
|
-
},
|
|
75
27
|
userPoolID: 'pool-id',
|
|
76
28
|
name: 'amazon',
|
|
77
|
-
|
|
78
|
-
expect(Analytics).toHaveBeenCalledTimes(1);
|
|
79
|
-
expect(Analytics).toBeCalledWith({
|
|
80
|
-
app: 'test',
|
|
81
|
-
plugins: [{ plugin: 'foo' }],
|
|
82
|
-
});
|
|
83
|
-
expect(awsPinpointPlugin).toHaveBeenCalledTimes(1);
|
|
84
|
-
expect(awsPinpointPlugin).toBeCalledWith(expect.objectContaining({
|
|
85
|
-
fips: undefined,
|
|
86
|
-
getCredentials: expect.any(Function),
|
|
87
|
-
pinpointAppId: '1234',
|
|
29
|
+
mode: 'pinpoint',
|
|
88
30
|
}));
|
|
89
31
|
});
|
|
90
|
-
test('
|
|
91
|
-
const
|
|
92
|
-
|
|
32
|
+
test('pinpoint mode initializes pinpoint plugin with mapped options', () => {
|
|
33
|
+
const pinpointPlugin = { track: jest.fn(() => true) };
|
|
34
|
+
createPinpointPluginMock.mockReturnValue(pinpointPlugin);
|
|
35
|
+
new Amazon({
|
|
93
36
|
userPoolID: 'pool-id',
|
|
94
37
|
app: {
|
|
95
38
|
name: 'test',
|
|
96
39
|
id: '1234',
|
|
40
|
+
version: '1.0.0',
|
|
97
41
|
},
|
|
98
|
-
|
|
99
|
-
const telemetry = new Amazon(opts);
|
|
100
|
-
expect(telemetry).toEqual(expect.objectContaining({
|
|
101
|
-
app: {
|
|
102
|
-
id: '1234',
|
|
103
|
-
name: 'test',
|
|
104
|
-
},
|
|
42
|
+
mode: 'pinpoint',
|
|
105
43
|
fips: true,
|
|
106
|
-
userPoolID: 'pool-id',
|
|
107
|
-
name: 'amazon',
|
|
108
|
-
}));
|
|
109
|
-
expect(Analytics).toHaveBeenCalledTimes(1);
|
|
110
|
-
expect(Analytics).toBeCalledWith({
|
|
111
|
-
app: 'test',
|
|
112
|
-
plugins: [{ plugin: 'foo' }],
|
|
113
44
|
});
|
|
114
|
-
expect(
|
|
115
|
-
|
|
45
|
+
expect(createPinpointPluginMock).toHaveBeenCalledWith({
|
|
46
|
+
appName: 'test',
|
|
47
|
+
appVersion: '1.0.0',
|
|
48
|
+
appId: '1234',
|
|
49
|
+
userPoolID: 'pool-id',
|
|
116
50
|
fips: true,
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}));
|
|
51
|
+
});
|
|
52
|
+
expect(createEsriPluginMock).not.toHaveBeenCalled();
|
|
120
53
|
});
|
|
121
|
-
test('
|
|
122
|
-
const
|
|
123
|
-
|
|
54
|
+
test('esri mode initializes esri plugin with url/headers', () => {
|
|
55
|
+
const esriPlugin = { track: jest.fn(() => true) };
|
|
56
|
+
createEsriPluginMock.mockReturnValue(esriPlugin);
|
|
57
|
+
new Amazon({
|
|
124
58
|
userPoolID: 'pool-id',
|
|
125
59
|
app: {
|
|
126
60
|
name: 'test',
|
|
127
61
|
id: '1234',
|
|
128
62
|
},
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
expect(mockAnalyticsTrack.mock.calls[0]).toEqual([
|
|
134
|
-
'pageView',
|
|
135
|
-
{ pageView: 'foo' },
|
|
136
|
-
]);
|
|
137
|
-
telemetry.logEvent({ eventType: 'foo' });
|
|
138
|
-
expect(mockAnalyticsTrack).toHaveBeenCalledTimes(2);
|
|
139
|
-
expect(mockAnalyticsTrack.mock.calls[1]).toEqual(['foo', { name: 'foo' }]);
|
|
140
|
-
});
|
|
141
|
-
test('Amazon track can handle undefined event or eventType', () => {
|
|
142
|
-
const opts = {
|
|
143
|
-
fips: true,
|
|
144
|
-
userPoolID: 'pool-id',
|
|
145
|
-
app: {
|
|
146
|
-
name: 'test',
|
|
147
|
-
id: '1234',
|
|
63
|
+
mode: 'esri',
|
|
64
|
+
endpoint: {
|
|
65
|
+
url: 'https://example.com/events',
|
|
66
|
+
headers: { 'x-test': '1' },
|
|
148
67
|
},
|
|
149
|
-
};
|
|
150
|
-
const telemetry = new Amazon(opts);
|
|
151
|
-
telemetry.logPageView(undefined);
|
|
152
|
-
expect(mockAnalyticsTrack).toHaveBeenCalledTimes(1);
|
|
153
|
-
expect(mockAnalyticsTrack.mock.calls[0]).toEqual([
|
|
154
|
-
'pageView',
|
|
155
|
-
{ pageView: 'foo' },
|
|
156
|
-
]);
|
|
157
|
-
telemetry.logEvent();
|
|
158
|
-
expect(mockAnalyticsTrack).toHaveBeenCalledTimes(2);
|
|
159
|
-
expect(mockAnalyticsTrack.mock.calls[1]).toEqual(['foo', { name: 'foo' }]);
|
|
160
|
-
telemetry.logEvent({});
|
|
161
|
-
expect(mockAnalyticsTrack).toHaveBeenCalledTimes(3);
|
|
162
|
-
expect(mockAnalyticsTrack.mock.calls[1]).toEqual(['foo', { name: 'foo' }]);
|
|
163
|
-
});
|
|
164
|
-
describe('init', () => {
|
|
165
|
-
it('should set isInitialized to true', async () => {
|
|
166
|
-
const opts = {
|
|
167
|
-
userPoolID: 'pool-id',
|
|
168
|
-
};
|
|
169
|
-
const amazon = new Amazon(opts);
|
|
170
|
-
expect(amazon.isInitialized).toBeFalsy();
|
|
171
|
-
await amazon.init();
|
|
172
|
-
expect(amazon.isInitialized).toBeTruthy();
|
|
173
68
|
});
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
});
|
|
181
|
-
const result = await Amazon.getAccessPermissions({
|
|
182
|
-
id: 'test_item_id',
|
|
183
|
-
authentication: 'bar',
|
|
184
|
-
});
|
|
185
|
-
expect(result).toEqual(accessPropertiesMock);
|
|
186
|
-
expect(getItemMock).toBeCalledTimes(1);
|
|
187
|
-
getItemMock.mockRestore();
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
describe('setAccessPermissions', () => {
|
|
191
|
-
test('should call setPortalItemAccessPermissions if scope is portal', async () => {
|
|
192
|
-
const result = await Amazon.setAccessPermissions({
|
|
193
|
-
id: 'test_item_id',
|
|
194
|
-
authentication: 'bar',
|
|
195
|
-
username: 'test_username',
|
|
196
|
-
accessChangeset: [
|
|
197
|
-
{
|
|
198
|
-
action: 'add',
|
|
199
|
-
targetProperty: 'public',
|
|
200
|
-
},
|
|
201
|
-
],
|
|
202
|
-
});
|
|
203
|
-
expect(setPortalItemAccessPermissions).toBeCalledTimes(1);
|
|
69
|
+
expect(createEsriPluginMock).toHaveBeenCalledWith({
|
|
70
|
+
url: 'https://example.com/events',
|
|
71
|
+
headers: { 'x-test': '1' },
|
|
72
|
+
trackerName: 'amazon',
|
|
73
|
+
appName: 'test',
|
|
74
|
+
appVersion: undefined,
|
|
204
75
|
});
|
|
76
|
+
expect(createPinpointPluginMock).not.toHaveBeenCalled();
|
|
205
77
|
});
|
|
206
78
|
});
|
|
207
79
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { debugLog, warnLog, getEndpointId } from './shared';
|
|
2
|
+
function getString(value, fallback = '') {
|
|
3
|
+
if (value === undefined || value === null) {
|
|
4
|
+
return fallback;
|
|
5
|
+
}
|
|
6
|
+
return String(value);
|
|
7
|
+
}
|
|
8
|
+
function getNumber(value, fallback = 0) {
|
|
9
|
+
const numeric = Number(value);
|
|
10
|
+
return Number.isFinite(numeric) ? numeric : fallback;
|
|
11
|
+
}
|
|
12
|
+
function splitEventData(payload) {
|
|
13
|
+
const attributes = {};
|
|
14
|
+
const metrics = {};
|
|
15
|
+
const excludedKeys = new Set([
|
|
16
|
+
'name',
|
|
17
|
+
'appTitle',
|
|
18
|
+
'appVersion',
|
|
19
|
+
'clientSdkVersion',
|
|
20
|
+
'deviceMake',
|
|
21
|
+
'deviceModel',
|
|
22
|
+
'city',
|
|
23
|
+
'country',
|
|
24
|
+
'lat',
|
|
25
|
+
'lon',
|
|
26
|
+
]);
|
|
27
|
+
Object.entries(payload || {}).forEach(([key, value]) => {
|
|
28
|
+
if (excludedKeys.has(key) || value === undefined || value === null) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
32
|
+
metrics[key] = value;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (typeof value === 'string' || typeof value === 'boolean') {
|
|
36
|
+
attributes[key] = String(value);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (Array.isArray(value) || typeof value === 'object') {
|
|
40
|
+
attributes[key] = JSON.stringify(value);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
attributes,
|
|
45
|
+
metrics,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function buildBatchEventPayload({ eventName, payload, trackerName, appName, appVersion, }) {
|
|
49
|
+
const endpointId = getEndpointId();
|
|
50
|
+
const sessionId = `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
51
|
+
const timestamp = new Date().toISOString();
|
|
52
|
+
const { attributes, metrics } = splitEventData(payload);
|
|
53
|
+
return {
|
|
54
|
+
BatchEvent: {
|
|
55
|
+
Endpoint: {
|
|
56
|
+
Id: endpointId,
|
|
57
|
+
Device: {
|
|
58
|
+
Make: getString(payload === null || payload === void 0 ? void 0 : payload.deviceMake),
|
|
59
|
+
Model: getString(payload === null || payload === void 0 ? void 0 : payload.deviceModel),
|
|
60
|
+
},
|
|
61
|
+
Location: {
|
|
62
|
+
City: getString(payload === null || payload === void 0 ? void 0 : payload.city),
|
|
63
|
+
Country: getString(payload === null || payload === void 0 ? void 0 : payload.country),
|
|
64
|
+
Lat: getNumber(payload === null || payload === void 0 ? void 0 : payload.lat),
|
|
65
|
+
Lon: getNumber(payload === null || payload === void 0 ? void 0 : payload.lon),
|
|
66
|
+
},
|
|
67
|
+
Application: {
|
|
68
|
+
AppTitle: getString(payload === null || payload === void 0 ? void 0 : payload.appTitle, appName || trackerName),
|
|
69
|
+
AppVersion: getString(payload === null || payload === void 0 ? void 0 : payload.appVersion, appVersion),
|
|
70
|
+
ClientSdkVersion: getString(payload === null || payload === void 0 ? void 0 : payload.clientSdkVersion, trackerName),
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
Events: [
|
|
74
|
+
{
|
|
75
|
+
EventType: eventName,
|
|
76
|
+
Timestamp: timestamp,
|
|
77
|
+
Session: {
|
|
78
|
+
Id: sessionId,
|
|
79
|
+
StartTimestamp: timestamp,
|
|
80
|
+
EndTimestamp: timestamp,
|
|
81
|
+
Duration: 0,
|
|
82
|
+
},
|
|
83
|
+
Attributes: attributes,
|
|
84
|
+
Metrics: metrics,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function createEsriPlugin({ url, headers = {}, trackerName, appName, appVersion, }) {
|
|
91
|
+
debugLog('createEsriPlugin initialized', {
|
|
92
|
+
trackerName,
|
|
93
|
+
hasUrl: Boolean(url),
|
|
94
|
+
headerCount: Object.keys(headers).length,
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
track: (eventName, payload) => {
|
|
98
|
+
if (!url || typeof fetch !== 'function') {
|
|
99
|
+
debugLog('Skipping endpoint track call', {
|
|
100
|
+
eventName,
|
|
101
|
+
reason: !url ? 'missing-url' : 'fetch-unavailable',
|
|
102
|
+
});
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
debugLog('Sending endpoint event', {
|
|
106
|
+
eventName,
|
|
107
|
+
trackerName,
|
|
108
|
+
url,
|
|
109
|
+
});
|
|
110
|
+
void fetch(url, {
|
|
111
|
+
method: 'POST',
|
|
112
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
113
|
+
body: JSON.stringify(buildBatchEventPayload({
|
|
114
|
+
eventName,
|
|
115
|
+
payload,
|
|
116
|
+
trackerName,
|
|
117
|
+
appName,
|
|
118
|
+
appVersion,
|
|
119
|
+
})),
|
|
120
|
+
})
|
|
121
|
+
.then(() => {
|
|
122
|
+
debugLog('Endpoint event sent', {
|
|
123
|
+
eventName,
|
|
124
|
+
trackerName,
|
|
125
|
+
});
|
|
126
|
+
})
|
|
127
|
+
.catch((error) => {
|
|
128
|
+
warnLog('Endpoint track failed', {
|
|
129
|
+
eventName,
|
|
130
|
+
trackerName,
|
|
131
|
+
message: (error === null || error === void 0 ? void 0 : error.message) || String(error),
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
return true;
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=esri.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esri.js","sourceRoot":"","sources":["../../../src/plugins/esri.ts"],"names":[],"mappings":"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"}
|