@esri/telemetry-amazon 6.0.0-beta.4 → 6.0.0-beta.5

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 (39) hide show
  1. package/dist/esm/index.js +2 -2
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/index.test.js +17 -0
  4. package/dist/esm/index.test.js.map +1 -1
  5. package/dist/esm/plugins/esri.js +149 -54
  6. package/dist/esm/plugins/esri.js.map +1 -1
  7. package/dist/esm/plugins/esri.test.js +346 -61
  8. package/dist/esm/plugins/esri.test.js.map +1 -1
  9. package/dist/esm/plugins/shared.js +1 -0
  10. package/dist/esm/plugins/shared.js.map +1 -1
  11. package/dist/esm/plugins/utils/browser.js +97 -0
  12. package/dist/esm/plugins/utils/browser.js.map +1 -0
  13. package/dist/esm/plugins/utils/os.js +42 -0
  14. package/dist/esm/plugins/utils/os.js.map +1 -0
  15. package/dist/node/index.js +2 -2
  16. package/dist/node/index.js.map +1 -1
  17. package/dist/node/index.test.js +17 -0
  18. package/dist/node/index.test.js.map +1 -1
  19. package/dist/node/plugins/esri.js +148 -53
  20. package/dist/node/plugins/esri.js.map +1 -1
  21. package/dist/node/plugins/esri.test.js +347 -61
  22. package/dist/node/plugins/esri.test.js.map +1 -1
  23. package/dist/node/plugins/shared.js +3 -1
  24. package/dist/node/plugins/shared.js.map +1 -1
  25. package/dist/node/plugins/utils/browser.js +101 -0
  26. package/dist/node/plugins/utils/browser.js.map +1 -0
  27. package/dist/node/plugins/utils/os.js +46 -0
  28. package/dist/node/plugins/utils/os.js.map +1 -0
  29. package/dist/types/index.d.ts +2 -2
  30. package/dist/types/plugins/esri.d.ts +2 -1
  31. package/dist/types/plugins/shared.d.ts +1 -0
  32. package/dist/types/plugins/utils/browser.d.ts +12 -0
  33. package/dist/types/plugins/utils/os.d.ts +5 -0
  34. package/dist/types/types.d.ts +7 -2
  35. package/dist/umd/telemetry-amazon.js +287 -55
  36. package/dist/umd/telemetry-amazon.js.map +1 -1
  37. package/dist/umd/telemetry-amazon.min.js +287 -55
  38. package/dist/umd/telemetry-amazon.min.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBrowserClientInfo = void 0;
4
+ const os_1 = require("./os");
5
+ function getNavigatorSafe() {
6
+ if (typeof window === 'undefined' || !window.navigator) {
7
+ return undefined;
8
+ }
9
+ return window.navigator;
10
+ }
11
+ function getLanguageInfo(nav) {
12
+ if (!nav) {
13
+ return '';
14
+ }
15
+ const lang = nav.language ||
16
+ nav.browserLanguage ||
17
+ (Array.isArray(nav.languages) && nav.languages.length > 0
18
+ ? nav.languages[0]
19
+ : 'en_US') ||
20
+ '';
21
+ return String(lang).toLowerCase().replace('-', '_');
22
+ }
23
+ function getBrowserTimezone() {
24
+ const tzMatch = /\(([A-Za-z\s].*)\)/.exec(new Date().toString());
25
+ return tzMatch ? tzMatch[1] || '' : '';
26
+ }
27
+ function parseBrowserType(userAgent) {
28
+ const operaMatch = /.+(Opera[\s[A-Z]*|OPR[\sA-Z]*)\/([0-9\.]+).*/i.exec(userAgent);
29
+ if (operaMatch) {
30
+ return {
31
+ type: operaMatch[1],
32
+ version: operaMatch[2],
33
+ };
34
+ }
35
+ const edgeOrTridentMatch = /.+(Trident|Edge)\/([0-9\.]+).*/i.exec(userAgent);
36
+ if (edgeOrTridentMatch) {
37
+ return {
38
+ type: edgeOrTridentMatch[1],
39
+ version: edgeOrTridentMatch[2],
40
+ };
41
+ }
42
+ const headlessMatch = /(headlesschrome)(?:\/([\w\.]+)| )/i.exec(userAgent);
43
+ if (headlessMatch) {
44
+ return {
45
+ type: headlessMatch[1],
46
+ version: headlessMatch[2],
47
+ };
48
+ }
49
+ const browserMatch = /.+(Chrome|Firefox|FxiOS)\/([0-9\.]+).*/i.exec(userAgent);
50
+ if (browserMatch) {
51
+ return {
52
+ type: browserMatch[1],
53
+ version: browserMatch[2],
54
+ };
55
+ }
56
+ const safariMatch = /.+(Safari)\/([0-9\.]+).*/i.exec(userAgent);
57
+ if (safariMatch) {
58
+ return {
59
+ type: safariMatch[1],
60
+ version: safariMatch[2],
61
+ };
62
+ }
63
+ const webkitMatch = /.+(AppleWebKit)\/([0-9\.]+).*/i.exec(userAgent);
64
+ if (webkitMatch) {
65
+ return {
66
+ type: webkitMatch[1],
67
+ version: webkitMatch[2],
68
+ };
69
+ }
70
+ const anyMatch = /.*([A-Z]+)\/([0-9\.]+).*/i.exec(userAgent);
71
+ const fallback = anyMatch || ['', 'NA', '0.0.0'];
72
+ return {
73
+ type: fallback[1],
74
+ version: fallback[2],
75
+ };
76
+ }
77
+ function getBrowserClientInfo() {
78
+ const nav = getNavigatorSafe();
79
+ if (!nav) {
80
+ return {};
81
+ }
82
+ const userAgent = nav.userAgent || '';
83
+ const browser = parseBrowserType(userAgent);
84
+ const isBrave = (nav.brave && nav.brave.isBrave) || false;
85
+ const type = isBrave ? 'Brave' : browser.type;
86
+ const os = (0, os_1.parseOS)(userAgent);
87
+ const vendorToken = (nav.vendor || '').split(' ').filter(Boolean)[0];
88
+ const make = type === 'Brave' ? type : vendorToken || nav.product || '';
89
+ return {
90
+ language: getLanguageInfo(nav),
91
+ make,
92
+ model: type,
93
+ version: browser.version,
94
+ name: [type, browser.version].filter(Boolean).join('/'),
95
+ timezone: getBrowserTimezone(),
96
+ platform: nav.platform,
97
+ os,
98
+ };
99
+ }
100
+ exports.getBrowserClientInfo = getBrowserClientInfo;
101
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../src/plugins/utils/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseOS = void 0;
4
+ function parseOS(userAgent) {
5
+ var _a;
6
+ const cleanAgent = userAgent.toLowerCase().replace(/ /g, '');
7
+ const osMatchers = [
8
+ {
9
+ name: 'Windows',
10
+ regex: /windowsnt/i,
11
+ versionRegex: /windowsnt([\d\.]+)/i,
12
+ },
13
+ {
14
+ name: 'MacOS',
15
+ regex: /macos|macosx|macintosh|macintel|darwin/i,
16
+ versionRegex: /osx([\d_\.]+)/i,
17
+ },
18
+ {
19
+ name: 'Android',
20
+ regex: /android/i,
21
+ versionRegex: /android([\d\.]+)/i,
22
+ },
23
+ {
24
+ name: 'iOS',
25
+ regex: /iphone|ipad|ipod/i,
26
+ versionRegex: /os([\d_\.]+)/i,
27
+ },
28
+ {
29
+ name: 'Linux',
30
+ regex: /linux/i,
31
+ },
32
+ ];
33
+ const matched = osMatchers.find((entry) => entry.regex.test(cleanAgent));
34
+ if (!matched) {
35
+ return {};
36
+ }
37
+ const version = matched.versionRegex
38
+ ? (_a = (cleanAgent.match(matched.versionRegex) || [])[1]) === null || _a === void 0 ? void 0 : _a.replace(/_/g, '.')
39
+ : undefined;
40
+ return {
41
+ name: matched.name,
42
+ version,
43
+ };
44
+ }
45
+ exports.parseOS = parseOS;
46
+ //# sourceMappingURL=os.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os.js","sourceRoot":"","sources":["../../../../src/plugins/utils/os.ts"],"names":[],"mappings":";;;AAKA,SAAgB,OAAO,CAAC,SAAiB;;IACvC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,UAAU,GAIX;QACH;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,YAAY;YACnB,YAAY,EAAE,qBAAqB;SACpC;QACD;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,yCAAyC;YAChD,YAAY,EAAE,gBAAgB;SAC/B;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE,mBAAmB;SAClC;QACD;YACE,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,mBAAmB;YAC1B,YAAY,EAAE,eAAe;SAC9B;QACD;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,QAAQ;SAChB;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,EAAE,CAAC;KACX;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY;QAClC,CAAC,CAAC,MAAA,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QACvE,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO;KACR,CAAC;AACJ,CAAC;AA9CD,0BA8CC"}
@@ -1,4 +1,4 @@
1
- import { AmazonAnalytics, AmazonTelemetryOptions, AmazonTelemetryEndpointMode, Dimensions, Metrics, IAmazon, PageViewOptions, EventOptions, ISetAccessPermissionsParams, IGetAccessPermissionsParams } from './types';
1
+ import { AmazonAnalytics, AmazonTelemetryOptions, AmazonTelemetryEndpointMode, Dimensions, Metrics, IAmazon, PageViewOptions, EventOptions, EventTrackOptions, ISetAccessPermissionsParams, IGetAccessPermissionsParams } from './types';
2
2
  /**
3
3
  * Amazon Telemetry
4
4
  * Supports Pinpoint and Esri endpoint modes
@@ -20,5 +20,5 @@ export declare class Amazon implements IAmazon<Dimensions, Metrics> {
20
20
  static setAccessPermissions({ id, authentication, username, accessChangeset, }: ISetAccessPermissionsParams): Promise<import("@esri/arcgis-rest-portal").IUpdateItemResponse>;
21
21
  static getAccessPermissions({ id, authentication, }: IGetAccessPermissionsParams): Promise<Record<string, any>>;
22
22
  logPageView(page: string, options?: PageViewOptions): boolean;
23
- logEvent(event?: EventOptions): boolean;
23
+ logEvent(event?: EventOptions, trackOptions?: EventTrackOptions): boolean;
24
24
  }
@@ -6,6 +6,7 @@ declare type EsriPluginOptions = {
6
6
  appVersion?: string;
7
7
  userPoolID?: string;
8
8
  fips?: boolean;
9
+ debounceMs?: number;
9
10
  };
10
- export declare function createEsriPlugin({ trackerName, appName, appId, appVersion, userPoolID, fips, }: EsriPluginOptions): AmazonTracker;
11
+ export declare function createEsriPlugin({ trackerName, appName, appId, appVersion, userPoolID, fips, debounceMs, }: EsriPluginOptions): AmazonTracker;
11
12
  export {};
@@ -1,3 +1,4 @@
1
+ export { getBrowserClientInfo } from './utils/browser';
1
2
  export declare const PINPOINT_ENDPOINT_KEY = "TELEMETRY_PINPOINT_ENDPOINT_ID";
2
3
  export declare const DEFAULT_PINPOINT_REGION = "us-east-1";
3
4
  export declare const LOG_PREFIX = "[telemetry-amazon]";
@@ -0,0 +1,12 @@
1
+ import { BrowserOSInfo } from './os';
2
+ export declare type BrowserClientInfo = {
3
+ language?: string;
4
+ make?: string;
5
+ model?: string;
6
+ version?: string;
7
+ name?: string;
8
+ timezone?: string;
9
+ platform?: string;
10
+ os?: BrowserOSInfo;
11
+ };
12
+ export declare function getBrowserClientInfo(): BrowserClientInfo;
@@ -0,0 +1,5 @@
1
+ export declare type BrowserOSInfo = {
2
+ name?: string;
3
+ version?: string;
4
+ };
5
+ export declare function parseOS(userAgent: string): BrowserOSInfo;
@@ -18,7 +18,9 @@ export interface IAccessChangeset {
18
18
  ids?: string[];
19
19
  }
20
20
  export interface AmazonTracker {
21
- track(eventName: string, payload: Record<string, any>): boolean | void | Promise<any>;
21
+ track(eventName: string, payload: Record<string, any>, options?: {
22
+ immediate?: boolean;
23
+ }): boolean | void | Promise<any>;
22
24
  }
23
25
  export declare type AmazonAnalytics = AmazonTracker | AnalyticsInstance;
24
26
  export interface IAmazon<D, M> {
@@ -33,12 +35,15 @@ export interface IAmazon<D, M> {
33
35
  metrics: M;
34
36
  init(): Promise<void>;
35
37
  logPageView: (page: string, options?: PageViewOptions) => boolean;
36
- logEvent: (event?: EventOptions) => boolean;
38
+ logEvent: (event?: EventOptions, trackOptions?: EventTrackOptions) => boolean;
37
39
  }
38
40
  export declare type Dimensions = GenericObject;
39
41
  export declare type Metrics = GenericObject;
40
42
  export declare type PageViewOptions = GenericObject;
41
43
  export declare type EventOptions = GenericObject;
44
+ export declare type EventTrackOptions = {
45
+ immediate?: boolean;
46
+ };
42
47
  export declare type EventData = {
43
48
  category?: string;
44
49
  action?: string;