@amplitude/analytics-browser 1.7.1 → 1.9.0-beta.0

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 (112) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/browser-client-factory.d.ts +5 -0
  3. package/lib/cjs/browser-client-factory.d.ts.map +1 -0
  4. package/lib/cjs/browser-client-factory.js +31 -0
  5. package/lib/cjs/browser-client-factory.js.map +1 -0
  6. package/lib/cjs/browser-client.d.ts +11 -10
  7. package/lib/cjs/browser-client.d.ts.map +1 -1
  8. package/lib/cjs/browser-client.js +89 -71
  9. package/lib/cjs/browser-client.js.map +1 -1
  10. package/lib/cjs/config.d.ts +12 -11
  11. package/lib/cjs/config.d.ts.map +1 -1
  12. package/lib/cjs/config.js +77 -56
  13. package/lib/cjs/config.js.map +1 -1
  14. package/lib/cjs/constants.d.ts +7 -0
  15. package/lib/cjs/constants.d.ts.map +1 -0
  16. package/lib/cjs/constants.js +9 -0
  17. package/lib/cjs/constants.js.map +1 -0
  18. package/lib/cjs/index.d.ts +1 -1
  19. package/lib/cjs/index.d.ts.map +1 -1
  20. package/lib/cjs/index.js +4 -4
  21. package/lib/cjs/index.js.map +1 -1
  22. package/lib/cjs/plugins/context.d.ts +0 -1
  23. package/lib/cjs/plugins/context.d.ts.map +1 -1
  24. package/lib/cjs/plugins/context.js +0 -14
  25. package/lib/cjs/plugins/context.js.map +1 -1
  26. package/lib/cjs/plugins/file-download-tracking.d.ts +3 -0
  27. package/lib/cjs/plugins/file-download-tracking.d.ts.map +1 -0
  28. package/lib/cjs/plugins/file-download-tracking.js +76 -0
  29. package/lib/cjs/plugins/file-download-tracking.js.map +1 -0
  30. package/lib/cjs/plugins/form-interaction-tracking.d.ts +3 -0
  31. package/lib/cjs/plugins/form-interaction-tracking.d.ts.map +1 -0
  32. package/lib/cjs/plugins/form-interaction-tracking.js +80 -0
  33. package/lib/cjs/plugins/form-interaction-tracking.js.map +1 -0
  34. package/lib/cjs/plugins/session-handler.d.ts +3 -0
  35. package/lib/cjs/plugins/session-handler.d.ts.map +1 -0
  36. package/lib/cjs/plugins/session-handler.js +54 -0
  37. package/lib/cjs/plugins/session-handler.js.map +1 -0
  38. package/lib/cjs/snippet-index.js +18 -3
  39. package/lib/cjs/snippet-index.js.map +1 -1
  40. package/lib/cjs/version.d.ts +1 -1
  41. package/lib/cjs/version.d.ts.map +1 -1
  42. package/lib/cjs/version.js +1 -1
  43. package/lib/cjs/version.js.map +1 -1
  44. package/lib/esm/browser-client-factory.d.ts +5 -0
  45. package/lib/esm/browser-client-factory.d.ts.map +1 -0
  46. package/lib/esm/browser-client-factory.js +28 -0
  47. package/lib/esm/browser-client-factory.js.map +1 -0
  48. package/lib/esm/browser-client.d.ts +11 -10
  49. package/lib/esm/browser-client.d.ts.map +1 -1
  50. package/lib/esm/browser-client.js +91 -72
  51. package/lib/esm/browser-client.js.map +1 -1
  52. package/lib/esm/config.d.ts +12 -11
  53. package/lib/esm/config.d.ts.map +1 -1
  54. package/lib/esm/config.js +77 -55
  55. package/lib/esm/config.js.map +1 -1
  56. package/lib/esm/constants.d.ts +7 -0
  57. package/lib/esm/constants.d.ts.map +1 -0
  58. package/lib/esm/constants.js +7 -0
  59. package/lib/esm/constants.js.map +1 -0
  60. package/lib/esm/index.d.ts +1 -1
  61. package/lib/esm/index.d.ts.map +1 -1
  62. package/lib/esm/index.js +2 -2
  63. package/lib/esm/index.js.map +1 -1
  64. package/lib/esm/plugins/context.d.ts +0 -1
  65. package/lib/esm/plugins/context.d.ts.map +1 -1
  66. package/lib/esm/plugins/context.js +0 -14
  67. package/lib/esm/plugins/context.js.map +1 -1
  68. package/lib/esm/plugins/file-download-tracking.d.ts +3 -0
  69. package/lib/esm/plugins/file-download-tracking.d.ts.map +1 -0
  70. package/lib/esm/plugins/file-download-tracking.js +72 -0
  71. package/lib/esm/plugins/file-download-tracking.js.map +1 -0
  72. package/lib/esm/plugins/form-interaction-tracking.d.ts +3 -0
  73. package/lib/esm/plugins/form-interaction-tracking.d.ts.map +1 -0
  74. package/lib/esm/plugins/form-interaction-tracking.js +76 -0
  75. package/lib/esm/plugins/form-interaction-tracking.js.map +1 -0
  76. package/lib/esm/plugins/session-handler.d.ts +3 -0
  77. package/lib/esm/plugins/session-handler.d.ts.map +1 -0
  78. package/lib/esm/plugins/session-handler.js +50 -0
  79. package/lib/esm/plugins/session-handler.js.map +1 -0
  80. package/lib/esm/snippet-index.js +18 -3
  81. package/lib/esm/snippet-index.js.map +1 -1
  82. package/lib/esm/version.d.ts +1 -1
  83. package/lib/esm/version.d.ts.map +1 -1
  84. package/lib/esm/version.js +1 -1
  85. package/lib/esm/version.js.map +1 -1
  86. package/lib/scripts/amplitude-min.js +1 -1
  87. package/lib/scripts/amplitude-min.js.gz +0 -0
  88. package/lib/scripts/amplitude-min.umd.js +1 -1
  89. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  90. package/lib/scripts/amplitude-snippet-instructions.html +1 -1
  91. package/lib/scripts/amplitude-snippet-min.js +1 -1
  92. package/lib/scripts/browser-client-factory.d.ts +5 -0
  93. package/lib/scripts/browser-client-factory.d.ts.map +1 -0
  94. package/lib/scripts/browser-client.d.ts +11 -10
  95. package/lib/scripts/browser-client.d.ts.map +1 -1
  96. package/lib/scripts/config.d.ts +12 -11
  97. package/lib/scripts/config.d.ts.map +1 -1
  98. package/lib/scripts/constants.d.ts +7 -0
  99. package/lib/scripts/constants.d.ts.map +1 -0
  100. package/lib/scripts/index.d.ts +1 -1
  101. package/lib/scripts/index.d.ts.map +1 -1
  102. package/lib/scripts/plugins/context.d.ts +0 -1
  103. package/lib/scripts/plugins/context.d.ts.map +1 -1
  104. package/lib/scripts/plugins/file-download-tracking.d.ts +3 -0
  105. package/lib/scripts/plugins/file-download-tracking.d.ts.map +1 -0
  106. package/lib/scripts/plugins/form-interaction-tracking.d.ts +3 -0
  107. package/lib/scripts/plugins/form-interaction-tracking.d.ts.map +1 -0
  108. package/lib/scripts/plugins/session-handler.d.ts +3 -0
  109. package/lib/scripts/plugins/session-handler.d.ts.map +1 -0
  110. package/lib/scripts/version.d.ts +1 -1
  111. package/lib/scripts/version.d.ts.map +1 -1
  112. package/package.json +7 -5
package/lib/cjs/config.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var _this = this;
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTopLevelDomain = exports.createTransport = exports.createDeviceId = exports.createEventsStorage = exports.createFlexibleStorage = exports.createCookieStorage = exports.useBrowserConfig = exports.BrowserConfig = exports.getDefaultConfig = void 0;
3
+ exports.getTopLevelDomain = exports.createTransport = exports.createEventsStorage = exports.createFlexibleStorage = exports.createCookieStorage = exports.useBrowserConfig = exports.BrowserConfig = exports.getDefaultConfig = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var analytics_types_1 = require("@amplitude/analytics-types");
6
6
  var analytics_core_1 = require("@amplitude/analytics-core");
@@ -27,9 +27,7 @@ var getDefaultConfig = function () {
27
27
  cookieUpgrade: true,
28
28
  disableCookies: false,
29
29
  domain: '',
30
- sessionManager: new analytics_client_common_1.SessionManager(cookieStorage, ''),
31
30
  sessionTimeout: 30 * 60 * 1000,
32
- storageProvider: new analytics_core_1.MemoryStorage(),
33
31
  trackingOptions: trackingOptions,
34
32
  transportProvider: new analytics_client_common_1.FetchTransport(),
35
33
  };
@@ -37,91 +35,120 @@ var getDefaultConfig = function () {
37
35
  exports.getDefaultConfig = getDefaultConfig;
38
36
  var BrowserConfig = /** @class */ (function (_super) {
39
37
  tslib_1.__extends(BrowserConfig, _super);
40
- function BrowserConfig(apiKey, userId, options) {
38
+ function BrowserConfig(apiKey, options) {
41
39
  var _this = this;
42
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
40
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
43
41
  var defaultConfig = (0, exports.getDefaultConfig)();
44
- _this = _super.call(this, tslib_1.__assign(tslib_1.__assign({ flushIntervalMillis: 1000, flushMaxRetries: 5, flushQueueSize: 30 }, options), { apiKey: apiKey, storageProvider: (_a = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _a !== void 0 ? _a : defaultConfig.storageProvider, transportProvider: (_b = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _b !== void 0 ? _b : defaultConfig.transportProvider })) || this;
45
- _this.cookieStorage = (_c = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _c !== void 0 ? _c : defaultConfig.cookieStorage;
46
- _this.sessionManager = (_d = options === null || options === void 0 ? void 0 : options.sessionManager) !== null && _d !== void 0 ? _d : defaultConfig.sessionManager;
47
- _this.sessionTimeout = (_e = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _e !== void 0 ? _e : defaultConfig.sessionTimeout;
48
- _this.appVersion = options === null || options === void 0 ? void 0 : options.appVersion;
49
- _this.attribution = options === null || options === void 0 ? void 0 : options.attribution;
50
- _this.cookieExpiration = (_f = options === null || options === void 0 ? void 0 : options.cookieExpiration) !== null && _f !== void 0 ? _f : defaultConfig.cookieExpiration;
51
- _this.cookieSameSite = (_g = options === null || options === void 0 ? void 0 : options.cookieSameSite) !== null && _g !== void 0 ? _g : defaultConfig.cookieSameSite;
52
- _this.cookieSecure = (_h = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _h !== void 0 ? _h : defaultConfig.cookieSecure;
53
- _this.cookieUpgrade = (_j = options === null || options === void 0 ? void 0 : options.cookieUpgrade) !== null && _j !== void 0 ? _j : defaultConfig.cookieUpgrade;
42
+ _this = _super.call(this, tslib_1.__assign(tslib_1.__assign({ flushIntervalMillis: 1000, flushMaxRetries: 5, flushQueueSize: 30, transportProvider: defaultConfig.transportProvider }, options), { apiKey: apiKey })) || this;
43
+ _this._optOut = false;
44
+ // NOTE: Define `cookieStorage` first to persist user session
45
+ // user session properties expect `cookieStorage` to be defined
46
+ _this.cookieStorage = (_a = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _a !== void 0 ? _a : defaultConfig.cookieStorage;
54
47
  _this.deviceId = options === null || options === void 0 ? void 0 : options.deviceId;
55
- _this.disableCookies = (_k = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _k !== void 0 ? _k : defaultConfig.disableCookies;
56
- _this.domain = (_l = options === null || options === void 0 ? void 0 : options.domain) !== null && _l !== void 0 ? _l : defaultConfig.domain;
57
- _this.lastEventTime = (_m = _this.lastEventTime) !== null && _m !== void 0 ? _m : options === null || options === void 0 ? void 0 : options.lastEventTime;
48
+ _this.lastEventTime = options === null || options === void 0 ? void 0 : options.lastEventTime;
58
49
  _this.optOut = Boolean(options === null || options === void 0 ? void 0 : options.optOut);
59
- _this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;
60
50
  _this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
61
- _this.trackingOptions = (_o = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _o !== void 0 ? _o : defaultConfig.trackingOptions;
62
- _this.userId = userId;
51
+ _this.userId = options === null || options === void 0 ? void 0 : options.userId;
52
+ _this.appVersion = options === null || options === void 0 ? void 0 : options.appVersion;
53
+ _this.attribution = options === null || options === void 0 ? void 0 : options.attribution;
54
+ _this.cookieExpiration = (_b = options === null || options === void 0 ? void 0 : options.cookieExpiration) !== null && _b !== void 0 ? _b : defaultConfig.cookieExpiration;
55
+ _this.cookieSameSite = (_c = options === null || options === void 0 ? void 0 : options.cookieSameSite) !== null && _c !== void 0 ? _c : defaultConfig.cookieSameSite;
56
+ _this.cookieSecure = (_d = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _d !== void 0 ? _d : defaultConfig.cookieSecure;
57
+ _this.cookieUpgrade = (_e = options === null || options === void 0 ? void 0 : options.cookieUpgrade) !== null && _e !== void 0 ? _e : defaultConfig.cookieUpgrade;
58
+ _this.defaultTracking = options === null || options === void 0 ? void 0 : options.defaultTracking;
59
+ _this.disableCookies = (_f = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _f !== void 0 ? _f : defaultConfig.disableCookies;
60
+ _this.defaultTracking = options === null || options === void 0 ? void 0 : options.defaultTracking;
61
+ _this.domain = (_g = options === null || options === void 0 ? void 0 : options.domain) !== null && _g !== void 0 ? _g : defaultConfig.domain;
62
+ _this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;
63
+ _this.sessionTimeout = (_h = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _h !== void 0 ? _h : defaultConfig.sessionTimeout;
64
+ _this.trackingOptions = (_j = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _j !== void 0 ? _j : defaultConfig.trackingOptions;
63
65
  return _this;
64
66
  }
65
67
  Object.defineProperty(BrowserConfig.prototype, "deviceId", {
66
68
  get: function () {
67
- return this.sessionManager.getDeviceId();
69
+ return this._deviceId;
68
70
  },
69
71
  set: function (deviceId) {
70
- this.sessionManager.setDeviceId(deviceId);
72
+ if (this._deviceId !== deviceId) {
73
+ this._deviceId = deviceId;
74
+ this.updateStorage();
75
+ }
71
76
  },
72
77
  enumerable: false,
73
78
  configurable: true
74
79
  });
75
80
  Object.defineProperty(BrowserConfig.prototype, "userId", {
76
81
  get: function () {
77
- return this.sessionManager.getUserId();
82
+ return this._userId;
78
83
  },
79
84
  set: function (userId) {
80
- this.sessionManager.setUserId(userId);
85
+ if (this._userId !== userId) {
86
+ this._userId = userId;
87
+ this.updateStorage();
88
+ }
81
89
  },
82
90
  enumerable: false,
83
91
  configurable: true
84
92
  });
85
93
  Object.defineProperty(BrowserConfig.prototype, "sessionId", {
86
94
  get: function () {
87
- return this.sessionManager.getSessionId();
95
+ return this._sessionId;
88
96
  },
89
97
  set: function (sessionId) {
90
- this.sessionManager.setSessionId(sessionId);
98
+ if (this._sessionId !== sessionId) {
99
+ this._sessionId = sessionId;
100
+ this.updateStorage();
101
+ }
91
102
  },
92
103
  enumerable: false,
93
104
  configurable: true
94
105
  });
95
106
  Object.defineProperty(BrowserConfig.prototype, "optOut", {
96
107
  get: function () {
97
- return this.sessionManager.getOptOut();
108
+ return this._optOut;
98
109
  },
99
110
  set: function (optOut) {
100
- var _a;
101
- (_a = this.sessionManager) === null || _a === void 0 ? void 0 : _a.setOptOut(Boolean(optOut));
111
+ if (this._optOut !== optOut) {
112
+ this._optOut = optOut;
113
+ this.updateStorage();
114
+ }
102
115
  },
103
116
  enumerable: false,
104
117
  configurable: true
105
118
  });
106
119
  Object.defineProperty(BrowserConfig.prototype, "lastEventTime", {
107
120
  get: function () {
108
- return this.sessionManager.getLastEventTime();
121
+ return this._lastEventTime;
109
122
  },
110
123
  set: function (lastEventTime) {
111
- this.sessionManager.setLastEventTime(lastEventTime);
124
+ if (this._lastEventTime !== lastEventTime) {
125
+ this._lastEventTime = lastEventTime;
126
+ this.updateStorage();
127
+ }
112
128
  },
113
129
  enumerable: false,
114
130
  configurable: true
115
131
  });
132
+ BrowserConfig.prototype.updateStorage = function () {
133
+ var _a;
134
+ var cache = {
135
+ deviceId: this._deviceId,
136
+ userId: this._userId,
137
+ sessionId: this._sessionId,
138
+ optOut: this._optOut,
139
+ lastEventTime: this._lastEventTime,
140
+ };
141
+ void ((_a = this.cookieStorage) === null || _a === void 0 ? void 0 : _a.set((0, analytics_client_common_1.getCookieName)(this.apiKey), cache));
142
+ };
116
143
  return BrowserConfig;
117
144
  }(analytics_core_1.Config));
118
145
  exports.BrowserConfig = BrowserConfig;
119
- var useBrowserConfig = function (apiKey, userId, options) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
120
- var defaultConfig, domain, _a, cookieStorage, cookieName, cookies, queryParams, sessionManager, _b, _c, _d;
146
+ var useBrowserConfig = function (apiKey, options) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
147
+ var defaultConfig, domain, _a, cookieStorage, previousCookies, queryParams, deviceId, lastEventTime, optOut, sessionId, userId, _b, _c, _d;
121
148
  var _e;
122
- var _f, _g, _h, _j, _k;
123
- return tslib_1.__generator(this, function (_l) {
124
- switch (_l.label) {
149
+ var _f, _g, _h, _j, _k, _l, _m, _o, _p;
150
+ return tslib_1.__generator(this, function (_q) {
151
+ switch (_q.label) {
125
152
  case 0:
126
153
  defaultConfig = (0, exports.getDefaultConfig)();
127
154
  if (!((_f = options === null || options === void 0 ? void 0 : options.domain) !== null && _f !== void 0)) return [3 /*break*/, 1];
@@ -129,30 +156,28 @@ var useBrowserConfig = function (apiKey, userId, options) { return tslib_1.__awa
129
156
  return [3 /*break*/, 3];
130
157
  case 1: return [4 /*yield*/, (0, exports.getTopLevelDomain)()];
131
158
  case 2:
132
- _a = (_l.sent());
133
- _l.label = 3;
159
+ _a = (_q.sent());
160
+ _q.label = 3;
134
161
  case 3:
135
162
  domain = _a;
136
163
  return [4 /*yield*/, (0, exports.createCookieStorage)(tslib_1.__assign(tslib_1.__assign({}, options), { domain: domain }))];
137
164
  case 4:
138
- cookieStorage = _l.sent();
139
- cookieName = (0, analytics_client_common_1.getCookieName)(apiKey);
140
- return [4 /*yield*/, cookieStorage.get(cookieName)];
165
+ cookieStorage = _q.sent();
166
+ return [4 /*yield*/, cookieStorage.get((0, analytics_client_common_1.getCookieName)(apiKey))];
141
167
  case 5:
142
- cookies = _l.sent();
168
+ previousCookies = _q.sent();
143
169
  queryParams = (0, analytics_client_common_1.getQueryParams)();
144
- return [4 /*yield*/, new analytics_client_common_1.SessionManager(cookieStorage, apiKey).load()];
145
- case 6:
146
- sessionManager = _l.sent();
170
+ deviceId = (_j = (_h = (_g = options === null || options === void 0 ? void 0 : options.deviceId) !== null && _g !== void 0 ? _g : queryParams.deviceId) !== null && _h !== void 0 ? _h : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.deviceId) !== null && _j !== void 0 ? _j : (0, analytics_core_1.UUID)();
171
+ lastEventTime = (_k = options === null || options === void 0 ? void 0 : options.lastEventTime) !== null && _k !== void 0 ? _k : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.lastEventTime;
172
+ optOut = (_l = options === null || options === void 0 ? void 0 : options.optOut) !== null && _l !== void 0 ? _l : Boolean(previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.optOut);
173
+ sessionId = (_m = options === null || options === void 0 ? void 0 : options.sessionId) !== null && _m !== void 0 ? _m : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.sessionId;
174
+ userId = (_o = options === null || options === void 0 ? void 0 : options.userId) !== null && _o !== void 0 ? _o : previousCookies === null || previousCookies === void 0 ? void 0 : previousCookies.userId;
147
175
  _b = BrowserConfig.bind;
148
- _c = [void 0, apiKey, userId !== null && userId !== void 0 ? userId : cookies === null || cookies === void 0 ? void 0 : cookies.userId];
176
+ _c = [void 0, apiKey];
149
177
  _d = [tslib_1.__assign({}, options)];
150
- _e = { cookieStorage: cookieStorage, sessionManager: sessionManager, deviceId: (0, exports.createDeviceId)(cookies === null || cookies === void 0 ? void 0 : cookies.deviceId, options === null || options === void 0 ? void 0 : options.deviceId, queryParams.deviceId), domain: domain, optOut: (_g = options === null || options === void 0 ? void 0 : options.optOut) !== null && _g !== void 0 ? _g : Boolean(cookies === null || cookies === void 0 ? void 0 : cookies.optOut) };
151
- return [4 /*yield*/, cookieStorage.get(cookieName)];
152
- case 7:
153
- _e.sessionId = (_j = (_h = (_l.sent())) === null || _h === void 0 ? void 0 : _h.sessionId) !== null && _j !== void 0 ? _j : options === null || options === void 0 ? void 0 : options.sessionId;
178
+ _e = { cookieStorage: cookieStorage, deviceId: deviceId, domain: domain, lastEventTime: lastEventTime, optOut: optOut, sessionId: sessionId };
154
179
  return [4 /*yield*/, (0, exports.createEventsStorage)(options)];
155
- case 8: return [2 /*return*/, new (_b.apply(BrowserConfig, _c.concat([tslib_1.__assign.apply(void 0, _d.concat([(_e.storageProvider = _l.sent(), _e.trackingOptions = tslib_1.__assign(tslib_1.__assign({}, defaultConfig.trackingOptions), options === null || options === void 0 ? void 0 : options.trackingOptions), _e.transportProvider = (_k = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _k !== void 0 ? _k : (0, exports.createTransport)(options === null || options === void 0 ? void 0 : options.transport), _e)]))])))()];
180
+ case 6: return [2 /*return*/, new (_b.apply(BrowserConfig, _c.concat([tslib_1.__assign.apply(void 0, _d.concat([(_e.storageProvider = _q.sent(), _e.trackingOptions = tslib_1.__assign(tslib_1.__assign({}, defaultConfig.trackingOptions), options === null || options === void 0 ? void 0 : options.trackingOptions), _e.transportProvider = (_p = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _p !== void 0 ? _p : (0, exports.createTransport)(options === null || options === void 0 ? void 0 : options.transport), _e.userId = userId, _e)]))])))()];
156
181
  }
157
182
  });
158
183
  }); };
@@ -259,10 +284,6 @@ var createEventsStorage = function (overrides) { return tslib_1.__awaiter(_this,
259
284
  });
260
285
  }); };
261
286
  exports.createEventsStorage = createEventsStorage;
262
- var createDeviceId = function (idFromCookies, idFromOptions, idFromQueryParams) {
263
- return idFromOptions || idFromQueryParams || idFromCookies || (0, analytics_core_1.UUID)();
264
- };
265
- exports.createDeviceId = createDeviceId;
266
287
  var createTransport = function (transport) {
267
288
  if (transport === analytics_types_1.TransportType.XHR) {
268
289
  return new xhr_1.XHRTransport();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AttributionOptions,\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport {\n CookieStorage,\n getCookieName,\n getQueryParams,\n SessionManager,\n FetchTransport,\n} from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage<UserSession>();\n const trackingOptions: Required<TrackingOptions> = {\n deviceManufacturer: true,\n deviceModel: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n };\n return {\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage,\n cookieUpgrade: true,\n disableCookies: false,\n domain: '',\n sessionManager: new SessionManager(cookieStorage, ''),\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage<Event[]>(),\n trackingOptions,\n transportProvider: new FetchTransport(),\n };\n};\n\nexport class BrowserConfig extends Config implements IBrowserConfig {\n appVersion?: string;\n attribution?: AttributionOptions;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieUpgrade: boolean;\n cookieStorage: Storage<UserSession>;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n sessionManager: ISessionManager;\n\n constructor(apiKey: string, userId?: string, options?: BrowserOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n flushIntervalMillis: 1000,\n flushMaxRetries: 5,\n flushQueueSize: 30,\n ...options,\n apiKey,\n storageProvider: options?.storageProvider ?? defaultConfig.storageProvider,\n transportProvider: options?.transportProvider ?? defaultConfig.transportProvider,\n });\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.sessionManager = options?.sessionManager ?? defaultConfig.sessionManager;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n\n this.appVersion = options?.appVersion;\n this.attribution = options?.attribution;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.cookieUpgrade = options?.cookieUpgrade ?? defaultConfig.cookieUpgrade;\n this.deviceId = options?.deviceId;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.lastEventTime = this.lastEventTime ?? options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.partnerId = options?.partnerId;\n this.sessionId = options?.sessionId;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n this.userId = userId;\n }\n\n get deviceId() {\n return this.sessionManager.getDeviceId();\n }\n\n set deviceId(deviceId: string | undefined) {\n this.sessionManager.setDeviceId(deviceId);\n }\n\n get userId() {\n return this.sessionManager.getUserId();\n }\n\n set userId(userId: string | undefined) {\n this.sessionManager.setUserId(userId);\n }\n\n get sessionId() {\n return this.sessionManager.getSessionId();\n }\n\n set sessionId(sessionId: number | undefined) {\n this.sessionManager.setSessionId(sessionId);\n }\n\n get optOut() {\n return this.sessionManager.getOptOut();\n }\n\n set optOut(optOut: boolean) {\n this.sessionManager?.setOptOut(Boolean(optOut));\n }\n\n get lastEventTime() {\n return this.sessionManager.getLastEventTime();\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n this.sessionManager.setLastEventTime(lastEventTime);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n userId?: string,\n options?: BrowserOptions,\n): Promise<IBrowserConfig> => {\n const defaultConfig = getDefaultConfig();\n const domain = options?.domain ?? (await getTopLevelDomain());\n const cookieStorage = await createCookieStorage({ ...options, domain });\n const cookieName = getCookieName(apiKey);\n const cookies = await cookieStorage.get(cookieName);\n const queryParams = getQueryParams();\n const sessionManager = await new SessionManager(cookieStorage, apiKey).load();\n\n return new BrowserConfig(apiKey, userId ?? cookies?.userId, {\n ...options,\n cookieStorage,\n sessionManager,\n deviceId: createDeviceId(cookies?.deviceId, options?.deviceId, queryParams.deviceId),\n domain,\n optOut: options?.optOut ?? Boolean(cookies?.optOut),\n sessionId: (await cookieStorage.get(cookieName))?.sessionId ?? options?.sessionId,\n storageProvider: await createEventsStorage(options),\n trackingOptions: { ...defaultConfig.trackingOptions, ...options?.trackingOptions },\n transportProvider: options?.transportProvider ?? createTransport(options?.transport),\n });\n};\n\nexport const createCookieStorage = async (\n overrides?: BrowserOptions,\n baseConfig = getDefaultConfig(),\n): Promise<Storage<UserSession>> => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !(await cookieStorage.isEnabled())) {\n return createFlexibleStorage<UserSession>(options);\n }\n return cookieStorage;\n};\n\nexport const createFlexibleStorage = async <T>(options: BrowserOptions): Promise<Storage<T>> => {\n let storage: Storage<T> = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !(await storage.isEnabled())) {\n storage = new LocalStorage();\n if (!(await storage.isEnabled())) {\n storage = new MemoryStorage();\n }\n }\n return storage;\n};\n\nexport const createEventsStorage = async (overrides?: BrowserOptions): Promise<Storage<Event[]> | undefined> => {\n const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, 'storageProvider');\n // If storageProperty is explicitly undefined `{ storageProperty: undefined }`\n // then storageProvider is undefined\n // If storageProvider is implicitly undefined `{ }`\n // then storageProvider is LocalStorage\n // Otherwise storageProvider is overriden\n if (!hasStorageProviderProperty || overrides.storageProvider) {\n for (const storage of [overrides?.storageProvider, new LocalStorage<Event[]>()]) {\n if (storage && (await storage.isEnabled())) {\n return storage;\n }\n }\n }\n return undefined;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (!(await new CookieStorage<string>().isEnabled()) || (!url && typeof location === 'undefined')) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage<number>(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AttributionOptions,\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport { CookieStorage, getCookieName, getQueryParams, FetchTransport } from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage<UserSession>();\n const trackingOptions: Required<TrackingOptions> = {\n deviceManufacturer: true,\n deviceModel: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n };\n return {\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage,\n cookieUpgrade: true,\n disableCookies: false,\n domain: '',\n sessionTimeout: 30 * 60 * 1000,\n trackingOptions,\n transportProvider: new FetchTransport(),\n };\n};\n\nexport class BrowserConfig extends Config implements IBrowserConfig {\n appVersion?: string;\n attribution?: AttributionOptions;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieUpgrade: boolean;\n cookieStorage: Storage<UserSession>;\n defaultTracking?: DefaultTrackingOptions | boolean;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n\n // NOTE: These protected properties are used to cache values from async storage\n protected _deviceId?: string;\n protected _lastEventTime?: number;\n protected _optOut = false;\n protected _sessionId?: number;\n protected _userId?: string;\n\n constructor(apiKey: string, options?: BrowserOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n flushIntervalMillis: 1000,\n flushMaxRetries: 5,\n flushQueueSize: 30,\n transportProvider: defaultConfig.transportProvider,\n ...options,\n apiKey,\n });\n\n // NOTE: Define `cookieStorage` first to persist user session\n // user session properties expect `cookieStorage` to be defined\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.deviceId = options?.deviceId;\n this.lastEventTime = options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.sessionId = options?.sessionId;\n this.userId = options?.userId;\n\n this.appVersion = options?.appVersion;\n this.attribution = options?.attribution;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.cookieUpgrade = options?.cookieUpgrade ?? defaultConfig.cookieUpgrade;\n this.defaultTracking = options?.defaultTracking;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.defaultTracking = options?.defaultTracking;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.partnerId = options?.partnerId;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n }\n\n get deviceId() {\n return this._deviceId;\n }\n\n set deviceId(deviceId: string | undefined) {\n if (this._deviceId !== deviceId) {\n this._deviceId = deviceId;\n this.updateStorage();\n }\n }\n\n get userId() {\n return this._userId;\n }\n\n set userId(userId: string | undefined) {\n if (this._userId !== userId) {\n this._userId = userId;\n this.updateStorage();\n }\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n set sessionId(sessionId: number | undefined) {\n if (this._sessionId !== sessionId) {\n this._sessionId = sessionId;\n this.updateStorage();\n }\n }\n\n get optOut() {\n return this._optOut;\n }\n\n set optOut(optOut: boolean) {\n if (this._optOut !== optOut) {\n this._optOut = optOut;\n this.updateStorage();\n }\n }\n\n get lastEventTime() {\n return this._lastEventTime;\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n if (this._lastEventTime !== lastEventTime) {\n this._lastEventTime = lastEventTime;\n this.updateStorage();\n }\n }\n\n private updateStorage() {\n const cache = {\n deviceId: this._deviceId,\n userId: this._userId,\n sessionId: this._sessionId,\n optOut: this._optOut,\n lastEventTime: this._lastEventTime,\n };\n void this.cookieStorage?.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (apiKey: string, options?: BrowserOptions): Promise<IBrowserConfig> => {\n const defaultConfig = getDefaultConfig();\n\n // create cookie storage\n const domain = options?.domain ?? (await getTopLevelDomain());\n const cookieStorage = await createCookieStorage({ ...options, domain });\n const previousCookies = await cookieStorage.get(getCookieName(apiKey));\n const queryParams = getQueryParams();\n\n // reconcile user session\n const deviceId = options?.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId ?? UUID();\n const lastEventTime = options?.lastEventTime ?? previousCookies?.lastEventTime;\n const optOut = options?.optOut ?? Boolean(previousCookies?.optOut);\n const sessionId = options?.sessionId ?? previousCookies?.sessionId;\n const userId = options?.userId ?? previousCookies?.userId;\n\n return new BrowserConfig(apiKey, {\n ...options,\n cookieStorage,\n deviceId,\n domain,\n lastEventTime,\n optOut,\n sessionId,\n storageProvider: await createEventsStorage(options),\n trackingOptions: {\n ...defaultConfig.trackingOptions,\n ...options?.trackingOptions,\n },\n transportProvider: options?.transportProvider ?? createTransport(options?.transport),\n userId,\n });\n};\n\nexport const createCookieStorage = async (\n overrides?: BrowserOptions,\n baseConfig = getDefaultConfig(),\n): Promise<Storage<UserSession>> => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !(await cookieStorage.isEnabled())) {\n return createFlexibleStorage<UserSession>(options);\n }\n return cookieStorage;\n};\n\nexport const createFlexibleStorage = async <T>(options: BrowserOptions): Promise<Storage<T>> => {\n let storage: Storage<T> = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !(await storage.isEnabled())) {\n storage = new LocalStorage();\n if (!(await storage.isEnabled())) {\n storage = new MemoryStorage();\n }\n }\n return storage;\n};\n\nexport const createEventsStorage = async (overrides?: BrowserOptions): Promise<Storage<Event[]> | undefined> => {\n const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, 'storageProvider');\n // If storageProperty is explicitly undefined `{ storageProperty: undefined }`\n // then storageProvider is undefined\n // If storageProvider is implicitly undefined `{ }`\n // then storageProvider is LocalStorage\n // Otherwise storageProvider is overriden\n if (!hasStorageProviderProperty || overrides.storageProvider) {\n for (const storage of [overrides?.storageProvider, new LocalStorage<Event[]>()]) {\n if (storage && (await storage.isEnabled())) {\n return storage;\n }\n }\n }\n return undefined;\n};\n\nexport const createTransport = (transport?: TransportType | keyof typeof TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (!(await new CookieStorage<number>().isEnabled()) || (!url && typeof location === 'undefined')) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage<number>(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const DEFAULT_PAGE_VIEW_EVENT = "[Amplitude] Page View";
2
+ export declare const DEFAULT_SESSION_START_EVENT = "session_start";
3
+ export declare const DEFAULT_SESSION_END_EVENT = "session_end";
4
+ export declare const DEFAULT_FORM_START_EVENT = "[Amplitude] Form Start";
5
+ export declare const DEFAULT_FORM_SUBMIT_EVENT = "[Amplitude] Form Submit";
6
+ export declare const DEFAULT_FILE_DOWNLOAD_EVENT = "[Amplitude] File Download";
7
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AACvD,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AACjE,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,2BAA2B,8BAA8B,CAAC"}
@@ -0,0 +1,9 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.DEFAULT_FILE_DOWNLOAD_EVENT = exports.DEFAULT_FORM_SUBMIT_EVENT = exports.DEFAULT_FORM_START_EVENT = exports.DEFAULT_SESSION_END_EVENT = exports.DEFAULT_SESSION_START_EVENT = exports.DEFAULT_PAGE_VIEW_EVENT = void 0;
3
+ exports.DEFAULT_PAGE_VIEW_EVENT = '[Amplitude] Page View';
4
+ exports.DEFAULT_SESSION_START_EVENT = 'session_start';
5
+ exports.DEFAULT_SESSION_END_EVENT = 'session_end';
6
+ exports.DEFAULT_FORM_START_EVENT = '[Amplitude] Form Start';
7
+ exports.DEFAULT_FORM_SUBMIT_EVENT = '[Amplitude] Form Submit';
8
+ exports.DEFAULT_FILE_DOWNLOAD_EVENT = '[Amplitude] File Download';
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;AAAa,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAClD,QAAA,2BAA2B,GAAG,eAAe,CAAC;AAC9C,QAAA,yBAAyB,GAAG,aAAa,CAAC;AAC1C,QAAA,wBAAwB,GAAG,wBAAwB,CAAC;AACpD,QAAA,yBAAyB,GAAG,yBAAyB,CAAC;AACtD,QAAA,2BAA2B,GAAG,2BAA2B,CAAC","sourcesContent":["export const DEFAULT_PAGE_VIEW_EVENT = '[Amplitude] Page View';\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\nexport const DEFAULT_FORM_START_EVENT = '[Amplitude] Form Start';\nexport const DEFAULT_FORM_SUBMIT_EVENT = '[Amplitude] Form Submit';\nexport const DEFAULT_FILE_DOWNLOAD_EVENT = '[Amplitude] File Download';\n"]}
@@ -1,4 +1,4 @@
1
- export { createInstance } from './browser-client';
1
+ export { createInstance } from './browser-client-factory';
2
2
  export declare const add: (plugin: import("@amplitude/analytics-types").Plugin) => import("@amplitude/analytics-types").AmplitudeReturn<void>, flush: () => import("@amplitude/analytics-types").AmplitudeReturn<void>, getDeviceId: () => string | undefined, getSessionId: () => number | undefined, getUserId: () => string | undefined, groupIdentify: (groupType: string, groupName: string | string[], identify: import("@amplitude/analytics-types").Identify, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, identify: (identify: import("@amplitude/analytics-types").Identify, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, init: (apiKey: string, userId?: string | undefined, options?: import("@amplitude/analytics-types").BrowserOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<void>, logEvent: (eventInput: string | import("@amplitude/analytics-types").BaseEvent, eventProperties?: Record<string, any> | undefined, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, remove: (pluginName: string) => import("@amplitude/analytics-types").AmplitudeReturn<void>, reset: () => void, revenue: (revenue: import("@amplitude/analytics-types").Revenue, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, setDeviceId: (deviceId: string) => void, setGroup: (groupType: string, groupName: string | string[], eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, setOptOut: (optOut: boolean) => void, setSessionId: (sessionId: number) => void, setTransport: (transport: import("@amplitude/analytics-types").TransportType) => void, setUserId: (userId: string | undefined) => void, track: (eventInput: string | import("@amplitude/analytics-types").BaseEvent, eventProperties?: Record<string, any> | undefined, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
3
3
  export { runQueuedFunctions } from './utils/snippet-helper';
4
4
  export { Revenue, Identify } from '@amplitude/analytics-core';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,eAAO,MACL,GAAG,uHACH,KAAK,oEACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,iSACb,QAAQ,gPACR,IAAI,0LACJ,QAAQ,+SACR,MAAM,sFACN,KAAK,cACL,OAAO,8OACP,WAAW,8BACX,QAAQ,wOACR,SAAS,6BACT,YAAY,+BACZ,YAAY,2EACZ,SAAS,wCACT,KAAK,6SACG,CAAC;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,eAAO,MACL,GAAG,uHACH,KAAK,oEACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,iSACb,QAAQ,gPACR,IAAI,0LACJ,QAAQ,+SACR,MAAM,sFACN,KAAK,cACL,OAAO,8OACP,WAAW,8BACX,QAAQ,wOACR,SAAS,6BACT,YAAY,+BACZ,YAAY,2EACZ,SAAS,wCACT,KAAK,6SACG,CAAC;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC"}
package/lib/cjs/index.js CHANGED
@@ -2,10 +2,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.Types = exports.Identify = exports.Revenue = exports.runQueuedFunctions = exports.track = exports.setUserId = exports.setTransport = exports.setSessionId = exports.setOptOut = exports.setGroup = exports.setDeviceId = exports.revenue = exports.reset = exports.remove = exports.logEvent = exports.init = exports.identify = exports.groupIdentify = exports.getUserId = exports.getSessionId = exports.getDeviceId = exports.flush = exports.add = exports.createInstance = void 0;
3
3
  var tslib_1 = require("tslib");
4
4
  /* eslint-disable @typescript-eslint/unbound-method */
5
- var browser_client_1 = tslib_1.__importDefault(require("./browser-client"));
6
- var browser_client_2 = require("./browser-client");
7
- Object.defineProperty(exports, "createInstance", { enumerable: true, get: function () { return browser_client_2.createInstance; } });
8
- exports.add = browser_client_1.default.add, exports.flush = browser_client_1.default.flush, exports.getDeviceId = browser_client_1.default.getDeviceId, exports.getSessionId = browser_client_1.default.getSessionId, exports.getUserId = browser_client_1.default.getUserId, exports.groupIdentify = browser_client_1.default.groupIdentify, exports.identify = browser_client_1.default.identify, exports.init = browser_client_1.default.init, exports.logEvent = browser_client_1.default.logEvent, exports.remove = browser_client_1.default.remove, exports.reset = browser_client_1.default.reset, exports.revenue = browser_client_1.default.revenue, exports.setDeviceId = browser_client_1.default.setDeviceId, exports.setGroup = browser_client_1.default.setGroup, exports.setOptOut = browser_client_1.default.setOptOut, exports.setSessionId = browser_client_1.default.setSessionId, exports.setTransport = browser_client_1.default.setTransport, exports.setUserId = browser_client_1.default.setUserId, exports.track = browser_client_1.default.track;
5
+ var browser_client_factory_1 = tslib_1.__importDefault(require("./browser-client-factory"));
6
+ var browser_client_factory_2 = require("./browser-client-factory");
7
+ Object.defineProperty(exports, "createInstance", { enumerable: true, get: function () { return browser_client_factory_2.createInstance; } });
8
+ exports.add = browser_client_factory_1.default.add, exports.flush = browser_client_factory_1.default.flush, exports.getDeviceId = browser_client_factory_1.default.getDeviceId, exports.getSessionId = browser_client_factory_1.default.getSessionId, exports.getUserId = browser_client_factory_1.default.getUserId, exports.groupIdentify = browser_client_factory_1.default.groupIdentify, exports.identify = browser_client_factory_1.default.identify, exports.init = browser_client_factory_1.default.init, exports.logEvent = browser_client_factory_1.default.logEvent, exports.remove = browser_client_factory_1.default.remove, exports.reset = browser_client_factory_1.default.reset, exports.revenue = browser_client_factory_1.default.revenue, exports.setDeviceId = browser_client_factory_1.default.setDeviceId, exports.setGroup = browser_client_factory_1.default.setGroup, exports.setOptOut = browser_client_factory_1.default.setOptOut, exports.setSessionId = browser_client_factory_1.default.setSessionId, exports.setTransport = browser_client_factory_1.default.setTransport, exports.setUserId = browser_client_factory_1.default.setUserId, exports.track = browser_client_factory_1.default.track;
9
9
  var snippet_helper_1 = require("./utils/snippet-helper");
10
10
  Object.defineProperty(exports, "runQueuedFunctions", { enumerable: true, get: function () { return snippet_helper_1.runQueuedFunctions; } });
11
11
  var analytics_core_1 = require("@amplitude/analytics-core");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,4EAAsC;AACtC,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAErB,QAAA,GAAG,GAmBD,wBAAM,MAlBR,QAAA,KAAK,GAkBH,wBAAM,QAjBR,QAAA,WAAW,GAiBT,wBAAM,cAhBR,QAAA,YAAY,GAgBV,wBAAM,eAfR,QAAA,SAAS,GAeP,wBAAM,YAdR,QAAA,aAAa,GAcX,wBAAM,gBAbR,QAAA,QAAQ,GAaN,wBAAM,WAZR,QAAA,IAAI,GAYF,wBAAM,OAXR,QAAA,QAAQ,GAWN,wBAAM,WAVR,QAAA,MAAM,GAUJ,wBAAM,SATR,QAAA,KAAK,GASH,wBAAM,QARR,QAAA,OAAO,GAQL,wBAAM,UAPR,QAAA,WAAW,GAOT,wBAAM,cANR,QAAA,QAAQ,GAMN,wBAAM,WALR,QAAA,SAAS,GAKP,wBAAM,YAJR,QAAA,YAAY,GAIV,wBAAM,eAHR,QAAA,YAAY,GAGV,wBAAM,eAFR,QAAA,SAAS,GAEP,wBAAM,YADR,QAAA,KAAK,GACH,wBAAM,OAAC;AACX,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,4DAA8D;AAArD,yGAAA,OAAO,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC1B,4EAAoD","sourcesContent":["/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client';\nexport { createInstance } from './browser-client';\nexport const {\n add,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n reset,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} = client;\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,4FAA8C;AAC9C,mEAA0D;AAAjD,wHAAA,cAAc,OAAA;AAErB,QAAA,GAAG,GAmBD,gCAAM,MAlBR,QAAA,KAAK,GAkBH,gCAAM,QAjBR,QAAA,WAAW,GAiBT,gCAAM,cAhBR,QAAA,YAAY,GAgBV,gCAAM,eAfR,QAAA,SAAS,GAeP,gCAAM,YAdR,QAAA,aAAa,GAcX,gCAAM,gBAbR,QAAA,QAAQ,GAaN,gCAAM,WAZR,QAAA,IAAI,GAYF,gCAAM,OAXR,QAAA,QAAQ,GAWN,gCAAM,WAVR,QAAA,MAAM,GAUJ,gCAAM,SATR,QAAA,KAAK,GASH,gCAAM,QARR,QAAA,OAAO,GAQL,gCAAM,UAPR,QAAA,WAAW,GAOT,gCAAM,cANR,QAAA,QAAQ,GAMN,gCAAM,WALR,QAAA,SAAS,GAKP,gCAAM,YAJR,QAAA,YAAY,GAIV,gCAAM,eAHR,QAAA,YAAY,GAGV,gCAAM,eAFR,QAAA,SAAS,GAEP,gCAAM,YADR,QAAA,KAAK,GACH,gCAAM,OAAC;AACX,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,4DAA8D;AAArD,yGAAA,OAAO,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC1B,4EAAoD","sourcesContent":["/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport const {\n add,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n reset,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} = client;\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\n"]}
@@ -10,6 +10,5 @@ export declare class Context implements BeforePlugin {
10
10
  constructor();
11
11
  setup(config: BrowserConfig): Promise<undefined>;
12
12
  execute(context: Event): Promise<Event>;
13
- isSessionValid(): boolean;
14
13
  }
15
14
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAO/C,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,SAAa;IACjB,IAAI,oBAA8B;IAKlC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,SAAK;IACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC3B,OAAO,SAA6B;;IAWpC,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1C,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IA6C7C,cAAc;CAKf"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAO/C,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,SAAa;IACjB,IAAI,oBAA8B;IAKlC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,SAAK;IACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;IAC3B,OAAO,SAA6B;;IAWpC,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAM1C,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;CAmC9C"}
@@ -29,15 +29,6 @@ var Context = /** @class */ (function () {
29
29
  return tslib_1.__awaiter(this, void 0, void 0, function () {
30
30
  var time, osName, osVersion, deviceModel, deviceVendor, event;
31
31
  return tslib_1.__generator(this, function (_a) {
32
- /**
33
- * Manages user session triggered by new events
34
- */
35
- if (!this.isSessionValid()) {
36
- // Creates new session
37
- this.config.sessionId = Date.now();
38
- } // else use previously creates session
39
- // Updates last event time to extend time-based session
40
- this.config.lastEventTime = Date.now();
41
32
  time = new Date().getTime();
42
33
  osName = this.uaResult.browser.name;
43
34
  osVersion = this.uaResult.browser.version;
@@ -53,11 +44,6 @@ var Context = /** @class */ (function () {
53
44
  });
54
45
  });
55
46
  };
56
- Context.prototype.isSessionValid = function () {
57
- var lastEventTime = this.config.lastEventTime || Date.now();
58
- var timeSinceLastEvent = Date.now() - lastEventTime;
59
- return timeSinceLastEvent < this.config.sessionTimeout;
60
- };
61
47
  return Context;
62
48
  }());
63
49
  exports.Context = Context;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { BeforePlugin, BrowserConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n eventId = 0;\n uaResult: UAParser.IResult;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: BrowserConfig): Promise<undefined> {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise<Event> {\n /**\n * Manages user session triggered by new events\n */\n if (!this.isSessionValid()) {\n // Creates new session\n this.config.sessionId = Date.now();\n } // else use previously creates session\n // Updates last event time to extend time-based session\n this.config.lastEventTime = Date.now();\n const time = new Date().getTime();\n const osName = this.uaResult.browser.name;\n const osVersion = this.uaResult.browser.version;\n const deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n const deviceVendor = this.uaResult.device.vendor;\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return event;\n }\n\n isSessionValid() {\n const lastEventTime = this.config.lastEventTime || Date.now();\n const timeSinceLastEvent = Date.now() - lastEventTime;\n return timeSinceLastEvent < this.config.sessionTimeout;\n }\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { BeforePlugin, BrowserConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n eventId = 0;\n uaResult: UAParser.IResult;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: BrowserConfig): Promise<undefined> {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise<Event> {\n const time = new Date().getTime();\n const osName = this.uaResult.browser.name;\n const osVersion = this.uaResult.browser.version;\n const deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n const deviceVendor = this.uaResult.device.vendor;\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return event;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { EnrichmentPlugin } from '@amplitude/analytics-types';
2
+ export declare const fileDownloadTracking: () => EnrichmentPlugin;
3
+ //# sourceMappingURL=file-download-tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-download-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIhG,eAAO,MAAM,oBAAoB,QAAO,gBAuEvC,CAAC"}
@@ -0,0 +1,76 @@
1
+ var _this = this;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fileDownloadTracking = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var analytics_types_1 = require("@amplitude/analytics-types");
6
+ var constants_1 = require("../constants");
7
+ var fileDownloadTracking = function () {
8
+ var name = '@amplitude/plugin-file-download-tracking-browser';
9
+ var type = analytics_types_1.PluginType.ENRICHMENT;
10
+ var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
11
+ var addFileDownloadListener, ext, links, observer;
12
+ return tslib_1.__generator(this, function (_a) {
13
+ /* istanbul ignore if */
14
+ if (!amplitude) {
15
+ // TODO: Add required minimum version of @amplitude/analytics-browser
16
+ config.loggerProvider.warn('File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.');
17
+ return [2 /*return*/];
18
+ }
19
+ addFileDownloadListener = function (a) {
20
+ try {
21
+ var url_1 = new URL(a.href);
22
+ var result = ext.exec(url_1.href);
23
+ var fileExtension_1 = result === null || result === void 0 ? void 0 : result[1];
24
+ if (fileExtension_1) {
25
+ a.addEventListener('click', function () {
26
+ if (fileExtension_1) {
27
+ amplitude.track(constants_1.DEFAULT_FILE_DOWNLOAD_EVENT, {
28
+ file_extension: fileExtension_1,
29
+ file_name: url_1.pathname,
30
+ link_id: a.id,
31
+ link_text: a.text,
32
+ link_url: a.href,
33
+ });
34
+ }
35
+ });
36
+ }
37
+ }
38
+ catch (_a) {
39
+ config.loggerProvider.error("Something went wrong. File download events are not tracked for a#{a.id}");
40
+ }
41
+ };
42
+ ext = /\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)$/;
43
+ links = Array.from(document.getElementsByTagName('a'));
44
+ links.forEach(addFileDownloadListener);
45
+ // Adds listener to anchor tags added after initial load
46
+ /* istanbul ignore else */
47
+ if (typeof MutationObserver !== 'undefined') {
48
+ observer = new MutationObserver(function (mutations) {
49
+ mutations.forEach(function (mutation) {
50
+ mutation.addedNodes.forEach(function (node) {
51
+ if (node.nodeName === 'A') {
52
+ addFileDownloadListener(node);
53
+ }
54
+ });
55
+ });
56
+ });
57
+ observer.observe(document.body, {
58
+ subtree: true,
59
+ childList: true,
60
+ });
61
+ }
62
+ return [2 /*return*/];
63
+ });
64
+ }); };
65
+ var execute = function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
66
+ return [2 /*return*/, event];
67
+ }); }); };
68
+ return {
69
+ name: name,
70
+ type: type,
71
+ setup: setup,
72
+ execute: execute,
73
+ };
74
+ };
75
+ exports.fileDownloadTracking = fileDownloadTracking;
76
+ //# sourceMappingURL=file-download-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-download-tracking.js","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAAA,iBA4EA;;;;AA5EA,8DAAgG;AAChG,0CAA2D;AAGpD,IAAM,oBAAoB,GAAG;IAClC,IAAM,IAAI,GAAG,kDAAkD,CAAC;IAChE,IAAM,IAAI,GAAG,4BAAU,CAAC,UAAU,CAAC;IACnC,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,SAAyB;;;YACnE,wBAAwB;YACxB,IAAI,CAAC,SAAS,EAAE;gBACd,qEAAqE;gBACrE,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,wHAAwH,CACzH,CAAC;gBACF,sBAAO;aACR;YAEK,uBAAuB,GAAG,UAAC,CAAoB;gBACnD,IAAI;oBACF,IAAM,KAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC5B,IAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAG,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAM,eAAa,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAC;oBAElC,IAAI,eAAa,EAAE;wBACjB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;4BAC1B,IAAI,eAAa,EAAE;gCACjB,SAAS,CAAC,KAAK,CAAC,uCAA2B,EAAE;oCAC3C,cAAc,EAAE,eAAa;oCAC7B,SAAS,EAAE,KAAG,CAAC,QAAQ;oCACvB,OAAO,EAAE,CAAC,CAAC,EAAE;oCACb,SAAS,EAAE,CAAC,CAAC,IAAI;oCACjB,QAAQ,EAAE,CAAC,CAAC,IAAI;iCACjB,CAAC,CAAC;6BACJ;wBACH,CAAC,CAAC,CAAC;qBACJ;iBACF;gBAAC,WAAM;oBACN,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;iBACxG;YACH,CAAC,CAAC;YAEI,GAAG,GACP,+GAA+G,CAAC;YAG5G,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAEvC,wDAAwD;YACxD,0BAA0B;YAC1B,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;gBACrC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAC,SAAS;oBAC9C,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ;wBACzB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,IAAI;4BAC/B,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;gCACzB,uBAAuB,CAAC,IAAyB,CAAC,CAAC;6BACpD;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC9B,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;aACJ;;;SACF,CAAC;IACF,IAAM,OAAO,GAAG,UAAO,KAAY;QAAK,sBAAA,KAAK,EAAA;aAAA,CAAC;IAE9C,OAAO;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAvEW,QAAA,oBAAoB,wBAuE/B","sourcesContent":["import { BrowserClient, PluginType, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT } from '../constants';\nimport { BrowserConfig } from '../config';\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.',\n );\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n try {\n const url = new URL(a.href);\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n a.addEventListener('click', () => {\n if (fileExtension) {\n amplitude.track(DEFAULT_FILE_DOWNLOAD_EVENT, {\n file_extension: fileExtension,\n file_name: url.pathname,\n link_id: a.id,\n link_text: a.text,\n link_url: a.href,\n });\n }\n });\n }\n } catch {\n config.loggerProvider.error(`Something went wrong. File download events are not tracked for a#{a.id}`);\n }\n };\n\n const ext =\n /\\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)$/;\n\n // Adds listener to existing anchor tags\n const links = Array.from(document.getElementsByTagName('a'));\n links.forEach(addFileDownloadListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'A') {\n addFileDownloadListener(node as HTMLAnchorElement);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n\n return {\n name,\n type,\n setup,\n execute,\n };\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import { EnrichmentPlugin } from '@amplitude/analytics-types';
2
+ export declare const formInteractionTracking: () => EnrichmentPlugin;
3
+ //# sourceMappingURL=form-interaction-tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIhG,eAAO,MAAM,uBAAuB,QAAO,gBAgF1C,CAAC"}