@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
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPinpointPlugin = void 0;
|
|
4
|
+
const aws4fetch_1 = require("aws4fetch");
|
|
5
|
+
const telemetry_1 = require("@esri/telemetry");
|
|
6
|
+
const auth_1 = require("../auth");
|
|
7
|
+
const shared_1 = require("./shared");
|
|
8
|
+
function isDebugEnabled() {
|
|
9
|
+
var _a;
|
|
10
|
+
const processEnv = typeof globalThis !== 'undefined'
|
|
11
|
+
? (_a = globalThis.process) === null || _a === void 0 ? void 0 : _a.env
|
|
12
|
+
: undefined;
|
|
13
|
+
return ((processEnv === null || processEnv === void 0 ? void 0 : processEnv.TELEMETRY_AMAZON_DEBUG) === 'true' ||
|
|
14
|
+
(processEnv === null || processEnv === void 0 ? void 0 : processEnv.NODE_ENV) === 'development');
|
|
15
|
+
}
|
|
16
|
+
function debugLog(message, details) {
|
|
17
|
+
if (!isDebugEnabled() || typeof console === 'undefined') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (details && typeof console.debug === 'function') {
|
|
21
|
+
console.debug(`${shared_1.LOG_PREFIX} ${message}`, details);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (typeof console.debug === 'function') {
|
|
25
|
+
console.debug(`${shared_1.LOG_PREFIX} ${message}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function warnLog(message, details) {
|
|
29
|
+
if (typeof console === 'undefined' || typeof console.warn !== 'function') {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (details) {
|
|
33
|
+
console.warn(`${shared_1.LOG_PREFIX} ${message}`, details);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.warn(`${shared_1.LOG_PREFIX} ${message}`);
|
|
37
|
+
}
|
|
38
|
+
function getEndpointId() {
|
|
39
|
+
const cached = telemetry_1.storage.get(shared_1.PINPOINT_ENDPOINT_KEY);
|
|
40
|
+
if (cached && typeof cached === 'object' && cached.endpointId) {
|
|
41
|
+
return cached.endpointId;
|
|
42
|
+
}
|
|
43
|
+
if (typeof cached === 'string') {
|
|
44
|
+
return cached;
|
|
45
|
+
}
|
|
46
|
+
const generated = `telemetry-${Date.now()}-${Math.random()
|
|
47
|
+
.toString(16)
|
|
48
|
+
.slice(2)}`;
|
|
49
|
+
telemetry_1.storage.set(shared_1.PINPOINT_ENDPOINT_KEY, { endpointId: generated });
|
|
50
|
+
return generated;
|
|
51
|
+
}
|
|
52
|
+
function buildEventData(payload) {
|
|
53
|
+
const Attributes = {};
|
|
54
|
+
const Metrics = {};
|
|
55
|
+
Object.entries(payload || {}).forEach(([key, value]) => {
|
|
56
|
+
if (value === undefined || value === null || key === 'name') {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
60
|
+
Metrics[key] = value;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (typeof value === 'string' || typeof value === 'boolean') {
|
|
64
|
+
Attributes[key] = [String(value)];
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (Array.isArray(value)) {
|
|
68
|
+
Attributes[key] = value.map((item) => String(item));
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
Attributes: Object.keys(Attributes).length ? Attributes : undefined,
|
|
73
|
+
Metrics: Object.keys(Metrics).length ? Metrics : undefined,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function createPinpointPlugin({ appName, appVersion, appId, userPoolID, fips, region = shared_1.DEFAULT_PINPOINT_REGION, }) {
|
|
77
|
+
debugLog('createPinpointPlugin initialized', {
|
|
78
|
+
appId,
|
|
79
|
+
region,
|
|
80
|
+
fips: Boolean(fips),
|
|
81
|
+
hasAppName: Boolean(appName),
|
|
82
|
+
hasAppVersion: Boolean(appVersion),
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
track: (eventName, payload) => {
|
|
86
|
+
if (!appId || typeof fetch !== 'function') {
|
|
87
|
+
debugLog('Skipping Pinpoint track call', {
|
|
88
|
+
eventName,
|
|
89
|
+
reason: !appId ? 'missing-app-id' : 'fetch-unavailable',
|
|
90
|
+
});
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const endpointId = getEndpointId();
|
|
94
|
+
const eventId = `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
95
|
+
const eventData = buildEventData(payload);
|
|
96
|
+
const host = fips
|
|
97
|
+
? `pinpoint-fips.${region}.amazonaws.com`
|
|
98
|
+
: `pinpoint.${region}.amazonaws.com`;
|
|
99
|
+
const url = `https://${host}/v1/apps/${appId}/events`;
|
|
100
|
+
debugLog('Sending Pinpoint event', {
|
|
101
|
+
eventName,
|
|
102
|
+
endpointId,
|
|
103
|
+
appId,
|
|
104
|
+
region,
|
|
105
|
+
host,
|
|
106
|
+
});
|
|
107
|
+
void (0, auth_1.getCredentials)(userPoolID, { fips })
|
|
108
|
+
.then((credentials) => {
|
|
109
|
+
const accessKeyId = (credentials === null || credentials === void 0 ? void 0 : credentials.AccessKeyId) || (credentials === null || credentials === void 0 ? void 0 : credentials.accessKeyId);
|
|
110
|
+
const secretAccessKey = (credentials === null || credentials === void 0 ? void 0 : credentials.SecretKey) || (credentials === null || credentials === void 0 ? void 0 : credentials.secretAccessKey);
|
|
111
|
+
const sessionToken = (credentials === null || credentials === void 0 ? void 0 : credentials.SessionToken) || (credentials === null || credentials === void 0 ? void 0 : credentials.sessionToken);
|
|
112
|
+
if (!accessKeyId || !secretAccessKey) {
|
|
113
|
+
warnLog('Pinpoint credentials missing required key fields', {
|
|
114
|
+
hasAccessKeyId: Boolean(accessKeyId),
|
|
115
|
+
hasSecretAccessKey: Boolean(secretAccessKey),
|
|
116
|
+
});
|
|
117
|
+
throw new Error('Pinpoint credentials are missing required key fields.');
|
|
118
|
+
}
|
|
119
|
+
const client = new aws4fetch_1.AwsClient({
|
|
120
|
+
accessKeyId,
|
|
121
|
+
secretAccessKey,
|
|
122
|
+
sessionToken,
|
|
123
|
+
service: 'mobiletargeting',
|
|
124
|
+
region,
|
|
125
|
+
});
|
|
126
|
+
return client.fetch(url, {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: {
|
|
129
|
+
'Content-Type': 'application/json',
|
|
130
|
+
},
|
|
131
|
+
body: JSON.stringify({
|
|
132
|
+
BatchItem: {
|
|
133
|
+
[endpointId]: {
|
|
134
|
+
Endpoint: {
|
|
135
|
+
Address: endpointId,
|
|
136
|
+
ChannelType: 'CUSTOM',
|
|
137
|
+
Demographic: {
|
|
138
|
+
AppVersion: appVersion,
|
|
139
|
+
Make: appName,
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
Events: {
|
|
143
|
+
[eventId]: Object.assign({ EventType: eventName, Timestamp: new Date().toISOString() }, eventData),
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
})
|
|
150
|
+
.then(() => {
|
|
151
|
+
debugLog('Pinpoint event sent', {
|
|
152
|
+
eventName,
|
|
153
|
+
endpointId,
|
|
154
|
+
});
|
|
155
|
+
})
|
|
156
|
+
.catch((error) => {
|
|
157
|
+
warnLog('Pinpoint track failed', {
|
|
158
|
+
eventName,
|
|
159
|
+
message: (error === null || error === void 0 ? void 0 : error.message) || String(error),
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
return true;
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
exports.createPinpointPlugin = createPinpointPlugin;
|
|
167
|
+
//# sourceMappingURL=pinpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinpoint.js","sourceRoot":"","sources":["../../../src/plugins/pinpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildEventData = exports.getEndpointId = exports.warnLog = exports.debugLog = exports.isDebugEnabled = exports.LOG_PREFIX = exports.DEFAULT_PINPOINT_REGION = exports.PINPOINT_ENDPOINT_KEY = void 0;
|
|
4
|
+
// Shared utilities for plugins
|
|
5
|
+
const telemetry_1 = require("@esri/telemetry");
|
|
6
|
+
exports.PINPOINT_ENDPOINT_KEY = 'TELEMETRY_PINPOINT_ENDPOINT_ID';
|
|
7
|
+
exports.DEFAULT_PINPOINT_REGION = 'us-east-1';
|
|
8
|
+
exports.LOG_PREFIX = '[telemetry-amazon]';
|
|
9
|
+
function isDebugEnabled() {
|
|
10
|
+
var _a;
|
|
11
|
+
const processEnv = typeof globalThis !== 'undefined'
|
|
12
|
+
? (_a = globalThis.process) === null || _a === void 0 ? void 0 : _a.env
|
|
13
|
+
: undefined;
|
|
14
|
+
return ((processEnv === null || processEnv === void 0 ? void 0 : processEnv.TELEMETRY_AMAZON_DEBUG) === 'true' ||
|
|
15
|
+
(processEnv === null || processEnv === void 0 ? void 0 : processEnv.NODE_ENV) === 'development');
|
|
16
|
+
}
|
|
17
|
+
exports.isDebugEnabled = isDebugEnabled;
|
|
18
|
+
function debugLog(message, details) {
|
|
19
|
+
if (!isDebugEnabled() || typeof console === 'undefined') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (details && typeof console.debug === 'function') {
|
|
23
|
+
console.debug(`${exports.LOG_PREFIX} ${message}`, details);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (typeof console.debug === 'function') {
|
|
27
|
+
console.debug(`${exports.LOG_PREFIX} ${message}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.debugLog = debugLog;
|
|
31
|
+
function warnLog(message, details) {
|
|
32
|
+
if (typeof console === 'undefined' || typeof console.warn !== 'function') {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (details) {
|
|
36
|
+
console.warn(`${exports.LOG_PREFIX} ${message}`, details);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
console.warn(`${exports.LOG_PREFIX} ${message}`);
|
|
40
|
+
}
|
|
41
|
+
exports.warnLog = warnLog;
|
|
42
|
+
function getEndpointId() {
|
|
43
|
+
const cached = telemetry_1.storage.get(exports.PINPOINT_ENDPOINT_KEY);
|
|
44
|
+
if (cached && typeof cached === 'object' && cached.endpointId) {
|
|
45
|
+
return cached.endpointId;
|
|
46
|
+
}
|
|
47
|
+
if (typeof cached === 'string') {
|
|
48
|
+
return cached;
|
|
49
|
+
}
|
|
50
|
+
const generated = `telemetry-${Date.now()}-${Math.random()
|
|
51
|
+
.toString(16)
|
|
52
|
+
.slice(2)}`;
|
|
53
|
+
telemetry_1.storage.set(exports.PINPOINT_ENDPOINT_KEY, { endpointId: generated });
|
|
54
|
+
return generated;
|
|
55
|
+
}
|
|
56
|
+
exports.getEndpointId = getEndpointId;
|
|
57
|
+
function buildEventData(payload) {
|
|
58
|
+
const Attributes = {};
|
|
59
|
+
const Metrics = {};
|
|
60
|
+
Object.entries(payload || {}).forEach(([key, value]) => {
|
|
61
|
+
if (value === undefined || value === null || key === 'name') {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
65
|
+
Metrics[key] = value;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (typeof value === 'string' || typeof value === 'boolean') {
|
|
69
|
+
Attributes[key] = [String(value)];
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(value)) {
|
|
73
|
+
Attributes[key] = value.map((item) => String(item));
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
Attributes: Object.keys(Attributes).length ? Attributes : undefined,
|
|
78
|
+
Metrics: Object.keys(Metrics).length ? Metrics : undefined,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
exports.buildEventData = buildEventData;
|
|
82
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/plugins/shared.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,+CAA0C;AAE7B,QAAA,qBAAqB,GAAG,gCAAgC,CAAC;AACzD,QAAA,uBAAuB,GAAG,WAAW,CAAC;AACtC,QAAA,UAAU,GAAG,oBAAoB,CAAC;AAE/C,SAAgB,cAAc;;IAC5B,MAAM,UAAU,GACd,OAAO,UAAU,KAAK,WAAW;QAC/B,CAAC,CAAC,MAAC,UAAkB,CAAC,OAAO,0CAAE,GAAG;QAClC,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,CACL,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,sBAAsB,MAAK,MAAM;QAC7C,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,MAAK,aAAa,CACvC,CAAC;AACJ,CAAC;AATD,wCASC;AAED,SAAgB,QAAQ,CAAC,OAAe,EAAE,OAA6B;IACrE,IAAI,CAAC,cAAc,EAAE,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;QACvD,OAAO;KACR;IACD,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;QAClD,OAAO,CAAC,KAAK,CAAC,GAAG,kBAAU,IAAI,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO;KACR;IACD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;QACvC,OAAO,CAAC,KAAK,CAAC,GAAG,kBAAU,IAAI,OAAO,EAAE,CAAC,CAAC;KAC3C;AACH,CAAC;AAXD,4BAWC;AAED,SAAgB,OAAO,CAAC,OAAe,EAAE,OAA6B;IACpE,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;QACxE,OAAO;KACR;IACD,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAU,IAAI,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO;KACR;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAU,IAAI,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC;AATD,0BASC;AAED,SAAgB,aAAa;IAC3B,MAAM,MAAM,GAAG,mBAAO,CAAC,GAAG,CAAC,6BAAqB,CAAC,CAAC;IAClD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;QAC7D,OAAO,MAAM,CAAC,UAAU,CAAC;KAC1B;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,MAAM,CAAC;KACf;IACD,MAAM,SAAS,GAAG,aAAa,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;SACvD,QAAQ,CAAC,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACd,mBAAO,CAAC,GAAG,CAAC,6BAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAbD,sCAaC;AAED,SAAgB,cAAc,CAAC,OAA4B;IAIzD,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE;YAC3D,OAAO;SACR;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,OAAO;SACR;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC3D,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO;SACR;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SACrD;IACH,CAAC,CAAC,CAAC;IACH,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACnE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC;AACJ,CAAC;AA1BD,wCA0BC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LogPageViewPayload } from './types';
|
|
2
2
|
export declare function createPageViewLog({ page, previousPage, options, dimensionLookup, metricLookup, }: {
|
|
3
3
|
page: string;
|
|
4
|
-
previousPage?: Record<string, string
|
|
4
|
+
previousPage?: Record<string, string> | null;
|
|
5
5
|
options: Record<string, any>;
|
|
6
6
|
dimensionLookup: Record<string, any>;
|
|
7
7
|
metricLookup: Record<string, number>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AmazonTelemetryOptions, Dimensions, Metrics, IAmazon, PageViewOptions, EventOptions, ISetAccessPermissionsParams, IGetAccessPermissionsParams } from './types';
|
|
1
|
+
import { AmazonTracker, AmazonTelemetryOptions, AmazonTelemetryEndpointMode, Dimensions, Metrics, IAmazon, PageViewOptions, EventOptions, ISetAccessPermissionsParams, IGetAccessPermissionsParams } from './types';
|
|
3
2
|
/**
|
|
4
3
|
* Amazon Telemetry
|
|
5
|
-
* Supports
|
|
4
|
+
* Supports Pinpoint and Esri endpoint modes
|
|
6
5
|
*/
|
|
7
6
|
export declare class Amazon implements IAmazon<Dimensions, Metrics> {
|
|
8
|
-
analytics:
|
|
7
|
+
analytics: AmazonTracker;
|
|
9
8
|
name: string;
|
|
10
|
-
previousPage:
|
|
9
|
+
previousPage: {
|
|
10
|
+
pageUrl?: string;
|
|
11
|
+
pageName?: string;
|
|
12
|
+
};
|
|
11
13
|
dimensions: Dimensions;
|
|
12
14
|
metrics: Metrics;
|
|
13
15
|
disabled: boolean;
|
|
14
16
|
isInitialized: boolean;
|
|
17
|
+
mode: AmazonTelemetryEndpointMode;
|
|
15
18
|
constructor(options: AmazonTelemetryOptions);
|
|
16
19
|
init(): Promise<void>;
|
|
17
20
|
static setAccessPermissions({ id, authentication, username, accessChangeset, }: ISetAccessPermissionsParams): Promise<import("@esri/arcgis-rest-portal").IUpdateItemResponse>;
|
|
18
21
|
static getAccessPermissions({ id, authentication, }: IGetAccessPermissionsParams): Promise<Record<string, any>>;
|
|
19
|
-
logPageView(page: string, options?: PageViewOptions):
|
|
20
|
-
logEvent(event?: EventOptions):
|
|
22
|
+
logPageView(page: string, options?: PageViewOptions): boolean;
|
|
23
|
+
logEvent(event?: EventOptions): boolean;
|
|
21
24
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AmazonTracker } from '../types';
|
|
2
|
+
declare type EsriPluginOptions = {
|
|
3
|
+
url?: string;
|
|
4
|
+
headers?: Record<string, string>;
|
|
5
|
+
trackerName: string;
|
|
6
|
+
appName?: string;
|
|
7
|
+
appVersion?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function createEsriPlugin({ url, headers, trackerName, appName, appVersion, }: EsriPluginOptions): AmazonTracker;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AmazonTracker } from '../types';
|
|
2
|
+
declare type PinpointPluginOptions = {
|
|
3
|
+
appName?: string;
|
|
4
|
+
appVersion?: string;
|
|
5
|
+
appId?: string;
|
|
6
|
+
userPoolID: string;
|
|
7
|
+
fips?: boolean;
|
|
8
|
+
region?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function createPinpointPlugin({ appName, appVersion, appId, userPoolID, fips, region, }: PinpointPluginOptions): AmazonTracker;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const PINPOINT_ENDPOINT_KEY = "TELEMETRY_PINPOINT_ENDPOINT_ID";
|
|
2
|
+
export declare const DEFAULT_PINPOINT_REGION = "us-east-1";
|
|
3
|
+
export declare const LOG_PREFIX = "[telemetry-amazon]";
|
|
4
|
+
export declare function isDebugEnabled(): boolean;
|
|
5
|
+
export declare function debugLog(message: string, details?: Record<string, any>): void;
|
|
6
|
+
export declare function warnLog(message: string, details?: Record<string, any>): void;
|
|
7
|
+
export declare function getEndpointId(): string;
|
|
8
|
+
export declare function buildEventData(payload: Record<string, any>): {
|
|
9
|
+
Attributes?: Record<string, string[]>;
|
|
10
|
+
Metrics?: Record<string, number>;
|
|
11
|
+
};
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { ArcGISIdentityManager } from "@esri/arcgis-rest-request";
|
|
1
|
+
import type { ArcGISIdentityManager } from '@esri/arcgis-rest-request';
|
|
3
2
|
export declare type GenericObject = {
|
|
4
3
|
[key: string]: any;
|
|
5
4
|
};
|
|
@@ -11,18 +10,17 @@ export interface ISetAccessPermissionsParams extends IGetAccessPermissionsParams
|
|
|
11
10
|
username: string;
|
|
12
11
|
accessChangeset: IAccessChangeset[];
|
|
13
12
|
}
|
|
14
|
-
export interface IGetAccessPermissionsParams {
|
|
15
|
-
id: string;
|
|
16
|
-
authentication: ArcGISIdentityManager;
|
|
17
|
-
}
|
|
18
13
|
declare type AccessTargetProperties = 'public';
|
|
19
14
|
export interface IAccessChangeset {
|
|
20
15
|
action: 'add' | 'remove';
|
|
21
16
|
targetProperty: AccessTargetProperties;
|
|
22
17
|
ids?: string[];
|
|
23
18
|
}
|
|
19
|
+
export interface AmazonTracker {
|
|
20
|
+
track(eventName: string, payload: Record<string, any>): boolean;
|
|
21
|
+
}
|
|
24
22
|
export interface IAmazon<D, M> {
|
|
25
|
-
analytics:
|
|
23
|
+
analytics: AmazonTracker;
|
|
26
24
|
name: string;
|
|
27
25
|
previousPage: {
|
|
28
26
|
pageUrl?: string;
|
|
@@ -32,8 +30,8 @@ export interface IAmazon<D, M> {
|
|
|
32
30
|
dimensions: D;
|
|
33
31
|
metrics: M;
|
|
34
32
|
init(): Promise<void>;
|
|
35
|
-
logPageView: (page: string, options?: PageViewOptions) =>
|
|
36
|
-
logEvent: (event?: EventOptions) =>
|
|
33
|
+
logPageView: (page: string, options?: PageViewOptions) => boolean;
|
|
34
|
+
logEvent: (event?: EventOptions) => boolean;
|
|
37
35
|
}
|
|
38
36
|
export declare type Dimensions = GenericObject;
|
|
39
37
|
export declare type Metrics = GenericObject;
|
|
@@ -55,6 +53,13 @@ export declare type AmazonTelemetryOptions = {
|
|
|
55
53
|
userPoolID: string;
|
|
56
54
|
app?: AmazonApp;
|
|
57
55
|
fips?: boolean;
|
|
56
|
+
mode?: AmazonTelemetryEndpointMode;
|
|
57
|
+
endpoint?: AmazonTelemetryEndpointOptions;
|
|
58
|
+
};
|
|
59
|
+
export declare type AmazonTelemetryEndpointMode = 'pinpoint' | 'esri';
|
|
60
|
+
export declare type AmazonTelemetryEndpointOptions = {
|
|
61
|
+
url?: string;
|
|
62
|
+
headers?: Record<string, string>;
|
|
58
63
|
};
|
|
59
64
|
export declare type LogPageViewPayload = {
|
|
60
65
|
name: string;
|